From 1497a9497acf30721afc96fbd3586b34a448e11a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 10 Jan 2025 14:02:14 -0700 Subject: [PATCH 001/161] CI/CD Improvements --- .github/workflows/tests.yml | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 7a9ba295b..eb67a36c6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -399,6 +399,54 @@ jobs: - name: Run tests run: npm run valgrind -- --t 40000 + test-tsc-compile: + runs-on: ubuntu-latest + needs: build-ubuntu + strategy: + matrix: + node-version: [ + "20", + ] + fail-fast: false + + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + architecture: 'x64' + + - uses: actions/download-artifact@v4 + with: + name: binding-${{ matrix.node-version }} + + - name: make binding folder + run: mkdir lib/binding + + - name: install mocha + run: npm install mocha + + - name: install valgrind + run: | + sudo apt-get update; + sudo apt update; + sudo apt install valgrind; + + - name: Install client + #fix the convention here + run: | + npx tsc; + npx tsc typings/index.d.ts; + cd ts-test; + npx tsc; + + - name: Wait for database to be ready + # Should be ready after 3 seconds + run: sleep 3 + # test-typescript: # runs-on: ubuntu-latest # needs: build-ubuntu From 3b1bbb577e1affac60ca8c487eedd5de08665622 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 10 Jan 2025 14:16:46 -0700 Subject: [PATCH 002/161] CI/CD Improvements --- .github/workflows/tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eb67a36c6..0bd2cfbc1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -435,12 +435,18 @@ jobs: sudo apt update; sudo apt install valgrind; + - name: Install client + #fix the convention here + run: | + cp -r node-v115-linux-x64 lib/binding/node-v115-linux-x64 + - name: Install client #fix the convention here run: | npx tsc; npx tsc typings/index.d.ts; cd ts-test; + npm install .. npx tsc; - name: Wait for database to be ready From e8ba061108b96c7c7f1fc0f223e76e280c490188 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 18:48:46 -0700 Subject: [PATCH 003/161] update version --- package-lock.json | 30 ++++++++++++++++++------------ package.json | 2 +- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3b8076571..09d71f8cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.1", + "version": "6.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.1", + "version": "6.0.2", "cpu": [ "x64", "arm64" @@ -455,9 +455,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.19.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.19.0.tgz", + "integrity": "sha512-rbq9/g38qjfqFLOVPvwjIvFFdNziEC5S65jmjPw5r6A//QH+W91akh9irMwjDN8zKUTak6W9EsAv4m/7Wnw0UQ==", "dev": true, "license": "MIT", "engines": { @@ -2389,9 +2389,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.87", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.87.tgz", - "integrity": "sha512-mPFwmEWmRivw2F8x3w3l2m6htAUN97Gy0kwpO++2m9iT1Gt8RCFVUfv9U/sIbHJ6rY4P6/ooqFL/eL7ock+pPg==", + "version": "1.5.88", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.88.tgz", + "integrity": "sha512-K3C2qf1o+bGzbilTDCTBhTQcMS9KW60yTAaTeeXsfvQuTDDwlokLam/AdqlqcSy9u4UainDgsHV23ksXAOgamw==", "dev": true, "license": "ISC" }, @@ -3506,12 +3506,18 @@ "license": "ISC" }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.4.tgz", + "integrity": "sha512-kKaIINnFpzW6ffJNDjjyjrk21BkDx38c0xa/klsT8VzLCaMEefv4ZTacrcVR4DmgTeBra++jMDAfS/tS799YDw==", "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { diff --git a/package.json b/package.json index 86978674d..82f7803a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.1", + "version": "6.0.2", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 10bd7095687a093aa30b1f693f5003780c3d7b03 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 18:57:16 -0700 Subject: [PATCH 004/161] Trigger release --- .github/workflows/npm-install-script-test.yml | 6 ++-- .github/workflows/run-npm-install.yml | 34 ------------------- .../workflows/upload-jfrog-build-to-npm.yml | 14 ++++---- .github/workflows/upload-to-jfrog.yml | 4 +-- .github/workflows/verify-npm-install.yml | 2 +- 5 files changed, 13 insertions(+), 47 deletions(-) delete mode 100644 .github/workflows/run-npm-install.yml diff --git a/.github/workflows/npm-install-script-test.yml b/.github/workflows/npm-install-script-test.yml index f4cefd437..0e9aca068 100644 --- a/.github/workflows/npm-install-script-test.yml +++ b/.github/workflows/npm-install-script-test.yml @@ -72,7 +72,7 @@ jobs: node-version: 20 - name: Set version - run: npm version 6.0.3-dev.36 --no-git-tag-version + run: npm version 6.0.2 --no-git-tag-version - name: Change install command for release run: node ./scripts/change-install-command.js @@ -105,7 +105,7 @@ jobs: uses: ./.github/actions/download-github-artifacts/ - name: Publish NPM package - run: jf npm publish --build-name nodejs-client --build-number 6.0.3-dev.36 + run: jf npm publish --build-name nodejs-client --build-number 6.0.2 #- name: npm publish # run: | @@ -113,7 +113,7 @@ jobs: - name: npm install run: | - jf npm install --build-name nodejs-client --build-number 6.0.3-dev.36 + jf npm install --build-name nodejs-client --build-number 6.0.2 - name: Simple require test run: | diff --git a/.github/workflows/run-npm-install.yml b/.github/workflows/run-npm-install.yml deleted file mode 100644 index cb10c5fd7..000000000 --- a/.github/workflows/run-npm-install.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: 'Donwload github artifacts' -description: 'Download github artifacts for all supported versions' - -on: - workflow_call: - inputs: - nodejs-tags: - type: string - required: false - default: '[["v108", "18"], ["v115", "20"], ["v127", "22"], ["v131", "23"]]' - platform-tag: - type: string - required: true - - -jobs: - run-npm-install-and-require-test: - needs: get-runner-os - strategy: - matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} - fail-fast: false - steps: - - name: Delete workspace - run: rm -rf ${{ github.workspace }}/* - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.nodejs-tag[1] }} - - - name: verify runs and is aligned - run: | - npm install xyzparbart; - node -e "console.log(require('xyzparbart').Transaction.commitStatus)"; \ No newline at end of file diff --git a/.github/workflows/upload-jfrog-build-to-npm.yml b/.github/workflows/upload-jfrog-build-to-npm.yml index 5f8cf0bd0..9c6f2904f 100644 --- a/.github/workflows/upload-jfrog-build-to-npm.yml +++ b/.github/workflows/upload-jfrog-build-to-npm.yml @@ -58,25 +58,25 @@ jobs: - name: change package name run: | - sed -i 's/"name": "[^"]*"/"name": "xyzparbart"/' package.json + sed -i 's/"name": "[^"]*"/"name": "aerospike"/' package.json - name: Download Artifacts from Jfrog run: jf rt dl "clients-${{ env.PACKAGE_MANAGER }}-dev-local/aerospike/${{ env.NEW_VERSION }}/" "downloaded-artifacts/" env: - NEW_VERSION: 6.0.3-dev.36 + NEW_VERSION: 6.0.2 PACKAGE_MANAGER: npm - name: list Artifacts run: | - ls downloaded-artifacts/aerospike/6.0.3-dev.36/lib/binding/ + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ - name: Move artifacts run: | - cp -r downloaded-artifacts/aerospike/6.0.3-dev.36/lib/binding/ lib/ + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - name: change verison run: | - npm version 6.0.3-dev.36 --no-git-tag-version + npm version 6.0.2 --no-git-tag-version - name: Change install command for release run: node ./scripts/change-install-command.js @@ -94,7 +94,7 @@ jobs: run: | rm -rf lib/binding mkdir lib/binding - cp -r downloaded-artifacts/aerospike/6.0.3-dev.36/lib/binding/ lib/ + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - name: npm publish run: | @@ -104,7 +104,7 @@ jobs: - name: npm install run: | - npm install xyzparbart + npm install aerospike #- run: npm ci #- run: npm publish --provenance --access public diff --git a/.github/workflows/upload-to-jfrog.yml b/.github/workflows/upload-to-jfrog.yml index c1ca4ec40..dbf9efcdf 100644 --- a/.github/workflows/upload-to-jfrog.yml +++ b/.github/workflows/upload-to-jfrog.yml @@ -69,10 +69,10 @@ jobs: # https://github.com/jfrog/jfrog-cli/issues/1775#issuecomment-1348986551 run: jf rt upload --build-name nodejs-client --build-number ${{ env.NEW_VERSION }}/ "./lib/binding/*" clients-${{ env.PACKAGE_MANAGER }}-dev-local/aerospike/${{ env.NEW_VERSION }}/ env: - NEW_VERSION: 6.0.3-dev.36 + NEW_VERSION: 6.0.2 PACKAGE_MANAGER: npm - name: Publish build info if: ${{ inputs.jfrog-repo-name == vars.JFROG_REPO_NAME }} - run: jf rt build-publish nodejs-client 6.0.3-dev.36 + run: jf rt build-publish nodejs-client 6.0.2 diff --git a/.github/workflows/verify-npm-install.yml b/.github/workflows/verify-npm-install.yml index 9115ad16f..515136c68 100644 --- a/.github/workflows/verify-npm-install.yml +++ b/.github/workflows/verify-npm-install.yml @@ -28,5 +28,5 @@ jobs: - name: verify runs and is aligned run: | - npm install xyzparbart --omit-dev; + npm install aerospike --omit-dev; node -e "console.log(require('xyzparbart').Transaction.commitStatus)"; \ No newline at end of file From a8631835e740b2665277ca303a5ff39bc82ae39f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 19:12:40 -0700 Subject: [PATCH 005/161] Trigger release --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea435efe7..8ed407113 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,7 +17,7 @@ All notable changes to this project will be documented in this file. * **Improvements** * [CLIENT-3244] - Removed commitStatus.ALREADY_ABORTED and abortStatus.ALREADY_COMMITTED * [CLIENT-3277] - Exception is now thrown when aborting a committed transaction. - * [CLIENT-3277] - Exception is now thrown when committing an aborted transaciton. + * [CLIENT-3277] - Exception is now thrown when committing an aborted transaction. * [CLIENT-3291] - Default client MRT timeout to zero. ## [6.0.1] From 477d5d5e7e6bc3bc0d5afd736b0cf1ef1a344a6f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 19:41:19 -0700 Subject: [PATCH 006/161] Trigger release --- .github/workflows/upload-to-jfrog.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upload-to-jfrog.yml b/.github/workflows/upload-to-jfrog.yml index c9a67a7e0..53587b30b 100644 --- a/.github/workflows/upload-to-jfrog.yml +++ b/.github/workflows/upload-to-jfrog.yml @@ -67,7 +67,7 @@ jobs: if: ${{ inputs.jfrog-repo-name == vars.JFROG_REPO_NAME }} # Source path must be in quotes if it contains an asterisk # https://github.com/jfrog/jfrog-cli/issues/1775#issuecomment-1348986551 - run: jf rt upload --build-name nodejs-client --build-number ${{ env.NEW_VERSION }}/ "./lib/binding/*" clients-${{ env.PACKAGE_MANAGER }}-dev-local/aerospike/${{ env.NEW_VERSION }}/ + run: jf rt upload --build-name nodejs-client --build-number ${{ env.NEW_VERSION }} "./lib/binding/*" clients-${{ env.PACKAGE_MANAGER }}-dev-local/aerospike/${{ env.NEW_VERSION }}/ env: NEW_VERSION: 6.0.2 From c3fff2c47b722b2aa2b61a15083f85af8515bd81 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 20:02:01 -0700 Subject: [PATCH 007/161] Trigger release --- .github/workflows/upload-jfrog-build-to-npm.yml | 2 +- .github/workflows/upload-to-jfrog.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upload-jfrog-build-to-npm.yml b/.github/workflows/upload-jfrog-build-to-npm.yml index 9c6f2904f..fd2636a44 100644 --- a/.github/workflows/upload-jfrog-build-to-npm.yml +++ b/.github/workflows/upload-jfrog-build-to-npm.yml @@ -61,7 +61,7 @@ jobs: sed -i 's/"name": "[^"]*"/"name": "aerospike"/' package.json - name: Download Artifacts from Jfrog - run: jf rt dl "clients-${{ env.PACKAGE_MANAGER }}-dev-local/aerospike/${{ env.NEW_VERSION }}/" "downloaded-artifacts/" + run: jf rt dl "clients-npm-dev-local/aerospike/${{ env.NEW_VERSION }}/" "downloaded-artifacts/" env: NEW_VERSION: 6.0.2 PACKAGE_MANAGER: npm diff --git a/.github/workflows/upload-to-jfrog.yml b/.github/workflows/upload-to-jfrog.yml index 53587b30b..35960723e 100644 --- a/.github/workflows/upload-to-jfrog.yml +++ b/.github/workflows/upload-to-jfrog.yml @@ -67,7 +67,7 @@ jobs: if: ${{ inputs.jfrog-repo-name == vars.JFROG_REPO_NAME }} # Source path must be in quotes if it contains an asterisk # https://github.com/jfrog/jfrog-cli/issues/1775#issuecomment-1348986551 - run: jf rt upload --build-name nodejs-client --build-number ${{ env.NEW_VERSION }} "./lib/binding/*" clients-${{ env.PACKAGE_MANAGER }}-dev-local/aerospike/${{ env.NEW_VERSION }}/ + run: jf rt upload --build-name nodejs-client --build-number ${{ env.NEW_VERSION }}/ "./lib/binding/*" clients-npm-dev-local/aerospike/${{ env.NEW_VERSION }}/ env: NEW_VERSION: 6.0.2 From 288000cfe849b7cecb798c1a8e8e0a7476f695f1 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 20:17:55 -0700 Subject: [PATCH 008/161] Trigger release --- .github/workflows/upload-jfrog-build-to-npm.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/upload-jfrog-build-to-npm.yml b/.github/workflows/upload-jfrog-build-to-npm.yml index fd2636a44..2358176ec 100644 --- a/.github/workflows/upload-jfrog-build-to-npm.yml +++ b/.github/workflows/upload-jfrog-build-to-npm.yml @@ -56,9 +56,9 @@ jobs: node-version: ${{ matrix.nodejs-tag[1] }} registry-url: 'https://registry.npmjs.org' - - name: change package name - run: | - sed -i 's/"name": "[^"]*"/"name": "aerospike"/' package.json + #- name: change package name + # run: | + # sed -i 's/"name": "[^"]*"/"name": "aerospike"/' package.json - name: Download Artifacts from Jfrog run: jf rt dl "clients-npm-dev-local/aerospike/${{ env.NEW_VERSION }}/" "downloaded-artifacts/" @@ -74,9 +74,9 @@ jobs: run: | cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - - name: change verison - run: | - npm version 6.0.2 --no-git-tag-version + #- name: change verison + # run: | + # npm version 6.0.2 --no-git-tag-version - name: Change install command for release run: node ./scripts/change-install-command.js From 9026c1a7a22ef89dd9e90707b7e769d6f0ceffc3 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 20:35:44 -0700 Subject: [PATCH 009/161] Trigger release --- .github/workflows/dev-workflow-p2.yml | 76 +++++++++++++-------------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/dev-workflow-p2.yml b/.github/workflows/dev-workflow-p2.yml index a78b49655..54ca20f18 100644 --- a/.github/workflows/dev-workflow-p2.yml +++ b/.github/workflows/dev-workflow-p2.yml @@ -25,44 +25,44 @@ jobs: # uses: ./.github/workflows/release-package.yml # secrets: inherit - rebuild-artifacts-with-new-dev-num: - #needs: bump-dev-number - name: Rebuild artifacts with new dev number - uses: ./.github/workflows/build-artifacts.yml - with: - # On pull_request_target, the bump version commit will be ignored - # So we must pass it manually to the workflow - sha-to-build-and-test: ${{ needs.bump-dev-number.outputs.bump_sha }} - secrets: inherit - - #test-npm-install: - # needs: rebuild-artifacts-with-new-dev-num - # name: Test npm install command for npm package - # uses: ./.github/workflows/npm-install-script-test.yml - # secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - # bump-dev-number, - rebuild-artifacts-with-new-dev-num - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - publish-to-npm: - name: Upload artifacts to JFrog - needs: [ - # bump-dev-number, - rebuild-artifacts-with-new-dev-num, - upload-to-jfrog - ] - uses: ./.github/workflows/upload-jfrog-build-to-npm.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit +# rebuild-artifacts-with-new-dev-num: +# #needs: bump-dev-number +# name: Rebuild artifacts with new dev number +# uses: ./.github/workflows/build-artifacts.yml +# with: +# # On pull_request_target, the bump version commit will be ignored +# # So we must pass it manually to the workflow +# sha-to-build-and-test: ${{ needs.bump-dev-number.outputs.bump_sha }} +# secrets: inherit +# +# #test-npm-install: +# # needs: rebuild-artifacts-with-new-dev-num +# # name: Test npm install command for npm package +# # uses: ./.github/workflows/npm-install-script-test.yml +# # secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# # bump-dev-number, +# rebuild-artifacts-with-new-dev-num +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# publish-to-npm: +# name: Upload artifacts to JFrog +# needs: [ +# # bump-dev-number, +# rebuild-artifacts-with-new-dev-num, +# upload-to-jfrog +# ] +# uses: ./.github/workflows/upload-jfrog-build-to-npm.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit verify-npm-install: name: verify npm install works correctly From 5d26a82f86c793646f8663943a2cbf5c2b70cdf5 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 20:37:11 -0700 Subject: [PATCH 010/161] Trigger release --- .github/workflows/dev-workflow-p1.yml | 12 ++++++------ .github/workflows/dev-workflow-p2.yml | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 8e90900c7..1fff44e18 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -27,12 +27,12 @@ on: default: false jobs: - test-with-server-release: - uses: ./.github/workflows/build-artifacts.yml - with: - run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} - sha-to-build-and-test: ${{ github.sha }} - secrets: inherit + #test-with-server-release: + # uses: ./.github/workflows/build-artifacts.yml + # with: + # run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} + # sha-to-build-and-test: ${{ github.sha }} + # secrets: inherit # test-with-server-rc: # needs: test-with-server-release diff --git a/.github/workflows/dev-workflow-p2.yml b/.github/workflows/dev-workflow-p2.yml index 54ca20f18..ad3efd9f5 100644 --- a/.github/workflows/dev-workflow-p2.yml +++ b/.github/workflows/dev-workflow-p2.yml @@ -66,12 +66,12 @@ jobs: verify-npm-install: name: verify npm install works correctly - needs: [ + #needs: [ # bump-dev-number, - rebuild-artifacts-with-new-dev-num, - upload-to-jfrog, - publish-to-npm - ] + # rebuild-artifacts-with-new-dev-num, + # upload-to-jfrog, + # publish-to-npm + #] uses: ./.github/workflows/verify-npm-install.yml secrets: inherit From b9a5ccbb00a11cdbddba5a988a9b2d3f8ec049cd Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 24 Jan 2025 20:38:07 -0700 Subject: [PATCH 011/161] Trigger release --- .github/workflows/verify-npm-install.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/verify-npm-install.yml b/.github/workflows/verify-npm-install.yml index 515136c68..c31a72a61 100644 --- a/.github/workflows/verify-npm-install.yml +++ b/.github/workflows/verify-npm-install.yml @@ -29,4 +29,4 @@ jobs: - name: verify runs and is aligned run: | npm install aerospike --omit-dev; - node -e "console.log(require('xyzparbart').Transaction.commitStatus)"; \ No newline at end of file + node -e "console.log(require('aerospike').Transaction.commitStatus)"; \ No newline at end of file From 6cb8d478b7d1fc6a48ae03515043bc6278f0f4fc Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 05:08:41 -0700 Subject: [PATCH 012/161] PIPELINE IMPROVMENTS --- .github/workflows/build-artifacts.yml | 39 ++------------ .github/workflows/build-bindings.yml | 51 +------------------ .../bump-stage-and-upload-to-jfrog.yml | 2 - .github/workflows/bump-version.yml | 2 +- .github/workflows/dev-workflow-p1.yml | 11 ++-- .github/workflows/dev-workflow-p2.yml | 24 ++++----- .github/workflows/release-package.yml | 27 +++++----- .github/workflows/update-version.yml | 10 +--- 8 files changed, 36 insertions(+), 130 deletions(-) diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index 2f8a78d93..96399f68a 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -8,17 +8,6 @@ run-name: Build artifacts (run_tests=${{ inputs.run_tests }}, use-server-rc=${{ on: workflow_dispatch: inputs: - # There may be a case where we want to test these build debug flags on all platforms that support them - unoptimized: - description: 'macOS or Linux: Apply -O0 flag?' - type: boolean - required: false - default: false - include-debug-info-for-macos: - description: 'macOS: Build wheels for debugging?' - type: boolean - required: false - default: false run_tests: description: "Run integration tests with the wheels after building them" required: true @@ -49,21 +38,6 @@ on: default: true required: false # This input is only used in workflow_call events - sha-to-build-and-test: - description: A calling workflow may want to run this workflow on a different ref than the calling workflow's ref - type: string - # Make it required to make things simple - required: true - # A calling workflow doesn't actually set values to the inputs below - # But that workflow needs to have default values for these inputs - unoptimized: - type: boolean - required: false - default: false - include-debug-info-for-macos: - type: boolean - required: false - default: false use-server-rc: required: false default: false @@ -86,11 +60,11 @@ jobs: matrix: platform-tag: [ "manylinux_x86_64", - "manylinux_aarch64", - "manylinux_20_x86_64", - "manylinux_20_aarch64", - "macosx_x86_64", - "macosx_arm64", + #"manylinux_aarch64", + #"manylinux_20_x86_64", + #"manylinux_20_aarch64", + #"macosx_x86_64", + #"macosx_arm64", "win_amd64" ] fail-fast: false @@ -98,9 +72,6 @@ jobs: with: platform-tag: ${{ matrix.platform-tag }} # Can't use env context here, so just copy from build-sdist env var - sha-to-build-and-test: ${{ inputs.is_workflow_call == true && inputs.sha-to-build-and-test || github.sha }} - unoptimized: ${{ inputs.unoptimized }} - include-debug-info-for-macos: ${{ inputs.include-debug-info-for-macos }} run_tests: ${{ inputs.run_tests }} use-server-rc: ${{ inputs.use-server-rc }} server-tag: ${{ inputs.server-tag }} diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index f076eb010..d749c779f 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -1,5 +1,5 @@ name: 'Build wheels' -run-name: 'Build wheels (nodejs-tags=${{ inputs.nodejs-tags }}, platform-tag=${{ inputs.platform-tag }}, unoptimized=${{ inputs.unoptimized }}, include-debug-info-for-macos=${{ inputs.include-debug-info-for-macos }}, run_tests=${{ inputs.run_tests }}, use-server-rc=${{ inputs.use-server-rc }}, server-tag=${{ inputs.server-tag }})' +run-name: 'Build wheels (nodejs-tags=${{ inputs.nodejs-tags }}, platform-tag=${{ inputs.platform-tag }}, run_tests=${{ inputs.run_tests }}, use-server-rc=${{ inputs.use-server-rc }}, server-tag=${{ inputs.server-tag }})' # Build wheels on all (or select) Python versions supported by the Python client for a specific platform @@ -42,17 +42,6 @@ on: - win_amd64 # Makes debugging via gh cli easier. default: manylinux_x86_64 - unoptimized: - description: 'macOS or Linux: Apply -O0 flag?' - # Windows supports a different flag to disable optimizations, but we haven't added support for it yet - type: boolean - required: false - default: false - include-debug-info-for-macos: - description: 'macOS: Build wheels for debugging?' - type: boolean - required: false - default: false run_tests: description: 'Run Aerospike server and run tests using built wheels?' type: boolean @@ -86,18 +75,6 @@ on: platform-tag: type: string required: true - # Only used in workflow_call event - sha-to-build-and-test: - type: string - required: true - unoptimized: - type: boolean - required: false - default: false - include-debug-info-for-macos: - type: boolean - required: false - default: false run_tests: type: boolean required: false @@ -126,7 +103,6 @@ on: required: true env: - COMMIT_SHA_TO_BUILD_AND_TEST: ${{ inputs.is_workflow_call == true && inputs.sha-to-build-and-test || github.sha }} # Note that environment variables in Github are all strings # Github mac m1 and windows runners don't support Docker / nested virtualization # so we need to use self-hosted runners to test wheels for these platforms @@ -247,13 +223,6 @@ jobs: # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV # shell: bash - - name: Set unoptimize flag - if: ${{ inputs.unoptimized && (startsWith(inputs.platform-tag, 'manylinux') || startsWith(inputs.platform-tag, 'macosx')) }} - run: echo "UNOPTIMIZED=1" >> $GITHUB_ENV - - - name: Set include dsym flag - if: ${{ inputs.include-debug-info-for-macos && startsWith(inputs.platform-tag, 'macosx') }} - run: echo "INCLUDE_DSYM=1" >> $GITHUB_ENV - name: Build Binding run: | @@ -284,24 +253,6 @@ jobs: npx tsc; npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - # NEED TO MAKE A NODEJS ACTION WHICH REPLACES THIS!!! - #- name: Build wheel - # uses: pypa/cibuildwheel@v2.20.0 - # env: - # CIBW_ENVIRONMENT_PASS_LINUX: ${{ inputs.unoptimized && 'UNOPTIMIZED' || '' }} - # CIBW_ENVIRONMENT_MACOS: SSL_LIB_PATH="$(brew --prefix openssl@${{ env.MACOS_OPENSSL_VERSION }})/lib/" CPATH="$(brew --prefix openssl@${{ env.MACOS_OPENSSL_VERSION }})/include/" STATIC_SSL=1 - # CIBW_BUILD: ${{ env.BUILD_IDENTIFIER }} - # CIBW_BUILD_FRONTEND: build - # CIBW_BEFORE_ALL_LINUX: > - # yum install openssl-devel -y && - # yum install python-devel -y && - # yum install python-setuptools -y - # # delvewheel is not enabled by default but we do need to repair the wheel - # CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel" - # CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --add-path ./aerospike-client-c/vs/x64/Release -w {dest_dir} {wheel}" - # CIBW_TEST_COMMAND: ${{ env.TEST_COMMAND }} -# - - name: Upload wheels to GitHub Linux x86 uses: actions/upload-artifact@v4 diff --git a/.github/workflows/bump-stage-and-upload-to-jfrog.yml b/.github/workflows/bump-stage-and-upload-to-jfrog.yml index 502fc0a02..d71cdd594 100644 --- a/.github/workflows/bump-stage-and-upload-to-jfrog.yml +++ b/.github/workflows/bump-stage-and-upload-to-jfrog.yml @@ -34,8 +34,6 @@ jobs: rebuild-artifacts-with-rc-version: needs: promote-dev-build-to-rc uses: ./.github/workflows/build-artifacts.yml - with: - sha-to-build-and-test: ${{ needs.promote-dev-build-to-rc.outputs.bump_sha }} secrets: inherit upload-rc-artifacts-to-jfrog: diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index d274c7eb6..4150752c4 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -93,5 +93,5 @@ jobs: uses: ./.github/workflows/update-version.yml with: new_version: ${{ needs.get-new-version.outputs.new_version }} - ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} + #ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} secrets: inherit diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 1fff44e18..016935bcd 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -27,12 +27,11 @@ on: default: false jobs: - #test-with-server-release: - # uses: ./.github/workflows/build-artifacts.yml - # with: - # run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} - # sha-to-build-and-test: ${{ github.sha }} - # secrets: inherit + test-with-server-release: + uses: ./.github/workflows/build-artifacts.yml + with: + run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} + secrets: inherit # test-with-server-rc: # needs: test-with-server-release diff --git a/.github/workflows/dev-workflow-p2.yml b/.github/workflows/dev-workflow-p2.yml index ad3efd9f5..dd94e7963 100644 --- a/.github/workflows/dev-workflow-p2.yml +++ b/.github/workflows/dev-workflow-p2.yml @@ -29,10 +29,6 @@ jobs: # #needs: bump-dev-number # name: Rebuild artifacts with new dev number # uses: ./.github/workflows/build-artifacts.yml -# with: -# # On pull_request_target, the bump version commit will be ignored -# # So we must pass it manually to the workflow -# sha-to-build-and-test: ${{ needs.bump-dev-number.outputs.bump_sha }} # secrets: inherit # # #test-npm-install: @@ -64,16 +60,16 @@ jobs: # version: ${{ needs.bump-dev-number.outputs.new_version }} # secrets: inherit - verify-npm-install: - name: verify npm install works correctly - #needs: [ - # bump-dev-number, - # rebuild-artifacts-with-new-dev-num, - # upload-to-jfrog, - # publish-to-npm - #] - uses: ./.github/workflows/verify-npm-install.yml - secrets: inherit +# verify-npm-install: +# name: verify npm install works correctly +# #needs: [ +# # bump-dev-number, +# # rebuild-artifacts-with-new-dev-num, +# # upload-to-jfrog, +# # publish-to-npm +# #] +# uses: ./.github/workflows/verify-npm-install.yml +# secrets: inherit # # We don't want the artifacts in JFrog to also exist in Github # delete-artifacts: diff --git a/.github/workflows/release-package.yml b/.github/workflows/release-package.yml index 7877ee909..295af9b9c 100644 --- a/.github/workflows/release-package.yml +++ b/.github/workflows/release-package.yml @@ -14,20 +14,19 @@ jobs: # change: 'bump-dev-num' # secrets: inherit - rebuild-artifacts-with-new-dev-num: - name: Rebuild artifacts - uses: ./.github/workflows/build-artifacts.yml - with: - # On pull_request_target, the bump version commit will be ignored - # So we must pass it manually to the workflow - run_tests: false - sha-to-build-and-test: ${{ needs.bump-dev-number.outputs.bump_sha }} - secrets: inherit - - test-npm-install: - needs: rebuild-artifacts-with-new-dev-num - name: Test npm install command for npm package - uses: ./.github/workflows/npm-install-script-test.yml +# rebuild-artifacts-with-new-dev-num: +# name: Rebuild artifacts +# uses: ./.github/workflows/build-artifacts.yml +# with: +# # On pull_request_target, the bump version commit will be ignored +# # So we must pass it manually to the workflow +# run_tests: false +# secrets: inherit +# +# test-npm-install: +# needs: rebuild-artifacts-with-new-dev-num +# name: Test npm install command for npm package +# uses: ./.github/workflows/npm-install-script-test.yml # upload-to-jfrog: # name: Upload artifacts to JFrog diff --git a/.github/workflows/update-version.yml b/.github/workflows/update-version.yml index b8a3aecca..4ef5fee24 100644 --- a/.github/workflows/update-version.yml +++ b/.github/workflows/update-version.yml @@ -15,14 +15,6 @@ on: type: string description: Version string to set in the repo required: true - ref: - type: string - description: commit/branch to change version - required: false - # A hack to tell if workflow is triggered by workflow_call or not - # Calling workflows should not set this input - # If workflow is triggered by workflow_dispatch, this should be set to the default boolean value: false - # https://github.com/actions/runner/discussions/1884#discussioncomment-6377587 is_workflow_call: type: boolean default: true @@ -58,7 +50,7 @@ jobs: commit_message: 'Auto-bump version to ${{ inputs.new_version }} [skip ci]' commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> tagging_message: ${{ inputs.new_version }} - branch: 2024-Pipeline-Improvement + branch: 2025-Pipeline-Improvement #branch: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} - name: Output bump commit hash for next jobs to use From bb06d4b39d5b62f5eea621bfa9075b3ef9ad15cb Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 05:46:59 -0700 Subject: [PATCH 013/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 016935bcd..bf14dcbb4 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -27,10 +27,17 @@ on: default: false jobs: - test-with-server-release: - uses: ./.github/workflows/build-artifacts.yml + #test-with-server-release: + # uses: ./.github/workflows/build-artifacts.yml + # with: + # run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} + # secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml with: - run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} + change: 'bump-dev-num' secrets: inherit # test-with-server-rc: From 3f23b417267420e20aa10f03f96a5932a824893b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:08:10 -0700 Subject: [PATCH 014/161] PIPELINE IMPROVMENTS --- .github/workflows/bump-version.yml | 14 +++++++------- .github/workflows/dev-workflow-p1.yml | 12 ++++++++++++ .github/workflows/update-version.yml | 16 ++++++++-------- 3 files changed, 27 insertions(+), 15 deletions(-) diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 4150752c4..11f2c9e5c 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -88,10 +88,10 @@ jobs: echo "${{ steps.get-new-version.outputs.new_version }}" - update-version-in-repo: - needs: get-new-version - uses: ./.github/workflows/update-version.yml - with: - new_version: ${{ needs.get-new-version.outputs.new_version }} - #ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} - secrets: inherit +# update-version-in-repo: +# needs: get-new-version +# uses: ./.github/workflows/update-version.yml +# with: +# new_version: ${{ needs.get-new-version.outputs.new_version }} +# #ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} +# secrets: inherit diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index bf14dcbb4..a1f3e4031 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -40,6 +40,18 @@ jobs: change: 'bump-dev-num' secrets: inherit + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + # bump-dev-number, + rebuild-artifacts-with-new-dev-num + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # test-with-server-rc: # needs: test-with-server-release # if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} diff --git a/.github/workflows/update-version.yml b/.github/workflows/update-version.yml index 4ef5fee24..6fd6d1e63 100644 --- a/.github/workflows/update-version.yml +++ b/.github/workflows/update-version.yml @@ -44,14 +44,14 @@ jobs: with: new_version: ${{ inputs.new_version }} - - name: Commit new version - uses: stefanzweifel/git-auto-commit-action@v4 - with: - commit_message: 'Auto-bump version to ${{ inputs.new_version }} [skip ci]' - commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> - tagging_message: ${{ inputs.new_version }} - branch: 2025-Pipeline-Improvement - #branch: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} +# - name: Commit new version +# uses: stefanzweifel/git-auto-commit-action@v4 +# with: +# commit_message: 'Auto-bump version to ${{ inputs.new_version }} [skip ci]' +# commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> +# tagging_message: ${{ inputs.new_version }} +# branch: 2025-Pipeline-Improvement +# #branch: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} - name: Output bump commit hash for next jobs to use id: get-bump-commit-sha From 9ec30a1b5e0b4c48c9a3147193e3e9d0fdcb4209 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:08:41 -0700 Subject: [PATCH 015/161] PIPELINE IMPROVMENTS --- .github/workflows/upload-to-jfrog.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/upload-to-jfrog.yml b/.github/workflows/upload-to-jfrog.yml index 35960723e..e61f8cd29 100644 --- a/.github/workflows/upload-to-jfrog.yml +++ b/.github/workflows/upload-to-jfrog.yml @@ -69,11 +69,11 @@ jobs: # https://github.com/jfrog/jfrog-cli/issues/1775#issuecomment-1348986551 run: jf rt upload --build-name nodejs-client --build-number ${{ env.NEW_VERSION }}/ "./lib/binding/*" clients-npm-dev-local/aerospike/${{ env.NEW_VERSION }}/ env: - NEW_VERSION: 6.0.2 + NEW_VERSION: ${{ inputs.version }} - name: Publish build info if: ${{ inputs.jfrog-repo-name == vars.JFROG_REPO_NAME }} - run: jf rt build-publish nodejs-client 6.0.2 + run: jf rt build-publish nodejs-client ${{ inputs.version }} From 0e25fab655a709e77e6c4518f7410c6281df062d Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:09:24 -0700 Subject: [PATCH 016/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index a1f3e4031..8c23a4cd4 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -42,10 +42,10 @@ jobs: upload-to-jfrog: name: Upload artifacts to JFrog - needs: [ + #needs: [ # bump-dev-number, - rebuild-artifacts-with-new-dev-num - ] + #rebuild-artifacts-with-new-dev-num + #] uses: ./.github/workflows/upload-to-jfrog.yml with: version: ${{ needs.bump-dev-number.outputs.new_version }} From 0ab2b97727717fdf173edb293ab5230e23edd0b7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:20:56 -0700 Subject: [PATCH 017/161] PIPELINE IMPROVMENTS --- .../download-github-artifacts/action.yml | 166 +++++++++--------- .github/workflows/build-artifacts.yml | 2 +- .github/workflows/build-bindings.yml | 8 +- .github/workflows/dev-workflow-p1.yml | 19 +- 4 files changed, 99 insertions(+), 96 deletions(-) diff --git a/.github/actions/download-github-artifacts/action.yml b/.github/actions/download-github-artifacts/action.yml index b621f2f71..242d16b18 100644 --- a/.github/actions/download-github-artifacts/action.yml +++ b/.github/actions/download-github-artifacts/action.yml @@ -25,26 +25,26 @@ runs: name: v131-macosx_x86_64.node path: ./lib/binding/node-v131-darwin-x64/ - # MAC ARM - - uses: actions/download-artifact@v4 - with: - name: v108-macosx_arm64.node - path: ./lib/binding/node-v108-darwin-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v115-macosx_arm64.node - path: ./lib/binding/node-v115-darwin-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v127-macosx_arm64.node - path: ./lib/binding/node-v127-darwin-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v131-macosx_arm64.node - path: ./lib/binding/node-v131-darwin-arm64/ +# # MAC ARM +# - uses: actions/download-artifact@v4 +# with: +# name: v108-macosx_arm64.node +# path: ./lib/binding/node-v108-darwin-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v115-macosx_arm64.node +# path: ./lib/binding/node-v115-darwin-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v127-macosx_arm64.node +# path: ./lib/binding/node-v127-darwin-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v131-macosx_arm64.node +# path: ./lib/binding/node-v131-darwin-arm64/ # Linux X86 - uses: actions/download-artifact@v4 @@ -67,69 +67,69 @@ runs: name: v131-manylinux_x86_64.node path: ./lib/binding/glibc@2.35/node-v131-linux-x64/ - # Linux 20 X86 - - uses: actions/download-artifact@v4 - with: - name: v108-manylinux_20_x86_64.node - path: ./lib/binding/glibc@2.31/node-v108-linux-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v115-manylinux_20_x86_64.node - path: ./lib/binding/glibc@2.31/node-v115-linux-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v127-manylinux_20_x86_64.node - path: ./lib/binding/glibc@2.31/node-v127-linux-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v131-manylinux_20_x86_64.node - path: ./lib/binding/glibc@2.31/node-v131-linux-x64/ - - # Linux ARM - - uses: actions/download-artifact@v4 - with: - name: v108-manylinux_aarch64.node - path: ./lib/binding/glibc@2.35/node-v108-linux-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v115-manylinux_aarch64.node - path: ./lib/binding/glibc@2.35/node-v115-linux-arm64/ - - - - uses: actions/download-artifact@v4 - with: - name: v127-manylinux_aarch64.node - path: ./lib/binding/glibc@2.35/node-v127-linux-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v131-manylinux_aarch64.node - path: ./lib/binding/glibc@2.35/node-v131-linux-arm64/ - - # Linux 20 ARM - - uses: actions/download-artifact@v4 - with: - name: v108-manylinux_20_aarch64.node - path: ./lib/binding/glibc@2.31/node-v108-linux-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v115-manylinux_20_aarch64.node - path: ./lib/binding/glibc@2.31/node-v115-linux-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v127-manylinux_20_aarch64.node - path: ./lib/binding/glibc@2.31/node-v127-linux-arm64/ - - - uses: actions/download-artifact@v4 - with: - name: v131-manylinux_20_aarch64.node - path: ./lib/binding/glibc@2.31/node-v131-linux-arm64/ +# # Linux 20 X86 +# - uses: actions/download-artifact@v4 +# with: +# name: v108-manylinux_20_x86_64.node +# path: ./lib/binding/glibc@2.31/node-v108-linux-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v115-manylinux_20_x86_64.node +# path: ./lib/binding/glibc@2.31/node-v115-linux-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v127-manylinux_20_x86_64.node +# path: ./lib/binding/glibc@2.31/node-v127-linux-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v131-manylinux_20_x86_64.node +# path: ./lib/binding/glibc@2.31/node-v131-linux-x64/ +# +# # Linux ARM +# - uses: actions/download-artifact@v4 +# with: +# name: v108-manylinux_aarch64.node +# path: ./lib/binding/glibc@2.35/node-v108-linux-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v115-manylinux_aarch64.node +# path: ./lib/binding/glibc@2.35/node-v115-linux-arm64/ +# +# +# - uses: actions/download-artifact@v4 +# with: +# name: v127-manylinux_aarch64.node +# path: ./lib/binding/glibc@2.35/node-v127-linux-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v131-manylinux_aarch64.node +# path: ./lib/binding/glibc@2.35/node-v131-linux-arm64/ +# +# # Linux 20 ARM +# - uses: actions/download-artifact@v4 +# with: +# name: v108-manylinux_20_aarch64.node +# path: ./lib/binding/glibc@2.31/node-v108-linux-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v115-manylinux_20_aarch64.node +# path: ./lib/binding/glibc@2.31/node-v115-linux-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v127-manylinux_20_aarch64.node +# path: ./lib/binding/glibc@2.31/node-v127-linux-arm64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v131-manylinux_20_aarch64.node +# path: ./lib/binding/glibc@2.31/node-v131-linux-arm64/ # Windows - uses: actions/download-artifact@v4 diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index 96399f68a..3b53c76a1 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -63,7 +63,7 @@ jobs: #"manylinux_aarch64", #"manylinux_20_x86_64", #"manylinux_20_aarch64", - #"macosx_x86_64", + "macosx_x86_64", #"macosx_arm64", "win_amd64" ] diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index d749c779f..f280e51c1 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -34,11 +34,11 @@ on: required: true options: - manylinux_x86_64 - - manylinux_aarch64 - - manylinux_20_x86_64 - - manylinux_20_aarch64 + #- manylinux_aarch64 + #- manylinux_20_x86_64 + #- manylinux_20_aarch64 - macosx_x86_64 - - macosx_arm64 + #- macosx_arm64 - win_amd64 # Makes debugging via gh cli easier. default: manylinux_x86_64 diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 8c23a4cd4..4c6144ce8 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -27,15 +27,18 @@ on: default: false jobs: - #test-with-server-release: - # uses: ./.github/workflows/build-artifacts.yml - # with: - # run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} - # secrets: inherit + test-with-server-release: + uses: ./.github/workflows/build-artifacts.yml + with: + run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} + secrets: inherit bump-dev-number: #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} uses: ./.github/workflows/bump-version.yml + needs: [ + rebuild-artifacts-with-new-dev-num + ] with: change: 'bump-dev-num' secrets: inherit @@ -43,9 +46,9 @@ jobs: upload-to-jfrog: name: Upload artifacts to JFrog #needs: [ - # bump-dev-number, - #rebuild-artifacts-with-new-dev-num - #] + bump-dev-number, + rebuild-artifacts-with-new-dev-num + ] uses: ./.github/workflows/upload-to-jfrog.yml with: version: ${{ needs.bump-dev-number.outputs.new_version }} From e3d34687807a5744667a50343701213a52a161f8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:22:11 -0700 Subject: [PATCH 018/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 4c6144ce8..a90216c1c 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -45,7 +45,7 @@ jobs: upload-to-jfrog: name: Upload artifacts to JFrog - #needs: [ + needs: [ bump-dev-number, rebuild-artifacts-with-new-dev-num ] From 3e52308b0f24f3e56f216a06920c1f23f71ecf31 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:23:08 -0700 Subject: [PATCH 019/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index a90216c1c..b4a208c77 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -37,7 +37,7 @@ jobs: #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} uses: ./.github/workflows/bump-version.yml needs: [ - rebuild-artifacts-with-new-dev-num + test-with-server-release ] with: change: 'bump-dev-num' @@ -46,8 +46,8 @@ jobs: upload-to-jfrog: name: Upload artifacts to JFrog needs: [ - bump-dev-number, - rebuild-artifacts-with-new-dev-num + test-with-server-release, + bump-dev-number ] uses: ./.github/workflows/upload-to-jfrog.yml with: From d4415f9c5bcd4082c7cb1091339b936cadf666c7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 07:40:29 -0700 Subject: [PATCH 020/161] PIPELINE IMPROVMENTS --- .../download-github-artifacts/action.yml | 80 +++++++++---------- .github/workflows/build-artifacts.yml | 4 +- .github/workflows/build-bindings.yml | 4 +- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/.github/actions/download-github-artifacts/action.yml b/.github/actions/download-github-artifacts/action.yml index 242d16b18..8bda2b9d5 100644 --- a/.github/actions/download-github-artifacts/action.yml +++ b/.github/actions/download-github-artifacts/action.yml @@ -4,26 +4,26 @@ description: 'Download github artifacts for all supported versions' runs: using: "composite" steps: - # MAC X86 - - uses: actions/download-artifact@v4 - with: - name: v108-macosx_x86_64.node - path: ./lib/binding/node-v108-darwin-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v115-macosx_x86_64.node - path: ./lib/binding/node-v115-darwin-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v127-macosx_x86_64.node - path: ./lib/binding/node-v127-darwin-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v131-macosx_x86_64.node - path: ./lib/binding/node-v131-darwin-x64/ +# # MAC X86 +# - uses: actions/download-artifact@v4 +# with: +# name: v108-macosx_x86_64.node +# path: ./lib/binding/node-v108-darwin-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v115-macosx_x86_64.node +# path: ./lib/binding/node-v115-darwin-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v127-macosx_x86_64.node +# path: ./lib/binding/node-v127-darwin-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v131-macosx_x86_64.node +# path: ./lib/binding/node-v131-darwin-x64/ # # MAC ARM # - uses: actions/download-artifact@v4 @@ -132,26 +132,26 @@ runs: # path: ./lib/binding/glibc@2.31/node-v131-linux-arm64/ # Windows - - uses: actions/download-artifact@v4 - with: - name: v108-win_amd64.node - path: ./lib/binding/node-v108-win32-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v115-win_amd64.node - path: ./lib/binding/node-v115-win32-x64/ - - - - uses: actions/download-artifact@v4 - with: - name: v127-win_amd64.node - path: ./lib/binding/node-v127-win32-x64/ - - - uses: actions/download-artifact@v4 - with: - name: v131-win_amd64.node - path: ./lib/binding/node-v131-win32-x64/ +# - uses: actions/download-artifact@v4 +# with: +# name: v108-win_amd64.node +# path: ./lib/binding/node-v108-win32-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v115-win_amd64.node +# path: ./lib/binding/node-v115-win32-x64/ +# +# +# - uses: actions/download-artifact@v4 +# with: +# name: v127-win_amd64.node +# path: ./lib/binding/node-v127-win32-x64/ +# +# - uses: actions/download-artifact@v4 +# with: +# name: v131-win_amd64.node +# path: ./lib/binding/node-v131-win32-x64/ diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index 3b53c76a1..80b84590a 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -63,9 +63,9 @@ jobs: #"manylinux_aarch64", #"manylinux_20_x86_64", #"manylinux_20_aarch64", - "macosx_x86_64", + #"macosx_x86_64", #"macosx_arm64", - "win_amd64" + #"win_amd64" ] fail-fast: false uses: ./.github/workflows/build-bindings.yml diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index f280e51c1..defe950af 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -37,9 +37,9 @@ on: #- manylinux_aarch64 #- manylinux_20_x86_64 #- manylinux_20_aarch64 - - macosx_x86_64 + #- macosx_x86_64 #- macosx_arm64 - - win_amd64 + #- win_amd64 # Makes debugging via gh cli easier. default: manylinux_x86_64 run_tests: From bd175c303898033c940d17d6eedd61f80e4e257b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 08:41:10 -0700 Subject: [PATCH 021/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 6 - .github/workflows/dev-workflow-p1.yml | 129 ++--- .github/workflows/dev-workflow-p2.yml | 30 +- .../workflows/download-jfrog-artifacts.yml | 82 +++ .github/workflows/stage-workflow-p1.yml | 68 +++ .github/workflows/test-dev-artifacts.yml | 491 ++++++++++++++++++ 6 files changed, 723 insertions(+), 83 deletions(-) create mode 100644 .github/workflows/download-jfrog-artifacts.yml create mode 100644 .github/workflows/stage-workflow-p1.yml create mode 100644 .github/workflows/test-dev-artifacts.yml diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index defe950af..92de7b198 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -102,12 +102,6 @@ on: MAC_M1_SELF_HOSTED_RUNNER_PW: required: true -env: - # Note that environment variables in Github are all strings - # Github mac m1 and windows runners don't support Docker / nested virtualization - # so we need to use self-hosted runners to test wheels for these platforms - RUN_INTEGRATION_TESTS_IN_CIBW: ${{ inputs.run_tests && (startsWith(inputs.platform-tag, 'manylinux') || inputs.platform-tag == 'macosx_x86_64') }} - jobs: # Maps don't exist in Github Actions, so we have to store the map using a script and fetch it in a job # This uses up more billing minutes (rounded up to 1 minute for each job run), diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index b4a208c77..2874c2a94 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,63 +1,68 @@ -name: Dev workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - test-with-server-release: - uses: ./.github/workflows/build-artifacts.yml - with: - run_tests: ${{ github.event_name == 'pull_request' && true || inputs.run_server_release_tests }} - secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - -# test-with-server-rc: -# needs: test-with-server-release -# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: ./.github/workflows/test-server-rc.yml +#name: Dev workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# test-with-server-release: +# uses: ./.github/workflows/build-artifacts.yml +# with: +# run_tests: false # secrets: inherit -# \ No newline at end of file +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml +# +# +## test-with-server-rc: +## needs: test-with-server-release +## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +## uses: ./.github/workflows/test-server-rc.yml +## secrets: inherit +## \ No newline at end of file diff --git a/.github/workflows/dev-workflow-p2.yml b/.github/workflows/dev-workflow-p2.yml index dd94e7963..36f4e8b78 100644 --- a/.github/workflows/dev-workflow-p2.yml +++ b/.github/workflows/dev-workflow-p2.yml @@ -1,18 +1,18 @@ -name: Dev workflow (part 2) - -on: - pull_request: - branches: - - 'dev*' - types: - - synchronize - paths-ignore: - - 'package.json' - workflow_dispatch: - paths-ignore: - - 'package.json' - -jobs: +#name: Dev workflow (part 2) +# +#on: +# pull_request: +# branches: +# - 'dev*' +# types: +# - synchronize +# paths-ignore: +# - 'package.json' +# workflow_dispatch: +# paths-ignore: +# - 'package.json' +# +#jobs: # bump-dev-number: #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} # uses: ./.github/workflows/bump-version.yml diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml new file mode 100644 index 000000000..2697a9c41 --- /dev/null +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -0,0 +1,82 @@ +name: Download JFrog Artifacts to Github + +permissions: + # This is required for requesting the OIDC token + id-token: write + contents: read + +on: + workflow_dispatch: + inputs: + version: + type: string + description: Build version + required: true + #use-test-pypi: + # type: boolean + # description: 'DEBUG: upload to test.pypi.org?' + # required: true + # default: false + workflow_call: + inputs: + version: + type: string + description: Build version + required: true + secrets: + # Just make all the secrets required to make things simpler... + NPMRC: + required: true + NPMRC_OFF: + required: true + NPM_TOKEN_OFF: + required: true + +jobs: + publish-jfrog-build-to-npm: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - name: Set up JFrog credentials + uses: jfrog/setup-jfrog-cli@v4 + env: + JF_URL: https://aerospike.jfrog.io + with: + oidc-provider-name: gh-aerospike-clients + oidc-audience: aerospike/clients + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + registry-url: 'https://registry.npmjs.org' + + #- name: change package name + # run: | + # sed -i 's/"name": "[^"]*"/"name": "aerospike"/' package.json + + - name: Download Artifacts from Jfrog + run: jf rt dl "clients-npm-dev-local/aerospike/${{ env.NEW_VERSION }}/" "downloaded-artifacts/" + env: + NEW_VERSION: 6.0.2 + PACKAGE_MANAGER: npm + + - name: list Artifacts + run: | + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + + - name: Move artifacts + run: | + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + + - name: Upload wheels to GitHub Linux x86 + uses: actions/upload-artifact@v4 + if: ${{ inputs.platform-tag == 'manylinux_x86_64' }} + with: + path: ./lib/binding + name: nodejs-client-artifacts \ No newline at end of file diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml new file mode 100644 index 000000000..0876b3a58 --- /dev/null +++ b/.github/workflows/stage-workflow-p1.yml @@ -0,0 +1,68 @@ +name: Stage workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + test-with-server-release: + uses: ./.github/workflows/test-dev-artifacts.yml + with: + run_tests: true + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml +# secrets: inherit +# \ No newline at end of file diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml new file mode 100644 index 000000000..022954efe --- /dev/null +++ b/.github/workflows/test-dev-artifacts.yml @@ -0,0 +1,491 @@ +name: 'Test Dev Artifacts' +run-name: 'Build wheels (nodejs-tags=${{ inputs.nodejs-tags }}, platform-tag=${{ inputs.platform-tag }}, run_tests=${{ inputs.run_tests }}, use-server-rc=${{ inputs.use-server-rc }}, server-tag=${{ inputs.server-tag }})' + +# Build wheels on all (or select) Python versions supported by the Python client for a specific platform + +on: + workflow_dispatch: + inputs: + # These are the usual cases for building wheels: + # + # 1. One wheel for *one* supported Python version. This is for running specialized tests that only need one Python version + # like valgrind or a failing QE test. And usually, we only need one wheel for debugging purposes. + # 2. Wheels for *all* supported Python versions for *one* supported platform. This is useful for testing workflow changes for a + # single OS or CPU architecture (e.g testing that changes to debugging modes work on all Python versions) + # 3. Wheels for *all* supported Python versions and *all* supported platforms. This is for building wheels for different + # CI/CD stages (e.g dev, stage, or master). We can also test debugging modes for all platforms that support them + # + # We're able to combine case 1 and 2 into one workflow by creating an input that takes in a JSON list of strings (Python tags) + # to build wheels for. Actual list inputs aren't supported yet, so it's actually a JSON list encoded as a string. + # + # However, it's harder to combine this workflow (case 1 + 2) with case 3, because matrix outputs don't exist yet + # in Github Actions. So all jobs in the cibuildwheel job would have to pass for a self hosted job to run. + # We want each platform to be tested independently of each other, + # so there is a wrapper workflow that has a list of platforms to test and reuses this workflow for each platform. + # If one platform fails, it will not affect the building and testing of another platform (we disable fail fast mode) + nodejs-tags: + type: string + description: Valid JSON list of Python tags to build the client for + required: false + default: '[["v108", "18"], ["v115", "20"], ["v127", "22"], ["v131", "23"]]' + platform-tag: + description: Platform to build the client for. + type: choice + required: true + options: + - manylinux_x86_64 + #- manylinux_aarch64 + #- manylinux_20_x86_64 + #- manylinux_20_aarch64 + #- macosx_x86_64 + #- macosx_arm64 + #- win_amd64 + # Makes debugging via gh cli easier. + default: manylinux_x86_64 + run_tests: + description: 'Run Aerospike server and run tests using built wheels?' + type: boolean + required: false + default: false + use-server-rc: + type: boolean + required: true + default: false + description: 'Test against server release candidate?' + server-tag: + required: true + default: 'latest' + description: 'Server docker image tag' + test-file: + required: false + default: '' + description: 'new_tests/' + + workflow_call: + inputs: + # See workflow call hack in update-version.yml + is_workflow_call: + type: boolean + default: true + required: false + nodejs-tags: + type: string + required: false + default: '[["v108", "18"], ["v115", "20"], ["v127", "22"], ["v131", "23"]]' + platform-tag: + type: string + required: true + run_tests: + type: boolean + required: false + default: false + use-server-rc: + required: false + type: boolean + default: false + description: 'Test against server release candidate?' + server-tag: + required: false + type: string + default: 'latest' + description: 'Server docker image tag' + test-file: + required: false + type: string + default: '' + secrets: + # Just make all the secrets required to make things simpler... + DOCKER_HUB_BOT_USERNAME: + required: true + DOCKER_HUB_BOT_PW: + required: true + MAC_M1_SELF_HOSTED_RUNNER_PW: + required: true + +jobs: + # Maps don't exist in Github Actions, so we have to store the map using a script and fetch it in a job + # This uses up more billing minutes (rounded up to 1 minute for each job run), + # but this should be ok based on the minutes usage data for the aerospike organization + get-runner-os: + outputs: + runner-os: ${{ steps.get-runner-os.outputs.runner_os }} + runs-on: ubuntu-22.04 + steps: + - id: get-runner-os + # Single source of truth for which runner OS to use for each platform tag + run: | + declare -A hashmap + hashmap[manylinux_x86_64]="ubuntu-22.04" + hashmap[manylinux_aarch64]="22.04A" + hashmap[manylinux_20_x86_64]="20.04" + hashmap[manylinux_20_aarch64]="20.04A" + hashmap[macosx_x86_64]="macos-13-large" + hashmap[macosx_arm64]="SMA" + hashmap[win_amd64]="windows-2022" + echo runner_os=${hashmap[${{ inputs.platform-tag }}]} >> $GITHUB_OUTPUT + # Bash >= 4 supports hashmaps + shell: bash + + + cibuildbinding: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + fail-fast: false + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: 'Windows: Install C client deps' + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: nuget restore + working-directory: aerospike-client-c/vs + + - name: 'macOS x86: Setup Docker using colima for testing' + if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/setup-docker-on-macos + + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' + if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Remove aerospike docker image + if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + # TODO: combine this composite action and the above into one + - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" + if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts + run: | + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + + - name: Move artifacts + run: | + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: npm install + run: npm install + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install typescript --save-dev; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; + + - name: Run tests + if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install typescript --save-dev; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + test-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + if (docker ps -aq) { + docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." + } + else { + Write-Host "No containers to remove." + } + + - uses: ./.github/actions/run-ee-server + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts + run: | + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + + - name: Move artifacts + run: | + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: npm install + run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + +# - name: Install nvm +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +# touch ~/.zprofile +# source ~/.zprofile +# nvm -v +# shell: bash +# +# #- name: Install Node.js 20 +# # if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# # run: | +# # nvm i 20 +# # shell: bash +# +# - name: Prepare /usr/local/opt directory +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# sudo rm -rf /usr/local/opt +# sudo mkdir -p /usr/local/opt +# sudo chown -R $(whoami) /usr/local/opt +# shell: bash +# +# - name: Install libuv +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# brew install libuv +# sudo ln -s /opt/homebrew/opt/libuv/1.45.0/ /usr/local/opt/libuv +# shell: bash +# +# - name: Configure OpenSSL +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# rm -rf /usr/local/opt/openssl +# sudo ln -s /opt/homebrew/opt/openssl@3.4/ /usr/local/opt/openssl +# shell: bash +# +# - name: Update PATH and environment variables +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# echo "export PATH=\"/usr/local/bin/:/usr/local/opt/openssl/bin:\$PATH\"" >> ~/.zprofile +# echo "export LDFLAGS=\"-L/usr/local/opt/openssl/lib\"" >> ~/.zprofile +# echo "export CPPFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile +# echo "export EXT_CFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile +# shell: bash +# +# - name: Source updated environment variables +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# source ~/.zprofile +# shell: bash + +# - name: Install wheel +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# ./scripts/build-c-client.sh +# npm install +# shell: bash + +# - name: Install wheel +# if: ${{ inputs.platform-tag == 'win_amd64' }} +# run: | +# ./scripts/build-c-client.ps1 +# npm install +# shell: powershell + + - name: Connect to Docker container on remote machine with Docker daemon + if: ${{ inputs.platform-tag == 'win_amd64' }} + # DOCKER_HOST contains the IP address of the remote machine + run: | + $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} + crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 + working-directory: .github\workflows + + ## FIGURE OUT WHAT SETUP NEEDS TO HAPPEN + #- run: | + # npm install typescript --save-dev + # npx tsc; + # working-directory: ts-test + # shell: bash + + #- name: Identify binaries + # if: ${{ inputs.platform-tag == 'macosx_arm64' }} + # run: | + # ls ./lib/binding/node-v108-darwin-arm64 + # ls ./lib/binding/node-v108-darwin-arm64/aerospike.node + # mkdir -p build; + # mkdir -p build/Release; + # cp -r ./lib/binding/node-v108-darwin-arm64 build/Release + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm uninstall tsc; + npm install ..; + npm i --save-dev @types/chai; + npm i --save-dev @types/jest; + npm i --save-dev @types/mocha; + npm install mocha; + rm -rf dist; + npx tsc; + cd ..; + npm install; + pwd; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; + + + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm uninstall tsc; + npm install ..; + npm i --save-dev @types/chai; + npm i --save-dev @types/jest; + npm i --save-dev @types/mocha; + npm install mocha; + npx tsc; + cp tests\udf.lua dist\udf.lua; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + cd ..; + npx tsc; + + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} From a7fc1ec205922e3bc2dcced5b899d2918d427cb8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 08:43:26 -0700 Subject: [PATCH 022/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 4 +- .github/workflows/test-artifacts.yml | 78 +++++++++++++++++++++++++ 2 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/test-artifacts.yml diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 0876b3a58..f5f0f28b8 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -28,7 +28,7 @@ on: jobs: test-with-server-release: - uses: ./.github/workflows/test-dev-artifacts.yml + uses: ./.github/workflows/test-artifacts.yml with: run_tests: true secrets: inherit @@ -60,6 +60,8 @@ jobs: uses: ./.github/workflows/delete-artifacts.yml + + # test-with-server-rc: # needs: test-with-server-release # if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} diff --git a/.github/workflows/test-artifacts.yml b/.github/workflows/test-artifacts.yml new file mode 100644 index 000000000..0ff03c7ca --- /dev/null +++ b/.github/workflows/test-artifacts.yml @@ -0,0 +1,78 @@ +name: Test artifacts +run-name: Build artifacts (run_tests=${{ inputs.run_tests }}, use-server-rc=${{ inputs.use-server-rc }}, server-tag=${{ inputs.server-tag }}) + +# Builds manylinux wheels and source distribution +# Optionally run tests on manylinux wheels +# Then upload artifacts to Github + +on: + workflow_dispatch: + inputs: + run_tests: + description: "Run integration tests with the wheels after building them" + required: true + type: boolean + default: false + use-server-rc: + type: boolean + required: true + default: false + description: 'Test against server release candidate? (e.g to test new server features)' + server-tag: + type: string + required: true + default: 'latest' + description: 'Server docker image tag (e.g to test a client backport version)' + + workflow_call: + inputs: + # The "dev" tests test the artifacts against a server + # The dev-to-stage and stage-to-master workflow only need to build the artifacts, not test them + run_tests: + required: false + type: boolean + default: false + # workflow_call hack + is_workflow_call: + type: boolean + default: true + required: false + # This input is only used in workflow_call events + use-server-rc: + required: false + default: false + type: boolean + server-tag: + type: string + required: false + default: 'latest' + secrets: + DOCKER_HUB_BOT_USERNAME: + required: true + DOCKER_HUB_BOT_PW: + required: true + MAC_M1_SELF_HOSTED_RUNNER_PW: + required: true + +jobs: + test-bindings: + strategy: + matrix: + platform-tag: [ + "manylinux_x86_64", + #"manylinux_aarch64", + #"manylinux_20_x86_64", + #"manylinux_20_aarch64", + #"macosx_x86_64", + #"macosx_arm64", + #"win_amd64" + ] + fail-fast: false + uses: ./.github/workflows/test-dev-artifacts.yml + with: + platform-tag: ${{ matrix.platform-tag }} + # Can't use env context here, so just copy from build-sdist env var + run_tests: ${{ inputs.run_tests }} + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + secrets: inherit From d1328662d0976e3f44633d9ec0c590cc01790632 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 10:06:44 -0700 Subject: [PATCH 023/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index f5f0f28b8..f884ff3da 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -27,6 +27,10 @@ on: default: false jobs: + download-jfrog-artifacts: + uses: .github/workflows/download-jfrog-artifacts.yml + secrets: inherit + test-with-server-release: uses: ./.github/workflows/test-artifacts.yml with: From 0bce4d22327b12fc55a34b0ea5bb22e4633d9aa8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 10:10:36 -0700 Subject: [PATCH 024/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index f884ff3da..2d44844f7 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -29,6 +29,8 @@ on: jobs: download-jfrog-artifacts: uses: .github/workflows/download-jfrog-artifacts.yml + with: + version: 6.0.2.dev1 secrets: inherit test-with-server-release: From b32c3ccc96fa74acdac0a01f8935b5788f1f1662 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 10:12:33 -0700 Subject: [PATCH 025/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 2d44844f7..53bb1767a 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -28,7 +28,7 @@ on: jobs: download-jfrog-artifacts: - uses: .github/workflows/download-jfrog-artifacts.yml + uses: .github/workflows/download-jfrog-artifacts.yml@2025-Pipeline-Improvement with: version: 6.0.2.dev1 secrets: inherit From 5680e9c2d65052fe62658f26f616853347bceba0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 10:47:44 -0700 Subject: [PATCH 026/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 134 ++++++++++----------- .github/workflows/stage-workflow-p1.yml | 150 ++++++++++++------------ 2 files changed, 142 insertions(+), 142 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 2874c2a94..d42a4d6b1 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,68 +1,68 @@ -#name: Dev workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# test-with-server-release: -# uses: ./.github/workflows/build-artifacts.yml -# with: -# run_tests: false +name: Dev workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + test-with-server-release: + uses: ./.github/workflows/build-artifacts.yml + with: + run_tests: false + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml -# -# -## test-with-server-rc: -## needs: test-with-server-release -## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -## uses: ./.github/workflows/test-server-rc.yml -## secrets: inherit -## \ No newline at end of file +# \ No newline at end of file diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 53bb1767a..0801a2d65 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -1,76 +1,76 @@ -name: Stage workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - download-jfrog-artifacts: - uses: .github/workflows/download-jfrog-artifacts.yml@2025-Pipeline-Improvement - with: - version: 6.0.2.dev1 - secrets: inherit - - test-with-server-release: - uses: ./.github/workflows/test-artifacts.yml - with: - run_tests: true - secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml - - - - -# test-with-server-rc: -# needs: test-with-server-release -# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: ./.github/workflows/test-server-rc.yml +#name: Stage workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# download-jfrog-artifacts: +# uses: .github/workflows/download-jfrog-artifacts.yml@2025-Pipeline-Improvement +# with: +# version: 6.0.2.dev1 # secrets: inherit -# \ No newline at end of file +# +# test-with-server-release: +# uses: ./.github/workflows/test-artifacts.yml +# with: +# run_tests: true +# secrets: inherit +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml +# +# +# +# +## test-with-server-rc: +## needs: test-with-server-release +## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +## uses: ./.github/workflows/test-server-rc.yml +## secrets: inherit +## \ No newline at end of file From f0a8533460ebd25d10af83faaab6701fb24a3508 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 10:49:01 -0700 Subject: [PATCH 027/161] PIPELINE IMPROVMENTS --- .github/workflows/bump-version.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 11f2c9e5c..4150752c4 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -88,10 +88,10 @@ jobs: echo "${{ steps.get-new-version.outputs.new_version }}" -# update-version-in-repo: -# needs: get-new-version -# uses: ./.github/workflows/update-version.yml -# with: -# new_version: ${{ needs.get-new-version.outputs.new_version }} -# #ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} -# secrets: inherit + update-version-in-repo: + needs: get-new-version + uses: ./.github/workflows/update-version.yml + with: + new_version: ${{ needs.get-new-version.outputs.new_version }} + #ref: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} + secrets: inherit From 4a995825fcb571d5709fd5a4f078a94bb864e504 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Tue, 18 Feb 2025 12:51:42 -0700 Subject: [PATCH 028/161] PIPELINE IMPROVMENTS --- .github/workflows/bump-version.yml | 1 - .github/workflows/update-version.yml | 16 ++++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml index 4150752c4..e176478eb 100644 --- a/.github/workflows/bump-version.yml +++ b/.github/workflows/bump-version.yml @@ -87,7 +87,6 @@ jobs: run: | echo "${{ steps.get-new-version.outputs.new_version }}" - update-version-in-repo: needs: get-new-version uses: ./.github/workflows/update-version.yml diff --git a/.github/workflows/update-version.yml b/.github/workflows/update-version.yml index 6fd6d1e63..4ef5fee24 100644 --- a/.github/workflows/update-version.yml +++ b/.github/workflows/update-version.yml @@ -44,14 +44,14 @@ jobs: with: new_version: ${{ inputs.new_version }} -# - name: Commit new version -# uses: stefanzweifel/git-auto-commit-action@v4 -# with: -# commit_message: 'Auto-bump version to ${{ inputs.new_version }} [skip ci]' -# commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> -# tagging_message: ${{ inputs.new_version }} -# branch: 2025-Pipeline-Improvement -# #branch: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} + - name: Commit new version + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: 'Auto-bump version to ${{ inputs.new_version }} [skip ci]' + commit_author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> + tagging_message: ${{ inputs.new_version }} + branch: 2025-Pipeline-Improvement + #branch: ${{ inputs.is_workflow_call && inputs.ref || github.ref }} - name: Output bump commit hash for next jobs to use id: get-bump-commit-sha From 65e717ab3d3b4147f1e01b5b715ae46c07bed38d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 19:55:47 +0000 Subject: [PATCH 029/161] Auto-bump version to 6.0.2-dev.1 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09d71f8cf..b217c2586 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.2", + "version": "6.0.2-dev.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.2", + "version": "6.0.2-dev.1", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 82f7803a8..3d9070409 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.2", + "version": "6.0.2-dev.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From ec1c14e21f6888a231c6b6ddc05968e598f891cd Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 21:47:58 -0700 Subject: [PATCH 030/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 134 ++++++++++----------- .github/workflows/stage-workflow-p1.yml | 150 ++++++++++++------------ 2 files changed, 142 insertions(+), 142 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index d42a4d6b1..2874c2a94 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,68 +1,68 @@ -name: Dev workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - test-with-server-release: - uses: ./.github/workflows/build-artifacts.yml - with: - run_tests: false - secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml - - -# test-with-server-rc: -# needs: test-with-server-release -# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: ./.github/workflows/test-server-rc.yml +#name: Dev workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# test-with-server-release: +# uses: ./.github/workflows/build-artifacts.yml +# with: +# run_tests: false # secrets: inherit -# \ No newline at end of file +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml +# +# +## test-with-server-rc: +## needs: test-with-server-release +## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +## uses: ./.github/workflows/test-server-rc.yml +## secrets: inherit +## \ No newline at end of file diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 0801a2d65..53bb1767a 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -1,76 +1,76 @@ -#name: Stage workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# download-jfrog-artifacts: -# uses: .github/workflows/download-jfrog-artifacts.yml@2025-Pipeline-Improvement -# with: -# version: 6.0.2.dev1 +name: Stage workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + download-jfrog-artifacts: + uses: .github/workflows/download-jfrog-artifacts.yml@2025-Pipeline-Improvement + with: + version: 6.0.2.dev1 + secrets: inherit + + test-with-server-release: + uses: ./.github/workflows/test-artifacts.yml + with: + run_tests: true + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml # secrets: inherit -# -# test-with-server-release: -# uses: ./.github/workflows/test-artifacts.yml -# with: -# run_tests: true -# secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml -# -# -# -# -## test-with-server-rc: -## needs: test-with-server-release -## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -## uses: ./.github/workflows/test-server-rc.yml -## secrets: inherit -## \ No newline at end of file +# \ No newline at end of file From d5d3a941b6a3512cc06e00f1d9b7d0e771a02a0a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 21:54:24 -0700 Subject: [PATCH 031/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 53bb1767a..2d44844f7 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -28,7 +28,7 @@ on: jobs: download-jfrog-artifacts: - uses: .github/workflows/download-jfrog-artifacts.yml@2025-Pipeline-Improvement + uses: .github/workflows/download-jfrog-artifacts.yml with: version: 6.0.2.dev1 secrets: inherit From 17dc87565086ff369d7bc4ca921fe60bc5c37dc9 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 22:00:49 -0700 Subject: [PATCH 032/161] PIPELINE IMPROVMENTS --- .github/workflows/download-jfrog-artifacts.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml index 2697a9c41..d45316701 100644 --- a/.github/workflows/download-jfrog-artifacts.yml +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -39,7 +39,6 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} # We need the last tag before the ref, so we can relabel the version if needed fetch-depth: 0 From 82b5289b271d246964c9ed0095702870b1948e6f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 22:08:58 -0700 Subject: [PATCH 033/161] PIPELINE IMPROVMENTS --- .github/workflows/download-jfrog-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml index d45316701..559322c3d 100644 --- a/.github/workflows/download-jfrog-artifacts.yml +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -22,7 +22,7 @@ on: version: type: string description: Build version - required: true + required: false secrets: # Just make all the secrets required to make things simpler... NPMRC: From e5742d1ebd73575f1103b37a356414f760ad989b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 22:17:30 -0700 Subject: [PATCH 034/161] PIPELINE IMPROVMENTS --- .github/workflows/download-jfrog-artifacts.yml | 2 +- .github/workflows/stage-workflow-p1.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml index 559322c3d..d45316701 100644 --- a/.github/workflows/download-jfrog-artifacts.yml +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -22,7 +22,7 @@ on: version: type: string description: Build version - required: false + required: true secrets: # Just make all the secrets required to make things simpler... NPMRC: diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 2d44844f7..29c79b561 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -28,7 +28,7 @@ on: jobs: download-jfrog-artifacts: - uses: .github/workflows/download-jfrog-artifacts.yml + uses: ./.github/workflows/download-jfrog-artifacts.yml with: version: 6.0.2.dev1 secrets: inherit From b2243aec9f9d3b424090b2ed0e4b94d14dbdd4df Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 22:19:58 -0700 Subject: [PATCH 035/161] PIPELINE IMPROVMENTS --- .github/workflows/download-jfrog-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml index d45316701..68fcce1db 100644 --- a/.github/workflows/download-jfrog-artifacts.yml +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -75,7 +75,7 @@ jobs: - name: Upload wheels to GitHub Linux x86 uses: actions/upload-artifact@v4 - if: ${{ inputs.platform-tag == 'manylinux_x86_64' }} + #if: ${{ inputs.platform-tag == 'manylinux_x86_64' }} with: path: ./lib/binding name: nodejs-client-artifacts \ No newline at end of file From f4d0e7a058de8b06c5d4bd64392a1634f2e72a72 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 22:26:55 -0700 Subject: [PATCH 036/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 022954efe..078910e85 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -326,6 +326,9 @@ jobs: docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + - name: Debug artifacts directory + run: ls -lah ${{ runner.temp }}/_github_workflow/ + - name: Download artifacts uses: actions/download-artifact@v4 with: From a39537cff02ecd5955283734d979deae95e02bd7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 19 Feb 2025 22:30:06 -0700 Subject: [PATCH 037/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 078910e85..0d32ef61e 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -217,6 +217,9 @@ jobs: # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV # shell: bash + - name: Debug artifacts directory + run: ls -lah ${{ runner.temp }}/_github_workflow/ + - name: Download artifacts uses: actions/download-artifact@v4 with: From 91ccf4e7bb5f2dfc6fa97a01e5d88b68922ce855 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:06:50 -0700 Subject: [PATCH 038/161] PIPELINE IMPROVMENTS --- .github/workflows/download-jfrog-artifacts.yml | 2 +- .github/workflows/test-dev-artifacts.yml | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml index 68fcce1db..ec433408a 100644 --- a/.github/workflows/download-jfrog-artifacts.yml +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -77,5 +77,5 @@ jobs: uses: actions/upload-artifact@v4 #if: ${{ inputs.platform-tag == 'manylinux_x86_64' }} with: - path: ./lib/binding + path: ./lib/binding/* name: nodejs-client-artifacts \ No newline at end of file diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 0d32ef61e..c1909a7fe 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -217,8 +217,6 @@ jobs: # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV # shell: bash - - name: Debug artifacts directory - run: ls -lah ${{ runner.temp }}/_github_workflow/ - name: Download artifacts uses: actions/download-artifact@v4 @@ -329,9 +327,6 @@ jobs: docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - name: Debug artifacts directory - run: ls -lah ${{ runner.temp }}/_github_workflow/ - - name: Download artifacts uses: actions/download-artifact@v4 with: From bf98e49e11ba41c803d93a2b459c9339535ec9de Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:22:25 -0700 Subject: [PATCH 039/161] PIPELINE IMPROVMENTS --- .github/workflows/download-jfrog-artifacts.yml | 2 +- .github/workflows/stage-workflow-p1.yml | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/download-jfrog-artifacts.yml b/.github/workflows/download-jfrog-artifacts.yml index ec433408a..5f18b1a03 100644 --- a/.github/workflows/download-jfrog-artifacts.yml +++ b/.github/workflows/download-jfrog-artifacts.yml @@ -33,7 +33,7 @@ on: required: true jobs: - publish-jfrog-build-to-npm: + prepare-artifacts: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 29c79b561..bf6c865a3 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -35,6 +35,9 @@ jobs: test-with-server-release: uses: ./.github/workflows/test-artifacts.yml + needs: [ + download-jfrog-artifacts + ] with: run_tests: true secrets: inherit @@ -43,6 +46,7 @@ jobs: #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} uses: ./.github/workflows/bump-version.yml needs: [ + download-jfrog-artifacts, test-with-server-release ] with: @@ -52,6 +56,7 @@ jobs: upload-to-jfrog: name: Upload artifacts to JFrog needs: [ + download-jfrog-artifacts, test-with-server-release, bump-dev-number ] From 975652aa859ee0e77cbbe03301c4cee9824cb812 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:30:33 -0700 Subject: [PATCH 040/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index c1909a7fe..7f89922df 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -333,6 +333,10 @@ jobs: name: nodejs-client-artifacts path: ./downloaded-artifacts + - name: list Artifacts first + run: | + ls downloaded-artifacts/ + - name: list Artifacts run: | ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ From d22cbc8138d6ca7f30599f8d229b453473f89cf1 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:32:24 -0700 Subject: [PATCH 041/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 7f89922df..19e72c095 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -223,6 +223,10 @@ jobs: with: name: nodejs-client-artifacts path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls downloaded-artifacts/ - name: list Artifacts run: | @@ -333,9 +337,7 @@ jobs: name: nodejs-client-artifacts path: ./downloaded-artifacts - - name: list Artifacts first - run: | - ls downloaded-artifacts/ + - name: list Artifacts run: | From 87340915567724ec13bf3c428347b7652296eba3 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:36:17 -0700 Subject: [PATCH 042/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 19e72c095..6de2fde5f 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -223,18 +223,20 @@ jobs: with: name: nodejs-client-artifacts path: ./downloaded-artifacts - + - name: list Artifacts first run: | ls downloaded-artifacts/ - name: list Artifacts - run: | - ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ - name: Move artifacts run: | - cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + cp -r downloaded-artifacts/ lib/binding/ + + - name: check binding + run: + ls lib/binding - name: Change install command for release run: node ./scripts/change-install-command.js From 79377ff632a4a304e4153181146b615599ba015e Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:43:23 -0700 Subject: [PATCH 043/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 6de2fde5f..2877bffaa 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -228,8 +228,6 @@ jobs: run: | ls downloaded-artifacts/ - - name: list Artifacts - - name: Move artifacts run: | cp -r downloaded-artifacts/ lib/binding/ From fffdb4f728ad78274abcb03ff4ce64ef360e7b3b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 06:55:32 -0700 Subject: [PATCH 044/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 2877bffaa..fe5ada198 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -179,7 +179,7 @@ jobs: docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - name: Remove aerospike docker image - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + #if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} run: | if docker ps -aq | grep -q .; then docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." @@ -189,7 +189,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} + #if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} From d6a8ac5d62a0436bd4d9977449dbc2774576d424 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 07:15:40 -0700 Subject: [PATCH 045/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index fe5ada198..f294cc7e6 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -235,6 +235,8 @@ jobs: - name: check binding run: ls lib/binding + ls lib/binding/glibc@2.35 + ls lib/binding/glibc@2.31 - name: Change install command for release run: node ./scripts/change-install-command.js From d02617f73f4a2d54f742bf5434813f8c09b0b6bc Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 07:18:25 -0700 Subject: [PATCH 046/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index f294cc7e6..c0a318a77 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -234,9 +234,9 @@ jobs: - name: check binding run: - ls lib/binding - ls lib/binding/glibc@2.35 - ls lib/binding/glibc@2.31 + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; - name: Change install command for release run: node ./scripts/change-install-command.js From ae918cb98e15d092b8f65176411c262cc1c6f07a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 07:24:42 -0700 Subject: [PATCH 047/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index c0a318a77..037ecd71d 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -241,8 +241,8 @@ jobs: - name: Change install command for release run: node ./scripts/change-install-command.js - - name: npm install - run: npm install + #- name: npm install + # run: npm install - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} From 3f23b9939638f3c2e9e7095fca18fb322b99a4f3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 14:48:08 +0000 Subject: [PATCH 048/161] Auto-bump version to 6.0.2-rc.1 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index b217c2586..cfe8fbe61 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.2-dev.1", + "version": "6.0.2-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.2-dev.1", + "version": "6.0.2-rc.1", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 3d9070409..8bee94dc0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.2-dev.1", + "version": "6.0.2-rc.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 407e9b8f1e633688230659df7e66f62626582d21 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 07:58:47 -0700 Subject: [PATCH 049/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 1 + .github/workflows/upload-to-jfrog.yml | 30 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index bf6c865a3..cb6167602 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -62,6 +62,7 @@ jobs: ] uses: ./.github/workflows/upload-to-jfrog.yml with: + stage: true version: ${{ needs.bump-dev-number.outputs.new_version }} secrets: inherit diff --git a/.github/workflows/upload-to-jfrog.yml b/.github/workflows/upload-to-jfrog.yml index e61f8cd29..b9c27f162 100644 --- a/.github/workflows/upload-to-jfrog.yml +++ b/.github/workflows/upload-to-jfrog.yml @@ -10,6 +10,10 @@ on: version: type: string required: false + stage: + type: boolean + required: false + default: false jfrog-repo-name: type: string required: false @@ -40,9 +44,35 @@ jobs: - name: Create multiple directories run: mkdir -p ./lib/binding ./lib/binding/glibc@2.35/ ./lib/binding/glibc@2.31/ + # if: ${{ inputs.jfrog-repo-name == vars.JFROG_GENERIC_REPO_NAME }} + - name: Download Artifacts + if: ${{ inputs.stage }} uses: ./.github/actions/download-github-artifacts/ + - name: Download artifacts + if: ${{ !inputs.stage }} + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + if: ${{ !inputs.stage }} + run: | + ls downloaded-artifacts/ + + - name: Move artifacts + if: ${{ !inputs.stage }} + run: | + cp -r downloaded-artifacts/ lib/binding/ + + - name: check binding + if: ${{ !inputs.stage }} + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; - name: print artifacts run: ls ./lib/binding From 1612b6f36fd741ef4bf6f565ee2aad92c0887fe7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 20 Feb 2025 08:07:43 -0700 Subject: [PATCH 050/161] PIPELINE IMPROVMENTS --- .github/workflows/upload-to-jfrog.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/upload-to-jfrog.yml b/.github/workflows/upload-to-jfrog.yml index b9c27f162..6188a2ade 100644 --- a/.github/workflows/upload-to-jfrog.yml +++ b/.github/workflows/upload-to-jfrog.yml @@ -47,28 +47,28 @@ jobs: # if: ${{ inputs.jfrog-repo-name == vars.JFROG_GENERIC_REPO_NAME }} - name: Download Artifacts - if: ${{ inputs.stage }} + if: ${{ !inputs.stage }} uses: ./.github/actions/download-github-artifacts/ - name: Download artifacts - if: ${{ !inputs.stage }} + if: ${{ inputs.stage }} uses: actions/download-artifact@v4 with: name: nodejs-client-artifacts path: ./downloaded-artifacts - name: list Artifacts first - if: ${{ !inputs.stage }} + if: ${{ inputs.stage }} run: | ls downloaded-artifacts/ - name: Move artifacts - if: ${{ !inputs.stage }} + if: ${{ inputs.stage }} run: | cp -r downloaded-artifacts/ lib/binding/ - name: check binding - if: ${{ !inputs.stage }} + if: ${{ inputs.stage }} run: ls lib/binding; ls lib/binding/glibc@2.35; From eac03d3e388a8a4e24849676d6ba740b71f0d75c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 20 Feb 2025 15:12:56 +0000 Subject: [PATCH 051/161] Auto-bump version to 6.0.3 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index cfe8fbe61..7e3178d3e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.2-rc.1", + "version": "6.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.2-rc.1", + "version": "6.0.3", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 8bee94dc0..2eae991e4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.2-rc.1", + "version": "6.0.3", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 5f70eb7e68f93ca79b6d20fa7f8b44f0f0fa1bc9 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Wed, 26 Feb 2025 04:43:42 -0700 Subject: [PATCH 052/161] Added Metrics to the Nodejs Client --- .gitignore | 1 + binding.gyp | 2 + lib/aerospike.js | 2 + lib/client.js | 30 ++ lib/commands/index.js | 2 + lib/metrics_listeners.js | 28 ++ lib/policies/metrics_policy.js | 37 ++ lib/policy.js | 3 + src/include/client.h | 2 + src/include/conversions.h | 18 + src/include/policy.h | 4 + src/main/client.cc | 5 + src/main/commands/disable_metrics.cc | 48 +++ src/main/commands/enable_metrics.cc | 502 +++++++++++++++++++++++++ src/main/policy.cc | 42 +++ src/main/scan.cc | 1 - src/main/util/conversions.cc | 262 +++++++++++++ ts-test/package-lock.json | 513 ++++++++++++++++++++++++-- ts-test/package.json | 3 +- ts-test/tests/metrics.ts | 336 +++++++++++++++++ ts-test/tests/metrics_cluster_name.ts | 123 ++++++ ts-test/tests/metrics_node_close.ts | 174 +++++++++ tsconfig.tsbuildinfo | 2 +- typings/index.d.ts | 269 +++++++++++++- 24 files changed, 2380 insertions(+), 29 deletions(-) create mode 100644 lib/metrics_listeners.js create mode 100644 lib/policies/metrics_policy.js create mode 100644 src/main/commands/disable_metrics.cc create mode 100644 src/main/commands/enable_metrics.cc create mode 100644 ts-test/tests/metrics.ts create mode 100644 ts-test/tests/metrics_cluster_name.ts create mode 100644 ts-test/tests/metrics_node_close.ts diff --git a/.gitignore b/.gitignore index a5410e272..c38514bd5 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,6 @@ scripts/build-c-client.sh-output.txt libuv* docs* ts-test/dist +ts-test/metrics-* scripts/build-c-client.sh-cclient-output.log tsconfig.tsbuildinfos \ No newline at end of file diff --git a/binding.gyp b/binding.gyp index 3574fdab3..0525de948 100644 --- a/binding.gyp +++ b/binding.gyp @@ -84,6 +84,8 @@ 'src/main/expressions.cc', 'src/main/async.cc', 'src/main/command.cc', + 'src/main/commands/disable_metrics.cc', + 'src/main/commands/enable_metrics.cc', 'src/main/commands/apply_async.cc', 'src/main/commands/batch_exists.cc', 'src/main/commands/batch_get.cc', diff --git a/lib/aerospike.js b/lib/aerospike.js index 2b4f7659a..238b4cfc1 100644 --- a/lib/aerospike.js +++ b/lib/aerospike.js @@ -186,6 +186,7 @@ exports.CommandQueuePolicy = require('./policy').CommandQueuePolicy exports.InfoPolicy = require('./policy').InfoPolicy exports.ListPolicy = require('./policy').ListPolicy exports.MapPolicy = require('./policy').MapPolicy +exports.MetricsPolicy = require('./policy').MetricsPolicy exports.AdminPolicy = require('./policy').AdminPolicy /** @@ -738,6 +739,7 @@ exports.setupGlobalCommandQueue = function (policy) { */ exports.batchType = require('./batch_type') +exports.MetricsListeners = require('./metrics_listeners') /** * The {@link module:aerospike/commit_status|aerospike/commit_status} * module contains a list of commit statuses. diff --git a/lib/client.js b/lib/client.js index 1b19abd81..5d6b483f8 100644 --- a/lib/client.js +++ b/lib/client.js @@ -255,6 +255,36 @@ Client.prototype.commit = function (transaction, callback) { return cmd.execute() } +Client.prototype.enableMetrics = function (policy, callback) { + let args + + if (typeof policy === 'function') { + callback = policy + policy = null + } + + if (!(policy) || !(policy.metricsListeners)) { + args = [policy, null, null, null, null] + } else { + args = [ + policy, + policy.metricsListeners.enableListener, + policy.metricsListeners.snapshotListener, + policy.metricsListeners.nodeCloseListener, + policy.metricsListeners.disableListener + ] + } + + const cmd = new Commands.EnableMetrics(this, args, callback) + + return cmd.execute() +} + +Client.prototype.disableMetrics = function (callback) { + const cmd = new Commands.DisableMetrics(this, [], callback) + return cmd.execute() +} + /** * @function Client#contextToBase64 * diff --git a/lib/commands/index.js b/lib/commands/index.js index fc83ba94b..3c8b54629 100644 --- a/lib/commands/index.js +++ b/lib/commands/index.js @@ -35,6 +35,8 @@ exports.BatchRemove = class BatchRemoveCommand extends BatchCommand('batchRemove exports.BatchSelect = class BatchSelectCommand extends BatchCommand('batchSelect') { } exports.ChangePassword = class ChangePasswordCommand extends Command('changePassword') { } exports.Connect = class ConnectCommand extends ConnectCommandBase('connect') { } +exports.DisableMetrics = class DisableMetricsCommand extends Command('disableMetrics') { } +exports.EnableMetrics = class EnableMetricsCommand extends Command('enableMetrics') { } exports.Exists = class ExistsCommand extends ExistsCommandBase('existsAsync') { } exports.Get = class GetCommand extends ReadRecordCommand('getAsync') { } exports.IndexCreate = class IndexCreateCommand extends Command('indexCreate') { } diff --git a/lib/metrics_listeners.js b/lib/metrics_listeners.js new file mode 100644 index 000000000..b480447e5 --- /dev/null +++ b/lib/metrics_listeners.js @@ -0,0 +1,28 @@ +// ***************************************************************************** +// Copyright 2025 Aerospike, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ***************************************************************************** + +'use strict' + +class MetricsListeners { + constructor (options) { + this.enableListener = options.enableListener + this.snapshotListener = options.snapshotListener + this.nodeCloseListener = options.nodeCloseListener + this.disableListener = options.disableListener + } +} + +module.exports = MetricsListeners diff --git a/lib/policies/metrics_policy.js b/lib/policies/metrics_policy.js new file mode 100644 index 000000000..749b7f606 --- /dev/null +++ b/lib/policies/metrics_policy.js @@ -0,0 +1,37 @@ +// ***************************************************************************** +// Copyright 2013-2024 Aerospike, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ***************************************************************************** + +'use strict' + +class MetricsPolicy { + constructor (props) { + props = props || {} + + this.metricsListeners = props.metricsListeners + + this.reportDir = props.reportDir + + this.reportSizeLimit = props.reportSizeLimit + + this.interval = props.interval + + this.latencyColumns = props.latencyColumns + + this.latencyShift = props.latecnyShift + } +} + +module.exports = MetricsPolicy diff --git a/lib/policy.js b/lib/policy.js index ed5ea51f3..3154f6964 100644 --- a/lib/policy.js +++ b/lib/policy.js @@ -31,6 +31,7 @@ const HLLPolicy = require('./policies/hll_policy') const InfoPolicy = require('./policies/info_policy') const ListPolicy = require('./policies/list_policy') const MapPolicy = require('./policies/map_policy') +const MetricsPolicy = require('./policies/metrics_policy') const OperatePolicy = require('./policies/operate_policy') const QueryPolicy = require('./policies/query_policy') const ReadPolicy = require('./policies/read_policy') @@ -429,6 +430,8 @@ exports.InfoPolicy = InfoPolicy */ exports.AdminPolicy = AdminPolicy +exports.MetricsPolicy = MetricsPolicy + /** * A policy affecting the behavior of list operations. * diff --git a/src/include/client.h b/src/include/client.h index 41cb3d3dd..51a179b72 100644 --- a/src/include/client.h +++ b/src/include/client.h @@ -88,6 +88,8 @@ class AerospikeClient : public Nan::ObjectWrap { static NAN_METHOD(ChangePassword); static NAN_METHOD(Close); static NAN_METHOD(Connect); + static NAN_METHOD(DisableMetrics); + static NAN_METHOD(EnableMetrics); static NAN_METHOD(ExistsAsync); static NAN_METHOD(GetAsync); static NAN_METHOD(GetNodes); diff --git a/src/include/conversions.h b/src/include/conversions.h index dcb431dbb..e3958db12 100644 --- a/src/include/conversions.h +++ b/src/include/conversions.h @@ -22,6 +22,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -107,6 +108,9 @@ int get_optional_int64_property(int64_t *intp, bool *defined, int get_optional_string_property(char **strp, bool *defined, v8::Local obj, char const *prop, const LogInfo *log); +int get_optional_uint64_property(uint64_t *intp, bool *defined, + v8::Local obj, char const *prop, + const LogInfo *log); int get_optional_uint32_property(uint32_t *intp, bool *defined, v8::Local obj, char const *prop, const LogInfo *log); @@ -119,6 +123,9 @@ bool get_optional_list_policy(as_list_policy *policy, bool *has_policy, v8::Local obj, const LogInfo *log); bool get_map_policy(as_map_policy *policy, v8::Local obj, const LogInfo *log); +int get_optional_report_dir_property(char **report_dir, bool *defined, + v8::Local obj, const char *prop, + const LogInfo *log); // Functions to convert C client structure to v8 object(map) v8::Local error_to_jsobject(as_error *error, const LogInfo *log); @@ -180,6 +187,17 @@ int batch_remove_record_from_jsobject(as_batch_records *batch, void batch_records_free(as_batch_records *records, const LogInfo *log); int udfargs_from_jsobject(char **filename, char **funcname, as_list **args, v8::Local obj, const LogInfo *log); + +typedef struct { + uint32_t *connection; + uint32_t *write; + uint32_t *read; + uint32_t *batch; + uint32_t *query; +} latency; + +void cluster_to_jsobject(as_cluster_s* cluster, v8::Local v8_cluster, latency* latency, uint32_t bucket_max); +void node_to_jsobject(as_node_s* node, v8::Local v8_node, latency* latency, uint32_t bucket_max); int extract_blob_from_jsobject(uint8_t **data, int *len, v8::Local obj, const LogInfo *log); int list_from_jsarray(as_list **list, v8::Local array, diff --git a/src/include/policy.h b/src/include/policy.h index 6b583e981..ddda67ff1 100644 --- a/src/include/policy.h +++ b/src/include/policy.h @@ -23,6 +23,8 @@ extern "C" { #include #include #include +#include +#include } // Functions to convert v8 policies to C structures @@ -54,6 +56,8 @@ int infopolicy_from_jsobject(as_policy_info *policy, v8::Local obj, const LogInfo *log); int adminpolicy_from_jsobject(as_policy_admin *policy, v8::Local obj, const LogInfo *log); +int metricspolicy_from_jsobject_with_listeners(as_metrics_policy *policy, v8::Local obj, + as_metrics_listeners* listeners, const LogInfo *log); int applypolicy_from_jsobject(as_policy_apply *policy, v8::Local obj, const LogInfo *log); int scanpolicy_from_jsobject(as_policy_scan *policy, v8::Local obj, diff --git a/src/main/client.cc b/src/main/client.cc index a3ac11bf4..e84fd1d6d 100644 --- a/src/main/client.cc +++ b/src/main/client.cc @@ -60,6 +60,7 @@ NAN_METHOD(AerospikeClient::New) client->log->fd = g_log_info.fd; client->log->level = g_log_info.level; + // initialize the config to default values. as_config config; as_config_init(&config); @@ -121,8 +122,10 @@ NAN_METHOD(AerospikeClient::Close) events_callback_close(&client->as->config); aerospike_close(client->as, &err); aerospike_destroy(client->as); + free(client->as); free(client->log); + client->closed = true; } @@ -295,6 +298,8 @@ void AerospikeClient::Init() Nan::SetPrototypeMethod(tpl, "close", Close); Nan::SetPrototypeMethod(tpl, "connect", Connect); Nan::SetPrototypeMethod(tpl, "existsAsync", ExistsAsync); + Nan::SetPrototypeMethod(tpl, "disableMetrics", DisableMetrics); + Nan::SetPrototypeMethod(tpl, "enableMetrics", EnableMetrics); Nan::SetPrototypeMethod(tpl, "getAsync", GetAsync); Nan::SetPrototypeMethod(tpl, "getNodes", GetNodes); Nan::SetPrototypeMethod(tpl, "getStats", GetStats); diff --git a/src/main/commands/disable_metrics.cc b/src/main/commands/disable_metrics.cc new file mode 100644 index 000000000..8697bc22d --- /dev/null +++ b/src/main/commands/disable_metrics.cc @@ -0,0 +1,48 @@ +/******************************************************************************* + * Copyright 2013-2023 Aerospike, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +#include "client.h" +#include "command.h" + + + +extern "C" { +#include +} + +using namespace v8; + +NAN_METHOD(AerospikeClient::DisableMetrics) +{ + TYPE_CHECK_REQ(info[0], IsFunction, "Callback must be a function"); + + AerospikeClient *client = + Nan::ObjectWrap::Unwrap(info.This()); + AsyncCommand *cmd = + new AsyncCommand("DisableMetrics", client, info[0].As()); + + if (aerospike_disable_metrics(client->as, &cmd->err) != AEROSPIKE_OK) { + cmd->ErrorCallback(&cmd->err); + goto Cleanup; + } + else{ + Local argv[] = {Nan::Null(), Nan::Null()}; + cmd->Callback(2, argv); + } + +Cleanup: + delete cmd; +} \ No newline at end of file diff --git a/src/main/commands/enable_metrics.cc b/src/main/commands/enable_metrics.cc new file mode 100644 index 000000000..114358dc4 --- /dev/null +++ b/src/main/commands/enable_metrics.cc @@ -0,0 +1,502 @@ +/******************************************************************************* + * Copyright 2013-2023 Aerospike, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************/ + +#include "client.h" +#include "command.h" +#include "async.h" +#include "conversions.h" +#include "policy.h" +#include "log.h" +#include + +#include +#include +#include + + +extern "C" { +#include +#include +#include +#include +#include +} + +using namespace v8; + + + + +class MetricsCommand : public AerospikeCommand { + public: + MetricsCommand(AerospikeClient *client, Local callback_) + : AerospikeCommand("Metrics", client, callback_) + { + client_closed = &(client->closed); + } + + ~MetricsCommand() + { + Nan::HandleScope scope; + enable_callback.Reset(); + snapshot_callback.Reset(); + node_close_callback.Reset(); + disable_callback.Reset(); + if (policy != NULL) { + cf_free(policy); + } + if (latency) { + for (uint32_t i = 0; i < nodes_size; ++i) + { + cf_free(latency[i].connection); + cf_free(latency[i].read); + cf_free(latency[i].write); + cf_free(latency[i].batch); + cf_free(latency[i].query); + } + cf_free(latency); + } + } + bool* client_closed; + bool disabled = false; + as_metrics_listeners* listeners = NULL; + as_metrics_policy* policy = NULL; + as_cluster* cluster = NULL; + as_node* node = NULL; + latency* latency = NULL; + uint32_t bucket_max = 0; + uint32_t nodes_size = 0; + + Nan::Persistent enable_callback; + Nan::Persistent snapshot_callback; + Nan::Persistent node_close_callback; + Nan::Persistent disable_callback; + + void Enable_Callback(const int argc, Local argv[]) + { + Nan::HandleScope scope; + as_v8_debug(log, "Executing Enable callback"); + + Nan::TryCatch try_catch; + Local cb = Nan::New(enable_callback); + + runInAsyncScope(Nan::GetCurrentContext()->Global(), cb, argc, argv); + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + } + + void Snapshot_Callback(const int argc, Local argv[]) + { + Nan::HandleScope scope; + as_v8_debug(log, "Executing Snapshot callback"); + + Nan::TryCatch try_catch; + Local cb = Nan::New(snapshot_callback); + + runInAsyncScope(Nan::GetCurrentContext()->Global(), cb, argc, argv); + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + } + + void Node_Close_Callback(const int argc, Local argv[]) + { + Nan::HandleScope scope; + as_v8_debug(log, "Executing Node Close callback"); + + Nan::TryCatch try_catch; + Local cb = Nan::New(node_close_callback); + + runInAsyncScope(Nan::GetCurrentContext()->Global(), cb, argc, argv); + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + + } + + void Disable_Callback(const int argc, Local argv[]) + { + Nan::HandleScope scope; + as_v8_debug(log, "Executing Disable Callback"); + + Nan::TryCatch try_catch; + Local cb = Nan::New(disable_callback); + + runInAsyncScope(Nan::GetCurrentContext()->Global(), cb, argc, argv); + if (try_catch.HasCaught()) { + Nan::FatalException(try_catch); + } + + } + +}; + +/* + * Parses Aerospike C++ Cluster and Node object into V8 Object. + */ +static Local prepare_disable_cluster_arg(MetricsCommand* cmd) { + Nan::EscapableHandleScope scope; + Local v8_cluster = Nan::New(); + cluster_to_jsobject(cmd->cluster, v8_cluster, cmd->latency, cmd->bucket_max); + return scope.Escape(v8_cluster); +} + +static Local prepare_cluster_arg(MetricsCommand* cmd) { + Nan::EscapableHandleScope scope; + Local v8_cluster = Nan::New(); + cluster_to_jsobject(cmd->cluster, v8_cluster, NULL, 0); + return scope.Escape(v8_cluster); +} + +static Local prepare_node_arg(MetricsCommand* cmd) { + Nan::EscapableHandleScope scope; + Local v8_node = Nan::New(); + node_to_jsobject(cmd->node, v8_node, NULL, 0); + return scope.Escape(v8_node); +} + +/** + * Setup an asynchronous invocation of a function using uv worker threads. + * + * Since the metrics operations will be firing in the background, queueing the work to run asynchronously is necessary to avoid segmentation faults. + */ +void +async_invoke_metrics_callback(MetricsCommand *cmd, void (*execute)(uv_work_t *req), void (*respond)(uv_work_t *req, int status)) +{ + + // Create an async work request and prepare the command + uv_work_t *req = new uv_work_t; + req->data = cmd; + + // Pass the work request to libuv to be run when a + // worker-thread is available to process it. + uv_queue_work(uv_default_loop(), // event loop + req, // work token + execute, // execute work, nothing since no C Code must be executed + respond // respond to callback by running the appropriate metrics callback + ); + +} + +/* Asynchronous functions passed to the worker threads which execute the metrics callbacks provided by the user. */ + +static void respond_enable(uv_work_t *req, int status) +{ + Nan::HandleScope scope; + MetricsCommand *cmd = reinterpret_cast(req->data); + + if(!cmd || cmd->disabled || *(cmd->client_closed)){ + delete req; + return; + } + + LogInfo *log = cmd->log; + + as_v8_debug(log, "Executing Metrics Enable Callback"); + + Local argv[] = {}; + + cmd->Enable_Callback(0, argv); + + delete req; +} + +static void respond_snapshot(uv_work_t *req, int status) +{ + Nan::HandleScope scope; + + MetricsCommand *cmd = reinterpret_cast(req->data); + + if(!cmd || cmd->disabled || *(cmd->client_closed)){ + delete req; + return; + } + + LogInfo *log = cmd->log; + + as_v8_debug(log, "Executing Metrics Snapshot Callback"); + + Local argv[] = {prepare_cluster_arg(cmd)}; + + cmd->Snapshot_Callback(1, argv); + + + delete req; + +} + +static void respond_node_close(uv_work_t *req, int status) +{ + Nan::HandleScope scope; + + MetricsCommand *cmd = reinterpret_cast(req->data); + + if(!cmd || cmd->disabled || *(cmd->client_closed)){ + delete req; + return; + } + + LogInfo *log = cmd->log; + + as_v8_debug(log, "Executing Metrics Node Close Callback"); + + Local argv[] = {prepare_node_arg(cmd)}; + + cmd->Node_Close_Callback(1, argv); + + + delete req; + +} + + +static void respond_disable(uv_work_t *req, int status) +{ + Nan::HandleScope scope; + + MetricsCommand *cmd = reinterpret_cast(req->data); + if(*(cmd->client_closed)){ + delete req; + delete cmd; + return; + } + + LogInfo *log = cmd->log; + + as_v8_debug(log, "Executing Metrics Disables Snapshot"); + + Local argv[] = {prepare_disable_cluster_arg(cmd)}; + + cmd->Disable_Callback(1, argv); + + delete req; + delete cmd; +} + +static void execute_nothing(uv_work_t *req) +{ + +} + +/* C Listeners used in AS_METRICS_POLICY */ + +as_status enable_listener(as_error* err, void* udata) { + MetricsCommand* cmd = reinterpret_cast(udata); + + if(!cmd || cmd->disabled){ + return (as_status) 0; + } + + async_invoke_metrics_callback(cmd, execute_nothing, respond_enable); + + return (as_status) 0; +} + + +as_status snapshot_listener(as_error* err, struct as_cluster_s* cluster, void* udata) { + MetricsCommand* cmd = reinterpret_cast(udata); + + if(!cmd || cmd->disabled){ + return (as_status) 0; + } + cmd->cluster = cluster; + + + async_invoke_metrics_callback(cmd, execute_nothing, respond_snapshot); + + return (as_status) 0; +} + + + +as_status node_close_listener(as_error* err, struct as_node_s* node, void* udata) { + MetricsCommand* cmd = reinterpret_cast(udata); + + if(!cmd || cmd->disabled){ + return (as_status) 0; + } + cmd->node = node; + + + async_invoke_metrics_callback(cmd, execute_nothing, respond_node_close); + + + + + return (as_status) 0; +} + +as_status disable_listener(as_error* err, struct as_cluster_s* cluster, void* udata) { + MetricsCommand* cmd = reinterpret_cast(udata); + + cmd->disabled = true; + + cmd->cluster = cluster; + + as_nodes* nodes = as_nodes_reserve(cluster); + cmd->nodes_size = nodes->size; + cmd->latency = (latency *)cf_malloc(nodes->size * sizeof(latency)); + uint32_t i, j; + for (i = 0; i < nodes->size; i++) { + + as_node* node = nodes->array[i]; + + as_node_metrics* node_metrics = node->metrics; + + as_latency_buckets* buckets = &node_metrics->latency[0]; + + cmd->bucket_max = buckets->latency_columns; + + cmd->latency[i].connection = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency[i].write = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency[i].read = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency[i].batch = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency[i].query = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + + + + for (j = 0; j < cmd->bucket_max; j++) { + cmd->latency[i].connection[j] = (uint32_t) as_latency_get_bucket(buckets, i); + } + + buckets = &node_metrics->latency[1]; + + for (j = 0; j < cmd->bucket_max; j++) { + cmd->latency[i].write[j] = (uint32_t) as_latency_get_bucket(buckets, i); + } + + buckets = &node_metrics->latency[2]; + + for (j = 0; j < cmd->bucket_max; j++) { + cmd->latency[i].read[j] = (uint32_t) as_latency_get_bucket(buckets, i); + } + + buckets = &node_metrics->latency[3]; + + for (j = 0; j < cmd->bucket_max; j++) { + cmd->latency[i].batch[j] = (uint32_t) as_latency_get_bucket(buckets, i); + } + + buckets = &node_metrics->latency[4]; + + for (j = 0; j < cmd->bucket_max; j++) { + cmd->latency[i].query[j] = (uint32_t) as_latency_get_bucket(buckets, i); + } + + } + + as_nodes_release(nodes); + + async_invoke_metrics_callback(cmd, execute_nothing, respond_disable); + + return (as_status) 0; +} + +static void *prepare(const Nan::FunctionCallbackInfo &info) +{ + Nan::HandleScope scope; + AerospikeClient *client = + Nan::ObjectWrap::Unwrap(info.This()); + MetricsCommand *cmd = + new MetricsCommand(client, info[5].As()); + LogInfo *log = client->log; + + + if (info[1]->IsFunction()) { + if (info[2]->IsFunction() && info[3]->IsFunction() && info[4]->IsFunction()) { + + cmd->enable_callback.Reset(info[1].As()); + cmd->snapshot_callback.Reset(info[2].As()); + cmd->node_close_callback.Reset(info[3].As()); + cmd->disable_callback.Reset(info[4].As()); + + cmd->listeners = (as_metrics_listeners *)cf_malloc(sizeof(as_metrics_listeners)); + + cmd->listeners->enable_listener = enable_listener; + cmd->listeners->snapshot_listener = snapshot_listener; + cmd->listeners->node_close_listener = node_close_listener; + cmd->listeners->disable_listener = disable_listener; + cmd->listeners->udata = cmd; + + } + else { + return CmdSetError(cmd, AEROSPIKE_ERR_PARAM, "If one metrics callback is set, all metrics callbacks must be set"); + } + } + + cmd->policy = (as_metrics_policy *)cf_malloc(sizeof(as_metrics_policy)); + if (info[0]->IsObject()) { + if (metricspolicy_from_jsobject_with_listeners(cmd->policy, info[0].As(), cmd->listeners, log) != + AS_NODE_PARAM_OK) { + return CmdSetError(cmd, AEROSPIKE_ERR_PARAM, + "Metrics policy parameter invalid"); + } + } + else{ + as_metrics_policy_init(cmd->policy); + } + + return cmd; +} + +static void execute(uv_work_t *req) +{ + + MetricsCommand *cmd = reinterpret_cast(req->data); + LogInfo *log = cmd->log; + + + if (!cmd->CanExecute()) { + return; + } + + as_v8_debug(log, "Executing MetricsCommand command, enabling Metrics"); + aerospike_enable_metrics(cmd->as, &cmd->err, cmd->policy); +} + +static void respond(uv_work_t *req, int status) +{ + Nan::HandleScope scope; + + MetricsCommand *cmd = reinterpret_cast(req->data); + + + Local argv[] = {Nan::Null(), Nan::Null()}; + if (!(cmd->IsError())){ + cmd->Callback(2, argv); + } + else { + cmd->ErrorCallback(); + } + delete req; +} + + +NAN_METHOD(AerospikeClient::EnableMetrics) +{ + TYPE_CHECK_OPT(info[0], IsObject, "policy must be an object"); + TYPE_CHECK_OPT(info[1], IsFunction, "enableListener must be a function"); + TYPE_CHECK_OPT(info[2], IsFunction, "snapshotListener must be a function"); + TYPE_CHECK_OPT(info[3], IsFunction, "nodeCloseListener must be a function"); + TYPE_CHECK_OPT(info[4], IsFunction, "disableListener must be a function"); + TYPE_CHECK_OPT(info[5], IsFunction, "Callback must be a function"); + + async_invoke(info, prepare, execute, respond); +} + + + diff --git a/src/main/policy.cc b/src/main/policy.cc index 9a0912161..1e5296b52 100644 --- a/src/main/policy.cc +++ b/src/main/policy.cc @@ -24,6 +24,7 @@ extern "C" { #include #include +#include } using namespace v8; @@ -698,6 +699,47 @@ int adminpolicy_from_jsobject(as_policy_admin *policy, Local obj, return AS_NODE_PARAM_OK; } +int metricspolicy_from_jsobject_with_listeners(as_metrics_policy *policy, Local obj, + as_metrics_listeners* listeners, const LogInfo *log) +{ + if (obj->IsUndefined() || obj->IsNull()) { + return AS_NODE_PARAM_ERR; + } + int rc = 0; + as_metrics_policy_init(policy); + + if(listeners != NULL){ + policy->metrics_listeners = *listeners; + } + if ((rc = get_optional_report_dir_property((char**)&policy->report_dir, NULL, obj, + "reportDir", log)) != + AS_NODE_PARAM_OK) { + return rc; + } + if ((rc = get_optional_uint64_property(&policy->report_size_limit, NULL, obj, + "reportSizeLimit", log)) != + AS_NODE_PARAM_OK) { + return rc; + } + if ((rc = get_optional_uint32_property(&policy->interval, NULL, obj, + "interval", log)) != + AS_NODE_PARAM_OK) { + return rc; + } + if ((rc = get_optional_uint32_property(&policy->latency_columns, NULL, obj, + "latencyColumns", log)) != + AS_NODE_PARAM_OK) { + return rc; + } + if ((rc = get_optional_uint32_property(&policy->latency_shift, NULL, obj, + "latencyShift", log)) != + AS_NODE_PARAM_OK) { + return rc; + } + as_v8_detail(log, "Parsing info policy: success"); + return AS_NODE_PARAM_OK; +} + int partitions_from_jsobject(as_partition_filter *pf, bool *defined, v8::Local obj, const LogInfo *log) { diff --git a/src/main/scan.cc b/src/main/scan.cc index a5978b0ae..1a876e36e 100644 --- a/src/main/scan.cc +++ b/src/main/scan.cc @@ -165,7 +165,6 @@ void setup_scan_pages(as_scan **scan, Local ns, Local set, as_scan_set_paginate(*scan, true); if (!maybe_options->IsObject()) { - printf("returnthis"); return; } diff --git a/src/main/util/conversions.cc b/src/main/util/conversions.cc index 94921df10..a6fe30b6b 100644 --- a/src/main/util/conversions.cc +++ b/src/main/util/conversions.cc @@ -28,6 +28,8 @@ extern "C" { #include #include #include +#include +#include #include #include #include @@ -37,6 +39,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -246,6 +249,30 @@ int get_optional_int32_property(int32_t *intp, bool *defined, Local obj, return AS_NODE_PARAM_OK; } +int get_optional_uint64_property(uint64_t *intp, bool *defined, Local obj, + char const *prop, const LogInfo *log) +{ + Nan::HandleScope scope; + Local value = + Nan::Get(obj, Nan::New(prop).ToLocalChecked()).ToLocalChecked(); + if (value->IsNumber()) { + if (defined != NULL) + (*defined) = true; + (*intp) = Nan::To(value).FromJust(); + as_v8_detail(log, "%s => (uint64) %d", prop, *intp); + } + else if (value->IsUndefined() || value->IsNull()) { + if (defined != NULL) + (*defined) = false; + as_v8_detail(log, "%s => undefined", prop); + } + else { + as_v8_error(log, "Type error: %s property should be integer (uint64)", prop); + return AS_NODE_PARAM_ERR; + } + return AS_NODE_PARAM_OK; +} + int get_optional_uint32_property(uint32_t *intp, bool *defined, Local obj, char const *prop, const LogInfo *log) @@ -502,6 +529,41 @@ int get_optional_asval_property(as_val **value, bool *defined, return asval_from_jsvalue(value, v8value, log); } +int get_optional_report_dir_property(char **report_dir, bool *defined, + Local obj, const char *prop, + const LogInfo *log) +{ + Nan::HandleScope scope; + Local v8value = + Nan::Get(obj, Nan::New(prop).ToLocalChecked()).ToLocalChecked(); + if (v8value->IsUndefined() || v8value->IsNull()) { + if (defined != NULL) + (*defined) = false; + as_v8_detail(log, "%s => undefined", prop); + return AS_NODE_PARAM_OK; + } + if (v8value->IsString()) { + *report_dir = (char *)malloc(256); + Local v8_string_report_dir = v8value.As(); + if((v8_string_report_dir->Length() + 1) > 256){ + as_v8_error(log, "Property error: %s report_dir must be less than 255 characters", + prop); + return AS_NODE_PARAM_ERR; + } + strncpy(*report_dir, *Nan::Utf8String(v8_string_report_dir), ((v8_string_report_dir->Length() + 1) < 256) ? + (v8_string_report_dir->Length() + 1) : 256); + as_v8_detail(log, "report dir : %s", (*report_dir)); + if (defined != NULL) + (*defined) = true; + return AS_NODE_PARAM_OK; + } + as_v8_error(log, "Type error: %s property should be String", prop); + if (defined != NULL) + (*defined) = false; + return AS_NODE_PARAM_ERR; + +} + int host_from_jsobject(Local obj, char **addr, uint16_t *port, const LogInfo *log) { @@ -1460,6 +1522,206 @@ int recordmeta_from_jsobject(as_record *rec, Local obj, return AS_NODE_PARAM_OK; } + + + +void cluster_to_jsobject(as_cluster_s* cluster, Local v8_cluster, latency* latency, uint32_t bucket_max) { + as_error err; + as_error_init(&err); + + char* cluster_name = cluster->cluster_name; + + if (cluster_name == NULL) { + cluster_name = ""; + } + /* + uint32_t cpu_load, mem; + as_metrics_process_cpu_load_mem_usage(&err, NULL, &cpu_load, &mem); + + char now_str[128]; + timestamp_to_string(now_str, sizeof(now_str)); + + Nan::Set(v8_cluster, Nan::New("time").ToLocalChecked(), Nan::New(now_str).ToLocalChecked()); + + Nan::Set(v8_cluster, Nan::New("cpuLoad").ToLocalChecked(), Nan::New(cpu_load)); + */ + Nan::Set(v8_cluster, Nan::New("clusterName").ToLocalChecked(), + Nan::New(cluster_name).ToLocalChecked()); + + Nan::Set(v8_cluster, Nan::New("commandCount").ToLocalChecked(), Nan::New((uint32_t) as_cluster_get_command_count(cluster))); + + Nan::Set(v8_cluster, Nan::New("invalidNodeCount").ToLocalChecked(), Nan::New(cluster->invalid_node_count)); + + Nan::Set(v8_cluster, Nan::New("transactionCount").ToLocalChecked(), Nan::New((uint32_t) as_cluster_get_tran_count(cluster))); + + Nan::Set(v8_cluster, Nan::New("retryCount").ToLocalChecked(), Nan::New((uint32_t) as_cluster_get_retry_count(cluster))); + + Nan::Set(v8_cluster, Nan::New("delayQueueTimeoutCount").ToLocalChecked(), Nan::New((double)as_cluster_get_delay_queue_timeout_count(cluster))); + + Local v8_event_loop = Nan::New(); + + for (uint32_t i = 0; i < as_event_loop_size; i++) { + as_event_loop* loop = &as_event_loops[i]; + if (i > 0) { + exit(1); + } + Nan::Set(v8_event_loop, Nan::New("processSize").ToLocalChecked(), Nan::New((uint32_t) as_event_loop_get_process_size(loop))); + Nan::Set(v8_event_loop, Nan::New("queueSize").ToLocalChecked(), Nan::New((uint32_t) as_event_loop_get_queue_size(loop))); + + } + + Nan::Set(v8_cluster, Nan::New("eventLoop").ToLocalChecked(), v8_event_loop); + + Local v8_nodes = Nan::New(); + as_nodes* nodes = as_nodes_reserve(cluster); + if(nodes){ + for (uint32_t i = 0; i < nodes->size; i++) { + as_node* node = nodes->array[i]; + Local v8_node = Nan::New(); + if(latency){ + node_to_jsobject(node, v8_node, &latency[i], bucket_max); + + } + else{ + node_to_jsobject(node, v8_node, NULL, 0); + } + Nan::Set(v8_nodes, i, v8_node); + } + } + as_nodes_release(nodes); + + + Nan::Set(v8_cluster, Nan::New("nodes").ToLocalChecked(), v8_nodes); + + + +} + +void node_to_jsobject(as_node_s* node, Local v8_node, latency* latency, uint32_t bucket_max) { + Nan::Set(v8_node, Nan::New("name").ToLocalChecked(), Nan::New(node->name).ToLocalChecked()); + + as_address* address = as_node_get_address(node); + + struct sockaddr* addr = (struct sockaddr*)&address->addr; + uint32_t port = (uint32_t) as_address_port(addr); + char address_name[AS_IP_ADDRESS_SIZE]; + as_address_short_name(addr, address_name, sizeof(address_name)); + + Nan::Set(v8_node, Nan::New("address").ToLocalChecked(), Nan::New(address_name).ToLocalChecked()); + Nan::Set(v8_node, Nan::New("port").ToLocalChecked(), Nan::New(port)); + //Should this just by conn in NODEJS + struct as_conn_stats_s async; + as_conn_stats_init(&async); + + for (uint32_t i = 0; i < as_event_loop_size; i++) { + // Regular async. + as_conn_stats_sum(&async, &node->async_conn_pools[i]); + } + + Local v8_conn_stats = Nan::New(); + Nan::Set(v8_conn_stats, Nan::New("inUse").ToLocalChecked(), Nan::New(async.in_use)); + Nan::Set(v8_conn_stats, Nan::New("inPool").ToLocalChecked(), Nan::New(async.in_pool)); + Nan::Set(v8_conn_stats, Nan::New("opened").ToLocalChecked(), Nan::New(async.opened)); + Nan::Set(v8_conn_stats, Nan::New("closed").ToLocalChecked(), Nan::New(async.closed)); + + Nan::Set(v8_node, Nan::New("conns").ToLocalChecked(), v8_conn_stats); + + Nan::Set(v8_node, Nan::New("errorCount").ToLocalChecked(), Nan::New((uint32_t) as_node_get_error_count(node))); + Nan::Set(v8_node, Nan::New("timeoutCount").ToLocalChecked(), Nan::New((uint32_t) as_node_get_timeout_count(node))); + + as_node_metrics* node_metrics = node->metrics; + + Local v8_latency = Nan::New(); + + Local connection = Nan::New(); + Local write = Nan::New(); + Local read = Nan::New(); + Local batch = Nan::New(); + Local query = Nan::New(); + uint32_t i = 0; + + if(!latency){ + + + as_latency_buckets* buckets = &node_metrics->latency[0]; + + bucket_max = buckets->latency_columns; + + for (i = 0; i < bucket_max; i++) { + Nan::Set(connection, i, Nan::New((uint32_t) as_latency_get_bucket(buckets, i))); + } + + buckets = &node_metrics->latency[1]; + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(write, i, Nan::New((uint32_t) as_latency_get_bucket(buckets, i))); + } + + buckets = &node_metrics->latency[2]; + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(read, i, Nan::New((uint32_t) as_latency_get_bucket(buckets, i))); + } + + buckets = &node_metrics->latency[3]; + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(batch, i, Nan::New((uint32_t) as_latency_get_bucket(buckets, i))); + } + + buckets = &node_metrics->latency[4]; + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(query, i, Nan::New((uint32_t) as_latency_get_bucket(buckets, i))); + } + + Nan::Set(v8_latency, Nan::New("connLatency").ToLocalChecked(), connection); + Nan::Set(v8_latency, Nan::New("writeLatency").ToLocalChecked(), write); + Nan::Set(v8_latency, Nan::New("readLatency").ToLocalChecked(), read); + Nan::Set(v8_latency, Nan::New("batchLatency").ToLocalChecked(), batch); + Nan::Set(v8_latency, Nan::New("queryLatency").ToLocalChecked(), query); + } + else{ + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(connection, i, Nan::New((uint32_t) latency->connection[i])); + } + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(write, i, Nan::New((uint32_t) latency->write[i])); + } + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(read, i, Nan::New((uint32_t) latency->read[i])); + } + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(batch, i, Nan::New((uint32_t) latency->batch[i])); + } + + for ( i = 0; i < bucket_max; i++) { + Nan::Set(query, i, Nan::New((uint32_t) latency->query[i])); + } + + + Nan::Set(v8_latency, Nan::New("connLatency").ToLocalChecked(), connection); + Nan::Set(v8_latency, Nan::New("writeLatency").ToLocalChecked(), write); + Nan::Set(v8_latency, Nan::New("readLatency").ToLocalChecked(), read); + Nan::Set(v8_latency, Nan::New("batchLatency").ToLocalChecked(), batch); + Nan::Set(v8_latency, Nan::New("queryLatency").ToLocalChecked(), query); + + } + + + + + + Nan::Set(v8_node, Nan::New("metrics").ToLocalChecked(), v8_latency); + + + +} + int extract_blob_from_jsobject(uint8_t **data, int *len, Local obj, const LogInfo *log) { diff --git a/ts-test/package-lock.json b/ts-test/package-lock.json index 678a83d24..c28eb6c73 100644 --- a/ts-test/package-lock.json +++ b/ts-test/package-lock.json @@ -1,4 +1,3 @@ - { "name": "ts-test", "version": "1.0.0", @@ -10,7 +9,8 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "aerospike": "file:.." + "aerospike": "file:..", + "dockerode": "^4.0.4" }, "devDependencies": { "@types/chai": "^5.0.1", @@ -27,7 +27,7 @@ }, "..": { "name": "aerospike", - "version": "6.0.1", + "version": "6.0.2", "cpu": [ "x64", "arm64" @@ -100,6 +100,12 @@ "node": ">=6.9.0" } }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "license": "Apache-2.0" + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -113,6 +119,78 @@ "node": ">=12" } }, + "node_modules/@grpc/grpc-js": { + "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", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "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==", + "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" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/@jest/expect-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", @@ -185,6 +263,80 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, "node_modules/@shikijs/core": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.21.0.tgz", @@ -353,7 +505,6 @@ "version": "22.2.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.13.0" @@ -449,7 +600,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -459,7 +609,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -499,6 +648,15 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -506,6 +664,35 @@ "dev": true, "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -519,6 +706,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -549,6 +747,39 @@ "dev": true, "license": "ISC" }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -647,6 +878,12 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -679,7 +916,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -692,7 +928,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, "node_modules/comma-separated-tokens": { @@ -705,6 +940,20 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/cpu-features": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.19.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -716,7 +965,6 @@ "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, "license": "MIT", "dependencies": { "ms": "2.1.2" @@ -734,7 +982,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, "license": "MIT" }, "node_modules/decamelize": { @@ -792,13 +1039,54 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/docker-modem": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", + "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", + "license": "Apache-2.0", + "dependencies": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.15.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/dockerode": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.4.tgz", + "integrity": "sha512-6GYP/EdzEY50HaOxTVTJ2p+mB5xDHTMJhS+UoGrVyS6VC+iQRh7kZ4FRpUYq6nziby7hPqWhOrFFUFTMUZJJ5w==", + "license": "Apache-2.0", + "dependencies": { + "@balena/dockerignore": "^1.0.2", + "@grpc/grpc-js": "^1.11.1", + "@grpc/proto-loader": "^0.7.13", + "docker-modem": "^5.0.6", + "protobufjs": "^7.3.2", + "tar-fs": "~2.0.1", + "uuid": "^10.0.0" + }, + "engines": { + "node": ">= 8.0" + } + }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, "license": "MIT" }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -815,7 +1103,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -891,6 +1178,12 @@ "flat": "cli.js" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -917,7 +1210,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" @@ -1030,6 +1322,26 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1046,7 +1358,6 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, "license": "ISC" }, "node_modules/is-binary-path": { @@ -1076,7 +1387,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -1254,6 +1564,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -1271,6 +1587,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/long": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.1.tgz", + "integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==", + "license": "Apache-2.0" + }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -1444,6 +1766,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, "node_modules/mocha": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", @@ -1487,6 +1815,13 @@ "dev": true, "license": "MIT" }, + "node_modules/nan": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.1.tgz", + "integrity": "sha512-pfRR4ZcNTSm2ZFHaztuvbICf+hyiG6ecA06SfAxoPmuHjvMu0KUIae7Y8GyVkbBqeEIidsmXeYooWIX9+qjfRQ==", + "license": "MIT", + "optional": true + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1501,7 +1836,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "license": "ISC", "dependencies": { "wrappy": "1" @@ -1619,6 +1953,40 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", @@ -1645,6 +2013,20 @@ "dev": true, "license": "MIT" }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -1668,7 +2050,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1678,7 +2059,6 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, "funding": [ { "type": "github", @@ -1695,6 +2075,12 @@ ], "license": "MIT" }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -1739,6 +2125,29 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "license": "ISC" + }, + "node_modules/ssh2": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", + "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.10", + "nan": "^2.20.0" + } + }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -1762,11 +2171,19 @@ "node": ">=8" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/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", @@ -1795,7 +2212,6 @@ "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" @@ -1833,6 +2249,34 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1910,6 +2354,12 @@ "node": ">=0.3.1" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense" + }, "node_modules/typedoc": { "version": "0.26.7", "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.7.tgz", @@ -1971,7 +2421,6 @@ "version": "6.13.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", - "dev": true, "license": "MIT" }, "node_modules/unist-util-is": { @@ -2042,6 +2491,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -2088,7 +2556,6 @@ "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", @@ -2106,14 +2573,12 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, "license": "ISC" }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, "license": "ISC", "engines": { "node": ">=10" diff --git a/ts-test/package.json b/ts-test/package.json index 360125592..c1609ff3b 100644 --- a/ts-test/package.json +++ b/ts-test/package.json @@ -25,6 +25,7 @@ "typescript": "^5.5.4" }, "dependencies": { - "aerospike": "file:.." + "aerospike": "file:..", + "dockerode": "^4.0.4" } } diff --git a/ts-test/tests/metrics.ts b/ts-test/tests/metrics.ts new file mode 100644 index 000000000..eee89d04e --- /dev/null +++ b/ts-test/tests/metrics.ts @@ -0,0 +1,336 @@ +// ***************************************************************************** +// Copyright 2013-2024 Aerospike, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ***************************************************************************** + +'use strict' + +/* eslint-env mocha */ +/* global expect */ + +import Aerospike, { Client as Cli, Node, NodeMetrics, ConnectionStats, Cluster, MetricsPolicy, MetricsListeners} from 'aerospike'; + +import { expect } from 'chai'; +import * as helper from './test_helper'; + +import * as fs from 'fs'; + + + +describe('Metrics tests', function () { + const client: Cli = helper.client + + + const blank_policy: MetricsPolicy = new Aerospike.MetricsPolicy() + + let enableTriggered: boolean = false + let disableTriggered: boolean = false + let snapshotTriggered: boolean = false + let clusterFromDisableListener: any = null + let clusterFromSnapshotListener: any = null + + let metricsLogFolder = '.' + + function enableListener() { + enableTriggered = true + return + } + + function snapshotListener(cluster: Cluster) { + snapshotTriggered = true + clusterFromSnapshotListener = cluster + return + } + + function nodeCloseListener(node: Node) { + return + } + + function disableListener(cluster: Cluster) { + disableTriggered = true + clusterFromDisableListener = cluster + return + } + + function enable_throw_exc() { + throw new Error(`enable threw an error`) + } + + + + function disable_throw_exc( Cluster: any ){ + throw new Error(`disable threw an error`) + } + + it('enable metrics', async function () { + let retval: any = await client.enableMetrics() + + expect(retval).to.eql(null) + + }) + + it('enable metrics extra args', async function () { + try{ + await (client as any).enableMetrics(null, 1) + } + catch(error: any){ + expect(error.message).to.eql("this.callback.bind is not a function") + } + + + + }) + + it('With valid policy ', async function () { + await client.enableMetrics(blank_policy) + }) + + it('With null policy ', async function () { + await (client as any).enableMetrics(null) + }) + + it('enable metrics incorrect args', async function () { + try{ + await (client as any).enableMetrics(1) + } + catch(error: any){ + expect(error.message).to.eql("policy must be an object") + } + + }) + + + it('test metrics writer', async function () { + let policy: MetricsPolicy = new Aerospike.MetricsPolicy({ + interval: 1 + }) + + await client.enableMetrics(policy) + + await new Promise(r => setTimeout(r, 3000)); + + await client.disableMetrics() + + const metricsLogFilenames = fs.readdirSync('.') + .filter(file => file.match(/^metrics-.*\.log$/)); + + if (metricsLogFilenames.length === 0) { + throw new Error('No metrics log files found'); + } + }) + + + it('test setting custom listener functions', async function () { + + let listeners: MetricsListeners = new Aerospike.MetricsListeners( + { + enableListener, + disableListener, + nodeCloseListener, + snapshotListener + } + ) + + let bucketCount = 5 + + let policy: MetricsPolicy = new MetricsPolicy({ + metricsListeners: listeners, + reportDir: metricsLogFolder, + reportSizeLimit: 1000, + interval: 4, + latencyColumns: bucketCount, + latencyShift: 2 + } + ) + + await client.enableMetrics(policy) + + + const key = new Aerospike.Key('test', 'demo', 'demo') + const key2 = new Aerospike.Key('test', 'demo', 'demo2') + const key3 = new Aerospike.Key('test', 'demo', 'demo3') + + await client.put(key, {example: 1}) + await new Promise(r => setTimeout(r, 500)); + + await client.put(key2, {example: 1}) + await new Promise(r => setTimeout(r, 500)); + await client.put(key3, {example: 1}) + await new Promise(r => setTimeout(r, 500)); + + + await client.get(key) + await new Promise(r => setTimeout(r, 500)); + await client.get(key2) + await new Promise(r => setTimeout(r, 500)); + await client.get(key3) + await new Promise(r => setTimeout(r, 1500)); + + await client.disableMetrics() + + await new Promise(r => setTimeout(r, 3000)); + + expect(enableTriggered).to.eql(true) + expect(snapshotTriggered).to.eql(true) + expect(disableTriggered).to.eql(true) + + for (const cluster of [clusterFromSnapshotListener, clusterFromDisableListener]) { + let temp: Cluster = cluster + expect(cluster.clusterName).to.satisfy((name: string) => (name === null) || typeof name === "string"); + expect(cluster.invalidNodeCount).to.be.a("number"); + expect(cluster.commandCount).to.be.a("number"); + expect(cluster.retryCount).to.be.a("number"); + expect(cluster.nodes).to.be.an("array"); + + // Also check the Node and ConnectionStats objects in the Cluster object were populated + for (const node of cluster.nodes) { + let tempNode: Node = node + + expect(node.name).to.be.a("string"); + expect(node.address).to.be.a("string"); + expect(node.port).to.be.a("number"); + let conns: ConnectionStats = node.conns + expect(node.conns.inUse).to.be.a("number"); + expect(node.conns.inPool).to.be.a("number"); + expect(node.conns.opened).to.be.a("number"); + expect(node.conns.closed).to.be.a("number"); + expect(node.errorCount).to.be.a("number"); + expect(node.timeoutCount).to.be.a("number"); + + // Check NodeMetrics + const metrics: NodeMetrics = node.metrics; + const latencyBuckets = [ + metrics.connLatency, + metrics.writeLatency, + metrics.readLatency, + metrics.batchLatency, + metrics.queryLatency + ]; + + for (const buckets of latencyBuckets) { + expect(buckets).to.be.an("array").with.lengthOf(bucketCount); + for (const bucket of buckets) { + expect(bucket).to.be.a("number"); + } + } + } + } + }) + + it('enable metrics incorrect args latencyShift', async function () { + let policy: any = { + latencyShift: true, + } + try{ + await client.enableMetrics(policy) + + } + catch(error: any){ + expect(error.message).to.eql("Metrics policy parameter invalid") + } + }) + + it('enable metrics incorrect args reportDir', async function () { + let policy: any = { + reportDir: true, + } + try{ + await client.enableMetrics(policy) + + } + catch(error: any){ + expect(error.message).to.eql("Metrics policy parameter invalid") + } + }) + + + it('reportDir too long', async function () { + let policy: any = { + reportDir: 257, + } + try{ + await client.enableMetrics(policy) + + } + catch(error: any){ + expect(error.message).to.eql("Metrics policy parameter invalid") + } + }) + + it('disable metrics', async function () { + let retval: any = await client.enableMetrics() + + expect(retval).to.eql(null) + }) + + it('disable metrics incorrect args', async function () { + let policy: any = { + reportDir: true, + } + try{ + await (client as any).disableMetrics(1) + + } + catch(error: any){ + expect(error.message).to.eql("this.callback.bind is not a function") + } + }) + +/* + + The errors are thrown in an asynchronous context rather than as a return value. If the implementation is changed, these tests can be added + + it('enable metric throws exception', async function () { + let listeners: MetricsListeners = new Aerospike.MetricsListeners( + { + enableListener: enable_throw_exc, + disableListener, + nodeCloseListener, + snapshotListener + } + ) + + let policy: MetricsPolicy = new MetricsPolicy({ + metricsListeners: listeners, + } + ) + + //expect(await client.enableMetrics(policy)).to.throw("ERROR HERE") + + }) + + it('disable metric throws exception', async function () { + let listeners: MetricsListeners = new Aerospike.MetricsListeners( + { + enableListener, + disableListener: disable_throw_exc, + nodeCloseListener, + snapshotListener + } + ) + + let policy: MetricsPolicy = new MetricsPolicy({ + metricsListeners: listeners, + } + ) + await client.enableMetrics(policy) + + //expect(await client.disableMetrics()).to.throw("ERROR HERE") + await new Promise(r => setTimeout(r, 3000)); + + + }) +*/ + +}) diff --git a/ts-test/tests/metrics_cluster_name.ts b/ts-test/tests/metrics_cluster_name.ts new file mode 100644 index 000000000..b625754c4 --- /dev/null +++ b/ts-test/tests/metrics_cluster_name.ts @@ -0,0 +1,123 @@ +// ***************************************************************************** +// Copyright 2013-2024 Aerospike, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ***************************************************************************** + +'use strict' + +/* eslint-env mocha */ +/* global expect */ + +import Aerospike, { Client as Cli, Node, NodeMetrics, ConnectionStats, Cluster, MetricsPolicy, MetricsListeners} from 'aerospike'; + +import { expect, assert} from 'chai'; + +const Docker = require('dockerode'); +const docker = new Docker(); + + + +describe('Test metrics cluster name', async function () { + + let snapshotTriggered: boolean = false + let disableTriggered: boolean = false + + + function enableListener() { + return + } + + function snapshotListener(cluster: any) { + snapshotTriggered = false + return + } + + + function nodeCloseListener(node: any) { + return + } + + function disableListener(cluster: any) { + disableTriggered = false + expect(cluster.clusterName).to.eql("pass_test") + return + } + + + it('Test metrics cluster name retrival', async function () { + + console.log("Running server container..."); + const SERVER_PORT_NUMBER = 3000; + + const container = await docker.createContainer({ + Image: 'aerospike/aerospike-server', + HostConfig: { + NetworkMode: "host", + PortBindings: { + "3000/tcp": [{ HostPort: SERVER_PORT_NUMBER.toString() }] + } + } + }); + + await container.start(); + + console.log("Waiting for server to initialize...") + + await new Promise(r => setTimeout(r, 15000)); + + console.log("Waiting for client to collect all information about cluster nodes...") + + const config: any = { + hosts: "localhost:3000", + clusterName: "docker" + } + + const dummyClient = await Aerospike.connect(config) + + console.log("Waiting for client to collect all information about cluster nodes...") + + await new Promise(r => setTimeout(r, 5000)); + + + let listeners: MetricsListeners = new Aerospike.MetricsListeners( + { + enableListener, + disableListener, + nodeCloseListener, + snapshotListener + } + ) + + let policy: MetricsPolicy = new MetricsPolicy({ + metricsListeners: listeners, + } + ) + + console.log("Enabling metrics...") + + await dummyClient.enableMetrics(policy) + + + + await dummyClient.disableMetrics() + + await dummyClient.close() + expect(disableTriggered).to.eql(false) + await container.stop(); + return await container.remove(); + + }) +}) + + diff --git a/ts-test/tests/metrics_node_close.ts b/ts-test/tests/metrics_node_close.ts new file mode 100644 index 000000000..4af10c39e --- /dev/null +++ b/ts-test/tests/metrics_node_close.ts @@ -0,0 +1,174 @@ +// ***************************************************************************** +// Copyright 2013-2024 Aerospike, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License") +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ***************************************************************************** + +'use strict' + +/* eslint-env mocha */ +/* global expect */ + +import Aerospike, { Client as Cli, Node, NodeMetrics, ConnectionStats, Cluster, MetricsPolicy, MetricsListeners} from 'aerospike'; + +import { expect, assert} from 'chai'; + +const Docker = require('dockerode'); +const docker = new Docker(); + + + + +describe('Metrics node close test', async function () { + + let nodeCloseTriggered: boolean = false + + + function enableListener() { + return + } + + function snapshotListener(cluster: any) { + return + } + + function testNodeIsPopulated(node: any){ + let tempNode: Node = node + + expect(node.name).to.be.a("string"); + expect(node.address).to.be.a("string"); + expect(node.port).to.be.a("number"); + let conns: ConnectionStats = node.conns + console.log(node.conns) + expect(node.conns.inUse).to.be.a("number"); + expect(node.conns.inPool).to.be.a("number"); + expect(node.conns.opened).to.be.a("number"); + expect(node.conns.closed).to.be.a("number"); + expect(node.errorCount).to.be.a("number"); + expect(node.timeoutCount).to.be.a("number"); + // Check NodeMetrics + const metrics: NodeMetrics = node.metrics; + + + + const latencyBuckets = [ + metrics.connLatency, + metrics.writeLatency, + metrics.readLatency, + metrics.batchLatency, + metrics.queryLatency + ]; + + for (const buckets of latencyBuckets) { + expect(buckets).to.be.an("array").with.lengthOf(7); + for (const bucket of buckets) { + expect(bucket).to.be.a("number"); + } + } + } + + function nodeCloseListener(node: any) { + testNodeIsPopulated(node) + nodeCloseTriggered = true + return + } + + function disableListener(cluster: any) { + return + } + + + it('Test the node close listener', async function () { + + console.log("Running server container..."); + const SERVER_PORT_NUMBER = 3000; + + const container = await docker.createContainer({ + Image: 'aerospike/aerospike-server', + HostConfig: { + NetworkMode: "host", + PortBindings: { + "3000/tcp": [{ HostPort: SERVER_PORT_NUMBER.toString() }] + } + } + }); + + await container.start(); + + console.log("Waiting for server to initialize...") + + await new Promise(r => setTimeout(r, 15000)); + + const config = { + hosts: 'localhost:3000', + } + + console.log("Waiting for client to collect all information about cluster nodes...") + + + const dummyClient = await Aerospike.connect(config) + + console.log("Waiting for client to collect all information about cluster nodes...") + + await new Promise(r => setTimeout(r, 5000)); + + + let listeners: MetricsListeners = new Aerospike.MetricsListeners( + { + enableListener, + disableListener, + nodeCloseListener, + snapshotListener + } + ) + + let policy: MetricsPolicy = new MetricsPolicy({ + metricsListeners: listeners, + } + ) + + console.log("Enabling metrics...") + + await dummyClient.enableMetrics(policy) + + console.log("Closing node...") + + await container.stop(); + await container.remove(); + + console.log("Giving client time to run the node_close listener...") + + let elapsed_secs = 0 + + while (elapsed_secs < 10) { + if(nodeCloseTriggered) { + console.log("node_close_called is true. Passed") + await dummyClient.disableMetrics() + await new Promise(r => setTimeout(r, 5000)); + + return await dummyClient.close() + } + elapsed_secs++; + console.log("polling") + await new Promise(r => setTimeout(r, 1000)); + } + + console.log("THIS FAILED") + dummyClient.close() + + assert.fail('nodeCloseListener was not called') + + }) +}) + + diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 5cac32de7..120d424fa 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./typings/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/ts5.6/globals.typedarray.d.ts","./node_modules/@types/node/ts5.6/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/ts5.6/index.d.ts"],"fileIdsList":[[47,56,98],[56,98],[56,95,98],[56,97,98],[56,98,103,133],[56,98,99,104,110,111,118,130,141],[56,98,99,100,110,118],[51,52,53,56,98],[56,98,101,142],[56,98,102,103,111,119],[56,98,103,130,138],[56,98,104,106,110,118],[56,97,98,105],[56,98,106,107],[56,98,110],[56,98,108,110],[56,97,98,110],[56,98,110,111,112,130,141],[56,98,110,111,112,125,130,133],[56,93,98,146],[56,93,98,106,110,113,118,130,141],[56,98,110,111,113,114,118,130,138,141],[56,98,113,115,130,138,141],[56,98,110,116],[56,98,117,141,146],[56,98,106,110,118,130],[56,98,119],[56,98,120],[56,97,98,121],[56,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,123],[56,98,124],[56,98,110,125,126],[56,98,125,127,142,144],[56,98,110,130,131,132,133],[56,98,130,132],[56,98,130,131],[56,98,133],[56,98,134],[56,95,98,130],[56,98,110,136,137],[56,98,136,137],[56,98,103,118,130,138],[56,98,139],[98],[54,55,56,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,118,140],[56,98,113,124,141],[56,98,103,142],[56,98,130,143],[56,98,117,144],[56,98,145],[56,98,103,110,112,121,130,141,144,146],[56,98,130,147],[56,65,69,98,141],[56,65,98,130,141],[56,60,98],[56,62,65,98,138,141],[56,98,118,138],[56,98,148],[56,60,98,148],[56,62,65,98,118,141],[56,57,58,61,64,98,110,130,141],[56,65,72,98],[56,57,63,98],[56,65,86,87,98],[56,61,65,98,133,141,148],[56,86,98,148],[56,59,60,98,148],[56,65,98],[56,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,98],[56,65,80,98],[56,65,72,73,98],[56,63,65,73,74,98],[56,64,98],[56,57,60,65,98],[56,65,69,73,74,98],[56,69,98],[56,63,65,68,98,141],[56,57,62,65,72,98],[56,98,130],[56,60,65,86,98,146,148]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"af063e4d3d93a9d8ff595268f3e71fa66e6eabe20673b3269dd70c37d1013308",{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d1319e6b5d0efd8c5eae07eb864a00102151e8b9afddd2d45db52e9aae002c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"81184fe8e67d78ac4e5374650f0892d547d665d77da2b2f544b5d84729c4a15d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"24642567d3729bcc545bacb65ee7c0db423400c7f1ef757cab25d05650064f98","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"875928df2f3e9a3aed4019539a15d04ff6140a06df6cd1b2feb836d22a81eaca","affectsGlobalScope":true,"impliedFormat":1},{"version":"e9ad08a376ac84948fcca0013d6f1d4ae4f9522e26b91f87945b97c99d7cc30b","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"75c3400359d59fae5aed4c4a59fcd8a9760cf451e25dc2174cb5e08b9d4803e2","affectsGlobalScope":true,"impliedFormat":1},{"version":"94c4187083503a74f4544503b5a30e2bd7af0032dc739b0c9a7ce87f8bddc7b9","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"a85683ef86875f4ad4c6b7301bbcc63fb379a8d80d3d3fd735ee57f48ef8a47e","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"a8f06c2382a30b7cb89ad2dfc48fc3b2b490f3dafcd839dadc008e4e5d57031d","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"171fd8807643c46a9d17e843959abdf10480d57d60d38d061fb44a4c8d4a8cc4","impliedFormat":1}],"root":[46],"options":{"allowJs":true,"alwaysStrict":true,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":1,"noEmitHelpers":true,"noImplicitAny":false,"removeComments":true,"skipLibCheck":true,"strict":true,"target":1},"referencedMap":[[48,1],[49,2],[50,1],[95,3],[96,3],[97,4],[98,5],[99,6],[100,7],[51,2],[54,8],[52,2],[53,2],[101,9],[102,10],[103,11],[104,12],[105,13],[106,14],[107,14],[109,15],[108,16],[110,17],[111,18],[112,19],[94,20],[113,21],[114,22],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[121,29],[122,30],[123,31],[124,32],[125,33],[126,33],[127,34],[128,2],[129,2],[130,35],[132,36],[131,37],[133,38],[134,39],[135,40],[136,41],[137,42],[138,43],[139,44],[56,45],[55,2],[148,46],[140,47],[141,48],[142,49],[143,50],[144,51],[145,52],[146,53],[147,54],[47,2],[44,2],[45,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[72,55],[82,56],[71,55],[92,57],[63,58],[62,59],[91,60],[85,61],[90,62],[65,63],[79,64],[64,65],[88,66],[60,67],[59,60],[89,68],[61,69],[66,70],[67,2],[70,70],[57,2],[93,71],[83,72],[74,73],[75,74],[77,75],[73,76],[76,77],[86,60],[68,78],[69,79],[78,80],[58,81],[81,72],[80,70],[84,2],[87,82],[46,81]],"version":"5.6.3"} \ No newline at end of file +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./typings/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/ts5.6/globals.typedarray.d.ts","./node_modules/@types/node/ts5.6/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/ts5.6/index.d.ts"],"fileIdsList":[[47,56,98],[56,98],[56,95,98],[56,97,98],[56,98,103,133],[56,98,99,104,110,111,118,130,141],[56,98,99,100,110,118],[51,52,53,56,98],[56,98,101,142],[56,98,102,103,111,119],[56,98,103,130,138],[56,98,104,106,110,118],[56,97,98,105],[56,98,106,107],[56,98,110],[56,98,108,110],[56,97,98,110],[56,98,110,111,112,130,141],[56,98,110,111,112,125,130,133],[56,93,98,146],[56,93,98,106,110,113,118,130,141],[56,98,110,111,113,114,118,130,138,141],[56,98,113,115,130,138,141],[56,98,110,116],[56,98,117,141],[56,98,106,110,118,130],[56,98,119],[56,98,120],[56,97,98,121],[56,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,123],[56,98,124],[56,98,110,125,126],[56,98,125,127,142,144],[56,98,110,130,131,132,133],[56,98,130,132],[56,98,130,131],[56,98,133],[56,98,134],[56,95,98,130],[56,98,110,136,137],[56,98,136,137],[56,98,103,118,130,138],[56,98,139],[98],[54,55,56,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,118,140],[56,98,113,124,141],[56,98,103,142],[56,98,130,143],[56,98,117,144],[56,98,145],[56,98,103,110,112,121,130,141,144,146],[56,98,130,147],[56,65,69,98,141],[56,65,98,130,141],[56,60,98],[56,62,65,98,138,141],[56,98,118,138],[56,98,148],[56,60,98,148],[56,62,65,98,118,141],[56,57,58,61,64,98,110,130,141],[56,65,72,98],[56,57,63,98],[56,65,86,87,98],[56,61,65,98,133,141,148],[56,86,98,148],[56,59,60,98,148],[56,65,98],[56,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,98],[56,65,80,98],[56,65,72,73,98],[56,63,65,73,74,98],[56,64,98],[56,57,60,65,98],[56,65,69,73,74,98],[56,69,98],[56,63,65,68,98,141],[56,57,62,65,72,98],[56,98,130],[56,60,65,86,98,146,148]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"2829d28560058fe65aece984d7695c31e5c04c8dcbadf372a5fd4ee58bf13560",{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d1319e6b5d0efd8c5eae07eb864a00102151e8b9afddd2d45db52e9aae002c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"bba5c0a40fe58ecaff0fc732bd0ba0d39cc25fe06a8d12cfb0b7372465d6ad25","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb4a7c36a6d56378df14a9bb0b0b571a82670ea95983626ce5ddeea846d54b23","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"c72ccc191348ac1933226cab7a814cfda8b29a827d1df5dbebfe516a6fd734a8","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4047ed87e765bd3bcc316a0c4c4c8b0061628460d8a5412d1c4b53a4658665a","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"42aaa94addeed66a04b61e433c14e829c43d1efd653cf2fda480c5fb3d722ed8","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"58832ded29e0094047596544ac391d68c799d7bd7d35936f47221857141628f1","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"171fd8807643c46a9d17e843959abdf10480d57d60d38d061fb44a4c8d4a8cc4","impliedFormat":1}],"root":[46],"options":{"allowJs":true,"alwaysStrict":true,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":1,"noEmitHelpers":true,"noImplicitAny":false,"removeComments":true,"skipLibCheck":true,"strict":true,"target":1},"referencedMap":[[48,1],[49,2],[50,1],[95,3],[96,3],[97,4],[98,5],[99,6],[100,7],[51,2],[54,8],[52,2],[53,2],[101,9],[102,10],[103,11],[104,12],[105,13],[106,14],[107,14],[109,15],[108,16],[110,17],[111,18],[112,19],[94,20],[113,21],[114,22],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[121,29],[122,30],[123,31],[124,32],[125,33],[126,33],[127,34],[128,2],[129,2],[130,35],[132,36],[131,37],[133,38],[134,39],[135,40],[136,41],[137,42],[138,43],[139,44],[56,45],[55,2],[148,46],[140,47],[141,48],[142,49],[143,50],[144,51],[145,52],[146,53],[147,54],[47,2],[44,2],[45,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[72,55],[82,56],[71,55],[92,57],[63,58],[62,59],[91,60],[85,61],[90,62],[65,63],[79,64],[64,65],[88,66],[60,67],[59,60],[89,68],[61,69],[66,70],[67,2],[70,70],[57,2],[93,71],[83,72],[74,73],[75,74],[77,75],[73,76],[76,77],[86,60],[68,78],[69,79],[78,80],[58,81],[81,72],[80,70],[84,2],[87,82],[46,81]],"version":"5.6.3"} \ No newline at end of file diff --git a/typings/index.d.ts b/typings/index.d.ts index 315fef284..d6466f97c 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -1650,6 +1650,7 @@ export class HLLPolicy extends policy.HLLPolicy {} export class InfoPolicy extends policy.InfoPolicy {} export class ListPolicy extends policy.ListPolicy {} export class MapPolicy extends policy.MapPolicy {} +export class MetricsPolicy extends policy.MetricsPolicy {} export class OperatePolicy extends policy.OperatePolicy {} export class QueryPolicy extends policy.QueryPolicy {} export class ReadPolicy extends policy.ReadPolicy {} @@ -2441,6 +2442,7 @@ export namespace policy { */ constructor(props?: ListPolicyOptions); } + /** * A policy affecting the behavior of map operations. * @@ -2490,6 +2492,51 @@ export namespace policy { constructor(props?: MapPolicyOptions); } + /** + * A policy affecting the behavior of map operations. + * + * @since v3.0.0 + */ + export class MetricsPolicy { + /** + * Listeners that handles metrics notification events. If set to None, the default listener implementation + * will be used, which writes the metrics snapshot to a file which can later be read and forwarded to + * OpenTelemetry by a separate offline application. Otherwise, use all listeners set in the class instance. + * The listener could be overridden to send the metrics snapshot directly to OpenTelemetry. + */ + public MetricsListeners?: MetricsListeners; + /** + * Directory path to write metrics log files for listeners that write logs. + */ + public reportDir?: string; + /** + * Metrics file size soft limit in bytes for listeners that write logs. When report_size_limit is reached or exceeded, + * the current metrics file is closed and a new metrics file is created with a new timestamp. If report_size_limit is + * zero, the metrics file size is unbounded and the file will only be closed when disable_metrics() or close() is called. + */ + public reportSizeLimit?: number; + /** + * Number of cluster tend iterations between metrics notification events. One tend iteration is defined as "tend_interval" + * in the client config plus the time to tend all nodes. + */ + public interval?: number; + /** + * Number of elapsed time range buckets in latency histograms. + */ + public latencyColumns?: number; + /** + * Power of 2 multiple between each range bucket in latency histograms starting at column 3. The bucket units are in milliseconds. The first 2 buckets are “<=1ms” and “>1ms”. + */ + public latencyShift?: number; + + /** + * Initializes a new MapPolicy from the provided policy values. + * + * @param props - MapPolicy values + */ + constructor(props?: MetricsPolicyOptions); + } + /** * A policy affecting the behavior of operations. * @@ -4558,7 +4605,52 @@ export class Client extends EventEmitter { * */ public commit(transaction: Transaction): Promise< typeof Transaction.commitStatus[keyof typeof Transaction.commitStatus]>; - + /** + * Disable extended periodic cluster and node latency metrics. + */ + public disableMetrics(callback: Function): void; + /** + * Disable extended periodic cluster and node latency metrics. + */ + public disableMetrics(): Promise; + /** + * + * Enable extended periodic cluster and node latency metrics. + * + * @returns A Promise that resolves to void. + * + */ + public enableMetrics(): Promise; + /** + * + * Enable extended periodic cluster and node latency metrics. + * + * @param policy - {@link policy.MetricsPolicy} instance. + * @param callback - This function will be called with the + * result returned by the abort function call. + * + */ + public enableMetrics(callback: Function): void; + /** + * + * Enable extended periodic cluster and node latency metrics. + * + * @param policy - {@link policy.MetricsPolicy} instance. + * + * @returns A Promise that resolves to void. + * + */ + public enableMetrics(policy: MetricsPolicy): Promise; + /** + * + * Enable extended periodic cluster and node latency metrics. + * + * @param policy - {@link policy.MetricsPolicy} instance. + * @param callback - This function will be called with the + * result returned by the abort function call. + * + */ + public enableMetrics(policy: MetricsPolicy, callback: Function): void; /** * Checks the existance of a record in the database cluster. * @@ -9547,6 +9639,43 @@ export interface MapPolicyOptions extends BasePolicyOptions { */ writeMode?: maps.writeMode; } + +/** + * Option specification for {@link MetricsPolicy} class values. + */ +export interface MetricsPolicyOptions { + /** + * Listeners that handles metrics notification events. If set to None, the default listener implementation + * will be used, which writes the metrics snapshot to a file which can later be read and forwarded to + * OpenTelemetry by a separate offline application. Otherwise, use all listeners set in the class instance. + * The listener could be overridden to send the metrics snapshot directly to OpenTelemetry. + */ + metricsListeners?: MetricsListeners; + /** + * Directory path to write metrics log files for listeners that write logs. + */ + reportDir?: string; + /** + * Metrics file size soft limit in bytes for listeners that write logs. When report_size_limit is reached or exceeded, + * the current metrics file is closed and a new metrics file is created with a new timestamp. If report_size_limit is + * zero, the metrics file size is unbounded and the file will only be closed when disable_metrics() or close() is called. + */ + reportSizeLimit?: number; + /** + * Number of cluster tend iterations between metrics notification events. One tend iteration is defined as "tend_interval" + * in the client config plus the time to tend all nodes. + */ + interval?: number; + /** + * Number of elapsed time range buckets in latency histograms. + */ + latencyColumns?: number; + /** + * Power of 2 multiple between each range bucket in latency histograms starting at column 3. The bucket units are in milliseconds. The first 2 buckets are “<=1ms” and “>1ms”. + */ + latencyShift?: number; +} + /** * Configuration values for the mod-lua user path. * @@ -9567,7 +9696,34 @@ export interface ModLua { } /** - * Aerospike Node information. + * Cluster of server nodes. + */ +export interface Cluster { + /** + * Expected cluster name for all nodes. May be null. + */ + clusterName: string; + /** + * Count of add node failures in the most recent cluster tend iteration. + */ + invalidNodeCount: number; + /** + * Command count. The value is cumulative and not reset per metrics interval. + */ + commandCount: number; + /** + * Command retry count. There can be multiple retries for a single command. The value is cumulative and not reset per metrics interval. + */ + retryCount: number; + /** + * Active nodes in cluster. + */ + nodes: Node[]; + +} + +/** + * Server node representation */ export interface Node { /** @@ -9578,6 +9734,56 @@ export interface Node { * Address of the Aeropsike Node. */ address: string; + /** + * Port number of the node’s address. + */ + port: number; + /** + * Asynchronous connection stats on this node. + */ + conns: ConnectionStats; + /** + * Port number of the node’s address. + */ + errorCount: number; + /** + * Port number of the node’s address. + */ + timeoutCount: number; + /** + * Node Metrics + */ + metrics: NodeMetrics; +} + +/** + * Each type of latency has a list of latency buckets. + * + * Latency buckets counts are cumulative and not reset on each metrics snapshot interval. + */ +export interface NodeMetrics { + /** + * Name of the Aerospike Node. + */ + connLatency: number[]; + /** + * Address of the Aeropsike Node. + */ + writeLatency: number[]; + /** + * Port number of the node’s address. + */ + readLatency: number[]; + /** + * Asynchronous connection stats on this node. + */ + batchLatency: number[]; + /** + * Port number of the node’s address. + */ + queryLatency: number[]; + + } /** @@ -10788,6 +10994,65 @@ export namespace admin { roles: string[]; } } + +export type enableListener = () => void; + +export type snapshotListener = (cluster: any) => void; + +export type nodeCloseListener = (node: any) => void; + +export type disableListener = (cluster: any) => void; + +/** + * Contains user roles and other user related information + */ +export interface MetricsListenersOptions { + /** + * Called when periodic extended metrics has been enabled for the given cluster. + */ + enableListener: enableListener; + /** + * Called when a metrics snapshot has been requested for the given cluster. + */ + snapshotListener: snapshotListener; + /** + * Called when a node is being dropped from the cluster. + */ + nodeCloseListener: nodeCloseListener; + /** + * Called when periodic extended metrics has been disabled for the given cluster. + */ + disableListener: disableListener; +} + +/** + * Metrics listener callbacks. + * + * All callbacks must be set. + */ +export class MetricsListeners { + /** + * Construct a new Aerospike MetricsListeners instance. + */ + constructor(options: MetricsListenersOptions); + /** + * Called when periodic extended metrics has been enabled for the given cluster. + */ + enableListener: enableListener; + /** + * Called when a metrics snapshot has been requested for the given cluster. + */ + snapshotListener: snapshotListener; + /** + * Called when a node is being dropped from the cluster. + */ + nodeCloseListener: nodeCloseListener; + /** + * Called when periodic extended metrics has been disabled for the given cluster. + */ + disableListener: disableListener; + +} /** * Bitwise write flags. * From 9628467740134868c79075d00a0ba95e8d1e7c0f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:10:34 -0700 Subject: [PATCH 053/161] PIPELINE IMPROVMENTS --- .github/workflows/build-artifacts.yml | 6 +- .github/workflows/build-bindings.yml | 6 +- .github/workflows/dev-workflow-p1.yml | 134 +- .jfrog/projects/npm.yaml | 8 + ts-test/package-lock.json | 2213 ------------------------- ts-test/package.json | 30 - 6 files changed, 81 insertions(+), 2316 deletions(-) create mode 100644 .jfrog/projects/npm.yaml delete mode 100644 ts-test/package-lock.json delete mode 100644 ts-test/package.json diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index 80b84590a..56140f253 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -60,9 +60,9 @@ jobs: matrix: platform-tag: [ "manylinux_x86_64", - #"manylinux_aarch64", - #"manylinux_20_x86_64", - #"manylinux_20_aarch64", + "manylinux_aarch64", + "manylinux_20_x86_64", + "manylinux_20_aarch64", #"macosx_x86_64", #"macosx_arm64", #"win_amd64" diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 92de7b198..9c602615d 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -34,9 +34,9 @@ on: required: true options: - manylinux_x86_64 - #- manylinux_aarch64 - #- manylinux_20_x86_64 - #- manylinux_20_aarch64 + - manylinux_aarch64 + - manylinux_20_x86_64 + - manylinux_20_aarch64 #- macosx_x86_64 #- macosx_arm64 #- win_amd64 diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 2874c2a94..d42a4d6b1 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,68 +1,68 @@ -#name: Dev workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# test-with-server-release: -# uses: ./.github/workflows/build-artifacts.yml -# with: -# run_tests: false +name: Dev workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + test-with-server-release: + uses: ./.github/workflows/build-artifacts.yml + with: + run_tests: false + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml -# -# -## test-with-server-rc: -## needs: test-with-server-release -## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -## uses: ./.github/workflows/test-server-rc.yml -## secrets: inherit -## \ No newline at end of file +# \ No newline at end of file diff --git a/.jfrog/projects/npm.yaml b/.jfrog/projects/npm.yaml new file mode 100644 index 000000000..a0c94ab72 --- /dev/null +++ b/.jfrog/projects/npm.yaml @@ -0,0 +1,8 @@ +version: 1 +type: npm +resolver: + repo: clients-npm-dev-local + serverId: Default-Server +deployer: + repo: clients-npm-dev-local + serverId: Default-Server diff --git a/ts-test/package-lock.json b/ts-test/package-lock.json deleted file mode 100644 index 678a83d24..000000000 --- a/ts-test/package-lock.json +++ /dev/null @@ -1,2213 +0,0 @@ - -{ - "name": "ts-test", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "ts-test", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "aerospike": "file:.." - }, - "devDependencies": { - "@types/chai": "^5.0.1", - "@types/jest": "^29.5.14", - "@types/mocha": "^10.0.7", - "@types/semver": "^7.5.8", - "@types/tmp": "^0.2.6", - "@types/yargs": "^17.0.33", - "mocha": "^10.7.3", - "ts-node": "^10.9.2", - "typedoc": "^0.26.7", - "typescript": "^5.5.4" - } - }, - "..": { - "name": "aerospike", - "version": "6.0.1", - "cpu": [ - "x64", - "arm64" - ], - "hasInstallScript": true, - "license": "Apache-2.0", - "os": [ - "linux", - "darwin", - "win32" - ], - "dependencies": { - "ansi-colors": "^4.1.3", - "bindings": "^1.5.0", - "minimatch": "^3.1.2", - "nan": "^2.22.0", - "node-gyp": "^10.1.0", - "npm-run-all": "^4.1.5" - }, - "devDependencies": { - "@eslint/js": "^9.12.0", - "@mapbox/node-pre-gyp": "^1.0.11", - "@types/node": "^22.7.4", - "chai": "^4.4.1", - "choma": "^1.2.1", - "codecov": "^3.8.3", - "deep-eql": "^4.1.3", - "eslint": "^8.57.1", - "globals": "^15.11.0", - "husky": "^9.0.11", - "mocha": "^10.4.0", - "mocha-clean": "^1.0.0", - "nyc": "^15.1.0", - "p-throttle": "^3.1.0", - "semver": "^7.6.0", - "standard": "^17.1.0", - "tmp": "^0.2.3", - "typedoc": "^0.26.7", - "typedoc-plugin-rename-defaults": "^0.7.1", - "typescript": "^5.6.2", - "typescript-eslint": "^8.8.1", - "yargs": "^17.7.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@shikijs/core": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.21.0.tgz", - "integrity": "sha512-zAPMJdiGuqXpZQ+pWNezQAk5xhzRXBNiECFPcJLtUdsFM3f//G95Z15EHTnHchYycU8kIIysqGgxp8OVSj1SPQ==", - "dev": true, - "dependencies": { - "@shikijs/engine-javascript": "1.21.0", - "@shikijs/engine-oniguruma": "1.21.0", - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.3" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.21.0.tgz", - "integrity": "sha512-jxQHNtVP17edFW4/0vICqAVLDAxmyV31MQJL4U/Kg+heQALeKYVOWo0sMmEZ18FqBt+9UCdyqGKYE7bLRtk9mg==", - "dev": true, - "dependencies": { - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2", - "oniguruma-to-js": "0.4.3" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.21.0.tgz", - "integrity": "sha512-AIZ76XocENCrtYzVU7S4GY/HL+tgHGbVU+qhiDyNw1qgCA5OSi4B4+HY4BtAoJSMGuD/L5hfTzoRVbzEm2WTvg==", - "dev": true, - "dependencies": { - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2" - } - }, - "node_modules/@shikijs/types": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.21.0.tgz", - "integrity": "sha512-tzndANDhi5DUndBtpojEq/42+dpUF2wS7wdCDQaFtIXm3Rd1QkrcVgSSRLOvEwexekihOXfbYJINW37g96tJRw==", - "dev": true, - "dependencies": { - "@shikijs/vscode-textmate": "^9.2.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.2.2.tgz", - "integrity": "sha512-TMp15K+GGYrWlZM8+Lnj9EaHEFmOen0WJBrfa17hF7taDOYthuPPV0GWzfd/9iMij0akS/8Yw2ikquH7uVi/fg==", - "dev": true - }, - "node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/chai": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.0.1.tgz", - "integrity": "sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jest": { - "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "expect": "^29.0.0", - "pretty-format": "^29.0.0" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mocha": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", - "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", - "dev": true - }, - "node_modules/@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.13.0" - } - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aerospike": { - "resolved": "..", - "link": true - }, - "node_modules/ansi-colors": { - "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" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "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" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true, - "license": "ISC" - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug/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, - "license": "MIT" - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/diff": { - "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/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", - "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dev": true, - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "license": "ISC" - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true - }, - "node_modules/micromark-util-character": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.0.tgz", - "integrity": "sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "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" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", - "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", - "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": "^8.1.0", - "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": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "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/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/oniguruma-to-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", - "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", - "dev": true, - "dependencies": { - "regex": "^4.3.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "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" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/regex": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", - "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", - "dev": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/serialize-javascript": { - "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" - } - }, - "node_modules/shiki": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.21.0.tgz", - "integrity": "sha512-apCH5BoWTrmHDPGgg3RF8+HAAbEL/CdbYr8rMw7eIrdhCkZHdVGat5mMNlRtd1erNG01VPMIKHNQ0Pj2HMAiog==", - "dev": true, - "dependencies": { - "@shikijs/core": "1.21.0", - "@shikijs/engine-javascript": "1.21.0", - "@shikijs/engine-oniguruma": "1.21.0", - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/stack-utils": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/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/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", - "dev": true, - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/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-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/ts-node": { - "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", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/typedoc": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.7.tgz", - "integrity": "sha512-gUeI/Wk99vjXXMi8kanwzyhmeFEGv1LTdTQsiyIsmSYsBebvFxhbcyAx7Zjo4cMbpLGxM4Uz3jVIjksu/I2v6Q==", - "dev": true, - "dependencies": { - "lunr": "^2.3.9", - "markdown-it": "^14.1.0", - "minimatch": "^9.0.5", - "shiki": "^1.16.2", - "yaml": "^2.5.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" - } - }, - "node_modules/typedoc/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, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true - }, - "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", - "dev": true, - "license": "MIT" - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "license": "MIT" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/workerpool": { - "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==", - "dev": true, - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", - "dev": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "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, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/ts-test/package.json b/ts-test/package.json deleted file mode 100644 index 360125592..000000000 --- a/ts-test/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "ts-test", - "version": "1.0.0", - "main": "index.js", - "directories": { - "test": "tests" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "description": "", - "devDependencies": { - "@types/chai": "^5.0.1", - "@types/jest": "^29.5.14", - "@types/mocha": "^10.0.7", - "@types/semver": "^7.5.8", - "@types/tmp": "^0.2.6", - "@types/yargs": "^17.0.33", - "mocha": "^10.7.3", - "ts-node": "^10.9.2", - "typedoc": "^0.26.7", - "typescript": "^5.5.4" - }, - "dependencies": { - "aerospike": "file:.." - } -} From 4137a4762e5ee0936b0a05e58a7b38e8b594f66b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:16:03 -0700 Subject: [PATCH 054/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index d42a4d6b1..44d183ca8 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -30,7 +30,7 @@ jobs: test-with-server-release: uses: ./.github/workflows/build-artifacts.yml with: - run_tests: false + run_tests: true secrets: inherit bump-dev-number: From 06b232aacf58c3fb7d8202cd4011f18af327ee06 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:19:56 -0700 Subject: [PATCH 055/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 9c602615d..becb09db9 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -166,11 +166,11 @@ jobs: working-directory: aerospike-client-c/vs - name: 'macOS x86: Setup Docker using colima for testing' - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + if: ${{ inputs.run_tests == 'true' && inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + if: ${{ inputs.run_tests == 'true' && inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} @@ -179,7 +179,7 @@ jobs: docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - name: Remove aerospike docker image - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + if: ${{ inputs.run_tests == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} run: | if docker ps -aq | grep -q .; then docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." @@ -189,7 +189,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} + if: ${{ inputs.run_tests == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} From 3da3acf0377a97ffdd6e347de9c36408cc8a312c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:30:17 -0700 Subject: [PATCH 056/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 8 +- .github/workflows/stage-workflow-p1.yml | 162 ++++++++++++------------ 2 files changed, 85 insertions(+), 85 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index becb09db9..6f94a0711 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -166,11 +166,11 @@ jobs: working-directory: aerospike-client-c/vs - name: 'macOS x86: Setup Docker using colima for testing' - if: ${{ inputs.run_tests == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' - if: ${{ inputs.run_tests == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} @@ -179,7 +179,7 @@ jobs: docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - name: Remove aerospike docker image - if: ${{ inputs.run_tests == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + if: ${{ (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} run: | if docker ps -aq | grep -q .; then docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." @@ -189,7 +189,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ inputs.run_tests == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} + if: ${{ startsWith(inputs.platform-tag, 'manylinux') }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index cb6167602..8f9c1f2e2 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -1,82 +1,82 @@ -name: Stage workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - download-jfrog-artifacts: - uses: ./.github/workflows/download-jfrog-artifacts.yml - with: - version: 6.0.2.dev1 - secrets: inherit - - test-with-server-release: - uses: ./.github/workflows/test-artifacts.yml - needs: [ - download-jfrog-artifacts - ] - with: - run_tests: true - secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - download-jfrog-artifacts, - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - download-jfrog-artifacts, - test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - stage: true - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml - - - - -# test-with-server-rc: -# needs: test-with-server-release -# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: ./.github/workflows/test-server-rc.yml +#name: Stage workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# download-jfrog-artifacts: +# uses: ./.github/workflows/download-jfrog-artifacts.yml +# with: +# version: 6.0.2.dev1 # secrets: inherit -# \ No newline at end of file +# +# test-with-server-release: +# uses: ./.github/workflows/test-artifacts.yml +# needs: [ +# download-jfrog-artifacts +# ] +# with: +# run_tests: true +# secrets: inherit +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# download-jfrog-artifacts, +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# download-jfrog-artifacts, +# test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# stage: true +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml +# +# +# +# +## test-with-server-rc: +## needs: test-with-server-release +## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +## uses: ./.github/workflows/test-server-rc.yml +## secrets: inherit +## \ No newline at end of file From 824737571daa7517d366ece548f9f5ee7f40b589 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:39:00 -0700 Subject: [PATCH 057/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 6f94a0711..b1526ef5a 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -169,6 +169,7 @@ jobs: if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container From d840d4bd7392602cdc9a6c4e1930bccd01352b5a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:43:51 -0700 Subject: [PATCH 058/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index b1526ef5a..6f94a0711 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -169,7 +169,6 @@ jobs: if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos - - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container From db8a00ac9485f5339a61dde3aa7e58ad1e6ee485 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:47:38 -0700 Subject: [PATCH 059/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 6f94a0711..b1526ef5a 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -169,6 +169,7 @@ jobs: if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container From 09e222fa6375303c02bd281a6945a3b83fc1bb83 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:53:03 -0700 Subject: [PATCH 060/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index b1526ef5a..6f94a0711 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -169,7 +169,6 @@ jobs: if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos - - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container From dd911e6515099a4739e45a0e9660b4fd22049cf7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 07:57:16 -0700 Subject: [PATCH 061/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 6f94a0711..b1526ef5a 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -169,6 +169,7 @@ jobs: if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container From 55b8cf5c2f2df417abd2afee880f6a86aad7227a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 08:07:36 -0700 Subject: [PATCH 062/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index b1526ef5a..88447207a 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -229,6 +229,7 @@ jobs: run: | docker ps; docker logs aerospike; + npm run test-prereq; cd ts-test; npm install typescript --save-dev; npx tsc; @@ -241,6 +242,7 @@ jobs: run: | docker ps; docker logs aerospike; + npm run test-prereq; cd ts-test; npm install typescript --save-dev; npx tsc; From 82bf283b2bec1594c96dba39560713f75f32592c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 08:12:39 -0700 Subject: [PATCH 063/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 88447207a..fe7d069b8 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -232,7 +232,7 @@ jobs: npm run test-prereq; cd ts-test; npm install typescript --save-dev; - npx tsc; + tsc; cd ..; npx tsc; npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; @@ -245,7 +245,7 @@ jobs: npm run test-prereq; cd ts-test; npm install typescript --save-dev; - npx tsc; + tsc; cd ..; npx tsc; npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; From e289b8593b5cbf271a31946911599649ad1828d4 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 08:48:57 -0700 Subject: [PATCH 064/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index fe7d069b8..6657bbbd0 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -231,7 +231,6 @@ jobs: docker logs aerospike; npm run test-prereq; cd ts-test; - npm install typescript --save-dev; tsc; cd ..; npx tsc; @@ -244,7 +243,6 @@ jobs: docker logs aerospike; npm run test-prereq; cd ts-test; - npm install typescript --save-dev; tsc; cd ..; npx tsc; From f23311323538a9b96729438af5867fa121b681c0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 08:56:39 -0700 Subject: [PATCH 065/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 6657bbbd0..4ba9ebabd 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -229,9 +229,14 @@ jobs: run: | docker ps; docker logs aerospike; - npm run test-prereq; cd ts-test; - tsc; + npm i --save-dev @types/jest; + npm i --save-dev @types/chai; + npm i --save-dev @types/mocha + npm i --save-dev @types/semver; + npm i --save-dev @types/tmp; + npm install ..; + npx tsc; cd ..; npx tsc; npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; @@ -241,9 +246,14 @@ jobs: run: | docker ps; docker logs aerospike; - npm run test-prereq; cd ts-test; - tsc; + npm i --save-dev @types/jest; + npm i --save-dev @types/chai; + npm i --save-dev @types/mocha + npm i --save-dev @types/semver; + npm i --save-dev @types/tmp; + npm install ..; + npx tsc; cd ..; npx tsc; npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; From 4dde436ce57ffb182436b58f36613e00265cc6d0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 09:13:55 -0700 Subject: [PATCH 066/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 4ba9ebabd..1c4a9d67b 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -223,6 +223,7 @@ jobs: run: | ./scripts/build-c-client.sh; npm install; + ls lib/binding; - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} From 7127d43fa89aaf6fec09f8e619525bf11528e884 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 09:23:57 -0700 Subject: [PATCH 067/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 1c4a9d67b..e0424b453 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -219,15 +219,17 @@ jobs: # shell: bash - - name: Build Binding - run: | - ./scripts/build-c-client.sh; - npm install; - ls lib/binding; + #- name: Build Binding + # run: | + # ./scripts/build-c-client.sh; + # npm install; + # ls lib/binding; - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | + ./scripts/build-c-client.sh; + npm install; docker ps; docker logs aerospike; cd ts-test; @@ -245,6 +247,8 @@ jobs: - name: Run tests if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} run: | + ./scripts/build-c-client.sh; + npm install; docker ps; docker logs aerospike; cd ts-test; From 22aed9843ab731e46042675b8bf11be2c6dbf42b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 09:38:51 -0700 Subject: [PATCH 068/161] PIPELINE IMPROVMENTS --- ts-test/package-lock.json | 649 ++++++++++++++++++++++++++++++++++++++ ts-test/package.json | 25 ++ 2 files changed, 674 insertions(+) create mode 100644 ts-test/package-lock.json create mode 100644 ts-test/package.json diff --git a/ts-test/package-lock.json b/ts-test/package-lock.json new file mode 100644 index 000000000..77a006931 --- /dev/null +++ b/ts-test/package-lock.json @@ -0,0 +1,649 @@ +{ + "name": "ts-test", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ts-test", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "aerospike": "file:..", + "typescript": "^5.7.3" + }, + "devDependencies": { + "@types/chai": "^5.0.1", + "@types/jest": "^29.5.14", + "@types/mocha": "^10.0.10", + "@types/semver": "^7.5.8", + "@types/tmp": "^0.2.6" + } + }, + "..": { + "name": "aerospike", + "version": "6.0.3", + "cpu": [ + "x64", + "arm64" + ], + "hasInstallScript": true, + "license": "Apache-2.0", + "os": [ + "linux", + "darwin", + "win32" + ], + "dependencies": { + "ansi-colors": "^4.1.3", + "bindings": "^1.5.0", + "minimatch": "^3.1.2", + "nan": "^2.22.0", + "node-gyp": "^10.1.0", + "npm-run-all": "^4.1.5" + }, + "devDependencies": { + "@eslint/js": "^9.12.0", + "@mapbox/node-pre-gyp": "^1.0.11", + "@types/node": "^22.7.4", + "chai": "^4.4.1", + "choma": "^1.2.1", + "codecov": "^3.8.3", + "deep-eql": "^4.1.3", + "eslint": "^8.57.1", + "globals": "^15.11.0", + "husky": "^9.0.11", + "mocha": "^10.4.0", + "mocha-clean": "^1.0.0", + "nyc": "^15.1.0", + "p-throttle": "^3.1.0", + "semver": "^7.6.0", + "standard": "^17.1.0", + "tmp": "^0.2.3", + "typedoc": "^0.26.7", + "typedoc-plugin-rename-defaults": "^0.7.1", + "typescript": "^5.6.2", + "typescript-eslint": "^8.8.1", + "yargs": "^17.7.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.0.1.tgz", + "integrity": "sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.13.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", + "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tmp": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/aerospike": { + "resolved": "..", + "link": true + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + } + } +} diff --git a/ts-test/package.json b/ts-test/package.json new file mode 100644 index 000000000..023251520 --- /dev/null +++ b/ts-test/package.json @@ -0,0 +1,25 @@ +{ + "name": "ts-test", + "version": "1.0.0", + "main": "index.js", + "directories": { + "test": "tests" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "description": "", + "dependencies": { + "aerospike": "file:..", + "typescript": "^5.7.3" + }, + "devDependencies": { + "@types/chai": "^5.0.1", + "@types/jest": "^29.5.14", + "@types/mocha": "^10.0.10", + "@types/semver": "^7.5.8", + "@types/tmp": "^0.2.6" + } +} From a98f22090899190a9990b4d32013af7fed14c255 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 10:29:04 -0700 Subject: [PATCH 069/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index e0424b453..c68743237 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -219,26 +219,19 @@ jobs: # shell: bash - #- name: Build Binding - # run: | - # ./scripts/build-c-client.sh; - # npm install; - # ls lib/binding; + - name: Build Binding + run: | + ./scripts/build-c-client.sh; + npm install; + ls lib/binding; - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | - ./scripts/build-c-client.sh; - npm install; docker ps; docker logs aerospike; cd ts-test; - npm i --save-dev @types/jest; - npm i --save-dev @types/chai; - npm i --save-dev @types/mocha - npm i --save-dev @types/semver; - npm i --save-dev @types/tmp; - npm install ..; + npm install; npx tsc; cd ..; npx tsc; @@ -247,17 +240,10 @@ jobs: - name: Run tests if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} run: | - ./scripts/build-c-client.sh; - npm install; docker ps; docker logs aerospike; cd ts-test; - npm i --save-dev @types/jest; - npm i --save-dev @types/chai; - npm i --save-dev @types/mocha - npm i --save-dev @types/semver; - npm i --save-dev @types/tmp; - npm install ..; + npm install; npx tsc; cd ..; npx tsc; From 36ad7a03e967a2bdebc69e731f411b4fc64af40d Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 14:59:35 -0700 Subject: [PATCH 070/161] PIPELINE IMPROVMENTS --- .github/workflows/build-artifacts.yml | 6 +++--- .github/workflows/build-bindings.yml | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build-artifacts.yml b/.github/workflows/build-artifacts.yml index 56140f253..f7103c1bf 100644 --- a/.github/workflows/build-artifacts.yml +++ b/.github/workflows/build-artifacts.yml @@ -63,9 +63,9 @@ jobs: "manylinux_aarch64", "manylinux_20_x86_64", "manylinux_20_aarch64", - #"macosx_x86_64", - #"macosx_arm64", - #"win_amd64" + "macosx_x86_64", + "macosx_arm64", + "win_amd64" ] fail-fast: false uses: ./.github/workflows/build-bindings.yml diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index c68743237..7ccf2ef61 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -37,9 +37,9 @@ on: - manylinux_aarch64 - manylinux_20_x86_64 - manylinux_20_aarch64 - #- macosx_x86_64 - #- macosx_arm64 - #- win_amd64 + - macosx_x86_64 + - macosx_arm64 + - win_amd64 # Makes debugging via gh cli easier. default: manylinux_x86_64 run_tests: @@ -180,7 +180,7 @@ jobs: docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - name: Remove aerospike docker image - if: ${{ (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + if: ${{ inputs.run_tests && inputs.platform-tag == 'manylinux_x86_64'}} run: | if docker ps -aq | grep -q .; then docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." @@ -190,7 +190,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ startsWith(inputs.platform-tag, 'manylinux') }} + if: ${{ inputs.run_tests && inputs.platform-tag == 'manylinux_x86_64'}} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} @@ -226,7 +226,7 @@ jobs: ls lib/binding; - name: Run tests - if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + if: ${{ inputs.run_tests && inputs.platform-tag == 'manylinux_x86_64'}} run: | docker ps; docker logs aerospike; From 0565189f3a7564b0a806f270c6e482c7545deef0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 15:38:40 -0700 Subject: [PATCH 071/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 423 ++++++++++++++------------- test/batch_read.js | 8 +- test/get.js | 4 +- test/operate.js | 4 +- ts-test/tests/batch_read.ts | 8 +- ts-test/tests/get.ts | 4 +- ts-test/tests/operate.ts | 4 +- 7 files changed, 228 insertions(+), 227 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 7ccf2ef61..5f208af29 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -317,233 +317,234 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - test-self-hosted: - needs: cibuildbinding - # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} - strategy: - fail-fast: false - matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} - runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - steps: - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - - # Need to be able to save Docker Hub credentials to keychain - - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - if (docker ps -aq) { - docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." - } - else { - Write-Host "No containers to remove." - } - - - uses: ./.github/actions/run-ee-server - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Download wheel - uses: actions/download-artifact@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - name: ${{ env.BUILD_IDENTIFIER }}.node - - - name: Download wheel - uses: actions/download-artifact@v4 - if: ${{ inputs.platform-tag == 'win_amd64' }} - with: - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-win32-x64/ - name: ${{ env.BUILD_IDENTIFIER }}.node - - - name: Convert Python tag to Python version - # Don't use sed because we want this command to work on both mac and windows - # The command used in GNU sed is different than in macOS sed - run: | - NODEJS_TAG=${{ matrix.nodejs-tag[0] }} - NODEJS_VERSION="${NODEJS_TAG/cp/}" - echo NODEJS_VERSION="${NODEJS_VERSION/3/3.}" >> $GITHUB_ENV - shell: bash - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'win_amd64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-win32-x64/ - - -# - name: Install nvm -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash -# touch ~/.zprofile -# source ~/.zprofile -# nvm -v +# test-self-hosted: +# needs: cibuildbinding +# # There's a top-level env variable for this but we can't use it here, unfortunately +# if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} +# strategy: +# fail-fast: false +# matrix: +# nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} +# runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} +# env: +# BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" +# steps: +# - name: Create status check message +# run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV # shell: bash # -# #- name: Install Node.js 20 -# # if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# # run: | -# # nvm i 20 -# # shell: bash +# - name: Show job status for commit +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} # -# - name: Prepare /usr/local/opt directory -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# sudo rm -rf /usr/local/opt -# sudo mkdir -p /usr/local/opt -# sudo chown -R $(whoami) /usr/local/opt -# shell: bash +# - uses: actions/checkout@v4 +# with: +# ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} # -# - name: Install libuv +# # Need to be able to save Docker Hub credentials to keychain +# - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} +# run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} +# +# - name: Remove aerospike docker image # if: ${{ inputs.platform-tag == 'macosx_arm64' }} # run: | -# brew install libuv -# sudo ln -s /opt/homebrew/opt/libuv/1.45.0/ /usr/local/opt/libuv -# shell: bash +# if docker ps -aq | grep -q .; then +# docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." +# else +# echo "No containers to remove." +# fi # -# - name: Configure OpenSSL -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# - name: Remove aerospike docker image +# if: ${{ inputs.platform-tag == 'win_amd64' }} # run: | -# rm -rf /usr/local/opt/openssl -# sudo ln -s /opt/homebrew/opt/openssl@3.4/ /usr/local/opt/openssl -# shell: bash +# if (docker ps -aq) { +# docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." +# } +# else { +# Write-Host "No containers to remove." +# } +# +# - uses: ./.github/actions/run-ee-server +# with: +# use-server-rc: ${{ inputs.use-server-rc }} +# server-tag: ${{ inputs.server-tag }} +# docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} +# docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} # -# - name: Update PATH and environment variables +# - name: Download wheel +# uses: actions/download-artifact@v4 # if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# with: +# path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ +# name: ${{ env.BUILD_IDENTIFIER }}.node +# +# - name: Download wheel +# uses: actions/download-artifact@v4 +# if: ${{ inputs.platform-tag == 'win_amd64' }} +# with: +# path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-win32-x64/ +# name: ${{ env.BUILD_IDENTIFIER }}.node +# +# - name: Convert Python tag to Python version +# # Don't use sed because we want this command to work on both mac and windows +# # The command used in GNU sed is different than in macOS sed # run: | -# echo "export PATH=\"/usr/local/bin/:/usr/local/opt/openssl/bin:\$PATH\"" >> ~/.zprofile -# echo "export LDFLAGS=\"-L/usr/local/opt/openssl/lib\"" >> ~/.zprofile -# echo "export CPPFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile -# echo "export EXT_CFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile +# NODEJS_TAG=${{ matrix.nodejs-tag[0] }} +# NODEJS_VERSION="${NODEJS_TAG/cp/}" +# echo NODEJS_VERSION="${NODEJS_VERSION/3/3.}" >> $GITHUB_ENV # shell: bash # -# - name: Source updated environment variables +# - uses: actions/setup-node@v4 # if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# with: +# node-version: ${{ matrix.nodejs-tag[1] }} +# path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ +# +# - uses: actions/setup-node@v4 +# if: ${{ inputs.platform-tag == 'win_amd64' }} +# with: +# node-version: ${{ matrix.nodejs-tag[1] }} +# path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-win32-x64/ +# +# +## - name: Install nvm +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash +## touch ~/.zprofile +## source ~/.zprofile +## nvm -v +## shell: bash +## +## #- name: Install Node.js 20 +## # if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## # run: | +## # nvm i 20 +## # shell: bash +## +## - name: Prepare /usr/local/opt directory +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## sudo rm -rf /usr/local/opt +## sudo mkdir -p /usr/local/opt +## sudo chown -R $(whoami) /usr/local/opt +## shell: bash +## +## - name: Install libuv +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## brew install libuv +## sudo ln -s /opt/homebrew/opt/libuv/1.45.0/ /usr/local/opt/libuv +## shell: bash +## +## - name: Configure OpenSSL +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## rm -rf /usr/local/opt/openssl +## sudo ln -s /opt/homebrew/opt/openssl@3.4/ /usr/local/opt/openssl +## shell: bash +## +## - name: Update PATH and environment variables +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## echo "export PATH=\"/usr/local/bin/:/usr/local/opt/openssl/bin:\$PATH\"" >> ~/.zprofile +## echo "export LDFLAGS=\"-L/usr/local/opt/openssl/lib\"" >> ~/.zprofile +## echo "export CPPFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile +## echo "export EXT_CFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile +## shell: bash +## +## - name: Source updated environment variables +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## source ~/.zprofile +## shell: bash +# +## - name: Install wheel +## if: ${{ inputs.platform-tag == 'macosx_arm64' }} +## run: | +## ./scripts/build-c-client.sh +## npm install +## shell: bash +# +## - name: Install wheel +## if: ${{ inputs.platform-tag == 'win_amd64' }} +## run: | +## ./scripts/build-c-client.ps1 +## npm install +## shell: powershell +# +# - name: Connect to Docker container on remote machine with Docker daemon +# if: ${{ inputs.platform-tag == 'win_amd64' }} +# # DOCKER_HOST contains the IP address of the remote machine # run: | -# source ~/.zprofile -# shell: bash - -# - name: Install wheel +# $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} +# crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 +# working-directory: .github\workflows +# +# ## FIGURE OUT WHAT SETUP NEEDS TO HAPPEN +# #- run: | +# # npm install typescript --save-dev +# # npx tsc; +# # working-directory: ts-test +# # shell: bash +# +# #- name: Identify binaries +# # if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# # run: | +# # ls ./lib/binding/node-v108-darwin-arm64 +# # ls ./lib/binding/node-v108-darwin-arm64/aerospike.node +# # mkdir -p build; +# # mkdir -p build/Release; +# # cp -r ./lib/binding/node-v108-darwin-arm64 build/Release +# +# - name: Run tests # if: ${{ inputs.platform-tag == 'macosx_arm64' }} # run: | -# ./scripts/build-c-client.sh -# npm install -# shell: bash - -# - name: Install wheel +# docker ps; +# docker logs aerospike; +# cd ts-test; +# npm uninstall tsc; +# npm install ..; +# npm i --save-dev @types/chai; +# npm i --save-dev @types/jest; +# npm i --save-dev @types/mocha; +# npm install mocha; +# rm -rf dist; +# npx tsc; +# cd ..; +# npm install; +# pwd; +# npx tsc; +# npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; +# +# +# - name: Run tests # if: ${{ inputs.platform-tag == 'win_amd64' }} # run: | -# ./scripts/build-c-client.ps1 -# npm install -# shell: powershell - - - name: Connect to Docker container on remote machine with Docker daemon - if: ${{ inputs.platform-tag == 'win_amd64' }} - # DOCKER_HOST contains the IP address of the remote machine - run: | - $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} - crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 - working-directory: .github\workflows - - ## FIGURE OUT WHAT SETUP NEEDS TO HAPPEN - #- run: | - # npm install typescript --save-dev - # npx tsc; - # working-directory: ts-test - # shell: bash - - #- name: Identify binaries - # if: ${{ inputs.platform-tag == 'macosx_arm64' }} - # run: | - # ls ./lib/binding/node-v108-darwin-arm64 - # ls ./lib/binding/node-v108-darwin-arm64/aerospike.node - # mkdir -p build; - # mkdir -p build/Release; - # cp -r ./lib/binding/node-v108-darwin-arm64 build/Release - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm uninstall tsc; - npm install ..; - npm i --save-dev @types/chai; - npm i --save-dev @types/jest; - npm i --save-dev @types/mocha; - npm install mocha; - rm -rf dist; - npx tsc; - cd ..; - npm install; - pwd; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; - - - - name: Run tests - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm uninstall tsc; - npm install ..; - npm i --save-dev @types/chai; - npm i --save-dev @types/jest; - npm i --save-dev @types/mocha; - npm install mocha; - npx tsc; - cp tests\udf.lua dist\udf.lua; - npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; - cd ..; - npx tsc; - - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} +# docker ps; +# docker logs aerospike; +# cd ts-test; +# npm uninstall tsc; +# npm install ..; +# npm i --save-dev @types/chai; +# npm i --save-dev @types/jest; +# npm i --save-dev @types/mocha; +# npm install mocha; +# npx tsc; +# cp tests\udf.lua dist\udf.lua; +# npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; +# cd ..; +# npx tsc; +# +# +# - name: Show job status for commit +# if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# status: ${{ job.status }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} +# \ No newline at end of file diff --git a/test/batch_read.js b/test/batch_read.js index c98411ff8..5562049b8 100644 --- a/test/batch_read.js +++ b/test/batch_read.js @@ -207,7 +207,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchTtl1')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchTtl1')) }) @@ -231,7 +231,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchTtl2')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchTtl2')) }) @@ -304,7 +304,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchReadTtl1')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchReadTtl1')) }) @@ -326,7 +326,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchReadTtl2')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchReadTtl2')) }) diff --git a/test/get.js b/test/get.js index 3ae26f5fa..52e1e5c5a 100644 --- a/test/get.js +++ b/test/get.js @@ -103,7 +103,7 @@ describe('client.get()', function () { record = await client.get(key, policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(key) }) @@ -124,7 +124,7 @@ describe('client.get()', function () { record = await client.get(key, policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(key) }) diff --git a/test/operate.js b/test/operate.js index 8a6ed1515..319d9a596 100644 --- a/test/operate.js +++ b/test/operate.js @@ -300,7 +300,7 @@ context('Operations', function () { record = await client.get(new Aerospike.Key('test', 'demo', 'operateTtl1'), policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'operateTtl1')) }) @@ -320,7 +320,7 @@ context('Operations', function () { record = await client.get(new Aerospike.Key('test', 'demo', 'operateTtl1'), policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'operateTtl1')) }) diff --git a/ts-test/tests/batch_read.ts b/ts-test/tests/batch_read.ts index f1a633ecb..c804d554b 100644 --- a/ts-test/tests/batch_read.ts +++ b/ts-test/tests/batch_read.ts @@ -208,7 +208,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchTtl1')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchTtl1')) }) @@ -232,7 +232,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchTtl2')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchTtl2')) }) @@ -305,7 +305,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchReadTtl1')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchReadTtl1')) }) @@ -327,7 +327,7 @@ describe('client.batchRead()', function () { const record = await client.get(new Aerospike.Key('test', 'demo', 'batchReadTtl2')) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'batchReadTtl2')) }) diff --git a/ts-test/tests/get.ts b/ts-test/tests/get.ts index 7a8eeec86..ecefff43f 100644 --- a/ts-test/tests/get.ts +++ b/ts-test/tests/get.ts @@ -105,7 +105,7 @@ describe('client.get()', function () { record = await client.get(key, policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(key) }) @@ -126,7 +126,7 @@ describe('client.get()', function () { record = await client.get(key, policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(key) }) diff --git a/ts-test/tests/operate.ts b/ts-test/tests/operate.ts index d42b0da41..215fc44d1 100644 --- a/ts-test/tests/operate.ts +++ b/ts-test/tests/operate.ts @@ -307,7 +307,7 @@ context('Operations', function () { record = await client.get(new Aerospike.Key('test', 'demo', 'operateTtl1'), policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'operateTtl1')) }) @@ -327,7 +327,7 @@ context('Operations', function () { record = await client.get(new Aerospike.Key('test', 'demo', 'operateTtl1'), policy) expect(record.bins).to.eql({ i: 2 }) - expect(record.ttl).to.be.within(9, 10) + expect(record.ttl).to.be.within(9, 11) await client.remove(new Aerospike.Key('test', 'demo', 'operateTtl1')) }) From 2aef2b23edd8a2fcccc185c64de1f350e75da712 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 16:43:31 -0700 Subject: [PATCH 072/161] PIPELINE IMPROVMENTS --- ts-test/tests/exists.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts-test/tests/exists.ts b/ts-test/tests/exists.ts index d72065839..a31005f31 100644 --- a/ts-test/tests/exists.ts +++ b/ts-test/tests/exists.ts @@ -94,7 +94,7 @@ describe('client.existsWithMetadata()', function () { .then(result => { expect(result.key).to.eql(key) expect(result.bins).to.be.null - expect(result.ttl).to.be.within(48, 50) + expect(result.ttl).to.be.within(48, 51) expect(result.gen).to.eql(6) }) .then(() => client.remove(key)) @@ -137,7 +137,7 @@ describe('client.existsWithMetadata()', function () { if (error) throw error expect(result?.key).to.equal(key) expect(result?.bins).to.be.null - expect(result?.ttl).to.be.within(98, 100) + expect(result?.ttl).to.be.within(98, 101) expect(result?.gen).to.eql(1) client.remove(key, (error?: AerospikeError) => { if (error) throw error From 3a6fea78c7fb83c33d8a984cb5466eec5d080793 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 16:48:36 -0700 Subject: [PATCH 073/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 5f208af29..97638c55d 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -237,17 +237,17 @@ jobs: npx tsc; npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; - - name: Run tests - if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + #- name: Run tests + # if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} + # run: | + # docker ps; + # docker logs aerospike; + # cd ts-test; + # npm install; + # npx tsc; + # cd ..; + # npx tsc; + # npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - name: Upload wheels to GitHub Linux x86 From dee7652c6f40699db14e4cc499ee4b0148e546cd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 00:05:47 +0000 Subject: [PATCH 074/161] Auto-bump version to 6.0.3-dev.1 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7e3178d3e..0f18e4a53 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.3", + "version": "6.0.3-dev.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.3", + "version": "6.0.3-dev.1", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 2eae991e4..47e6d1dd1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.3", + "version": "6.0.3-dev.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 0b3e0ad3d846a78f35a13c7fedf51b681d505bda Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 17:16:25 -0700 Subject: [PATCH 075/161] PIPELINE IMPROVMENTS --- .../download-github-artifacts/action.yml | 248 +++++++++--------- 1 file changed, 124 insertions(+), 124 deletions(-) diff --git a/.github/actions/download-github-artifacts/action.yml b/.github/actions/download-github-artifacts/action.yml index 8bda2b9d5..b621f2f71 100644 --- a/.github/actions/download-github-artifacts/action.yml +++ b/.github/actions/download-github-artifacts/action.yml @@ -4,47 +4,47 @@ description: 'Download github artifacts for all supported versions' runs: using: "composite" steps: -# # MAC X86 -# - uses: actions/download-artifact@v4 -# with: -# name: v108-macosx_x86_64.node -# path: ./lib/binding/node-v108-darwin-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v115-macosx_x86_64.node -# path: ./lib/binding/node-v115-darwin-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v127-macosx_x86_64.node -# path: ./lib/binding/node-v127-darwin-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v131-macosx_x86_64.node -# path: ./lib/binding/node-v131-darwin-x64/ - -# # MAC ARM -# - uses: actions/download-artifact@v4 -# with: -# name: v108-macosx_arm64.node -# path: ./lib/binding/node-v108-darwin-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v115-macosx_arm64.node -# path: ./lib/binding/node-v115-darwin-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v127-macosx_arm64.node -# path: ./lib/binding/node-v127-darwin-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v131-macosx_arm64.node -# path: ./lib/binding/node-v131-darwin-arm64/ + # MAC X86 + - uses: actions/download-artifact@v4 + with: + name: v108-macosx_x86_64.node + path: ./lib/binding/node-v108-darwin-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v115-macosx_x86_64.node + path: ./lib/binding/node-v115-darwin-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v127-macosx_x86_64.node + path: ./lib/binding/node-v127-darwin-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v131-macosx_x86_64.node + path: ./lib/binding/node-v131-darwin-x64/ + + # MAC ARM + - uses: actions/download-artifact@v4 + with: + name: v108-macosx_arm64.node + path: ./lib/binding/node-v108-darwin-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v115-macosx_arm64.node + path: ./lib/binding/node-v115-darwin-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v127-macosx_arm64.node + path: ./lib/binding/node-v127-darwin-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v131-macosx_arm64.node + path: ./lib/binding/node-v131-darwin-arm64/ # Linux X86 - uses: actions/download-artifact@v4 @@ -67,91 +67,91 @@ runs: name: v131-manylinux_x86_64.node path: ./lib/binding/glibc@2.35/node-v131-linux-x64/ -# # Linux 20 X86 -# - uses: actions/download-artifact@v4 -# with: -# name: v108-manylinux_20_x86_64.node -# path: ./lib/binding/glibc@2.31/node-v108-linux-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v115-manylinux_20_x86_64.node -# path: ./lib/binding/glibc@2.31/node-v115-linux-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v127-manylinux_20_x86_64.node -# path: ./lib/binding/glibc@2.31/node-v127-linux-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v131-manylinux_20_x86_64.node -# path: ./lib/binding/glibc@2.31/node-v131-linux-x64/ -# -# # Linux ARM -# - uses: actions/download-artifact@v4 -# with: -# name: v108-manylinux_aarch64.node -# path: ./lib/binding/glibc@2.35/node-v108-linux-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v115-manylinux_aarch64.node -# path: ./lib/binding/glibc@2.35/node-v115-linux-arm64/ -# -# -# - uses: actions/download-artifact@v4 -# with: -# name: v127-manylinux_aarch64.node -# path: ./lib/binding/glibc@2.35/node-v127-linux-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v131-manylinux_aarch64.node -# path: ./lib/binding/glibc@2.35/node-v131-linux-arm64/ -# -# # Linux 20 ARM -# - uses: actions/download-artifact@v4 -# with: -# name: v108-manylinux_20_aarch64.node -# path: ./lib/binding/glibc@2.31/node-v108-linux-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v115-manylinux_20_aarch64.node -# path: ./lib/binding/glibc@2.31/node-v115-linux-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v127-manylinux_20_aarch64.node -# path: ./lib/binding/glibc@2.31/node-v127-linux-arm64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v131-manylinux_20_aarch64.node -# path: ./lib/binding/glibc@2.31/node-v131-linux-arm64/ + # Linux 20 X86 + - uses: actions/download-artifact@v4 + with: + name: v108-manylinux_20_x86_64.node + path: ./lib/binding/glibc@2.31/node-v108-linux-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v115-manylinux_20_x86_64.node + path: ./lib/binding/glibc@2.31/node-v115-linux-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v127-manylinux_20_x86_64.node + path: ./lib/binding/glibc@2.31/node-v127-linux-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v131-manylinux_20_x86_64.node + path: ./lib/binding/glibc@2.31/node-v131-linux-x64/ + + # Linux ARM + - uses: actions/download-artifact@v4 + with: + name: v108-manylinux_aarch64.node + path: ./lib/binding/glibc@2.35/node-v108-linux-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v115-manylinux_aarch64.node + path: ./lib/binding/glibc@2.35/node-v115-linux-arm64/ + + + - uses: actions/download-artifact@v4 + with: + name: v127-manylinux_aarch64.node + path: ./lib/binding/glibc@2.35/node-v127-linux-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v131-manylinux_aarch64.node + path: ./lib/binding/glibc@2.35/node-v131-linux-arm64/ + + # Linux 20 ARM + - uses: actions/download-artifact@v4 + with: + name: v108-manylinux_20_aarch64.node + path: ./lib/binding/glibc@2.31/node-v108-linux-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v115-manylinux_20_aarch64.node + path: ./lib/binding/glibc@2.31/node-v115-linux-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v127-manylinux_20_aarch64.node + path: ./lib/binding/glibc@2.31/node-v127-linux-arm64/ + + - uses: actions/download-artifact@v4 + with: + name: v131-manylinux_20_aarch64.node + path: ./lib/binding/glibc@2.31/node-v131-linux-arm64/ # Windows -# - uses: actions/download-artifact@v4 -# with: -# name: v108-win_amd64.node -# path: ./lib/binding/node-v108-win32-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v115-win_amd64.node -# path: ./lib/binding/node-v115-win32-x64/ -# -# -# - uses: actions/download-artifact@v4 -# with: -# name: v127-win_amd64.node -# path: ./lib/binding/node-v127-win32-x64/ -# -# - uses: actions/download-artifact@v4 -# with: -# name: v131-win_amd64.node -# path: ./lib/binding/node-v131-win32-x64/ + - uses: actions/download-artifact@v4 + with: + name: v108-win_amd64.node + path: ./lib/binding/node-v108-win32-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v115-win_amd64.node + path: ./lib/binding/node-v115-win32-x64/ + + + - uses: actions/download-artifact@v4 + with: + name: v127-win_amd64.node + path: ./lib/binding/node-v127-win32-x64/ + + - uses: actions/download-artifact@v4 + with: + name: v131-win_amd64.node + path: ./lib/binding/node-v131-win32-x64/ From 951d82ed6f4771f72d5ea625b570b15d2a4a5d85 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 17:31:11 -0700 Subject: [PATCH 076/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 162 ++++++++++++------------ 1 file changed, 81 insertions(+), 81 deletions(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 8f9c1f2e2..cb6167602 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -1,82 +1,82 @@ -#name: Stage workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# download-jfrog-artifacts: -# uses: ./.github/workflows/download-jfrog-artifacts.yml -# with: -# version: 6.0.2.dev1 +name: Stage workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + download-jfrog-artifacts: + uses: ./.github/workflows/download-jfrog-artifacts.yml + with: + version: 6.0.2.dev1 + secrets: inherit + + test-with-server-release: + uses: ./.github/workflows/test-artifacts.yml + needs: [ + download-jfrog-artifacts + ] + with: + run_tests: true + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + download-jfrog-artifacts, + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + download-jfrog-artifacts, + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + stage: true + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml # secrets: inherit -# -# test-with-server-release: -# uses: ./.github/workflows/test-artifacts.yml -# needs: [ -# download-jfrog-artifacts -# ] -# with: -# run_tests: true -# secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# download-jfrog-artifacts, -# test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# download-jfrog-artifacts, -# test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# stage: true -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml -# -# -# -# -## test-with-server-rc: -## needs: test-with-server-release -## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -## uses: ./.github/workflows/test-server-rc.yml -## secrets: inherit -## \ No newline at end of file +# \ No newline at end of file From 8d721f6c2f6934bfa3d884b6114555e01cbcaddd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 00:34:42 +0000 Subject: [PATCH 077/161] Auto-bump version to 6.0.3-rc.1 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0f18e4a53..fd20599f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.3-dev.1", + "version": "6.0.3-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.3-dev.1", + "version": "6.0.3-rc.1", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 47e6d1dd1..df495a700 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.3-dev.1", + "version": "6.0.3-rc.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 34b04bcde14951c143ab453992280858fb20f6d9 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 17:37:06 -0700 Subject: [PATCH 078/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 134 +++++++++++------------ .github/workflows/test-artifacts.yml | 12 +- .github/workflows/test-dev-artifacts.yml | 12 +- 3 files changed, 79 insertions(+), 79 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 44d183ca8..1b1ae3ed3 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,68 +1,68 @@ -name: Dev workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - test-with-server-release: - uses: ./.github/workflows/build-artifacts.yml - with: - run_tests: true - secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml - - -# test-with-server-rc: -# needs: test-with-server-release -# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: ./.github/workflows/test-server-rc.yml +#name: Dev workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# test-with-server-release: +# uses: ./.github/workflows/build-artifacts.yml +# with: +# run_tests: true # secrets: inherit -# \ No newline at end of file +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml +# +# +## test-with-server-rc: +## needs: test-with-server-release +## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +## uses: ./.github/workflows/test-server-rc.yml +## secrets: inherit +## \ No newline at end of file diff --git a/.github/workflows/test-artifacts.yml b/.github/workflows/test-artifacts.yml index 0ff03c7ca..9f2f61c7c 100644 --- a/.github/workflows/test-artifacts.yml +++ b/.github/workflows/test-artifacts.yml @@ -60,12 +60,12 @@ jobs: matrix: platform-tag: [ "manylinux_x86_64", - #"manylinux_aarch64", - #"manylinux_20_x86_64", - #"manylinux_20_aarch64", - #"macosx_x86_64", - #"macosx_arm64", - #"win_amd64" + "manylinux_aarch64", + "manylinux_20_x86_64", + "manylinux_20_aarch64", + "macosx_x86_64", + "macosx_arm64", + "win_amd64" ] fail-fast: false uses: ./.github/workflows/test-dev-artifacts.yml diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 037ecd71d..3e1baad4d 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -34,12 +34,12 @@ on: required: true options: - manylinux_x86_64 - #- manylinux_aarch64 - #- manylinux_20_x86_64 - #- manylinux_20_aarch64 - #- macosx_x86_64 - #- macosx_arm64 - #- win_amd64 + - manylinux_aarch64 + - manylinux_20_x86_64 + - manylinux_20_aarch64 + - macosx_x86_64 + - macosx_arm64 + - win_amd64 # Makes debugging via gh cli easier. default: manylinux_x86_64 run_tests: From aa576b89c829f3493eaf8c144bb285c968da8b01 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 20:19:45 -0700 Subject: [PATCH 079/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 84 ++++++++++-------------- 1 file changed, 34 insertions(+), 50 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 3e1baad4d..00c904c99 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -166,11 +166,11 @@ jobs: working-directory: aerospike-client-c/vs - name: 'macOS x86: Setup Docker using colima for testing' - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' - if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && inputs.platform-tag == 'macosx_x86_64' }} + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} @@ -179,7 +179,7 @@ jobs: docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - name: Remove aerospike docker image - #if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + if: ${{ (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} run: | if docker ps -aq | grep -q .; then docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." @@ -189,7 +189,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - #if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' && startsWith(inputs.platform-tag, 'manylinux') }} + if: ${{ startsWith(inputs.platform-tag, 'manylinux') }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} @@ -238,8 +238,8 @@ jobs: ls lib/binding/glibc@2.35; ls lib/binding/glibc@2.31; - - name: Change install command for release - run: node ./scripts/change-install-command.js + #- name: Change install command for release + # run: node ./scripts/change-install-command.js #- name: npm install # run: npm install @@ -250,7 +250,7 @@ jobs: docker ps; docker logs aerospike; cd ts-test; - npm install typescript --save-dev; + npm install; npx tsc; cd ..; npx tsc; @@ -262,7 +262,7 @@ jobs: docker ps; docker logs aerospike; cd ts-test; - npm install typescript --save-dev; + npm install; npx tsc; cd ..; npx tsc; @@ -339,15 +339,13 @@ jobs: name: nodejs-client-artifacts path: ./downloaded-artifacts - - - name: list Artifacts run: | - ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + ls downloaded-artifacts/lib/binding/ - name: Move artifacts run: | - cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + cp -r downloaded-artifacts/lib/binding/ lib/ - name: Change install command for release run: node ./scripts/change-install-command.js @@ -451,44 +449,30 @@ jobs: # mkdir -p build/Release; # cp -r ./lib/binding/node-v108-darwin-arm64 build/Release - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm uninstall tsc; - npm install ..; - npm i --save-dev @types/chai; - npm i --save-dev @types/jest; - npm i --save-dev @types/mocha; - npm install mocha; - rm -rf dist; - npx tsc; - cd ..; - npm install; - pwd; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; - - - - name: Run tests - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm uninstall tsc; - npm install ..; - npm i --save-dev @types/chai; - npm i --save-dev @types/jest; - npm i --save-dev @types/mocha; - npm install mocha; - npx tsc; - cp tests\udf.lua dist\udf.lua; - npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; - cd ..; - npx tsc; + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cp tests\udf.lua dist\udf.lua; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + cd ..; + npx tsc; + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - name: Show job status for commit From 6e8e8a337a94a434474a855aae3293651f1365ab Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 20:28:26 -0700 Subject: [PATCH 080/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 66 ++++++++++++------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 00c904c99..8a546beb3 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -449,36 +449,36 @@ jobs: # mkdir -p build/Release; # cp -r ./lib/binding/node-v108-darwin-arm64 build/Release - - name: Run tests - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cp tests\udf.lua dist\udf.lua; - npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; - cd ..; - npx tsc; - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cp tests\udf.lua dist\udf.lua; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + cd ..; + npx tsc; + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} From 815d6cb65a6cb6dbecb955521416071e9afa07d8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 20:35:08 -0700 Subject: [PATCH 081/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 8a546beb3..600d29549 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -475,10 +475,10 @@ jobs: npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} From 9d4b7bdddeefef2c906b12b985944be19d2c82c9 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 20:45:05 -0700 Subject: [PATCH 082/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 600d29549..8fcfa05a4 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -238,11 +238,11 @@ jobs: ls lib/binding/glibc@2.35; ls lib/binding/glibc@2.31; - #- name: Change install command for release - # run: node ./scripts/change-install-command.js + - name: Change install command for release + run: node ./scripts/change-install-command.js - #- name: npm install - # run: npm install + - name: npm install + run: npm install - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} From af244ab047519d06008d8b50b94be3ab9b0266ab Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 21:05:37 -0700 Subject: [PATCH 083/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 8fcfa05a4..c5367f958 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -226,11 +226,12 @@ jobs: - name: list Artifacts first run: | - ls downloaded-artifacts/ + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + + - name: Move artifacts + run: | + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - - name: Move artifacts - run: | - cp -r downloaded-artifacts/ lib/binding/ - name: check binding run: @@ -341,11 +342,12 @@ jobs: - name: list Artifacts run: | - ls downloaded-artifacts/lib/binding/ + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ - name: Move artifacts run: | - cp -r downloaded-artifacts/lib/binding/ lib/ + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + - name: Change install command for release run: node ./scripts/change-install-command.js From 8c4f6e7a38aa8c677526839cd88a3c3c9926336d Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 21:08:42 -0700 Subject: [PATCH 084/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index c5367f958..6de8b5e44 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -226,11 +226,11 @@ jobs: - name: list Artifacts first run: | - ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ - - name: Move artifacts - run: | - cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + - name: Move artifacts + run: | + cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - name: check binding From d9754e8c6bb457dc07c7c4bc2179af1f18b0fb74 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 21:55:22 -0700 Subject: [PATCH 085/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 1 - .github/workflows/test-dev-artifacts.yml | 10 +++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 97638c55d..389437588 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -169,7 +169,6 @@ jobs: if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/setup-docker-on-macos - - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' if: ${{ inputs.platform-tag == 'macosx_x86_64' }} uses: ./.github/actions/run-ee-server-for-ext-container diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 6de8b5e44..eec697cda 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -160,6 +160,14 @@ jobs: with: node-version: ${{ matrix.nodejs-tag[1] }} + - name: print conditional values + run: | + echo "Platform tag: '${{ inputs.platform-tag }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" + echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" + echo "Platform conditional: '${{ startsWith(inputs.platform-tag, 'manylinux') }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + - name: 'Windows: Install C client deps' if: ${{ inputs.platform-tag == 'win_amd64' }} run: nuget restore @@ -179,7 +187,7 @@ jobs: docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - name: Remove aerospike docker image - if: ${{ (inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64') }} + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} run: | if docker ps -aq | grep -q .; then docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." From 9f38708ae206d0bb6ed971274c71925d9177b4ef Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:00:07 -0700 Subject: [PATCH 086/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index eec697cda..da75c5fb7 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -234,12 +234,13 @@ jobs: - name: list Artifacts first run: | + ls ./downloaded-artifacts ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ - name: Move artifacts run: | cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - + rm -rf downloaded-artifacts/aerospike/6.0.2/lib/binding/ - name: check binding run: From 75b46726b4cce3a432539bf9acd7fbd27d39c5a5 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:04:17 -0700 Subject: [PATCH 087/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index da75c5fb7..20d1ee20e 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -235,12 +235,13 @@ jobs: - name: list Artifacts first run: | ls ./downloaded-artifacts - ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 - name: Move artifacts run: | - cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ - rm -rf downloaded-artifacts/aerospike/6.0.2/lib/binding/ + cp -r downloaded-artifacts/* lib/binding + rm -rf downloaded-artifacts/ - name: check binding run: From 3f8f772588874170f225dd77bc7f95c8992b8ac7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:07:22 -0700 Subject: [PATCH 088/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 20d1ee20e..2d377ab71 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -240,6 +240,7 @@ jobs: - name: Move artifacts run: | + mkdir -p lib/binding cp -r downloaded-artifacts/* lib/binding rm -rf downloaded-artifacts/ From ffc5344129411eb1db788dadce538a30596705a8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:15:38 -0700 Subject: [PATCH 089/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 2d377ab71..30f4d2401 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -253,9 +253,6 @@ jobs: - name: Change install command for release run: node ./scripts/change-install-command.js - - name: npm install - run: npm install - - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | From 5e430278d5971b8479fefba652d79c9aa0fe1e53 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:22:26 -0700 Subject: [PATCH 090/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 30f4d2401..22ef63af0 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -242,6 +242,10 @@ jobs: run: | mkdir -p lib/binding cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} rm -rf downloaded-artifacts/ - name: check binding From 3e6fe48eee6d6a2c69f7d70d26d428bba2be15e4 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:25:47 -0700 Subject: [PATCH 091/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 22ef63af0..b95cc086b 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -246,6 +246,7 @@ jobs: - name: Delete leftover artifacts if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | rm -rf downloaded-artifacts/ - name: check binding @@ -352,13 +353,28 @@ jobs: name: nodejs-client-artifacts path: ./downloaded-artifacts - - name: list Artifacts + - name: list Artifacts first run: | - ls downloaded-artifacts/aerospike/6.0.2/lib/binding/ + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 - name: Move artifacts run: | - cp -r downloaded-artifacts/aerospike/6.0.2/lib/binding/ lib/ + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; - name: Change install command for release From c6bbc37b712bebde354e88d3a53e5a728cf9685c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 22:33:46 -0700 Subject: [PATCH 092/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index b95cc086b..6376260fb 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -377,11 +377,11 @@ jobs: ls lib/binding/glibc@2.31; - - name: Change install command for release - run: node ./scripts/change-install-command.js + #- name: Change install command for release + # run: node ./scripts/change-install-command.js - - name: npm install - run: npm install + #- name: npm install + # run: npm install - uses: actions/setup-node@v4 if: ${{ inputs.platform-tag == 'macosx_arm64' }} From 265a148966b929eabc8eadafe7729e3b4eb0aa5b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:06:22 -0700 Subject: [PATCH 093/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 345 +++++++++++++++++------ 1 file changed, 265 insertions(+), 80 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 6376260fb..256e5a877 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -302,6 +302,8 @@ jobs: env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" steps: + + # REUSABLE SECTION - name: Create status check message run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV shell: bash @@ -389,71 +391,6 @@ jobs: node-version: ${{ matrix.nodejs-tag[1] }} path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ -# - name: Install nvm -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash -# touch ~/.zprofile -# source ~/.zprofile -# nvm -v -# shell: bash -# -# #- name: Install Node.js 20 -# # if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# # run: | -# # nvm i 20 -# # shell: bash -# -# - name: Prepare /usr/local/opt directory -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# sudo rm -rf /usr/local/opt -# sudo mkdir -p /usr/local/opt -# sudo chown -R $(whoami) /usr/local/opt -# shell: bash -# -# - name: Install libuv -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# brew install libuv -# sudo ln -s /opt/homebrew/opt/libuv/1.45.0/ /usr/local/opt/libuv -# shell: bash -# -# - name: Configure OpenSSL -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# rm -rf /usr/local/opt/openssl -# sudo ln -s /opt/homebrew/opt/openssl@3.4/ /usr/local/opt/openssl -# shell: bash -# -# - name: Update PATH and environment variables -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# echo "export PATH=\"/usr/local/bin/:/usr/local/opt/openssl/bin:\$PATH\"" >> ~/.zprofile -# echo "export LDFLAGS=\"-L/usr/local/opt/openssl/lib\"" >> ~/.zprofile -# echo "export CPPFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile -# echo "export EXT_CFLAGS=\"-I/usr/local/opt/openssl/include\"" >> ~/.zprofile -# shell: bash -# -# - name: Source updated environment variables -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# source ~/.zprofile -# shell: bash - -# - name: Install wheel -# if: ${{ inputs.platform-tag == 'macosx_arm64' }} -# run: | -# ./scripts/build-c-client.sh -# npm install -# shell: bash - -# - name: Install wheel -# if: ${{ inputs.platform-tag == 'win_amd64' }} -# run: | -# ./scripts/build-c-client.ps1 -# npm install -# shell: powershell - name: Connect to Docker container on remote machine with Docker daemon if: ${{ inputs.platform-tag == 'win_amd64' }} @@ -463,21 +400,7 @@ jobs: crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 working-directory: .github\workflows - ## FIGURE OUT WHAT SETUP NEEDS TO HAPPEN - #- run: | - # npm install typescript --save-dev - # npx tsc; - # working-directory: ts-test - # shell: bash - - #- name: Identify binaries - # if: ${{ inputs.platform-tag == 'macosx_arm64' }} - # run: | - # ls ./lib/binding/node-v108-darwin-arm64 - # ls ./lib/binding/node-v108-darwin-arm64/aerospike.node - # mkdir -p build; - # mkdir -p build/Release; - # cp -r ./lib/binding/node-v108-darwin-arm64 build/Release + # REUSABLE SECTION - name: Run tests if: ${{ inputs.platform-tag == 'win_amd64' }} @@ -512,3 +435,265 @@ jobs: sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} + + valgrind-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - uses: ./.github/actions/run-ee-server + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + - name: install valgrind + run: | + sudo apt-get update; + sudo apt update; + sudo apt install valgrind; + + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run valgrind -- --t 40000 + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + + + test-ce-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: + + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + if (docker ps -aq) { + docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." + } + else { + Write-Host "No containers to remove." + } + + - name: Run latest Community edition Aerospike server + run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + + - name: Connect to Docker container on remote machine with Docker daemon + if: ${{ inputs.platform-tag == 'win_amd64' }} + # DOCKER_HOST contains the IP address of the remote machine + run: | + $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} + crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 + working-directory: .github\workflows + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cp tests\udf.lua dist\udf.lua; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + cd ..; + npx tsc; + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + From 888c3fe8c5831010b800043f2cd2ecf0c822d887 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:11:16 -0700 Subject: [PATCH 094/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 520 +++++++++++------------ 1 file changed, 260 insertions(+), 260 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 256e5a877..46eb4e1e7 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -386,7 +386,7 @@ jobs: # run: npm install - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} + #if: ${{ inputs.platform-tag == 'macosx_arm64' }} with: node-version: ${{ matrix.nodejs-tag[1] }} path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ @@ -436,264 +436,264 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - valgrind-self-hosted: - needs: cibuildbinding - # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} - strategy: - fail-fast: false - runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - # REUSABLE SECTION - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - - # Need to be able to save Docker Hub credentials to keychain - - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - uses: ./.github/actions/run-ee-server - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: | - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - #- name: Change install command for release - # run: node ./scripts/change-install-command.js - - #- name: npm install - # run: npm install - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - - - name: install valgrind - run: | - sudo apt-get update; - sudo apt update; - sudo apt install valgrind; - - - # REUSABLE SECTION - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run valgrind -- --t 40000 - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - - test-ce-self-hosted: - needs: cibuildbinding - # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} - strategy: - fail-fast: false - matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} - runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - steps: - - # REUSABLE SECTION - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - - # Need to be able to save Docker Hub credentials to keychain - - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - if (docker ps -aq) { - docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." - } - else { - Write-Host "No containers to remove." - } - - - name: Run latest Community edition Aerospike server - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: | - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - #- name: Change install command for release - # run: node ./scripts/change-install-command.js - - #- name: npm install - # run: npm install - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - - - - name: Connect to Docker container on remote machine with Docker daemon - if: ${{ inputs.platform-tag == 'win_amd64' }} - # DOCKER_HOST contains the IP address of the remote machine - run: | - $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} - crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 - working-directory: .github\workflows - - # REUSABLE SECTION - - - name: Run tests - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cp tests\udf.lua dist\udf.lua; - npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; - cd ..; - npx tsc; - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} + valgrind-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - uses: ./.github/actions/run-ee-server + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + - name: install valgrind + run: | + sudo apt-get update; + sudo apt update; + sudo apt install valgrind; + + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run valgrind -- --t 40000 + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + + + test-ce-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: + + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + if (docker ps -aq) { + docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." + } + else { + Write-Host "No containers to remove." + } + + - name: Run latest Community edition Aerospike server + run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + + - name: Connect to Docker container on remote machine with Docker daemon + if: ${{ inputs.platform-tag == 'win_amd64' }} + # DOCKER_HOST contains the IP address of the remote machine + run: | + $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} + crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 + working-directory: .github\workflows + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cp tests\udf.lua dist\udf.lua; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + cd ..; + npx tsc; + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} From 67f0da59d0a24a3523f5b5cb485c067d61226984 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:13:38 -0700 Subject: [PATCH 095/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 46eb4e1e7..5c6cbd87b 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -445,6 +445,7 @@ jobs: runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: # REUSABLE SECTION - name: Create status check message run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV From 5c1d343209567460b56baa005dadafdc801663d9 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:18:23 -0700 Subject: [PATCH 096/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 520 +++++++++++------------ 1 file changed, 260 insertions(+), 260 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 5c6cbd87b..d181a46d5 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -436,265 +436,265 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - valgrind-self-hosted: - needs: cibuildbinding - # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} - strategy: - fail-fast: false - runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - steps: - # REUSABLE SECTION - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - - # Need to be able to save Docker Hub credentials to keychain - - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - uses: ./.github/actions/run-ee-server - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: | - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - #- name: Change install command for release - # run: node ./scripts/change-install-command.js - - #- name: npm install - # run: npm install - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - - - name: install valgrind - run: | - sudo apt-get update; - sudo apt update; - sudo apt install valgrind; - - - # REUSABLE SECTION - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run valgrind -- --t 40000 - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - - test-ce-self-hosted: - needs: cibuildbinding - # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} - strategy: - fail-fast: false - matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} - runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - steps: - - # REUSABLE SECTION - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - - # Need to be able to save Docker Hub credentials to keychain - - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - if (docker ps -aq) { - docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." - } - else { - Write-Host "No containers to remove." - } - - - name: Run latest Community edition Aerospike server - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: | - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - #- name: Change install command for release - # run: node ./scripts/change-install-command.js - - #- name: npm install - # run: npm install - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - - - - name: Connect to Docker container on remote machine with Docker daemon - if: ${{ inputs.platform-tag == 'win_amd64' }} - # DOCKER_HOST contains the IP address of the remote machine - run: | - $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} - crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 - working-directory: .github\workflows - - # REUSABLE SECTION - - - name: Run tests - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cp tests\udf.lua dist\udf.lua; - npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; - cd ..; - npx tsc; - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; - - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} + valgrind-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - uses: ./.github/actions/run-ee-server + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + - name: install valgrind + run: | + sudo apt-get update; + sudo apt update; + sudo apt install valgrind; + + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run valgrind -- --t 40000 + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + + + test-ce-self-hosted: + needs: cibuildbinding + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: + + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + if (docker ps -aq) { + docker ps -aq | ForEach-Object { docker rm -f $_ } || Write-Host "Failed to remove one or more containers." + } + else { + Write-Host "No containers to remove." + } + + - name: Run latest Community edition Aerospike server + run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + + - uses: actions/setup-node@v4 + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + + - name: Connect to Docker container on remote machine with Docker daemon + if: ${{ inputs.platform-tag == 'win_amd64' }} + # DOCKER_HOST contains the IP address of the remote machine + run: | + $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} + crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 + working-directory: .github\workflows + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cp tests\udf.lua dist\udf.lua; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + cd ..; + npx tsc; + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} From c715418b4fb87a4efe5a1da544dbdd0487d23a86 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:33:19 -0700 Subject: [PATCH 097/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index d181a46d5..caa008094 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -442,7 +442,7 @@ jobs: if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} strategy: fail-fast: false - runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} + runs-on: ${{ fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]')) }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" steps: @@ -658,7 +658,7 @@ jobs: # DOCKER_HOST contains the IP address of the remote machine run: | $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} - crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 + # crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 working-directory: .github\workflows # REUSABLE SECTION @@ -686,7 +686,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h 0.0.0.0 --port 3000 --t 15000 --U superuser --P superuser; - name: Show job status for commit From 4468237c2ddfdce7dbac900c0a47ec16a62f0790 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:35:59 -0700 Subject: [PATCH 098/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index caa008094..14e6b3eec 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -442,7 +442,7 @@ jobs: if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} strategy: fail-fast: false - runs-on: ${{ fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]')) }} + runs-on: ${{ fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" steps: From 2f08baa4a4294e8f5f9dea6449c24618a9270e56 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Thu, 27 Feb 2025 23:49:29 -0700 Subject: [PATCH 099/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 14e6b3eec..193b359cc 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -526,9 +526,7 @@ jobs: - name: install valgrind run: | - sudo apt-get update; - sudo apt update; - sudo apt install valgrind; + brew install valgrind # REUSABLE SECTION @@ -608,7 +606,7 @@ jobs: } - name: Run latest Community edition Aerospike server - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server + run: docker run -d --network=host --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server - name: Download artifacts uses: actions/download-artifact@v4 @@ -647,7 +645,7 @@ jobs: # run: npm install - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} + # if: ${{ inputs.platform-tag == 'macosx_arm64' }} with: node-version: ${{ matrix.nodejs-tag[1] }} path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ From ba062d47afcb11de4b9ac3461a1fd7eb2d3161b8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 00:01:41 -0700 Subject: [PATCH 100/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 193b359cc..74b16b034 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -439,7 +439,6 @@ jobs: valgrind-self-hosted: needs: cibuildbinding # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} strategy: fail-fast: false runs-on: ${{ fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} @@ -526,8 +525,9 @@ jobs: - name: install valgrind run: | - brew install valgrind - + sudo apt-get update; + sudo apt update; + sudo apt install valgrind; # REUSABLE SECTION From 06e4c95d8029c1060f3533e05910a3553c403544 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:20:19 -0700 Subject: [PATCH 101/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 478 +++++++++++++++++------ 1 file changed, 361 insertions(+), 117 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 74b16b034..97a3ae80f 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -127,7 +127,7 @@ jobs: shell: bash - cibuildbinding: + build-and-test-ee: needs: get-runner-os strategy: matrix: @@ -138,6 +138,8 @@ jobs: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 steps: + + # REUSABLE PART - name: Create status check message run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV shell: bash @@ -290,7 +292,250 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - test-self-hosted: + test-ce: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + fail-fast: false + runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + + # REUSABLE PART + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - name: Run latest Community edition Aerospike server + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: docker run -d --network=host --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + test-lowest-supported-server: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + fail-fast: false + runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + + # REUSABLE PART + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + - name: Run lowest supported server + run: | + SERVER_VERSION=$(curl -s "https://registry.hub.docker.com/v2/repositories/aerospike/aerospike-server/tags?page_size=100" | jq '.results[] | select(.name | startswith("6.1")).name' -r | head -n 1) + docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server:$SERVER_VERSION + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + test-self-hosted-ee: needs: cibuildbinding # There's a top-level env variable for this but we can't use it here, unfortunately if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} @@ -436,120 +681,119 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - valgrind-self-hosted: - needs: cibuildbinding - # There's a top-level env variable for this but we can't use it here, unfortunately - strategy: - fail-fast: false - runs-on: ${{ fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - steps: - # REUSABLE SECTION - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - - # Need to be able to save Docker Hub credentials to keychain - - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - uses: ./.github/actions/run-ee-server - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: | - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - #- name: Change install command for release - # run: node ./scripts/change-install-command.js - - #- name: npm install - # run: npm install - - - uses: actions/setup-node@v4 - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - with: - node-version: ${{ matrix.nodejs-tag[1] }} - path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ - - - name: install valgrind - run: | - sudo apt-get update; - sudo apt update; - sudo apt install valgrind; - - # REUSABLE SECTION - - - name: Run tests - if: ${{ inputs.platform-tag == 'macosx_arm64' }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run valgrind -- --t 40000 - - - name: Show job status for commit - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} +# valgrind-self-hosted: +# needs: cibuildbinding +# # There's a top-level env variable for this but we can't use it here, unfortunately +# strategy: +# fail-fast: false +# runs-on: ${{ fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') }} +# env: +# BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" +# steps: +# # REUSABLE SECTION +# - name: Create status check message +# run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV +# shell: bash +# +# - name: Show job status for commit +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} +# +# - uses: actions/checkout@v4 +# with: +# ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# +# # Need to be able to save Docker Hub credentials to keychain +# - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} +# run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} +# +# - name: Remove aerospike docker image +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# if docker ps -aq | grep -q .; then +# docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." +# else +# echo "No containers to remove." +# fi +# +# - uses: ./.github/actions/run-ee-server +# with: +# use-server-rc: ${{ inputs.use-server-rc }} +# server-tag: ${{ inputs.server-tag }} +# docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} +# docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} +# +# - name: Download artifacts +# uses: actions/download-artifact@v4 +# with: +# name: nodejs-client-artifacts +# path: ./downloaded-artifacts +# +# - name: list Artifacts first +# run: | +# ls ./downloaded-artifacts +# ls ./downloaded-artifacts/glibc@2.31 +# ls ./downloaded-artifacts/glibc@2.35 +# +# - name: Move artifacts +# run: | +# mkdir -p lib/binding +# cp -r downloaded-artifacts/* lib/binding +# +# +# - name: Delete leftover artifacts +# if: ${{ !(inputs.platform-tag == 'win_amd64') }} +# run: | +# rm -rf downloaded-artifacts/ +# +# - name: check binding +# run: | +# ls lib/binding; +# ls lib/binding/glibc@2.35; +# ls lib/binding/glibc@2.31; +# +# +# #- name: Change install command for release +# # run: node ./scripts/change-install-command.js +# +# #- name: npm install +# # run: npm install +# +# - uses: actions/setup-node@v4 +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# with: +# node-version: ${{ matrix.nodejs-tag[1] }} +# path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ +# +# - name: install valgrind +# run: | +# brew install valgrind +# +# +# # REUSABLE SECTION +# +# - name: Run tests +# if: ${{ inputs.platform-tag == 'macosx_arm64' }} +# run: | +# docker ps; +# docker logs aerospike; +# cd ts-test; +# npm install; +# npx tsc; +# cd ..; +# npx tsc; +# npm run valgrind -- --t 40000 +# +# - name: Show job status for commit +# if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# status: ${{ job.status }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} @@ -656,7 +900,7 @@ jobs: # DOCKER_HOST contains the IP address of the remote machine run: | $env:DOCKER_HOST_IP = $env:DOCKER_HOST | foreach {$_.replace("tcp://","")} | foreach {$_.replace(":2375", "")} - # crudini --set config.conf enterprise-edition hosts ${env:DOCKER_HOST_IP}:3000 + crudini --set config.conf community-edition hosts ${env:DOCKER_HOST_IP}:3000 working-directory: .github\workflows # REUSABLE SECTION From d8b77a6bce0b755618adf23e77a23d5b780b95ba Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:25:04 -0700 Subject: [PATCH 102/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 97a3ae80f..d388ed2df 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -127,7 +127,7 @@ jobs: shell: bash - build-and-test-ee: + test-ee: needs: get-runner-os strategy: matrix: @@ -141,7 +141,7 @@ jobs: # REUSABLE PART - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV shell: bash - name: Show job status for commit @@ -306,7 +306,7 @@ jobs: # REUSABLE PART - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + run: echo STATUS_CHECK_MESSAGE="test-ce (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV shell: bash - name: Show job status for commit @@ -427,7 +427,7 @@ jobs: # REUSABLE PART - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="cibuildbinding (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + run: echo STATUS_CHECK_MESSAGE="test-lowest-supported-server (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV shell: bash - name: Show job status for commit @@ -536,7 +536,6 @@ jobs: context: ${{ env.STATUS_CHECK_MESSAGE }} test-self-hosted-ee: - needs: cibuildbinding # There's a top-level env variable for this but we can't use it here, unfortunately if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} strategy: @@ -682,7 +681,6 @@ jobs: context: ${{ env.STATUS_CHECK_MESSAGE }} # valgrind-self-hosted: -# needs: cibuildbinding # # There's a top-level env variable for this but we can't use it here, unfortunately # strategy: # fail-fast: false @@ -798,7 +796,6 @@ jobs: test-ce-self-hosted: - needs: cibuildbinding # There's a top-level env variable for this but we can't use it here, unfortunately if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} strategy: From e46eae053196b3a813eb802ecc6f90f8e6e0c018 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:35:14 -0700 Subject: [PATCH 103/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index d388ed2df..e1446bcf0 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -131,7 +131,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -296,7 +296,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -417,7 +417,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -541,7 +541,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -801,7 +801,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -911,7 +911,7 @@ jobs: npm install; npx tsc; cp tests\udf.lua dist\udf.lua; - npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000 --U superuser --P superuser; + npx mocha dist -- --h ${env:DOCKER_HOST_IP} --port 3000; cd ..; npx tsc; @@ -925,7 +925,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h 0.0.0.0 --port 3000 --t 15000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --t 15000; - name: Show job status for commit From 3880a4d31d4aaed7978ac821db050af668b35a61 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:44:02 -0700 Subject: [PATCH 104/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index e1446bcf0..1b7211d45 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -131,7 +131,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} + nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -296,7 +296,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} + nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -417,7 +417,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} + nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -541,7 +541,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} + nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -801,7 +801,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON(inputs.nodejs-tags)[3] }} + nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" From 5dfe7efba47f323750f23b92e0e48204383a21d3 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:48:46 -0700 Subject: [PATCH 105/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 1b7211d45..c907a6eea 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -131,7 +131,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} + nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -296,7 +296,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} + nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -417,7 +417,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} + nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -541,7 +541,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} + nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -801,7 +801,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ [fromJSON(inputs.nodejs-tags)[3]] }} + nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" From 3980acd3133ea89d56c2737d2e66cc2d6344087f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:51:29 -0700 Subject: [PATCH 106/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index c907a6eea..0a0e7d2c6 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -131,7 +131,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} + nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -296,7 +296,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} + nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -417,7 +417,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} + nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -541,7 +541,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} + nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -801,7 +801,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ format('[{0}]', fromJSON(inputs.nodejs-tags)[3]) }} + nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" From 28962609a89095ba2d2028214d17a816ce33d85f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 01:55:18 -0700 Subject: [PATCH 107/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 0a0e7d2c6..5579e6ba0 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -131,7 +131,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -296,7 +296,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -417,7 +417,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} env: @@ -541,7 +541,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -801,7 +801,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ toJSON([fromJSON(inputs.nodejs-tags)[3]]) }} + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" From 59c241c42968be615ee394e7bf046591fc1d7237 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 02:11:20 -0700 Subject: [PATCH 108/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 5579e6ba0..e2e442220 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -167,7 +167,7 @@ jobs: echo "Platform tag: '${{ inputs.platform-tag }}'" echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" - echo "Platform conditional: '${{ startsWith(inputs.platform-tag, 'manylinux') }}'" + echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" - name: 'Windows: Install C client deps' @@ -199,7 +199,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ startsWith(inputs.platform-tag, 'manylinux') }} + if: runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} @@ -298,7 +298,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} + runs-on: runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 @@ -419,7 +419,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: ${{ startsWith(inputs.platform-tag, 'manylinux') }} + runs-on: runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 From d56793f8d8b3e00f4a4417adc90d394b1ed2a6e6 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 03:32:03 -0700 Subject: [PATCH 109/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index e2e442220..76be30dd2 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -199,7 +199,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} From 580a40ad7c4e7c256f4dc443959807861ce5876d Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 03:45:47 -0700 Subject: [PATCH 110/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 255 +++++++++++++++++++++++ 1 file changed, 255 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 76be30dd2..4a197a687 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -292,6 +292,196 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} + test-tsc-compile: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + fail-fast: false + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + + # REUSABLE PART + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + npx tsc; + npx tsc typings/index.d.ts; + cd ts-test; + npx tsc; + + - name: Run tests + if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} + run: | + npx tsc; + npx tsc typings/index.d.ts; + cd ts-test; + npx tsc; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + test-metrics: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + fail-fast: false + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + + # REUSABLE PART + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + - name: Run tests + if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + test-ce: needs: get-runner-os strategy: @@ -680,6 +870,71 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} + test-tsc-compile-self-hosted: + # There's a top-level env variable for this but we can't use it here, unfortunately + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + strategy: + fail-fast: false + matrix: + nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + steps: + + # REUSABLE SECTION + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="Test on self hosted (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + + # Need to be able to save Docker Hub credentials to keychain + - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} + run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + + - uses: actions/setup-node@v4 + #if: ${{ inputs.platform-tag == 'macosx_arm64' }} + with: + node-version: ${{ matrix.nodejs-tag[1] }} + path: ./lib/binding/node-${{ matrix.nodejs-tag[0] }}-darwin-arm64/ + + # REUSABLE SECTION + + - name: Run tests + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: | + npx tsc; + npx tsc typings/index.d.ts; + cd ts-test; + npx tsc; + + - name: Run tests + if: ${{ inputs.platform-tag == 'macosx_arm64' }} + run: | + npx tsc; + npx tsc typings/index.d.ts; + cd ts-test; + npx tsc; + + + - name: Show job status for commit + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + uses: myrotvorets/set-commit-status-action@v2.0.0 + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + # valgrind-self-hosted: # # There's a top-level env variable for this but we can't use it here, unfortunately # strategy: From 820b46b0a6541c7da794959085d5d363e841dc29 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 03:48:00 -0700 Subject: [PATCH 111/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 4a197a687..dde9010a9 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -488,7 +488,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 @@ -609,7 +609,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 From 4a7c16120ff7d98a4188827ce6b6252cd7a15c59 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 03:48:48 -0700 Subject: [PATCH 112/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index dde9010a9..bc1287a8e 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -488,7 +488,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 From f27b827c3549cafdf2ca114ee9b8e9bde4637074 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 03:49:56 -0700 Subject: [PATCH 113/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index bc1287a8e..ba9431b22 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -199,7 +199,7 @@ jobs: # TODO: combine this composite action and the above into one - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} uses: ./.github/actions/run-ee-server-for-ext-container with: use-server-rc: ${{ inputs.use-server-rc }} From 4103597b20fbc7539dc5e7d89498dfac697d04ec Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 04:31:22 -0700 Subject: [PATCH 114/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index ba9431b22..3e55bc03c 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -488,7 +488,8 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 @@ -609,7 +610,8 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" MACOS_OPENSSL_VERSION: 3 From f3dbe236cd8913989c613c1127eaae36b9a3d27f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 04:39:52 -0700 Subject: [PATCH 115/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 48 ++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 3e55bc03c..899672636 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -330,6 +330,7 @@ jobs: - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | + npm install --only=dev; npx tsc; npx tsc typings/index.d.ts; cd ts-test; @@ -338,10 +339,11 @@ jobs: - name: Run tests if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} run: | - npx tsc; - npx tsc typings/index.d.ts; - cd ts-test; - npx tsc; + npm install --only=dev; + npx tsc; + npx tsc typings/index.d.ts; + cd ts-test; + npx tsc; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 @@ -386,6 +388,32 @@ jobs: with: node-version: ${{ matrix.nodejs-tag[1] }} + - name: print conditional values + run: | + echo "Platform tag: '${{ inputs.platform-tag }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" + echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" + echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + + - name: 'Windows: Install C client deps' + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: nuget restore + working-directory: aerospike-client-c/vs + + - name: 'macOS x86: Setup Docker using colima for testing' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/setup-docker-on-macos + + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + - name: Remove aerospike docker image if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} run: | @@ -395,6 +423,16 @@ jobs: echo "No containers to remove." fi + # TODO: combine this composite action and the above into one + - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + # FIND NO SERVER TESTS AND RUN THEM # #- name: If not running tests against server, only run basic import test @@ -915,6 +953,7 @@ jobs: - name: Run tests if: ${{ inputs.platform-tag == 'win_amd64' }} run: | + npm install --only=dev; npx tsc; npx tsc typings/index.d.ts; cd ts-test; @@ -923,6 +962,7 @@ jobs: - name: Run tests if: ${{ inputs.platform-tag == 'macosx_arm64' }} run: | + npm install --only=dev; npx tsc; npx tsc typings/index.d.ts; cd ts-test; From 5491c2408ff733adcfe67c10e7a5ec5590bce5e3 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 05:01:37 -0700 Subject: [PATCH 116/161] PIPELINE IMPROVMENTS --- .../actions/run-ce-server/run-ce-server.yml | 85 +++++++++++++++++++ .github/workflows/test-dev-artifacts.yml | 39 +++++++++ 2 files changed, 124 insertions(+) create mode 100644 .github/actions/run-ce-server/run-ce-server.yml diff --git a/.github/actions/run-ce-server/run-ce-server.yml b/.github/actions/run-ce-server/run-ce-server.yml new file mode 100644 index 000000000..956429c16 --- /dev/null +++ b/.github/actions/run-ce-server/run-ce-server.yml @@ -0,0 +1,85 @@ +name: 'Run EE Server' +description: 'Run EE server. Returns once server is ready. Only tested on Linux and macOS' +# NOTE: do not share this server container with others +# since it's using the default admin / admin credentials +inputs: + # All inputs in composite actions are strings + use-server-rc: + required: true + description: Deploy server release candidate? + default: 'false' + server-tag: + required: true + description: Specify Docker tag + + default: 'latest' + # Github Composite Actions can't access secrets + # so we need to pass them in as inputs + docker-hub-username: + description: Required for using release candidates + required: false + docker-hub-password: + description: Required for using release candidates + required: false + +runs: + using: "composite" + steps: + + - name: Install crudini to manipulate config.conf + # This will only work on the Github hosted runners. + run: | + pipx install crudini --pip-args "-c ${{ github.workspace }}/.github/workflows/requirements.txt" + working-directory: .github/workflows + shell: bash + + - name: Create config.conf + run: cp config.conf.template config.conf + working-directory: .github/workflows + shell: bash + + - name: Use community edition instead of enterprise edition in config.conf + run: | + crudini --existing=param --set config.conf community-edition hosts '' + crudini --existing=param --set config.conf community-edition hosts 127.0.0.1:3000 + working-directory: .github/workflows + shell: bash + + - run: echo IMAGE_NAME=aerospike/aerospike-server${{ inputs.use-server-rc == 'true' && '-rc' || '' }}:${{ inputs.server-tag }} >> $GITHUB_ENV + shell: bash + + # FLAG THIS + - run: echo NEW_IMAGE_NAME=${{ env.IMAGE_NAME }}-security-and-sc >> $GITHUB_ENV + shell: bash + + # macOS Github runners and Windows self-hosted runners don't have buildx installed by default + - if: ${{ runner.os == 'Windows' || runner.os == 'macOS' }} + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 + with: + # Don't want to use default Git context or else it will clone the whole Python client repo again + context: .github/workflows/docker-build-context + build-args: | + server_image=${{ env.IMAGE_NAME }} + tags: ${{ env.NEW_IMAGE_NAME }} + # setup-buildx-action configures Docker to use the docker-container build driver + # This driver doesn't publish an image locally by default + # so we have to manually enable it + load: true + + - run: echo SERVER_CONTAINER_NAME="aerospike" >> $GITHUB_ENV + shell: bash + + - run: docker run -d --name ${{ env.SERVER_CONTAINER_NAME }} -e DEFAULT_TTL=2592000 -p 3000:3000 ${{ env.NEW_IMAGE_NAME }} + shell: bash + + - uses: ./.github/actions/wait-for-as-server-to-start + with: + container-name: ${{ env.SERVER_CONTAINER_NAME }} + is-strong-consistency-enabled: true + + # For debugging + - run: docker logs aerospike + shell: bash \ No newline at end of file diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 899672636..f9d6d5472 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -334,6 +334,7 @@ jobs: npx tsc; npx tsc typings/index.d.ts; cd ts-test; + npm install; npx tsc; - name: Run tests @@ -343,6 +344,7 @@ jobs: npx tsc; npx tsc typings/index.d.ts; cd ts-test; + npm install; npx tsc; - name: Set final commit status @@ -942,6 +944,41 @@ jobs: - if: ${{ inputs.platform-tag == 'macosx_arm64' && inputs.use-server-rc }} run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: | + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + #- name: Change install command for release + # run: node ./scripts/change-install-command.js + + #- name: npm install + # run: npm install + - uses: actions/setup-node@v4 #if: ${{ inputs.platform-tag == 'macosx_arm64' }} with: @@ -957,6 +994,7 @@ jobs: npx tsc; npx tsc typings/index.d.ts; cd ts-test; + npm install; npx tsc; - name: Run tests @@ -966,6 +1004,7 @@ jobs: npx tsc; npx tsc typings/index.d.ts; cd ts-test; + npm install; npx tsc; From d6289b7a142ef13efb5296c4f52d3ce7e1711562 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 05:06:38 -0700 Subject: [PATCH 117/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index f9d6d5472..fce2ffc00 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -634,7 +634,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h 127.0.0.1 --port 3000 --U superuser --P superuser; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 From 0ded99ea3ca5d6d96e623d13cc110a43f15b803d Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 07:23:25 -0700 Subject: [PATCH 118/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index fce2ffc00..e3a30577e 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -569,7 +569,7 @@ jobs: - name: Run latest Community edition Aerospike server if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} - run: docker run -d --network=host --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server + run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server # FIND NO SERVER TESTS AND RUN THEM # @@ -650,7 +650,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} fail-fast: false - if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_20_x86_64' }} runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" From c4e91158064b3023d31b750e8184e43cc49670a7 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 07:29:51 -0700 Subject: [PATCH 119/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 99 ++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index e3a30577e..e8887c5f8 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -304,6 +304,7 @@ jobs: MACOS_OPENSSL_VERSION: 3 steps: + # REUSABLE PART - name: Create status check message run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV @@ -327,6 +328,104 @@ jobs: with: node-version: ${{ matrix.nodejs-tag[1] }} + - name: print conditional values + run: | + echo "Platform tag: '${{ inputs.platform-tag }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" + echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" + echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + + - name: 'Windows: Install C client deps' + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: nuget restore + working-directory: aerospike-client-c/vs + + - name: 'macOS x86: Setup Docker using colima for testing' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/setup-docker-on-macos + + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + # TODO: combine this composite action and the above into one + - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + - name: Change install command for release + run: node ./scripts/change-install-command.js + - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | From 3841ffed1f6678c50c356128a9cdd5333ff2622c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 07:37:26 -0700 Subject: [PATCH 120/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index e8887c5f8..9550e8fb8 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -429,22 +429,22 @@ jobs: - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | - npm install --only=dev; - npx tsc; - npx tsc typings/index.d.ts; cd ts-test; npm install; npx tsc; + cd ..; + npx tsc; + npx tsc typings/index.d.ts; - name: Run tests if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} run: | - npm install --only=dev; - npx tsc; - npx tsc typings/index.d.ts; cd ts-test; npm install; npx tsc; + cd ..; + npx tsc; + npx tsc typings/index.d.ts; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 @@ -733,7 +733,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h 127.0.0.1 --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h 0.0.0.0 --port 3000 --U superuser --P superuser; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 @@ -856,7 +856,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h 172.17.0.2 --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h 0.0.0.0 --port 3000 --U superuser --P superuser; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 From 416195ff89166023ef14162a28fd8e022aacb116 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 07:44:09 -0700 Subject: [PATCH 121/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 9550e8fb8..997f03a28 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -434,7 +434,7 @@ jobs: npx tsc; cd ..; npx tsc; - npx tsc typings/index.d.ts; + npx tsc typings/index.d.ts; - name: Run tests if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} @@ -733,7 +733,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h 0.0.0.0 --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 @@ -856,7 +856,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h 0.0.0.0 --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 @@ -1232,7 +1232,7 @@ jobs: test-ce-self-hosted: # There's a top-level env variable for this but we can't use it here, unfortunately - if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64' || inputs.platform-tag == 'win_amd64') }} + if: ${{ inputs.run_tests && (inputs.platform-tag == 'macosx_arm64') }} strategy: fail-fast: false matrix: From 2412aa22309ae3248b7fa950c1315079d07649a9 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 07:54:01 -0700 Subject: [PATCH 122/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 997f03a28..77797ef4c 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -733,7 +733,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 @@ -856,7 +856,7 @@ jobs: npx tsc; cd ..; npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000 --U superuser --P superuser; + npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000; - name: Set final commit status uses: myrotvorets/set-commit-status-action@v2.0.0 From 3520f4a69b650dc6d4c701ba6805ded4ca395908 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 08:13:20 -0700 Subject: [PATCH 123/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p2.yml | 64 +- .github/workflows/test-dev-artifacts.yml | 588 ++++++++--------- .../workflows/upload-jfrog-build-to-npm.yml | 8 +- .../actions/run-ee-server/action.yml | 62 -- .github_former/assets/aerospike.conf | 39 -- .github_former/workflows/build-bindings.yml | 599 ------------------ .github_former/workflows/codeql.yml | 62 -- .../workflows/combine-bindings/action.yml | 91 --- .github_former/workflows/tests.yml | 456 ------------- .github_former/workflows/windows-build.yml | 78 --- 10 files changed, 342 insertions(+), 1705 deletions(-) delete mode 100644 .github_former/actions/run-ee-server/action.yml delete mode 100644 .github_former/assets/aerospike.conf delete mode 100644 .github_former/workflows/build-bindings.yml delete mode 100644 .github_former/workflows/codeql.yml delete mode 100644 .github_former/workflows/combine-bindings/action.yml delete mode 100644 .github_former/workflows/tests.yml delete mode 100644 .github_former/workflows/windows-build.yml diff --git a/.github/workflows/dev-workflow-p2.yml b/.github/workflows/dev-workflow-p2.yml index 36f4e8b78..6a0fccb9e 100644 --- a/.github/workflows/dev-workflow-p2.yml +++ b/.github/workflows/dev-workflow-p2.yml @@ -1,24 +1,48 @@ -#name: Dev workflow (part 2) -# -#on: -# pull_request: -# branches: -# - 'dev*' -# types: -# - synchronize -# paths-ignore: -# - 'package.json' -# workflow_dispatch: -# paths-ignore: -# - 'package.json' -# -#jobs: -# bump-dev-number: +name: Dev workflow (part 2) + +on: + workflow_dispatch: + inputs: + package-name: + description: 'An example input for the workflow' + required: true + default: 'default_value' +jobs: + download-jfrog-artifacts: + uses: ./.github/workflows/download-jfrog-artifacts.yml + with: + version: 6.0.3-rc.1 + secrets: inherit + + bump-dev-number: #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# with: -# change: 'bump-dev-num' -# secrets: inherit + uses: ./.github/workflows/bump-version.yml + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + # bump-dev-number, + rebuild-artifacts-with-new-dev-num + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + publish-to-npm: + name: Upload artifacts to JFrog + needs: [ + # bump-dev-number, + rebuild-artifacts-with-new-dev-num, + upload-to-jfrog + ] + uses: ./.github/workflows/upload-jfrog-build-to-npm.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit # release-package: # name: release npm package diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 77797ef4c..e4d04c1d9 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -131,7 +131,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -296,7 +296,7 @@ jobs: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} fail-fast: false runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: @@ -454,178 +454,178 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - test-metrics: - needs: get-runner-os - strategy: - matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} - fail-fast: false - runs-on: ${{ needs.get-runner-os.outputs.runner-os }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - MACOS_OPENSSL_VERSION: 3 - steps: - - # REUSABLE PART - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - submodules: recursive - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - # We need the last tag before the ref, so we can relabel the version if needed - fetch-depth: 0 - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.nodejs-tag[1] }} - - - name: print conditional values - run: | - echo "Platform tag: '${{ inputs.platform-tag }}'" - echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" - echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" - echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" - echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" - - - name: 'Windows: Install C client deps' - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: nuget restore - working-directory: aerospike-client-c/vs - - - name: 'macOS x86: Setup Docker using colima for testing' - if: ${{ inputs.platform-tag == 'macosx_x86_64' }} - uses: ./.github/actions/setup-docker-on-macos - - - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' - if: ${{ inputs.platform-tag == 'macosx_x86_64' }} - uses: ./.github/actions/run-ee-server-for-ext-container - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - # TODO: combine this composite action and the above into one - - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} - uses: ./.github/actions/run-ee-server-for-ext-container - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - # FIND NO SERVER TESTS AND RUN THEM - # - #- name: If not running tests against server, only run basic import test - # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} - # # Use double quotes otherwise Windows will throw this error in cibuildwheel - # # 'import - # # ^ - # # SyntaxError: EOL while scanning string literal - # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV - # shell: bash - - #- name: Otherwise, enable integration tests - # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} - # run: echo "TEST_COMMAND=cd ts-test; - # npm install typescript --save-dev; - # npx tsc; - # cd ..; - # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV - # shell: bash - - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - name: Change install command for release - run: node ./scripts/change-install-command.js - - - name: Run tests - if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; - npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; - - - name: Run tests - if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; - npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; - - - name: Set final commit status - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} +# test-metrics: +# needs: get-runner-os +# strategy: +# matrix: +# nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} +# fail-fast: false +# runs-on: ${{ needs.get-runner-os.outputs.runner-os }} +# env: +# BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" +# MACOS_OPENSSL_VERSION: 3 +# steps: +# +# # REUSABLE PART +# - name: Create status check message +# run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV +# shell: bash +# +# - name: Show job status for commit +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} +# +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# # We need the last tag before the ref, so we can relabel the version if needed +# fetch-depth: 0 +# +# - uses: actions/setup-node@v4 +# with: +# node-version: ${{ matrix.nodejs-tag[1] }} +# +# - name: print conditional values +# run: | +# echo "Platform tag: '${{ inputs.platform-tag }}'" +# echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" +# echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" +# echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" +# echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" +# +# - name: 'Windows: Install C client deps' +# if: ${{ inputs.platform-tag == 'win_amd64' }} +# run: nuget restore +# working-directory: aerospike-client-c/vs +# +# - name: 'macOS x86: Setup Docker using colima for testing' +# if: ${{ inputs.platform-tag == 'macosx_x86_64' }} +# uses: ./.github/actions/setup-docker-on-macos +# +# - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' +# if: ${{ inputs.platform-tag == 'macosx_x86_64' }} +# uses: ./.github/actions/run-ee-server-for-ext-container +# with: +# use-server-rc: ${{ inputs.use-server-rc }} +# server-tag: ${{ inputs.server-tag }} +# docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} +# docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} +# +# - name: Remove aerospike docker image +# if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} +# run: | +# if docker ps -aq | grep -q .; then +# docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." +# else +# echo "No containers to remove." +# fi +# +# # TODO: combine this composite action and the above into one +# - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" +# if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} +# uses: ./.github/actions/run-ee-server-for-ext-container +# with: +# use-server-rc: ${{ inputs.use-server-rc }} +# server-tag: ${{ inputs.server-tag }} +# docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} +# docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} +# +# # FIND NO SERVER TESTS AND RUN THEM +# # +# #- name: If not running tests against server, only run basic import test +# # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} +# # # Use double quotes otherwise Windows will throw this error in cibuildwheel +# # # 'import +# # # ^ +# # # SyntaxError: EOL while scanning string literal +# # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV +# # shell: bash +# +# #- name: Otherwise, enable integration tests +# # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} +# # run: echo "TEST_COMMAND=cd ts-test; +# # npm install typescript --save-dev; +# # npx tsc; +# # cd ..; +# # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV +# # shell: bash +# +# +# - name: Download artifacts +# uses: actions/download-artifact@v4 +# with: +# name: nodejs-client-artifacts +# path: ./downloaded-artifacts +# +# - name: list Artifacts first +# run: | +# ls ./downloaded-artifacts +# ls ./downloaded-artifacts/glibc@2.31 +# ls ./downloaded-artifacts/glibc@2.35 +# +# - name: Move artifacts +# run: | +# mkdir -p lib/binding +# cp -r downloaded-artifacts/* lib/binding +# +# +# - name: Delete leftover artifacts +# if: ${{ !(inputs.platform-tag == 'win_amd64') }} +# run: | +# rm -rf downloaded-artifacts/ +# +# - name: check binding +# run: +# ls lib/binding; +# ls lib/binding/glibc@2.35; +# ls lib/binding/glibc@2.31; +# +# - name: Change install command for release +# run: node ./scripts/change-install-command.js +# +# - name: Run tests +# if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} +# run: | +# docker ps; +# docker logs aerospike; +# cd ts-test; +# npm install; +# npx tsc; +# cd ..; +# npx tsc; +# npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; +# npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; +# +# - name: Run tests +# if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} +# run: | +# docker ps; +# docker logs aerospike; +# cd ts-test; +# npm install; +# npx tsc; +# cd ..; +# npx tsc; +# npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; +# npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; +# +# - name: Set final commit status +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# status: ${{ job.status }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} test-ce: needs: get-runner-os strategy: matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} fail-fast: false if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} runs-on: ${{ needs.get-runner-os.outputs.runner-os }} @@ -743,128 +743,128 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} - test-lowest-supported-server: - needs: get-runner-os - strategy: - matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} - fail-fast: false - if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_20_x86_64' }} - runs-on: ${{ needs.get-runner-os.outputs.runner-os }} - env: - BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" - MACOS_OPENSSL_VERSION: 3 - steps: - - # REUSABLE PART - - name: Create status check message - run: echo STATUS_CHECK_MESSAGE="test-lowest-supported-server (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV - shell: bash - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - context: ${{ env.STATUS_CHECK_MESSAGE }} - - - uses: actions/checkout@v4 - with: - submodules: recursive - ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - # We need the last tag before the ref, so we can relabel the version if needed - fetch-depth: 0 - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.nodejs-tag[1] }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - - name: Run lowest supported server - run: | - SERVER_VERSION=$(curl -s "https://registry.hub.docker.com/v2/repositories/aerospike/aerospike-server/tags?page_size=100" | jq '.results[] | select(.name | startswith("6.1")).name' -r | head -n 1) - docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server:$SERVER_VERSION - - # FIND NO SERVER TESTS AND RUN THEM - # - #- name: If not running tests against server, only run basic import test - # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} - # # Use double quotes otherwise Windows will throw this error in cibuildwheel - # # 'import - # # ^ - # # SyntaxError: EOL while scanning string literal - # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV - # shell: bash - - #- name: Otherwise, enable integration tests - # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} - # run: echo "TEST_COMMAND=cd ts-test; - # npm install typescript --save-dev; - # npx tsc; - # cd ..; - # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV - # shell: bash - - - - name: Download artifacts - uses: actions/download-artifact@v4 - with: - name: nodejs-client-artifacts - path: ./downloaded-artifacts - - - name: list Artifacts first - run: | - ls ./downloaded-artifacts - ls ./downloaded-artifacts/glibc@2.31 - ls ./downloaded-artifacts/glibc@2.35 - - - name: Move artifacts - run: | - mkdir -p lib/binding - cp -r downloaded-artifacts/* lib/binding - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - name: Change install command for release - run: node ./scripts/change-install-command.js - - - name: Run tests - if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} - run: | - docker ps; - docker logs aerospike; - cd ts-test; - npm install; - npx tsc; - cd ..; - npx tsc; - npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000; - - - name: Set final commit status - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} - with: - sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} - status: ${{ job.status }} - context: ${{ env.STATUS_CHECK_MESSAGE }} +# test-lowest-supported-server: +# needs: get-runner-os +# strategy: +# matrix: +# nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} +# fail-fast: false +# #if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_20_x86_64' }} +# runs-on: ${{ needs.get-runner-os.outputs.runner-os }} +# env: +# BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" +# MACOS_OPENSSL_VERSION: 3 +# steps: +# +# # REUSABLE PART +# - name: Create status check message +# run: echo STATUS_CHECK_MESSAGE="test-lowest-supported-server (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV +# shell: bash +# +# - name: Show job status for commit +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} +# +# - uses: actions/checkout@v4 +# with: +# submodules: recursive +# ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# # We need the last tag before the ref, so we can relabel the version if needed +# fetch-depth: 0 +# +# - uses: actions/setup-node@v4 +# with: +# node-version: ${{ matrix.nodejs-tag[1] }} +# +# - name: Remove aerospike docker image +# if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} +# run: | +# if docker ps -aq | grep -q .; then +# docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." +# else +# echo "No containers to remove." +# fi +# +# - name: Run lowest supported server +# run: | +# SERVER_VERSION=$(curl -s "https://registry.hub.docker.com/v2/repositories/aerospike/aerospike-server/tags?page_size=100" | jq '.results[] | select(.name | startswith("6.1")).name' -r | head -n 1) +# docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server:$SERVER_VERSION +# +# # FIND NO SERVER TESTS AND RUN THEM +# # +# #- name: If not running tests against server, only run basic import test +# # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} +# # # Use double quotes otherwise Windows will throw this error in cibuildwheel +# # # 'import +# # # ^ +# # # SyntaxError: EOL while scanning string literal +# # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV +# # shell: bash +# +# #- name: Otherwise, enable integration tests +# # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} +# # run: echo "TEST_COMMAND=cd ts-test; +# # npm install typescript --save-dev; +# # npx tsc; +# # cd ..; +# # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV +# # shell: bash +# +# +# - name: Download artifacts +# uses: actions/download-artifact@v4 +# with: +# name: nodejs-client-artifacts +# path: ./downloaded-artifacts +# +# - name: list Artifacts first +# run: | +# ls ./downloaded-artifacts +# ls ./downloaded-artifacts/glibc@2.31 +# ls ./downloaded-artifacts/glibc@2.35 +# +# - name: Move artifacts +# run: | +# mkdir -p lib/binding +# cp -r downloaded-artifacts/* lib/binding +# +# +# - name: Delete leftover artifacts +# if: ${{ !(inputs.platform-tag == 'win_amd64') }} +# run: | +# rm -rf downloaded-artifacts/ +# +# - name: check binding +# run: +# ls lib/binding; +# ls lib/binding/glibc@2.35; +# ls lib/binding/glibc@2.31; +# +# - name: Change install command for release +# run: node ./scripts/change-install-command.js +# +# - name: Run tests +# if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} +# run: | +# docker ps; +# docker logs aerospike; +# cd ts-test; +# npm install; +# npx tsc; +# cd ..; +# npx tsc; +# npm run test dist/${{ inputs.test-file }} -- --h localhost --port 3000; +# +# - name: Set final commit status +# uses: myrotvorets/set-commit-status-action@v2.0.0 +# if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} +# with: +# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} +# status: ${{ job.status }} +# context: ${{ env.STATUS_CHECK_MESSAGE }} test-self-hosted-ee: # There's a top-level env variable for this but we can't use it here, unfortunately @@ -872,7 +872,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -1017,7 +1017,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" @@ -1236,7 +1236,7 @@ jobs: strategy: fail-fast: false matrix: - nodejs-tag: ${{ fromJSON('[["v131", "23"]]') }} + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} runs-on: ${{ inputs.platform-tag == 'macosx_arm64' && fromJSON('["self-hosted", "macOS", "ARM64", "SMA"]') || fromJSON('["self-hosted", "Windows", "X64"]') }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" diff --git a/.github/workflows/upload-jfrog-build-to-npm.yml b/.github/workflows/upload-jfrog-build-to-npm.yml index 2358176ec..aaabcd39c 100644 --- a/.github/workflows/upload-jfrog-build-to-npm.yml +++ b/.github/workflows/upload-jfrog-build-to-npm.yml @@ -56,14 +56,14 @@ jobs: node-version: ${{ matrix.nodejs-tag[1] }} registry-url: 'https://registry.npmjs.org' - #- name: change package name - # run: | - # sed -i 's/"name": "[^"]*"/"name": "aerospike"/' package.json + - name: change package name + run: | + sed -i 's/"name": "[^"]*"/"name": "tedrunrunn"/' package.json - name: Download Artifacts from Jfrog run: jf rt dl "clients-npm-dev-local/aerospike/${{ env.NEW_VERSION }}/" "downloaded-artifacts/" env: - NEW_VERSION: 6.0.2 + NEW_VERSION: 6.0.3-rc.1 PACKAGE_MANAGER: npm - name: list Artifacts diff --git a/.github_former/actions/run-ee-server/action.yml b/.github_former/actions/run-ee-server/action.yml deleted file mode 100644 index f7d4379fb..000000000 --- a/.github_former/actions/run-ee-server/action.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: 'Run EE Server' -description: 'Run EE server' -inputs: - # All inputs in composite actions are strings - use-server-rc: - required: true - default: false - server-tag: - required: true - default: 'latest' - # Github Composite Actions can't access secrets - # so we need to pass them in as inputs - docker-hub-username: - required: false - docker-hub-password: - required: false - -runs: - using: "composite" - steps: - - name: Create config folder to store configs in - run: mkdir configs - shell: bash - - - name: Use release server - if: ${{ inputs.use-server-rc == 'false' }} - run: echo "SERVER_IMAGE=aerospike/aerospike-server-enterprise" >> $GITHUB_ENV - shell: bash - - - name: Use release candidate server - if: ${{ inputs.use-server-rc == 'true' }} - run: echo "SERVER_IMAGE=aerospike/aerospike-server-enterprise-rc" >> $GITHUB_ENV - shell: bash - - - name: Log into Docker Hub to get server RC - if: ${{ inputs.use-server-rc == 'true' }} - run: docker login --username ${{ inputs.docker-hub-username }} --password ${{ inputs.docker-hub-password }} - shell: bash - - - name: Get default aerospike.conf from Docker server EE container - run: | - docker run -d --name aerospike -p 3000-3002:3000-3002 $SERVER_IMAGE:${{ inputs.server-tag }} - sleep 5 - docker cp aerospike:/etc/aerospike/aerospike.conf ./configs/aerospike.conf - docker container stop aerospike - docker container rm aerospike - shell: bash - - - name: Enable security features using aerospike.conf - # Security stanza - run: echo -e "security {\n\tenable-quotas true\n}\n" >> ./aerospike.conf - working-directory: ./configs - shell: bash - - - name: Run enterprise edition server - run: docker run -tid -v $(pwd)/configs:/opt/aerospike/etc -p 3000:3000 --name aerospike $SERVER_IMAGE:${{ inputs.server-tag }} asd --config-file /opt/aerospike/etc/aerospike.conf - shell: bash - - - name: Create user in database for tests - # Use default admin user to create another user for testing - run: docker exec aerospike asadm --user admin --password admin --enable -e "manage acl create user superuser password superuser roles read-write-udf sys-admin user-admin data-admin" - shell: bash \ No newline at end of file diff --git a/.github_former/assets/aerospike.conf b/.github_former/assets/aerospike.conf deleted file mode 100644 index 6310f2d65..000000000 --- a/.github_former/assets/aerospike.conf +++ /dev/null @@ -1,39 +0,0 @@ -service { - cluster-name nodejs-client -} -logging { - console { - context any info - } -} -network { - service { - address any - port 3000 - } - heartbeat { - address local - interval 150 - mode mesh - port 3002 - timeout 10 - } - fabric { - address local - port 3001 - } -} -namespace test { - allow-ttl-without-nsup true - replication-factor 2 - storage-engine memory { - data-size 1G - } -} -namespace index_storage { - allow-ttl-without-nsup true - replication-factor 2 - storage-engine memory { - data-size 1G - } -} diff --git a/.github_former/workflows/build-bindings.yml b/.github_former/workflows/build-bindings.yml deleted file mode 100644 index c94c6559c..000000000 --- a/.github_former/workflows/build-bindings.yml +++ /dev/null @@ -1,599 +0,0 @@ -name: Build binding -run-name: Build bindings (run_tests=${{ inputs.run_tests }}, use-server-rc=${{ inputs.use-server-rc }}, server-tag=${{ inputs.server-tag }}) - -# Builds manylinux bindings and source distribution -# If running tests, publish results in commit status -# Publishes bindings and source distribution on Github Actions if no tests are run or tests pass - -on: - push: - branches: ["stage", "master"] - pull_request: - branches: ["stage", "master"] - types: [ - # Default triggers - opened, - synchronize, - reopened, - # Additional triggers - labeled, - unlabeled - ] - inputs: - # If we only want to check that the builds pass on an arbitrary branch - run_tests: - description: "Run integration tests" - required: true - type: boolean - default: true - use-server-rc: - type: boolean - required: true - default: false - description: 'Test against server release candidate?' - # If we are creating a backport and want to test an arbitrary branch against an older server version - server-tag: - required: true - default: 'latest' - description: 'Server docker image tag' - workflow_call: - inputs: - # The dev tests test the artifacts against a server release - # The stage tests and release workflow only need to build the artifacts - run_tests: - description: "Run integration tests" - required: true - type: boolean - default: true - commit_sha: - type: string - required: false - # Calling workflow doesn't actually use these 2 options - # But we need to set default values for workflow calls - use-server-rc: - required: false - default: true - type: boolean - server-tag: - type: string - required: false - default: 'latest' - secrets: - DOCKER_HUB_BOT_USERNAME: - required: false - DOCKER_HUB_BOT_PW: - required: false - MAC_M1_SELF_HOSTED_RUNNER_PW: - required: false - workflow_dispatch: - inputs: - # If we only want to check that the builds pass on an arbitrary branch - run_tests: - description: "Run integration tests" - required: true - type: boolean - default: true - use-server-rc: - type: boolean - required: true - default: false - description: 'Test against server release candidate?' - # If we are creating a backport and want to test an arbitrary branch against an older server version - server-tag: - required: true - default: 'latest' - description: 'Server docker image tag' - -jobs: - manylinux: - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - # nodejs versions to build bindings on - nodejs: [ - ["v108", 18], - ["v115", 20], - ["v127", 22], - ["v131", 23] - ] - platform: [ - "x86_64", - #"aarch64" - ] - - steps: - - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ github.sha }} - context: "Build bindings (${{ matrix.nodejs[0] }}-manylinux_${{ matrix.platform }})" - - - uses: actions/checkout@v4 - with: - submodules: recursive - ref: ${{ inputs.commit_sha }} - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.nodejs[1] }} - architecture: 'x64' - - - name: print - run: uname -m - - - name: Set up QEMU for cross compiling arm64 - if: ${{ matrix.platform == 'aarch64' }} - uses: docker/setup-qemu-action@v3 - with: - platforms: all - - - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - - name: Run Aerospike server release candidate with latest tag - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server-rc:latest - - - name: Run Aerospike server - if: ${{ !contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - run: | - npm i @types/mocha @types/yargs @types/semver @types/chai; - docker run -d -v $(pwd)/.github/assets/aerospike.conf:/etc/mail/aerospike.conf --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server --config-file /etc/mail/aerospike.conf - - - name: Set config.conf to use Docker IP address of Aerospike server - # config.conf should be copied into the cibuildwheel Docker container - run: | - export SERVER_DOCKER_IP=$(docker container inspect -f '{{ .NetworkSettings.IPAddress }}' aerospike) - # Install crudini - pip install crudini -c ../.github/workflows/requirements.txt - sed -i "s/127.0.0.1:3000//" config.conf - crudini --set config.conf enterprise-edition hosts ${SERVER_DOCKER_IP}:3000 - working-directory: test - - - name: Enable tests - run: echo "TEST_COMMAND=cd ts-test; - npm install typescript --save-dev; - npx tsc; - cd ..; - npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV - -# - name: Disable tests (only run basic import test) -# if: ${{ !inputs.run_tests }} -# run: echo "TEST_COMMAND=node -e 'aerospike = require(\".\/lib\/aerospike\")'" >> $GITHUB_ENV - - - uses: uraimo/run-on-arch-action@v2 - name: Build client arm - if: ${{ matrix.platform == 'aarch64' }} - id: runcmd - with: - arch: aarch64 - distro: ubuntu-22.04 - - # Set an output parameter `uname` for use in subsequent steps - run: | - apt update - apt install -y g++ libssl-dev zlib1g-dev make build-essential libuv1-dev wget curl - ./scripts/build-c-client.sh - wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash; - source ~/.bashrc; - nvm i 22 - npm install - - - name: Build client x64 - if: ${{ matrix.platform != 'aarch64' }} - run: | - sudo apt update - sudo apt install g++ libssl-dev zlib1g-dev; - sudo apt-get install -y make; - sudo apt install build-essential; - ./scripts/build-c-client.sh - npm install - env: - CFLAGS: '-Werror' - - - name: Test client - run: | - ${{ env.TEST_COMMAND }} - - - name: Send binding to test jobs - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.nodejs[0] }}-manylinux_${{ matrix.platform }}.build - path: ./lib/binding/node-*-linux-*/ - - - name: Set final commit status - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: always() - with: - sha: ${{ github.sha }} - status: ${{ job.status }} - context: "Build bindings (${{ matrix.nodejs[0] }}-manylinux_${{ matrix.platform }})" - - macOS-x86: - strategy: - fail-fast: false - matrix: - nodejs: [ - ["v108", 18], - ["v115", 20], - ["v127", 22], - ['v131', 23] - ] - runs-on: macos-13 - steps: - - name: Show job status for commit - uses: myrotvorets/set-commit-status-action@v2.0.0 - with: - sha: ${{ github.sha }} - context: "Build bindings (${{ matrix.nodejs[0] }}-macosx_x86_64)" - - - uses: actions/checkout@v4 - with: - submodules: recursive - ref: ${{ inputs.commit_sha }} - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.nodejs[1] }} - architecture: 'x64' - -# - name: Install Docker Engine -# run: brew install colima -# -# - name: Install Docker client -# run: brew install docker -# -# - name: Start Docker Engine -# run: colima start -# -# - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: docker/login-action@v3 -# with: -# username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_BOT_PW }} -# -# - name: Run Aerospike server release candidate with latest tag -# if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server-rc:latest -# -# - name: Run Aerospike server -# if: ${{ !contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server -# -# - name: Enable tests -# run: echo "TEST_COMMAND=npm test -- --h 127.0.0.1 --port 3000 --t 30000" >> $GITHUB_ENV - -# - name: Disable tests (only run basic import test) -# if: ${{ !inputs.run_tests }} -# run: echo "TEST_COMMAND=node -e 'aerospike = require(\".\/lib\/aerospike\")'" >> $GITHUB_ENV - - - name: Build client - run: | - ./scripts/build-c-client.sh - npm install - env: - CFLAGS: '-Werror' - -# - name: Test client -# run: | -# ${{ env.TEST_COMMAND }} - - - name: Save macOS binding - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.nodejs[0] }}-macosx_x86_64.build - path: ./lib/binding/*/ - - - name: Set final commit status - uses: myrotvorets/set-commit-status-action@v2.0.0 - if: always() - with: - status: ${{ job.status }} - sha: ${{ github.sha }} - context: "Build bindings (${{ matrix.nodejs[0] }}-macosx_x86_64)" - -# macOS-m1: -# runs-on: [ -# self-hosted, -# macOS, -# ARM64 -# ] -# strategy: -# matrix: -# nodejs-version: [ -# ["v108", "18"], -# ["v115", "20"], -# ["v127", 22] -# ] -# fail-fast: false -# steps: -# - name: Show job status for commit -# uses: myrotvorets/set-commit-status-action@v2.0.0 -# with: -# sha: ${{ github.sha }} -# context: "Build bindings (${{ matrix.nodejs-version[1] }}-macosx_arm64)" -# -# - uses: actions/checkout@v4 -# with: -# submodules: recursive -# ref: ${{ inputs.commit_sha }} -# -# - name: Install NVM -# run: | -# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash -# source ~/.zshrc -# nvm -v -# nvm install ${{ matrix.nodejs-version[1] }} -# -# -# - name: Setup symlink folders -# run: | -# sudo rm -rf /usr/local/opt/openssl; -# sudo rm -rf /usr/local/opt/libuv; -# sudo mkdir -p /usr/local/opt; -# sudo chown -R $(whoami) /usr/local/opt -# -# - name: Install brew packages -# run: | -# brew install openssl@3.2.1 -# brew install libuv@1.47.0 -# -# - name: Set environment for building -# run: | -# echo "export PATH="/usr/local/bin/:/usr/local/opt/openssl/bin:$PATH" -# export LDFLAGS="-L/usr/local/opt/openssl/lib" -# export CPPFLAGS="-I/usr/local/opt/openssl/include" -# export EXT_CFLAGS="-I/usr/local/opt/openssl/include"" >> ~/.zshrc; -# source ~/.zshrc; -# -# - name: Setup symlink folders -# run: | -# sudo ln -s /usr/local/Cellar/libuv/1.47.0/ /usr/local/opt/libuv; -# sudo ln -s /usr/local/Cellar/openssl@3/3.2.1/ /usr/local/opt/openssl; -# -# # Self-hosted runner only -# # Need to be able to save Docker Hub credentials to keychain -# - run: security unlock-keychain -p ${{ secrets.MAC_M1_SELF_HOSTED_RUNNER_PW }} -# if: ${{ inputs.run_tests && inputs.use-server-rc }} -# -# - if: ${{ inputs.run_tests && inputs.use-server-rc }} -# uses: docker/login-action@v3 -# with: -# username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_BOT_PW }} -# -# - name: Use server rc -# if: ${{ inputs.run_tests && inputs.use-server-rc }} -# run: echo IMAGE_NAME="${{ vars.SERVER_RC_REPO_LINK }}:${{ inputs.server-tag }}" >> $GITHUB_ENV -# -# - name: Use server release -# if: ${{ inputs.run_tests && !inputs.use-server-rc }} -# run: echo IMAGE_NAME="${{ vars.SERVER_REPO_LINK }}:${{ inputs.server-tag }}" >> $GITHUB_ENV -# -# - name: Run server -# if: ${{ inputs.run_tests }} -# run: docker run -d -p 3000:3000 --name aerospike ${{ env.IMAGE_NAME }} -# -# - name: Build client -# run: | -# ./scripts/build-c-client.sh -# npm install -# env: -# CFLAGS: '-Werror' -# -# - name: Enable tests -# if: ${{ inputs.run_tests }} -# run: echo "TEST_COMMAND=npm test -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV -# -# - name: Disable tests (only run basic import test) -# if: ${{ !inputs.run_tests }} -# run: echo "TEST_COMMAND=node -e 'aerospike = require(\".\/lib\/aerospike\")'" >> $GITHUB_ENV -# -# -# - name: Test client -# run: | -# ${{ env.TEST_COMMAND }} -# -# - name: Save macOS wheel -# uses: actions/upload-artifact@v4 -# with: -# name: ${{ matrix.nodejs-version[0] }}-macosx_arm64.build -# path: ./lib/binding/*/ -# -# - name: Stop server -# if: ${{ always() && inputs.run_tests }} -# run: | -# docker container stop aerospike -# docker container prune -f -# -# - name: Set final commit status -# uses: myrotvorets/set-commit-status-action@v2.0.0 -# if: always() -# with: -# sha: ${{ github.sha }} -# status: ${{ job.status }} -# context: "Build bindings (${{ matrix.nodejs-version[0] }}-macosx_arm64)" - - test-npm-install: - runs-on: ubuntu-22.04 - needs: [manylinux, macOS-x86] - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: ./.github/workflows/combine-bindings/ - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - name: Modify the package.json - run: | - sudo npm install -g json - - - - name: Modify the package.json - run: | - sudo npm install -g json - json -I -f package.json -e "this.scripts.install=\"npm-run-all removeExtraBinaries build\"" - - - name: Run tests - run: | - mkdir -p testDir - cd testDir - pwd - sudo npm install .. - - test-yarn-install: - runs-on: ubuntu-22.04 - needs: [manylinux, macOS-x86] - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: ./.github/workflows/combine-bindings/ - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - name: Modify the package.json - run: | - sudo npm install -g json - json -I -f package.json -e "this.scripts.install=\"npm-run-all removeExtraBinaries build\"" - - - name: Run tests - run: | - mkdir -p testDir - yarn link - cd testDir - npm install --global yarn - yarn add link:.. - - test-pnpm-install: - runs-on: ubuntu-22.04 - needs: [manylinux, macOS-x86] - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: ./.github/workflows/combine-bindings/ - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - name: Modify the package.json - run: | - sudo npm install -g json - json -I -f package.json -e "this.scripts.install=\"npm-run-all removeExtraBinaries build\"" - - - name: Run tests - run: | - mkdir -p testDir - cd testDir - npm install --global pnpm - SHELL=bash pnpm setup - source /home/runner/.bashrc - pnpm install .. - - test-bun-install: - runs-on: ubuntu-latest - needs: [manylinux, macOS-x86] - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: ./.github/workflows/combine-bindings/ - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - name: Modify the package.json - run: | - sudo npm install -g json - json -I -f package.json -e "this.scripts.install=\"npm-run-all removeExtraBinaries build\"" - - - name: Run tests - run: | - npm install -g bun - bun link - mkdir -p testDir - cd testDir - bun link aerospike - -# test-typescript-install: -# runs-on: ubuntu-22.04 -# needs: [manylinux, macOS-x86] -# steps: -# - uses: actions/checkout@v2 -# with: -# submodules: recursive -# -# - uses: ./.github/workflows/combine-bindings/ -# -# - uses: actions/setup-node@v4 -# with: -# node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} -# architecture: 'x64' -# -# - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: docker/login-action@v3 -# with: -# username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_BOT_PW }} -# -# -# - name: Run Aerospike server release candidate with latest tag -# if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server-rc:latest -# -# - name: Run Aerospike server -# if: ${{ !contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# run: | -# cd ts-test; -# npm i --save-dev @types/mocha; -# npm i --save-dev @types/yargs; -# npm i --save-dev @types/semver; -# npm i --save-dev @types/chai; -# tsc; -# cd ..; -# npm install; -# docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server -# -# -# -# - name: Wait for database to be ready -# # Should be ready after 3 seconds -# run: sleep 15 -# -# - name: Modify the package.json -# run: | -# sudo npm install -g json -# json -I -f package.json -e "this.scripts.install=\"npm-run-all removeExtraBinaries build\"" -# -# - name: Run tests -# run: | -# mkdir my-aerospike-project -# cd my-aerospike-project -# npm init -y -# npm install typescript ts-node --save-dev -# npm install .. -# cp ../examples/typescript.ts index.ts -# npx tsc index.ts -# node index.js \ No newline at end of file diff --git a/.github_former/workflows/codeql.yml b/.github_former/workflows/codeql.yml deleted file mode 100644 index c532c4c7c..000000000 --- a/.github_former/workflows/codeql.yml +++ /dev/null @@ -1,62 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -# -# ******** NOTE ******** -# We have attempted to detect the languages in your repository. Please check -# the `language` matrix defined below to confirm you have the correct set of -# supported CodeQL languages. -# -name: "CodeQL" - -on: - workflow_dispatch: - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - permissions: - actions: read - contents: read - security-events: write - - strategy: - fail-fast: false - matrix: - language: [ 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] - # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support - node-version: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - 20.x - - steps: - - name: Checkout repository - uses: actions/checkout@v3 - with: - submodules: recursive - - run: ./scripts/build-c-client.sh - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - run: npm install --unsafe-perm --build-from-source - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v2 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs - # queries: security-extended,security-and-quality - - # Perform CodeQL Analysis - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 - \ No newline at end of file diff --git a/.github_former/workflows/combine-bindings/action.yml b/.github_former/workflows/combine-bindings/action.yml deleted file mode 100644 index bacee4b03..000000000 --- a/.github_former/workflows/combine-bindings/action.yml +++ /dev/null @@ -1,91 +0,0 @@ -name: Combine bindings -description: 'composite run action' - -runs: - using: "composite" - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - -# - uses: actions/download-artifact@v4 -# with: -# name: v108-macosx_aarch64.build - - - uses: actions/download-artifact@v4 - with: - name: v108-macosx_x86_64.build - -# - uses: actions/download-artifact@v4 -# with: -# name: v115-macosx_aarch64.build - - - uses: actions/download-artifact@v4 - with: - name: v115-macosx_x86_64.build - -# - uses: actions/download-artifact@v4 -# with: -# name: v127-macosx_aarch64.build - - - uses: actions/download-artifact@v4 - with: - name: v127-macosx_x86_64.build - - - uses: actions/download-artifact@v4 - with: - name: v108-manylinux_x86_64.build - -# - uses: actions/download-artifact@v4 -# with: -# name: v108-manylinux_aarch64.build - - - uses: actions/download-artifact@v4 - with: - name: v115-manylinux_x86_64.build - -# - uses: actions/download-artifact@v4 -# with: -# name: v115-manylinux_aarch64.build - - - uses: actions/download-artifact@v4 - with: - name: v127-manylinux_x86_64.build - -# - uses: actions/download-artifact@v4 -# with: -# name: v127-manylinux_aarch64.build - - - uses: actions/download-artifact@v4 - with: - name: v131-manylinux_x86_64.build - -# - uses: actions/download-artifact@v4 -# with: -# name: v131-manylinux_aarch64.build - - - name: Install client - shell: bash - run: | - mkdir -p lib/binding/node-v108-darwin-arm64 lib/binding/node-v115-darwin-arm64 lib/binding/node-v127-darwin-arm64 lib/binding/node-v131-darwin-arm64 - mkdir -p lib/binding/glibc@2.39/node-v108-linux-arm64 lib/binding/glibc@2.39/node-v115-linux-arm64 lib/binding/glibc@2.39/node-v127-linux-arm64 lib/binding/glibc@2.39/node-v131-linux-arm64 - mkdir -p lib/binding/glibc@2.35/node-v108-linux-arm64 lib/binding/glibc@2.35/node-v115-linux-arm64 lib/binding/glibc@2.35/node-v127-linux-arm64 lib/binding/glibc@2.31/node-v131-linux-arm64 - mkdir -p lib/binding/glibc@2.31/node-v108-linux-arm64 lib/binding/glibc@2.31/node-v115-linux-arm64 lib/binding/glibc@2.31/node-v127-linux-arm64 lib/binding/glibc@2.35/node-v131-linux-arm64 - mkdir -p lib/binding/glibc@2.39/node-v108-linux-x64 lib/binding/glibc@2.39/node-v115-linux-x64 lib/binding/glibc@2.39/node-v127-linux-x64 lib/binding/glibc@2.39/node-v131-linux-x64 - mkdir -p lib/binding/glibc@2.35/node-v108-linux-x64 lib/binding/glibc@2.35/node-v115-linux-x64 lib/binding/glibc@2.35/node-v127-linux-x64 lib/binding/glibc@2.35/node-v131-linux-x64 - mkdir -p lib/binding/glibc@2.31/node-v108-linux-x64 lib/binding/glibc@2.31/node-v115-linux-x64 lib/binding/glibc@2.31/node-v127-linux-x64 lib/binding/glibc@2.31/node-v131-linux-x64 - cp -r node-v108-linux-x64 lib/binding/glibc@2.35/ - cp -r node-v115-linux-x64 lib/binding/glibc@2.35/ - cp -r node-v127-linux-x64 lib/binding/glibc@2.35/ - cp -r node-v108-darwin-x64 lib/binding/node-v108-darwin-x64 - cp -r node-v115-darwin-x64 lib/binding/node-v115-darwin-x64 - cp -r node-v127-darwin-x64 lib/binding/node-v127-darwin-x64 - cp -r node-v127-darwin-x64 lib/binding/node-v131-darwin-x64 -# cp -r node-v108-linux-arm64 lib/binding/node-v108-linux-arm64 -# cp -r node-v115-linux-arm64 lib/binding/node-v115-linux-arm64 -# cp -r node-v127-linux-arm64 lib/binding/node-v127-linux-arm64 -# cp -r node-v127-linux-arm64 lib/binding/node-v131-linux-arm64 -# cp -r node-v108-darwin-arm64 lib/binding/node-v108-darwin-arm64 -# cp -r node-v115-darwin-arm64 lib/binding/node-v115-darwin-arm64 -# cp -r node-v127-darwin-arm64 lib/binding/node-v127-darwin-arm64 -# cp -r node-v127-darwin-arm64 lib/binding/node-v131-darwin-arm64 \ No newline at end of file diff --git a/.github_former/workflows/tests.yml b/.github_former/workflows/tests.yml deleted file mode 100644 index 993b61c9c..000000000 --- a/.github_former/workflows/tests.yml +++ /dev/null @@ -1,456 +0,0 @@ -name: PR pre-merge tests - -env: - LOWEST_SUPPORTED_NODEJS_VERSION: '18' - LOWEST_SUPPORTED_NODE_MODULE: 'v108' - -# Trigger test workflow whenever: -# 1. A pull request is updated (e.g with new commits) -# 2. Commits are pushed directly to the stage or master branch -on: - push: - branches: ["stage", "master"] - pull_request: - branches: ["stage", "master"] - types: [ - # Default triggers - opened, - synchronize, - reopened, - # Additional triggers - labeled, - unlabeled - ] - workflow_dispatch: - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: install standard - run: npm install standard - - - name: lint - run: npm run lint - - build-ubuntu: - runs-on: ubuntu-latest - strategy: - matrix: - nodejs-version: ["18", "20", "22", "23"] - fail-fast: false - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.nodejs-version }} - architecture: 'x64' - - name: debugging - run: | - echo "LOWEST_SUPPORTED_NODEJS_VERSION: $LOWEST_SUPPORTED_NODEJS_VERSION" - - - run: sudo apt update - - name: Install build dependencies (C Client dependency packages) - run: sudo apt install g++ libssl-dev zlib1g-dev; - - name: Install build dependencies (make) - run: sudo apt-get install -y make; - - name: Install build dependencies (make) - run: sudo apt install build-essential; - - - name: Build client - run: | - ./scripts/build-c-client.sh - npm install - env: - CFLAGS: '-Werror' - - - name: list - run: ls lib/binding - - name: Send binding to test jobs - uses: actions/upload-artifact@v4 - with: - name: binding-${{ matrix.nodejs-version }} - path: ./lib/binding/node-*-linux-x64/ - -# test-memray: -# needs: build-ubuntu -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v4 -# -# - uses: actions/setup-node@v4 -# with: -# node-version: ${{ matrix.nodejs-version }} -# architecture: 'x64' -# -# - uses: actions/download-artifact@v4 -# with: -# name: binding-18 -# -# - name: make binding folder -# run: mkdir lib/binding -# -# - name: Install client -# run: cp -r install node-v108-linux-x64 lib/binding/node-v108-linux-x64 -# -# - name: Install client -# run: npm install . -# -# - name: Run Aerospike server -# run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server -# -# - name: Wait for database to be ready -# # Should be ready after 3 seconds -# run: sleep 3 -# -# - name: Get number of tests -# run: echo "NUM_TESTS=$(npm run test-dry-run | grep -oP '\d+ (passing|pending)' | awk '{ sum += $1 } END { print sum }')" >> $GITHUB_ENV -# working-directory: test -# -# - name: Run tests -# # Get number of tests since setting to 0 doesn't work properly -# # pytest-memray currently throws a ZeroDivision error due to having a bug -# # We ignore this for now -# run: python -m pytest ./new_tests --memray --memray-bin-path=./ --most-allocations=${{ env.NUM_TESTS }} || true -# working-directory: test - - # Run this when testing new server features on server release candidate - # to make sure the tests don't regress on the last server release. - test-ce-latest-release: - runs-on: ubuntu-latest - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - needs: build-ubuntu - - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - name: debugging - run: | - echo "LOWEST_SUPPORTED_NODEJS_VERSION: $LOWEST_SUPPORTED_NODEJS_VERSION" - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - uses: actions/download-artifact@v4 - with: - name: binding-${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - env: - LOWEST_SUPPORTED_NODEJS_VERSION: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - - - - name: make binding folder - run: mkdir lib/binding - - - name: Install client - run: cp -r node-${{ env.LOWEST_SUPPORTED_NODE_MODULE }}-linux-x64 lib/binding/node-${{ env.LOWEST_SUPPORTED_NODE_MODULE }}-linux-x64 - - - name: Run Aerospike server - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server - - - name: Wait for database to be ready - # Should be ready after 3 seconds - run: sleep 3 - - - name: Run tests - run: npm run test - - test-ce: - runs-on: ubuntu-latest - needs: build-ubuntu - strategy: - matrix: - node-version: [ - "18", - "20", - "22", - "23" - ] - fail-fast: false - - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - architecture: 'x64' - - - uses: actions/download-artifact@v4 - with: - name: binding-${{ matrix.node-version }} - - - name: make binding folder - run: mkdir lib/binding - - - name: install mocha - run: npm install mocha - - - name: Install client - #fix the convention here - run: | - if [ "${{ matrix.node-version }}" = "18" ]; then - cp -r node-v108-linux-x64 lib/binding/node-v108-linux-x64 - elif [ "${{ matrix.node-version }}" = "20" ]; then - cp -r node-v115-linux-x64 lib/binding/node-v115-linux-x64 - elif [ "${{ matrix.node-version }}" = "22" ]; then - cp -r node-v127-linux-x64 lib/binding/node-v127-linux-x64 - elif [ "${{ matrix.node-version }}" = "23" ]; then - cp -r node-v131-linux-x64 lib/binding/node-v131-linux-x64 - fi - - - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Run Aerospike server release candidate with latest tag - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server-rc:latest - - - name: Run Aerospike server - if: ${{ !contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - run: docker run -d -v $(pwd)/.github/assets/aerospike.conf:/etc/mail/aerospike.conf --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server --config-file /etc/mail/aerospike.conf - - - name: Wait for database to be ready - # Should be ready after 3 seconds - run: sleep 3 - - - name: Run tests - run: | - cd ts-test; - npm install typescript --save-dev; - npx tsc; - cd ..; - npm run test dist/ - - test-lowest-supported-server: - runs-on: ubuntu-latest - needs: build-ubuntu - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - uses: actions/download-artifact@v4 - with: - name: binding-${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - env: - LOWEST_SUPPORTED_NODEJS_VERSION: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - - - name: make binding folder - run: mkdir lib/binding - - - name: install mocha - run: npm install mocha - - - name: Install client - #fix the convention here - run: cp -r node-${{ env.LOWEST_SUPPORTED_NODE_MODULE }}-linux-x64 lib/binding/node-${{ env.LOWEST_SUPPORTED_NODE_MODULE }}-linux-x64 - - - name: Run lowest supported server - run: | - SERVER_VERSION=$(curl -s "https://registry.hub.docker.com/v2/repositories/aerospike/aerospike-server/tags?page_size=100" | jq '.results[] | select(.name | startswith("6.1")).name' -r | head -n 1) - docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server:$SERVER_VERSION - - - name: Wait for database to be ready - # Should be ready after 3 seconds - run: sleep 3 - - - name: Run tests - run: | - cd ts-test; - npm install typescript --save-dev; - npx tsc; - cd ..; - npm run test dist/ -- --t 20000 - - test-ee: - runs-on: ubuntu-latest - needs: build-ubuntu - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - uses: actions/setup-node@v4 - with: - node-version: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - architecture: 'x64' - - - uses: actions/download-artifact@v4 - with: - name: binding-${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - env: - LOWEST_SUPPORTED_NODEJS_VERSION: ${{ env.LOWEST_SUPPORTED_NODEJS_VERSION }} - - - name: make binding folder - run: mkdir lib/binding - - - name: install mocha - run: npm install mocha - - - name: Install client - #fix the convention here - run: cp -r node-${{ env.LOWEST_SUPPORTED_NODE_MODULE }}-linux-x64 lib/binding/node-${{ env.LOWEST_SUPPORTED_NODE_MODULE }}-linux-x64 - - - name: Download aerospike-client-python repository - run: git clone https://github.com/aerospike/aerospike-client-python.git - - - name: debugging - run: | - ls; - ls .github; - docker ps; - - - name: Run ee server - uses: ./.github/actions/run-ee-server - with: - use-server-rc: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - - name: Wait for server to start - run: sleep 5 - - - name: Run tests - run: | - cd ts-test; - npm install typescript --save-dev; - npx tsc; - cd ..; - npm run test dist/admin.js -- --h localhost --U admin --P admin --t 40000 - - test-valgrind: - runs-on: ubuntu-latest - needs: build-ubuntu - strategy: - matrix: - node-version: [ - "20", - ] - fail-fast: false - - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - - - uses: actions/setup-node@v4 - with: - node-version: ${{ matrix.node-version }} - architecture: 'x64' - - - uses: actions/download-artifact@v4 - with: - name: binding-${{ matrix.node-version }} - - - name: make binding folder - run: mkdir lib/binding - - - name: install mocha - run: npm install mocha - - - name: install valgrind - run: | - sudo apt-get update; - sudo apt update; - sudo apt install valgrind; - - - name: Install client - #fix the convention here - run: | - cp -r node-v115-linux-x64 lib/binding/node-v115-linux-x64 - - - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Run Aerospike server release candidate with latest tag - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server-rc:latest - - - name: Run Aerospike server - if: ${{ !contains(github.event.pull_request.labels.*.name, 'new-server-features') }} - run: docker run -d -v $(pwd)/.github/assets/aerospike.conf:/etc/mail/aerospike.conf --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server --config-file /etc/mail/aerospike.conf - - - name: Wait for database to be ready - # Should be ready after 3 seconds - run: sleep 3 - - - name: Run tests - run: npm run valgrind -- --t 40000 - -# test-typescript: -# runs-on: ubuntu-latest -# needs: build-ubuntu -# strategy: -# matrix: -# node-version: [ -# "20", -# ] -# fail-fast: false -# -# steps: -# - uses: actions/checkout@v2 -# with: -# submodules: recursive -# -# - uses: actions/setup-node@v4 -# with: -# node-version: ${{ matrix.node-version }} -# architecture: 'x64' -# -# - uses: actions/download-artifact@v4 -# with: -# name: binding-${{ matrix.node-version }} -# -# - name: make binding folder -# run: mkdir lib/binding -# -# - name: Install client -# run: | -# cp -r node-v115-linux-x64 lib/binding/node-v115-linux-x64 -# -# - if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: docker/login-action@v3 -# with: -# username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} -# password: ${{ secrets.DOCKER_HUB_BOT_PW }} -# -# - name: Run Aerospike server release candidate with latest tag -# if: ${{ contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server-rc:latest -# -# - name: Run Aerospike server -# if: ${{ !contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# run: docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike/aerospike-server -# -# - name: Modify the package.json -# run: | -# mkdir my-aerospike-project -# cd my-aerospike-project -# npm init -y -# npm install typescript ts-node --save-dev -# npm install .. -# cp ../examples/typescript.ts index.ts -# npx tsc index.ts -# node index.js \ No newline at end of file diff --git a/.github_former/workflows/windows-build.yml b/.github_former/workflows/windows-build.yml deleted file mode 100644 index 88a1593ce..000000000 --- a/.github_former/workflows/windows-build.yml +++ /dev/null @@ -1,78 +0,0 @@ -# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions - -name: Aerospike Node.js Windows Client Tests - -on: - push: - branches: - - master - - maint/3.x - - maint/4.x - - gh-action - pull_request: - branches: - - master - - stage - - maint/3.x - - maint/4.x - -jobs: - # setup: - # runs-on: ubuntu-latest - # steps: - # - name: Set up Aerospike Database - # uses: reugn/github-action-aerospike@v1 - - build: - runs-on: windows-latest - strategy: - matrix: - node-version: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - 18.x - - 20.x - - 22.x - - 23.x - continue-on-error: true - name: Node ${{ matrix.node-version }} tester - steps: - - uses: actions/checkout@v3 - with: - submodules: recursive - - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - name: Setup Windows SDK - uses: GuillaumeFalourd/setup-windows10-sdk-action@v1.11 - with: - sdk-version: 17763 - - name: Setup NuGet.exe - uses: nuget/setup-nuget@v1 - with: - nuget-version: latest - - run: nuget restore aerospike.sln - working-directory: aerospike-client-c\vs\ - - name: Setup node - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - - name: Update node-gyp - run: | - $WhereNode = Get-Command node | Select-Object -ExpandProperty Definition - $NodeDirPath = Split-Path $WhereNode -Parent - [Version]$npmVersion = npm --version - if ($npmVersion -lt [Version]"7.0") { - $NodeModulesPath = $NodeDirPath + "\node_modules\npm\node_modules\npm-lifecycle" - } else { - $NodeModulesPath = $NodeDirPath + "\node_modules\npm\node_modules\@npmcli\run-script" - } - cd $NodeModulesPath - npm install node-gyp@10.x - - name: Install nodejs Client - shell: pwsh - run: npm ci --unsafe-perm --build-from-source - # - name: Test nodejs client - # run: npm test - # env: - # AEROSPIKE_HOSTS: "127.0.0.1:3000" - # OPTIONS: "--timeout 30000 --set demp ${{ matrix.node }}" \ No newline at end of file From 2013b17e4f5fac3142d0fa14152971d6b0473ee8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 08:52:46 -0700 Subject: [PATCH 124/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 45 ------------------------ 1 file changed, 45 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index e4d04c1d9..495f68eb3 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -328,51 +328,6 @@ jobs: with: node-version: ${{ matrix.nodejs-tag[1] }} - - name: print conditional values - run: | - echo "Platform tag: '${{ inputs.platform-tag }}'" - echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" - echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" - echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" - echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" - - - name: 'Windows: Install C client deps' - if: ${{ inputs.platform-tag == 'win_amd64' }} - run: nuget restore - working-directory: aerospike-client-c/vs - - - name: 'macOS x86: Setup Docker using colima for testing' - if: ${{ inputs.platform-tag == 'macosx_x86_64' }} - uses: ./.github/actions/setup-docker-on-macos - - - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' - if: ${{ inputs.platform-tag == 'macosx_x86_64' }} - uses: ./.github/actions/run-ee-server-for-ext-container - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - - - name: Remove aerospike docker image - if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} - run: | - if docker ps -aq | grep -q .; then - docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." - else - echo "No containers to remove." - fi - - # TODO: combine this composite action and the above into one - - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" - if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} - uses: ./.github/actions/run-ee-server-for-ext-container - with: - use-server-rc: ${{ inputs.use-server-rc }} - server-tag: ${{ inputs.server-tag }} - docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} - docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} - # FIND NO SERVER TESTS AND RUN THEM # #- name: If not running tests against server, only run basic import test From 0842c4688872f9663a9526f78340a110ccb659ba Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:00:31 -0700 Subject: [PATCH 125/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 153 +++++++++++++++++++++++ 1 file changed, 153 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 495f68eb3..48826f31b 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -292,6 +292,159 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} + test-valgrind: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + fail-fast: false + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + + # REUSABLE PART + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: print conditional values + run: | + echo "Platform tag: '${{ inputs.platform-tag }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" + echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" + echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + + - name: 'Windows: Install C client deps' + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: nuget restore + working-directory: aerospike-client-c/vs + + - name: 'macOS x86: Setup Docker using colima for testing' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/setup-docker-on-macos + + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + # TODO: combine this composite action and the above into one + - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run valgrind -- --t 40000 --h 172.17.0.2 --port 3000 --U superuser --P superuser; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + test-tsc-compile: needs: get-runner-os strategy: From 01b57fa7513e8a5f8ace6be045866a1aadcee03b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:01:30 -0700 Subject: [PATCH 126/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 48826f31b..ad91f17d9 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -298,6 +298,7 @@ jobs: matrix: nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} fail-fast: false + if: ${{ inputs.platform-tag == 'manylinux_x86_64' }} runs-on: ${{ needs.get-runner-os.outputs.runner-os }} env: BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" From 4847dd1435b41f07cf408a24b9663464949b6d88 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:03:25 -0700 Subject: [PATCH 127/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index ad91f17d9..3ee288d2f 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -292,6 +292,7 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} + test-valgrind: needs: get-runner-os strategy: From d0ba71a8c66af1fd7cf769dbe9d107f712b89a3c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:06:25 -0700 Subject: [PATCH 128/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 3ee288d2f..3aa7088fc 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -427,6 +427,12 @@ jobs: - name: Change install command for release run: node ./scripts/change-install-command.js + - name: install valgrind + run: | + sudo apt-get update; + sudo apt update; + sudo apt install valgrind; + - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | From 5b907b30a890d542a0ff505319683c17b31395ec Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:11:16 -0700 Subject: [PATCH 129/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 3aa7088fc..ca9ebe898 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -432,7 +432,7 @@ jobs: sudo apt-get update; sudo apt update; sudo apt install valgrind; - + - name: Run tests if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | @@ -443,6 +443,7 @@ jobs: npx tsc; cd ..; npx tsc; + npm install mocha; npm run valgrind -- --t 40000 --h 172.17.0.2 --port 3000 --U superuser --P superuser; - name: Set final commit status From 766f489ec61c74a71c6175f5ded00334e079099a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:14:59 -0700 Subject: [PATCH 130/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 7 +++++-- .github/workflows/test-dev-artifacts.yml | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index 389437588..df39a489a 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -224,11 +224,14 @@ jobs: npm install; ls lib/binding; - - name: Run tests - if: ${{ inputs.run_tests && inputs.platform-tag == 'manylinux_x86_64'}} + - name: Debug server run: | docker ps; docker logs aerospike; + + - name: Run tests + if: ${{ inputs.run_tests && inputs.platform-tag == 'manylinux_x86_64'}} + run: | cd ts-test; npm install; npx tsc; diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index ca9ebe898..274f0d5e3 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -441,9 +441,9 @@ jobs: cd ts-test; npm install; npx tsc; + npm install mocha; cd ..; npx tsc; - npm install mocha; npm run valgrind -- --t 40000 --h 172.17.0.2 --port 3000 --U superuser --P superuser; - name: Set final commit status From 16d27c20ad2250bc7dd73ac25fc79a6d971b99b0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:20:35 -0700 Subject: [PATCH 131/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 25 +++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 274f0d5e3..9981dfe2b 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -433,16 +433,35 @@ jobs: sudo apt update; sudo apt install valgrind; - - name: Run tests + - name: Install pre-reqs if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} run: | - docker ps; - docker logs aerospike; cd ts-test; npm install; npx tsc; npm install mocha; cd ..; + + - name: Move artifacts + run: | + rm -rf lib/binding; + mkdir -p lib/binding; + cp -r downloaded-artifacts/* lib/binding; + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + + - name: Run Valgrind npx tsc; npm run valgrind -- --t 40000 --h 172.17.0.2 --port 3000 --U superuser --P superuser; From 8d6ae191ee0536c4d184351f9e6108cf5c8581e4 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:22:17 -0700 Subject: [PATCH 132/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 9981dfe2b..2a08eaeb1 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -455,13 +455,14 @@ jobs: rm -rf downloaded-artifacts/ - name: check binding - run: + run: | ls lib/binding; ls lib/binding/glibc@2.35; ls lib/binding/glibc@2.31; - name: Run Valgrind + run: | npx tsc; npm run valgrind -- --t 40000 --h 172.17.0.2 --port 3000 --U superuser --P superuser; From a2bad675bcf5345c0ea78572cf918b11a5b4f866 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:27:20 -0700 Subject: [PATCH 133/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 1 - ts-test/package-lock.json | 1157 +++++++++++++++++++++- ts-test/package.json | 1 + 3 files changed, 1132 insertions(+), 27 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 2a08eaeb1..fcb79a65b 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -439,7 +439,6 @@ jobs: cd ts-test; npm install; npx tsc; - npm install mocha; cd ..; - name: Move artifacts diff --git a/ts-test/package-lock.json b/ts-test/package-lock.json index 77a006931..85fc00b16 100644 --- a/ts-test/package-lock.json +++ b/ts-test/package-lock.json @@ -10,6 +10,7 @@ "license": "ISC", "dependencies": { "aerospike": "file:..", + "mocha": "^11.1.0", "typescript": "^5.7.3" }, "devDependencies": { @@ -22,7 +23,7 @@ }, "..": { "name": "aerospike", - "version": "6.0.3", + "version": "6.0.3-rc.1", "cpu": [ "x64", "arm64" @@ -95,6 +96,23 @@ "node": ">=6.9.0" } }, + "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==", + "license": "ISC", + "dependencies": { + "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/@jest/expect-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", @@ -139,6 +157,16 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "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==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -260,11 +288,31 @@ "resolved": "..", "link": true }, + "node_modules/ansi-colors": { + "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==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -276,11 +324,56 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -289,11 +382,28 @@ "node": ">=8" } }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "license": "ISC" + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -306,6 +416,30 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/ci-info": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", @@ -322,11 +456,82 @@ "node": ">=8" } }, + "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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/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==", + "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/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/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/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -339,9 +544,60 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, "license": "MIT" }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/diff-sequences": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", @@ -352,6 +608,27 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", @@ -383,7 +660,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -392,6 +668,117 @@ "node": ">=8" } }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "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==", + "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": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -403,22 +790,113 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" } }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "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==", + "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/jest-diff": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", @@ -507,32 +985,248 @@ "dev": true, "license": "MIT" }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=8.6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "license": "ISC" + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "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": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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==", + "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", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "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==", + "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/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -569,6 +1263,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", @@ -576,6 +1279,89 @@ "dev": true, "license": "MIT" }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -599,11 +1385,118 @@ "node": ">=10" } }, + "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==", + "license": "MIT", + "dependencies": { + "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/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==", + "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/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -616,7 +1509,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -644,6 +1536,219 @@ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "license": "Apache-2.0" + }, + "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==", + "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/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==", + "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/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/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==", + "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/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/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==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "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": "^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" + }, + "engines": { + "node": ">=12" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/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==", + "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/yargs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/ts-test/package.json b/ts-test/package.json index 023251520..b12e9ea93 100644 --- a/ts-test/package.json +++ b/ts-test/package.json @@ -13,6 +13,7 @@ "description": "", "dependencies": { "aerospike": "file:..", + "mocha": "^11.1.0", "typescript": "^5.7.3" }, "devDependencies": { From 615cb109a5e4c4fafd72b76b033a78e187d35a6b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:30:20 -0700 Subject: [PATCH 134/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index fcb79a65b..12c481454 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -441,25 +441,6 @@ jobs: npx tsc; cd ..; - - name: Move artifacts - run: | - rm -rf lib/binding; - mkdir -p lib/binding; - cp -r downloaded-artifacts/* lib/binding; - - - - name: Delete leftover artifacts - if: ${{ !(inputs.platform-tag == 'win_amd64') }} - run: | - rm -rf downloaded-artifacts/ - - - name: check binding - run: | - ls lib/binding; - ls lib/binding/glibc@2.35; - ls lib/binding/glibc@2.31; - - - name: Run Valgrind run: | npx tsc; From 998b6cb18df17336a02cb868581c42e0883b9e30 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:36:55 -0700 Subject: [PATCH 135/161] PIPELINE IMPROVMENTS --- .github/workflows/test-dev-artifacts.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 12c481454..0b1b2ec03 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -439,6 +439,7 @@ jobs: cd ts-test; npm install; npx tsc; + cp tests/udf.lua dist/udf.lua; cd ..; - name: Run Valgrind From 1201f41f317042a790a5f520123356ab10828bf4 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 09:56:45 -0700 Subject: [PATCH 136/161] Adjustments from final review --- src/main/commands/enable_metrics.cc | 61 +++++++------ ts-test/tests/batch_write.ts | 18 ++-- ts-test/tests/exists.ts | 8 +- ts-test/tests/metrics.ts | 16 ++-- ts-test/tests/metrics_cluster_name.ts | 7 +- ts-test/tests/metrics_node_close.ts | 15 ++-- ts-test/tests/scan.ts | 2 +- ts-test/tests/test_helper.ts | 10 ++- ts-test/tests/udf.ts | 4 +- ts-test/tests/util/options.ts | 6 +- ts-test/tests/util/statefulAsyncTest.ts | 2 +- tsconfig.tsbuildinfo | 2 +- typings/index.d.ts | 115 +++++++++++++++++++++++- 13 files changed, 199 insertions(+), 67 deletions(-) diff --git a/src/main/commands/enable_metrics.cc b/src/main/commands/enable_metrics.cc index 114358dc4..9f8e2d38d 100644 --- a/src/main/commands/enable_metrics.cc +++ b/src/main/commands/enable_metrics.cc @@ -51,32 +51,37 @@ class MetricsCommand : public AerospikeCommand { ~MetricsCommand() { Nan::HandleScope scope; - enable_callback.Reset(); - snapshot_callback.Reset(); - node_close_callback.Reset(); - disable_callback.Reset(); + if (listeners != NULL){ + cf_free(listeners) + } if (policy != NULL) { cf_free(policy); } - if (latency) { + if (latency_buckets != NULL) { for (uint32_t i = 0; i < nodes_size; ++i) { - cf_free(latency[i].connection); - cf_free(latency[i].read); - cf_free(latency[i].write); - cf_free(latency[i].batch); - cf_free(latency[i].query); + cf_free(latency_buckets[i].connection); + cf_free(latency_buckets[i].read); + cf_free(latency_buckets[i].write); + cf_free(latency_buckets[i].batch); + cf_free(latency_buckets[i].query); } - cf_free(latency); + cf_free(latency_buckets); } + + enable_callback.Reset(); + snapshot_callback.Reset(); + node_close_callback.Reset(); + disable_callback.Reset(); } + bool* client_closed; bool disabled = false; as_metrics_listeners* listeners = NULL; as_metrics_policy* policy = NULL; as_cluster* cluster = NULL; as_node* node = NULL; - latency* latency = NULL; + latency* latency_buckets = NULL; uint32_t bucket_max = 0; uint32_t nodes_size = 0; @@ -151,7 +156,7 @@ class MetricsCommand : public AerospikeCommand { static Local prepare_disable_cluster_arg(MetricsCommand* cmd) { Nan::EscapableHandleScope scope; Local v8_cluster = Nan::New(); - cluster_to_jsobject(cmd->cluster, v8_cluster, cmd->latency, cmd->bucket_max); + cluster_to_jsobject(cmd->cluster, v8_cluster, cmd->latency_buckets, cmd->bucket_max); return scope.Escape(v8_cluster); } @@ -349,7 +354,7 @@ as_status disable_listener(as_error* err, struct as_cluster_s* cluster, void* ud as_nodes* nodes = as_nodes_reserve(cluster); cmd->nodes_size = nodes->size; - cmd->latency = (latency *)cf_malloc(nodes->size * sizeof(latency)); + cmd->latency_buckets = (latency *)cf_malloc(nodes->size * sizeof(latency)); uint32_t i, j; for (i = 0; i < nodes->size; i++) { @@ -361,40 +366,40 @@ as_status disable_listener(as_error* err, struct as_cluster_s* cluster, void* ud cmd->bucket_max = buckets->latency_columns; - cmd->latency[i].connection = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); - cmd->latency[i].write = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); - cmd->latency[i].read = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); - cmd->latency[i].batch = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); - cmd->latency[i].query = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency_buckets[i].connection = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency_buckets[i].write = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency_buckets[i].read = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency_buckets[i].batch = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); + cmd->latency_buckets[i].query = (uint32_t *)cf_malloc(cmd->bucket_max * sizeof(uint32_t)); for (j = 0; j < cmd->bucket_max; j++) { - cmd->latency[i].connection[j] = (uint32_t) as_latency_get_bucket(buckets, i); + cmd->latency_buckets[i].connection[j] = (uint32_t) as_latency_get_bucket(buckets, i); } buckets = &node_metrics->latency[1]; for (j = 0; j < cmd->bucket_max; j++) { - cmd->latency[i].write[j] = (uint32_t) as_latency_get_bucket(buckets, i); + cmd->latency_buckets[i].write[j] = (uint32_t) as_latency_get_bucket(buckets, i); } buckets = &node_metrics->latency[2]; for (j = 0; j < cmd->bucket_max; j++) { - cmd->latency[i].read[j] = (uint32_t) as_latency_get_bucket(buckets, i); + cmd->latency_buckets[i].read[j] = (uint32_t) as_latency_get_bucket(buckets, i); } buckets = &node_metrics->latency[3]; for (j = 0; j < cmd->bucket_max; j++) { - cmd->latency[i].batch[j] = (uint32_t) as_latency_get_bucket(buckets, i); + cmd->latency_buckets[i].batch[j] = (uint32_t) as_latency_get_bucket(buckets, i); } buckets = &node_metrics->latency[4]; for (j = 0; j < cmd->bucket_max; j++) { - cmd->latency[i].query[j] = (uint32_t) as_latency_get_bucket(buckets, i); + cmd->latency_buckets[i].query[j] = (uint32_t) as_latency_get_bucket(buckets, i); } } @@ -419,10 +424,10 @@ static void *prepare(const Nan::FunctionCallbackInfo &info) if (info[1]->IsFunction()) { if (info[2]->IsFunction() && info[3]->IsFunction() && info[4]->IsFunction()) { - cmd->enable_callback.Reset(info[1].As()); - cmd->snapshot_callback.Reset(info[2].As()); - cmd->node_close_callback.Reset(info[3].As()); - cmd->disable_callback.Reset(info[4].As()); + cmd->enable_callback.Reset(info[1].As()); + cmd->snapshot_callback.Reset(info[2].As()); + cmd->node_close_callback.Reset(info[3].As()); + cmd->disable_callback.Reset(info[4].As()); cmd->listeners = (as_metrics_listeners *)cf_malloc(sizeof(as_metrics_listeners)); diff --git a/ts-test/tests/batch_write.ts b/ts-test/tests/batch_write.ts index 2cea5e645..50b7593d1 100644 --- a/ts-test/tests/batch_write.ts +++ b/ts-test/tests/batch_write.ts @@ -173,7 +173,7 @@ describe('client.batchWrite()', function () { }) return client.batchWrite(batch, policy) - .then(results => { + .then((results: any) => { const bins = results[0].record.bins expect(bins.i).to.be.a('number') expect(bins.s).to.be.a('string') @@ -253,10 +253,10 @@ describe('client.batchWrite()', function () { ] return client.batchWrite(batchRecords) - .then(results => { + .then((results: any) => { return client.batchWrite(batchRecords) }) - .then(results => { + .then((results: any) => { expect(results[0].status).to.equal(status.OK) }) }) @@ -333,10 +333,10 @@ describe('client.batchWrite()', function () { ] return client.batchWrite(batchRecords) - .then((results) => { + .then((results: any) => { return client.batchWrite(batchRecords) }) - .then((results) => { + .then((results: any) => { expect(results[0].status).to.equal(status.ERR_RECORD_EXISTS) }) }) @@ -392,10 +392,10 @@ describe('client.batchWrite()', function () { ] return client.remove(new Key(helper.namespace, helper.set, 'test/batch_write/13')) - .then((results) => { + .then((results: any) => { return client.batchWrite(batchRecords) }) - .then((results) => { + .then((results: any) => { expect(results[0].status).to.equal(status.ERR_RECORD_NOT_FOUND) }) }) @@ -509,10 +509,10 @@ describe('client.batchWrite()', function () { ] return client.batchWrite(batchRecords) - .then((results) => { + .then((results: any) => { return client.batchWrite(batchRecords) }) - .then((results) => { + .then((results: any) => { expect(results[0].status).to.equal(status.OK) }) }) diff --git a/ts-test/tests/exists.ts b/ts-test/tests/exists.ts index a31005f31..c697eeb84 100644 --- a/ts-test/tests/exists.ts +++ b/ts-test/tests/exists.ts @@ -35,7 +35,7 @@ describe('client.exists()', function () { return client.put(key, { str: 'abcde' }) .then(() => client.exists(key)) - .then(result => expect(result).to.be.true) + .then((result: any) => expect(result).to.be.true) .then(() => client.remove(key)) }) @@ -43,7 +43,7 @@ describe('client.exists()', function () { const key: Key = keygen.string(helper.namespace, helper.set, { prefix: 'test/exists/2' })() return client.exists(key) - .then(result => expect(result).to.be.false) + .then((result: any) => expect(result).to.be.false) }) }) @@ -91,7 +91,7 @@ describe('client.existsWithMetadata()', function () { .then(() => client.put(key, { str: 'a' }, {ttl: 50, gen: 7})) .then(() => client.put(key, { str: 'abcde' }, {ttl: 50, gen: 7})) .then(() => client.existsWithMetadata(key)) - .then(result => { + .then((result: any) => { expect(result.key).to.eql(key) expect(result.bins).to.be.null expect(result.ttl).to.be.within(48, 51) @@ -105,7 +105,7 @@ describe('client.existsWithMetadata()', function () { return client.put(key, { str: 'abcde' }, {ttl: -1}) .then(() => client.existsWithMetadata(key)) - .then(result => { + .then((result: any) => { expect(result.key).to.eql(key) expect(result.bins).to.be.null expect(result.ttl).to.eql(-1) diff --git a/ts-test/tests/metrics.ts b/ts-test/tests/metrics.ts index eee89d04e..6c400e1d6 100644 --- a/ts-test/tests/metrics.ts +++ b/ts-test/tests/metrics.ts @@ -148,7 +148,7 @@ describe('Metrics tests', function () { metricsListeners: listeners, reportDir: metricsLogFolder, reportSizeLimit: 1000, - interval: 4, + interval: 2, latencyColumns: bucketCount, latencyShift: 2 } @@ -162,24 +162,24 @@ describe('Metrics tests', function () { const key3 = new Aerospike.Key('test', 'demo', 'demo3') await client.put(key, {example: 1}) - await new Promise(r => setTimeout(r, 500)); await client.put(key2, {example: 1}) - await new Promise(r => setTimeout(r, 500)); + await client.put(key3, {example: 1}) - await new Promise(r => setTimeout(r, 500)); await client.get(key) - await new Promise(r => setTimeout(r, 500)); + await client.get(key2) - await new Promise(r => setTimeout(r, 500)); + await client.get(key3) - await new Promise(r => setTimeout(r, 1500)); + + await new Promise(r => setTimeout(r, 3000)); await client.disableMetrics() - await new Promise(r => setTimeout(r, 3000)); + await new Promise(r => setTimeout(r, 1)); + expect(enableTriggered).to.eql(true) expect(snapshotTriggered).to.eql(true) diff --git a/ts-test/tests/metrics_cluster_name.ts b/ts-test/tests/metrics_cluster_name.ts index b625754c4..2551426b4 100644 --- a/ts-test/tests/metrics_cluster_name.ts +++ b/ts-test/tests/metrics_cluster_name.ts @@ -26,9 +26,14 @@ import { expect, assert} from 'chai'; const Docker = require('dockerode'); const docker = new Docker(); - +import * as helper from './test_helper'; describe('Test metrics cluster name', async function () { + const client: Cli = helper.client + + helper.skipUnlessAdvancedMetrics(this) + + let snapshotTriggered: boolean = false let disableTriggered: boolean = false diff --git a/ts-test/tests/metrics_node_close.ts b/ts-test/tests/metrics_node_close.ts index 4af10c39e..6a533232f 100644 --- a/ts-test/tests/metrics_node_close.ts +++ b/ts-test/tests/metrics_node_close.ts @@ -26,7 +26,7 @@ import { expect, assert} from 'chai'; const Docker = require('dockerode'); const docker = new Docker(); - +import * as helper from './test_helper'; describe('Metrics node close test', async function () { @@ -49,7 +49,6 @@ describe('Metrics node close test', async function () { expect(node.address).to.be.a("string"); expect(node.port).to.be.a("number"); let conns: ConnectionStats = node.conns - console.log(node.conns) expect(node.conns.inUse).to.be.a("number"); expect(node.conns.inPool).to.be.a("number"); expect(node.conns.opened).to.be.a("number"); @@ -80,6 +79,7 @@ describe('Metrics node close test', async function () { function nodeCloseListener(node: any) { testNodeIsPopulated(node) nodeCloseTriggered = true + console.log("Node close callback was called!") return } @@ -113,14 +113,14 @@ describe('Metrics node close test', async function () { hosts: 'localhost:3000', } - console.log("Waiting for client to collect all information about cluster nodes...") + console.log("Connecting to Aerospike") const dummyClient = await Aerospike.connect(config) console.log("Waiting for client to collect all information about cluster nodes...") - await new Promise(r => setTimeout(r, 5000)); + await new Promise(r => setTimeout(r, 15000)); let listeners: MetricsListeners = new Aerospike.MetricsListeners( @@ -141,6 +141,8 @@ describe('Metrics node close test', async function () { await dummyClient.enableMetrics(policy) + await new Promise(r => setTimeout(r, 3000)); + console.log("Closing node...") await container.stop(); @@ -150,11 +152,10 @@ describe('Metrics node close test', async function () { let elapsed_secs = 0 - while (elapsed_secs < 10) { + while (elapsed_secs < 25) { if(nodeCloseTriggered) { console.log("node_close_called is true. Passed") await dummyClient.disableMetrics() - await new Promise(r => setTimeout(r, 5000)); return await dummyClient.close() } @@ -164,7 +165,7 @@ describe('Metrics node close test', async function () { } console.log("THIS FAILED") - dummyClient.close() + await dummyClient.close() assert.fail('nodeCloseListener was not called') diff --git a/ts-test/tests/scan.ts b/ts-test/tests/scan.ts index ae72f302f..bc4bae325 100644 --- a/ts-test/tests/scan.ts +++ b/ts-test/tests/scan.ts @@ -369,7 +369,7 @@ context('Scans', function () { it('returns a Promise that resolves to a Job', function () { const backgroundScan = client.scan(helper.namespace, testSet) return backgroundScan.background('udf', 'noop') - .then(job => { + .then((job: any) => { expect(job).to.be.instanceof(Job) }) }) diff --git a/ts-test/tests/test_helper.ts b/ts-test/tests/test_helper.ts index 05ef668c3..5d9824499 100644 --- a/ts-test/tests/test_helper.ts +++ b/ts-test/tests/test_helper.ts @@ -43,7 +43,10 @@ import * as util from './util'; export { keygen, metagen, recgen, valgen, putgen, util }; const config: Config = options.getConfig() -const client: Client = Aerospike.client(config) +let client: any; +client = Aerospike.client(config) + + export {client, config} Aerospike.setDefaultLogging(config.log ?? {}) @@ -265,6 +268,10 @@ Aerospike.setDefaultLogging(config.log ?? {}) skipUnless(ctx, () => this.cluster.supportsTtl(), 'test namespace does not support record TTLs') } + export function skipUnlessAdvancedMetrics(this: any, ctx: Suite) { + skipUnless(ctx, () => options.testMetrics, 'Advanced metrics tests disabled') + } + if (process.env.GLOBAL_CLIENT !== 'false') { /* global before */ before(() => client.connect() @@ -283,3 +290,4 @@ Aerospike.setDefaultLogging(config.log ?? {}) done() }) } + diff --git a/ts-test/tests/udf.ts b/ts-test/tests/udf.ts index 2eb1a9fee..3463fd1aa 100644 --- a/ts-test/tests/udf.ts +++ b/ts-test/tests/udf.ts @@ -96,9 +96,9 @@ context('registering/unregistering UDF modules', function () { it('returns a Promise if no callback function is passed', function () { return client.udfRegister(filename) - .then(job => job.wait(10)) + .then((job: any) => job.wait(10)) .then(() => client.udfRemove(module)) - .then(job => job.wait(10)) + .then((job: any) => job.wait(10)) }) context('error handling', function () { diff --git a/ts-test/tests/util/options.ts b/ts-test/tests/util/options.ts index f1d94d55c..fe117c5d6 100644 --- a/ts-test/tests/util/options.ts +++ b/ts-test/tests/util/options.ts @@ -115,6 +115,10 @@ const parser: yargs.Argv = yargs(hideBin(process.argv)) auth: { type: 'number', describe: 'Specify client authentication mode' + }, + testMetrics: { + type: 'boolean', + describe: 'Specify whether or not to run advanced testing.' } }); @@ -163,7 +167,7 @@ options.getConfig = function (): ConfigOptions { modlua: { userPath: testDir() } - } as ConfigOptions; + } as any; if (options.host !== null) { const host = { diff --git a/ts-test/tests/util/statefulAsyncTest.ts b/ts-test/tests/util/statefulAsyncTest.ts index d5cdfeab3..cb7d01f6d 100644 --- a/ts-test/tests/util/statefulAsyncTest.ts +++ b/ts-test/tests/util/statefulAsyncTest.ts @@ -87,7 +87,7 @@ export function assertResultSatisfy(matcher: any) { export function assertRecordEql(expected: any) { return (state: any) => { - return helper.client.get(state.key).then((record) => + return helper.client.get(state.key).then((record: any) => expect(record.bins).to.eql(expected, 'after operation, record bins do not match expectations') ).then(() => state) } diff --git a/tsconfig.tsbuildinfo b/tsconfig.tsbuildinfo index 120d424fa..53e516872 100644 --- a/tsconfig.tsbuildinfo +++ b/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./typings/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/ts5.6/globals.typedarray.d.ts","./node_modules/@types/node/ts5.6/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/ts5.6/index.d.ts"],"fileIdsList":[[47,56,98],[56,98],[56,95,98],[56,97,98],[56,98,103,133],[56,98,99,104,110,111,118,130,141],[56,98,99,100,110,118],[51,52,53,56,98],[56,98,101,142],[56,98,102,103,111,119],[56,98,103,130,138],[56,98,104,106,110,118],[56,97,98,105],[56,98,106,107],[56,98,110],[56,98,108,110],[56,97,98,110],[56,98,110,111,112,130,141],[56,98,110,111,112,125,130,133],[56,93,98,146],[56,93,98,106,110,113,118,130,141],[56,98,110,111,113,114,118,130,138,141],[56,98,113,115,130,138,141],[56,98,110,116],[56,98,117,141],[56,98,106,110,118,130],[56,98,119],[56,98,120],[56,97,98,121],[56,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,123],[56,98,124],[56,98,110,125,126],[56,98,125,127,142,144],[56,98,110,130,131,132,133],[56,98,130,132],[56,98,130,131],[56,98,133],[56,98,134],[56,95,98,130],[56,98,110,136,137],[56,98,136,137],[56,98,103,118,130,138],[56,98,139],[98],[54,55,56,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,118,140],[56,98,113,124,141],[56,98,103,142],[56,98,130,143],[56,98,117,144],[56,98,145],[56,98,103,110,112,121,130,141,144,146],[56,98,130,147],[56,65,69,98,141],[56,65,98,130,141],[56,60,98],[56,62,65,98,138,141],[56,98,118,138],[56,98,148],[56,60,98,148],[56,62,65,98,118,141],[56,57,58,61,64,98,110,130,141],[56,65,72,98],[56,57,63,98],[56,65,86,87,98],[56,61,65,98,133,141,148],[56,86,98,148],[56,59,60,98,148],[56,65,98],[56,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,98],[56,65,80,98],[56,65,72,73,98],[56,63,65,73,74,98],[56,64,98],[56,57,60,65,98],[56,65,69,73,74,98],[56,69,98],[56,63,65,68,98,141],[56,57,62,65,72,98],[56,98,130],[56,60,65,86,98,146,148]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"2829d28560058fe65aece984d7695c31e5c04c8dcbadf372a5fd4ee58bf13560",{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d1319e6b5d0efd8c5eae07eb864a00102151e8b9afddd2d45db52e9aae002c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"bba5c0a40fe58ecaff0fc732bd0ba0d39cc25fe06a8d12cfb0b7372465d6ad25","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb4a7c36a6d56378df14a9bb0b0b571a82670ea95983626ce5ddeea846d54b23","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"c72ccc191348ac1933226cab7a814cfda8b29a827d1df5dbebfe516a6fd734a8","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4047ed87e765bd3bcc316a0c4c4c8b0061628460d8a5412d1c4b53a4658665a","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"42aaa94addeed66a04b61e433c14e829c43d1efd653cf2fda480c5fb3d722ed8","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"58832ded29e0094047596544ac391d68c799d7bd7d35936f47221857141628f1","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"171fd8807643c46a9d17e843959abdf10480d57d60d38d061fb44a4c8d4a8cc4","impliedFormat":1}],"root":[46],"options":{"allowJs":true,"alwaysStrict":true,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":1,"noEmitHelpers":true,"noImplicitAny":false,"removeComments":true,"skipLibCheck":true,"strict":true,"target":1},"referencedMap":[[48,1],[49,2],[50,1],[95,3],[96,3],[97,4],[98,5],[99,6],[100,7],[51,2],[54,8],[52,2],[53,2],[101,9],[102,10],[103,11],[104,12],[105,13],[106,14],[107,14],[109,15],[108,16],[110,17],[111,18],[112,19],[94,20],[113,21],[114,22],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[121,29],[122,30],[123,31],[124,32],[125,33],[126,33],[127,34],[128,2],[129,2],[130,35],[132,36],[131,37],[133,38],[134,39],[135,40],[136,41],[137,42],[138,43],[139,44],[56,45],[55,2],[148,46],[140,47],[141,48],[142,49],[143,50],[144,51],[145,52],[146,53],[147,54],[47,2],[44,2],[45,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[72,55],[82,56],[71,55],[92,57],[63,58],[62,59],[91,60],[85,61],[90,62],[65,63],[79,64],[64,65],[88,66],[60,67],[59,60],[89,68],[61,69],[66,70],[67,2],[70,70],[57,2],[93,71],[83,72],[74,73],[75,74],[77,75],[73,76],[76,77],[86,60],[68,78],[69,79],[78,80],[58,81],[81,72],[80,70],[84,2],[87,82],[46,81]],"version":"5.6.3"} \ No newline at end of file +{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2016.intl.d.ts","./node_modules/typescript/lib/lib.es2017.date.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2019.intl.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.decorators.d.ts","./node_modules/typescript/lib/lib.decorators.legacy.d.ts","./typings/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@types/hast/index.d.ts","./node_modules/@types/json5/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/node/compatibility/disposable.d.ts","./node_modules/@types/node/compatibility/indexable.d.ts","./node_modules/@types/node/compatibility/iterators.d.ts","./node_modules/@types/node/compatibility/index.d.ts","./node_modules/@types/node/ts5.6/globals.typedarray.d.ts","./node_modules/@types/node/ts5.6/buffer.buffer.d.ts","./node_modules/undici-types/header.d.ts","./node_modules/undici-types/readable.d.ts","./node_modules/undici-types/file.d.ts","./node_modules/undici-types/fetch.d.ts","./node_modules/undici-types/formdata.d.ts","./node_modules/undici-types/connector.d.ts","./node_modules/undici-types/client.d.ts","./node_modules/undici-types/errors.d.ts","./node_modules/undici-types/dispatcher.d.ts","./node_modules/undici-types/global-dispatcher.d.ts","./node_modules/undici-types/global-origin.d.ts","./node_modules/undici-types/pool-stats.d.ts","./node_modules/undici-types/pool.d.ts","./node_modules/undici-types/handlers.d.ts","./node_modules/undici-types/balanced-pool.d.ts","./node_modules/undici-types/agent.d.ts","./node_modules/undici-types/mock-interceptor.d.ts","./node_modules/undici-types/mock-agent.d.ts","./node_modules/undici-types/mock-client.d.ts","./node_modules/undici-types/mock-pool.d.ts","./node_modules/undici-types/mock-errors.d.ts","./node_modules/undici-types/proxy-agent.d.ts","./node_modules/undici-types/env-http-proxy-agent.d.ts","./node_modules/undici-types/retry-handler.d.ts","./node_modules/undici-types/retry-agent.d.ts","./node_modules/undici-types/api.d.ts","./node_modules/undici-types/interceptors.d.ts","./node_modules/undici-types/util.d.ts","./node_modules/undici-types/cookies.d.ts","./node_modules/undici-types/patch.d.ts","./node_modules/undici-types/websocket.d.ts","./node_modules/undici-types/eventsource.d.ts","./node_modules/undici-types/filereader.d.ts","./node_modules/undici-types/diagnostics-channel.d.ts","./node_modules/undici-types/content-type.d.ts","./node_modules/undici-types/cache.d.ts","./node_modules/undici-types/index.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/dom-events.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/readline/promises.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/sea.d.ts","./node_modules/@types/node/sqlite.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/ts5.6/index.d.ts"],"fileIdsList":[[47,56,98],[56,98],[56,95,98],[56,97,98],[56,98,103,133],[56,98,99,104,110,111,118,130,141],[56,98,99,100,110,118],[51,52,53,56,98],[56,98,101,142],[56,98,102,103,111,119],[56,98,103,130,138],[56,98,104,106,110,118],[56,97,98,105],[56,98,106,107],[56,98,110],[56,98,108,110],[56,97,98,110],[56,98,110,111,112,130,141],[56,98,110,111,112,125,130,133],[56,93,98,146],[56,93,98,106,110,113,118,130,141],[56,98,110,111,113,114,118,130,138,141],[56,98,113,115,130,138,141],[56,98,110,116],[56,98,117,141],[56,98,106,110,118,130],[56,98,119],[56,98,120],[56,97,98,121],[56,95,96,97,98,99,100,101,102,103,104,105,106,107,108,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,123],[56,98,124],[56,98,110,125,126],[56,98,125,127,142,144],[56,98,110,130,131,132,133],[56,98,130,132],[56,98,130,131],[56,98,133],[56,98,134],[56,95,98,130],[56,98,110,136,137],[56,98,136,137],[56,98,103,118,130,138],[56,98,139],[98],[54,55,56,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147],[56,98,118,140],[56,98,113,124,141],[56,98,103,142],[56,98,130,143],[56,98,117,144],[56,98,145],[56,98,103,110,112,121,130,141,144,146],[56,98,130,147],[56,65,69,98,141],[56,65,98,130,141],[56,60,98],[56,62,65,98,138,141],[56,98,118,138],[56,98,148],[56,60,98,148],[56,62,65,98,118,141],[56,57,58,61,64,98,110,130,141],[56,65,72,98],[56,57,63,98],[56,65,86,87,98],[56,61,65,98,133,141,148],[56,86,98,148],[56,59,60,98,148],[56,65,98],[56,59,60,61,62,63,64,65,66,67,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,98],[56,65,80,98],[56,65,72,73,98],[56,63,65,73,74,98],[56,64,98],[56,57,60,65,98],[56,65,69,73,74,98],[56,69,98],[56,63,65,68,98,141],[56,57,62,65,72,98],[56,98,130],[56,60,65,86,98,146,148]],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"9e8ca8ed051c2697578c023d9c29d6df689a083561feba5c14aedee895853999","affectsGlobalScope":true,"impliedFormat":1},{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"45d8ccb3dfd57355eb29749919142d4321a0aa4df6acdfc54e30433d7176600a","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1a94697425a99354df73d9c8291e2ecd4dddd370aed4023c2d6dee6cccb32666","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3f9fc0ec0b96a9e642f11eda09c0be83a61c7b336977f8b9fdb1e9788e925fe","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},"9aee2428b966e4a94f0c830fbf5224a641b375f278720205b8e59801a2b6234f",{"version":"89121c1bf2990f5219bfd802a3e7fc557de447c62058d6af68d6b6348d64499a","impliedFormat":1},{"version":"79b4369233a12c6fa4a07301ecb7085802c98f3a77cf9ab97eee27e1656f82e6","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"d4a22007b481fe2a2e6bfd3a42c00cd62d41edb36d30fc4697df2692e9891fc8","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"030e350db2525514580ed054f712ffb22d273e6bc7eddc1bb7eda1e0ba5d395e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"613b21ccdf3be6329d56e6caa13b258c842edf8377be7bc9f014ed14cdcfc308","affectsGlobalScope":true,"impliedFormat":1},{"version":"2d1319e6b5d0efd8c5eae07eb864a00102151e8b9afddd2d45db52e9aae002c4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"d2bc987ae352271d0d615a420dcf98cc886aa16b87fb2b569358c1fe0ca0773d","affectsGlobalScope":true,"impliedFormat":1},{"version":"f52e8dacc97d71dcc96af29e49584353f9c54cb916d132e3e768d8b8129c928d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"76103716ba397bbb61f9fa9c9090dca59f39f9047cb1352b2179c5d8e7f4e8d0","impliedFormat":1},{"version":"53eac70430b30089a3a1959d8306b0f9cfaf0de75224b68ef25243e0b5ad1ca3","affectsGlobalScope":true,"impliedFormat":1},{"version":"4314c7a11517e221f7296b46547dbc4df047115b182f544d072bdccffa57fc72","impliedFormat":1},{"version":"115971d64632ea4742b5b115fb64ed04bcaae2c3c342f13d9ba7e3f9ee39c4e7","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"86956cc2eb9dd371d6fab493d326a574afedebf76eef3fa7833b8e0d9b52d6f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"bba5c0a40fe58ecaff0fc732bd0ba0d39cc25fe06a8d12cfb0b7372465d6ad25","impliedFormat":1},{"version":"e6f5a38687bebe43a4cef426b69d34373ef68be9a6b1538ec0a371e69f309354","impliedFormat":1},{"version":"a6bf63d17324010ca1fbf0389cab83f93389bb0b9a01dc8a346d092f65b3605f","impliedFormat":1},{"version":"e009777bef4b023a999b2e5b9a136ff2cde37dc3f77c744a02840f05b18be8ff","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"88bc59b32d0d5b4e5d9632ac38edea23454057e643684c3c0b94511296f2998c","affectsGlobalScope":true,"impliedFormat":1},{"version":"bb4a7c36a6d56378df14a9bb0b0b571a82670ea95983626ce5ddeea846d54b23","impliedFormat":1},{"version":"eaf9ee1d90a35d56264f0bf39842282c58b9219e112ac7d0c1bce98c6c5da672","impliedFormat":1},{"version":"c15c4427ae7fd1dcd7f312a8a447ac93581b0d4664ddf151ecd07de4bf2bb9d7","impliedFormat":1},{"version":"5135bdd72cc05a8192bd2e92f0914d7fc43ee077d1293dc622a049b7035a0afb","impliedFormat":1},{"version":"4f80de3a11c0d2f1329a72e92c7416b2f7eab14f67e92cac63bb4e8d01c6edc8","impliedFormat":1},{"version":"6d386bc0d7f3afa1d401afc3e00ed6b09205a354a9795196caed937494a713e6","impliedFormat":1},{"version":"c72ccc191348ac1933226cab7a814cfda8b29a827d1df5dbebfe516a6fd734a8","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4047ed87e765bd3bcc316a0c4c4c8b0061628460d8a5412d1c4b53a4658665a","impliedFormat":1},{"version":"b1b6ee0d012aeebe11d776a155d8979730440082797695fc8e2a5c326285678f","impliedFormat":1},{"version":"45875bcae57270aeb3ebc73a5e3fb4c7b9d91d6b045f107c1d8513c28ece71c0","impliedFormat":1},{"version":"3eb62baae4df08c9173e6903d3ca45942ccec8c3659b0565684a75f3292cffbb","affectsGlobalScope":true,"impliedFormat":1},{"version":"42aaa94addeed66a04b61e433c14e829c43d1efd653cf2fda480c5fb3d722ed8","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"c6b4e0a02545304935ecbf7de7a8e056a31bb50939b5b321c9d50a405b5a0bba","impliedFormat":1},{"version":"fab29e6d649aa074a6b91e3bdf2bff484934a46067f6ee97a30fcd9762ae2213","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"e1120271ebbc9952fdc7b2dd3e145560e52e06956345e6fdf91d70ca4886464f","impliedFormat":1},{"version":"15c5e91b5f08be34a78e3d976179bf5b7a9cc28dc0ef1ffebffeb3c7812a2dca","impliedFormat":1},{"version":"58832ded29e0094047596544ac391d68c799d7bd7d35936f47221857141628f1","impliedFormat":1},{"version":"553870e516f8c772b89f3820576152ebc70181d7994d96917bb943e37da7f8a7","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"745c4240220559bd340c8aeb6e3c5270a709d3565e934dc22a69c304703956bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"2754d8221d77c7b382096651925eb476f1066b3348da4b73fe71ced7801edada","impliedFormat":1},{"version":"9212c6e9d80cb45441a3614e95afd7235a55a18584c2ed32d6c1aca5a0c53d93","affectsGlobalScope":true,"impliedFormat":1},{"version":"bef91efa0baea5d0e0f0f27b574a8bc100ce62a6d7e70220a0d58af6acab5e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"282fd2a1268a25345b830497b4b7bf5037a5e04f6a9c44c840cb605e19fea841","impliedFormat":1},{"version":"5360a27d3ebca11b224d7d3e38e3e2c63f8290cb1fcf6c3610401898f8e68bc3","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"7d6ff413e198d25639f9f01f16673e7df4e4bd2875a42455afd4ecc02ef156da","affectsGlobalScope":true,"impliedFormat":1},{"version":"6bd91a2a356600dee28eb0438082d0799a18a974a6537c4410a796bab749813c","affectsGlobalScope":true,"impliedFormat":1},{"version":"f689c4237b70ae6be5f0e4180e8833f34ace40529d1acc0676ab8fb8f70457d7","impliedFormat":1},{"version":"ae25afbbf1ed5df63a177d67b9048bf7481067f1b8dc9c39212e59db94fc9fc6","impliedFormat":1},{"version":"ac5ed35e649cdd8143131964336ab9076937fa91802ec760b3ea63b59175c10a","impliedFormat":1},{"version":"52a8e7e8a1454b6d1b5ad428efae3870ffc56f2c02d923467f2940c454aa9aec","affectsGlobalScope":true,"impliedFormat":1},{"version":"78dc0513cc4f1642906b74dda42146bcbd9df7401717d6e89ea6d72d12ecb539","impliedFormat":1},{"version":"171fd8807643c46a9d17e843959abdf10480d57d60d38d061fb44a4c8d4a8cc4","impliedFormat":1}],"root":[46],"options":{"allowJs":true,"alwaysStrict":true,"declaration":true,"emitDeclarationOnly":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"importHelpers":true,"module":1,"noEmitHelpers":true,"noImplicitAny":false,"removeComments":true,"skipLibCheck":true,"strict":true,"target":1},"referencedMap":[[48,1],[49,2],[50,1],[95,3],[96,3],[97,4],[98,5],[99,6],[100,7],[51,2],[54,8],[52,2],[53,2],[101,9],[102,10],[103,11],[104,12],[105,13],[106,14],[107,14],[109,15],[108,16],[110,17],[111,18],[112,19],[94,20],[113,21],[114,22],[115,23],[116,24],[117,25],[118,26],[119,27],[120,28],[121,29],[122,30],[123,31],[124,32],[125,33],[126,33],[127,34],[128,2],[129,2],[130,35],[132,36],[131,37],[133,38],[134,39],[135,40],[136,41],[137,42],[138,43],[139,44],[56,45],[55,2],[148,46],[140,47],[141,48],[142,49],[143,50],[144,51],[145,52],[146,53],[147,54],[47,2],[44,2],[45,2],[8,2],[10,2],[9,2],[2,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[3,2],[19,2],[4,2],[20,2],[24,2],[21,2],[22,2],[23,2],[25,2],[26,2],[27,2],[5,2],[28,2],[29,2],[30,2],[31,2],[6,2],[35,2],[32,2],[33,2],[34,2],[36,2],[7,2],[37,2],[42,2],[43,2],[38,2],[39,2],[40,2],[41,2],[1,2],[72,55],[82,56],[71,55],[92,57],[63,58],[62,59],[91,60],[85,61],[90,62],[65,63],[79,64],[64,65],[88,66],[60,67],[59,60],[89,68],[61,69],[66,70],[67,2],[70,70],[57,2],[93,71],[83,72],[74,73],[75,74],[77,75],[73,76],[76,77],[86,60],[68,78],[69,79],[78,80],[58,81],[81,72],[80,70],[84,2],[87,82],[46,81]],"version":"5.6.3"} \ No newline at end of file diff --git a/typings/index.d.ts b/typings/index.d.ts index d6466f97c..900de7370 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -4603,22 +4603,131 @@ export class Client extends EventEmitter { * * @returns A Promise that resolves to the {@link Transaction.commitStatus} returned by commit. * + * @example using the default metrics writer + * + * const Aerospike = require('aerospike') + * + * // INSERT HOSTNAME AND PORT NUMBER OF AEROSPIKE SERVER NODE HERE! + * var config = { + * hosts: '192.168.33.10:3000', + * } + * + * + * ;(async () => { + * let client = await Aerospike.connect(config) + * + * client.enableMetrics() + * + * client.disableMetrics() + * + * + * await client.close() + * })(); + * + * @example using custom listener callbacks. + * + * const Aerospike = require('aerospike') + * + * // INSERT HOSTNAME AND PORT NUMBER OF AEROSPIKE SERVER NODE HERE! + * var config = { + * hosts: '192.168.33.10:3000', + * } + * + * + * function enableListener() { + * console.log("Metrics Enabled") + * return + * } + * + * function snapshotListener(cluster: Cluster) { + * console.log(Cluster.clusterName) + * return + * } + * + * function nodeCloseListener(node: Node) { + * console.log(node.conns) + * return + * } + * + * function disableListener(cluster: Cluster) { + * console.log("Metrics Disabled") + * return + * } + * + * ;(async () => { + * let client = await Aerospike.connect(config) + * + * let listeners: MetricsListeners = new Aerospike.MetricsListeners({ + * enableListener, + * disableListener, + * nodeCloseListener, + * snapshotListener + * } + * ) + * + * + * let policy: MetricsPolicy = new MetricsPolicy({ + * metricsListeners: listeners, + * reportDir: metricsLogFolder, + * reportSizeLimit: 1000, + * interval: 2, + * latencyColumns: 5, + * latencyShift: 2 + * } + * ) + * await client.enableMetrics(policy) + * + * + * await client.disableMetrics() + * + * // All listeners are fired asynchronously + * // If you need the enableListener or disableListener to fire immediately, yield control of the event loop. + * await new Promise(r => setTimeout(r, 0)); + * + * await client.close() + * })(); */ public commit(transaction: Transaction): Promise< typeof Transaction.commitStatus[keyof typeof Transaction.commitStatus]>; /** * Disable extended periodic cluster and node latency metrics. + * + * @returns A Promise that resolves to void. */ - public disableMetrics(callback: Function): void; + public disableMetrics(): Promise; /** * Disable extended periodic cluster and node latency metrics. + * + * @param callback - This function will be called with the + * result returned by the disableMetrics call. */ - public disableMetrics(): Promise; + public disableMetrics(callback: Function): void; /** * * Enable extended periodic cluster and node latency metrics. * * @returns A Promise that resolves to void. * + * @example disabling metrics + * + * const Aerospike = require('aerospike') + * + * // INSERT HOSTNAME AND PORT NUMBER OF AEROSPIKE SERVER NODE HERE! + * var config = { + * hosts: '192.168.33.10:3000', + * } + * + * + * ;(async () => { + * let client = await Aerospike.connect(config) + * + * await client.enableMetrics() + * + * await client.disableMetrics() + * + * + * await client.close() + * })(); + * */ public enableMetrics(): Promise; /** @@ -4627,7 +4736,7 @@ export class Client extends EventEmitter { * * @param policy - {@link policy.MetricsPolicy} instance. * @param callback - This function will be called with the - * result returned by the abort function call. + * result returned by the enableMetrics call. * */ public enableMetrics(callback: Function): void; From 60637dbc67909cd29a677fed52c2d50abdeafa9f Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:00:52 -0700 Subject: [PATCH 137/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index cb6167602..e2b5fe80e 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -33,14 +33,14 @@ jobs: version: 6.0.2.dev1 secrets: inherit - test-with-server-release: - uses: ./.github/workflows/test-artifacts.yml - needs: [ - download-jfrog-artifacts - ] - with: - run_tests: true - secrets: inherit + #test-with-server-release: + # uses: ./.github/workflows/test-artifacts.yml + # needs: [ + # download-jfrog-artifacts + # ] + # with: + # run_tests: true + # secrets: inherit bump-dev-number: #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} From 7e30950bb2ce3dc5edfaa02cf59652701c884df3 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:02:24 -0700 Subject: [PATCH 138/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index e2b5fe80e..67c9b11e3 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -53,6 +53,7 @@ jobs: change: 'bump-dev-num' secrets: inherit + upload-to-jfrog: name: Upload artifacts to JFrog needs: [ From 14947bc26e1a54a31365aa2c4f8314bffa2dc366 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:05:51 -0700 Subject: [PATCH 139/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 67c9b11e3..8f8957ea2 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -47,18 +47,17 @@ jobs: uses: ./.github/workflows/bump-version.yml needs: [ download-jfrog-artifacts, - test-with-server-release + #test-with-server-release ] with: change: 'bump-dev-num' secrets: inherit - upload-to-jfrog: name: Upload artifacts to JFrog needs: [ download-jfrog-artifacts, - test-with-server-release, + #test-with-server-release, bump-dev-number ] uses: ./.github/workflows/upload-to-jfrog.yml @@ -71,8 +70,12 @@ jobs: delete-artifacts: needs: upload-to-jfrog uses: ./.github/workflows/delete-artifacts.yml - - + needs: [ + download-jfrog-artifacts, + #test-with-server-release, + bump-dev-number, + upload-to-jfrog + ] # test-with-server-rc: From 66d36adc1a9a37d7507f35169d92ea2ba559409c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:07:45 -0700 Subject: [PATCH 140/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 8f8957ea2..817c8fee9 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -70,12 +70,8 @@ jobs: delete-artifacts: needs: upload-to-jfrog uses: ./.github/workflows/delete-artifacts.yml - needs: [ - download-jfrog-artifacts, - #test-with-server-release, - bump-dev-number, - upload-to-jfrog - ] + needs: [download-jfrog-artifacts, bump-dev-number, upload-to-jfrog] + # test-with-server-rc: From de567c74cf5924c4d88e6afd6a52f0c0a186b98c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:08:24 -0700 Subject: [PATCH 141/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 817c8fee9..b8790a171 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -70,7 +70,6 @@ jobs: delete-artifacts: needs: upload-to-jfrog uses: ./.github/workflows/delete-artifacts.yml - needs: [download-jfrog-artifacts, bump-dev-number, upload-to-jfrog] From b140e08c45ee3da3da755f207e0aa5fd503bb85c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 17:09:43 +0000 Subject: [PATCH 142/161] Auto-bump version to 6.0.4 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index fd20599f5..a21df1dd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.0.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.0.4", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index df495a700..ee991220d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.0.4", "description": "Aerospike Client Library", "keywords": [ "aerospike", From a8e037d60ae91e1f01280822ba2205b60102c0d5 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:11:59 -0700 Subject: [PATCH 143/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 134 ++++----- .github/workflows/dev-workflow-p2.yml | 94 ++++--- .github/workflows/stage-workflow-p1.yml | 144 +++++----- .github/workflows/test-dev-artifacts.yml | 332 +++++++++++------------ package.json | 2 +- 5 files changed, 355 insertions(+), 351 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 1b1ae3ed3..44d183ca8 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,68 +1,68 @@ -#name: Dev workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# test-with-server-release: -# uses: ./.github/workflows/build-artifacts.yml -# with: -# run_tests: true +name: Dev workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + test-with-server-release: + uses: ./.github/workflows/build-artifacts.yml + with: + run_tests: true + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml -# -# -## test-with-server-rc: -## needs: test-with-server-release -## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -## uses: ./.github/workflows/test-server-rc.yml -## secrets: inherit -## \ No newline at end of file +# \ No newline at end of file diff --git a/.github/workflows/dev-workflow-p2.yml b/.github/workflows/dev-workflow-p2.yml index 6a0fccb9e..15f6a5ce0 100644 --- a/.github/workflows/dev-workflow-p2.yml +++ b/.github/workflows/dev-workflow-p2.yml @@ -1,48 +1,52 @@ -name: Dev workflow (part 2) - -on: - workflow_dispatch: - inputs: - package-name: - description: 'An example input for the workflow' - required: true - default: 'default_value' -jobs: - download-jfrog-artifacts: - uses: ./.github/workflows/download-jfrog-artifacts.yml - with: - version: 6.0.3-rc.1 - secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - # bump-dev-number, - rebuild-artifacts-with-new-dev-num - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - publish-to-npm: - name: Upload artifacts to JFrog - needs: [ - # bump-dev-number, - rebuild-artifacts-with-new-dev-num, - upload-to-jfrog - ] - uses: ./.github/workflows/upload-jfrog-build-to-npm.yml - with: - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit +#name: Dev workflow (part 2) +# +#on: +# pull_request: +# branches: +# - 'dev*' +# types: +# - synchronize +# paths-ignore: +# - 'package.json' +# workflow_dispatch: +# paths-ignore: +# - 'package.json' +#jobs: +# download-jfrog-artifacts: +# uses: ./.github/workflows/download-jfrog-artifacts.yml +# with: +# version: 6.0.3-rc.1 +# secrets: inherit +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# # bump-dev-number, +# rebuild-artifacts-with-new-dev-num +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# publish-to-npm: +# name: Upload artifacts to JFrog +# needs: [ +# # bump-dev-number, +# rebuild-artifacts-with-new-dev-num, +# upload-to-jfrog +# ] +# uses: ./.github/workflows/upload-jfrog-build-to-npm.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit # release-package: # name: release npm package diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index b8790a171..df247e9b6 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -1,75 +1,75 @@ -name: Stage workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - download-jfrog-artifacts: - uses: ./.github/workflows/download-jfrog-artifacts.yml - with: - version: 6.0.2.dev1 - secrets: inherit - - #test-with-server-release: - # uses: ./.github/workflows/test-artifacts.yml - # needs: [ - # download-jfrog-artifacts - # ] - # with: - # run_tests: true - # secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - download-jfrog-artifacts, - #test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - download-jfrog-artifacts, - #test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - stage: true - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml +#name: Stage workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# download-jfrog-artifacts: +# uses: ./.github/workflows/download-jfrog-artifacts.yml +# with: +# version: 6.0.2.dev1 +# secrets: inherit +# +# #test-with-server-release: +# # uses: ./.github/workflows/test-artifacts.yml +# # needs: [ +# # download-jfrog-artifacts +# # ] +# # with: +# # run_tests: true +# # secrets: inherit +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# download-jfrog-artifacts, +# #test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# download-jfrog-artifacts, +# #test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# stage: true +# version: ${{ needs.bump-dev-number.outputs.new_version }} +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 0b1b2ec03..94e509a11 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -572,172 +572,172 @@ jobs: status: ${{ job.status }} context: ${{ env.STATUS_CHECK_MESSAGE }} -# test-metrics: -# needs: get-runner-os -# strategy: -# matrix: -# nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} -# fail-fast: false -# runs-on: ${{ needs.get-runner-os.outputs.runner-os }} -# env: -# BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" -# MACOS_OPENSSL_VERSION: 3 -# steps: -# -# # REUSABLE PART -# - name: Create status check message -# run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV -# shell: bash -# -# - name: Show job status for commit -# uses: myrotvorets/set-commit-status-action@v2.0.0 -# if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} -# with: -# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} -# context: ${{ env.STATUS_CHECK_MESSAGE }} -# -# - uses: actions/checkout@v4 -# with: -# submodules: recursive -# ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} -# # We need the last tag before the ref, so we can relabel the version if needed -# fetch-depth: 0 -# -# - uses: actions/setup-node@v4 -# with: -# node-version: ${{ matrix.nodejs-tag[1] }} -# -# - name: print conditional values -# run: | -# echo "Platform tag: '${{ inputs.platform-tag }}'" -# echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" -# echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" -# echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" -# echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" -# -# - name: 'Windows: Install C client deps' -# if: ${{ inputs.platform-tag == 'win_amd64' }} -# run: nuget restore -# working-directory: aerospike-client-c/vs -# -# - name: 'macOS x86: Setup Docker using colima for testing' -# if: ${{ inputs.platform-tag == 'macosx_x86_64' }} -# uses: ./.github/actions/setup-docker-on-macos -# -# - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' -# if: ${{ inputs.platform-tag == 'macosx_x86_64' }} -# uses: ./.github/actions/run-ee-server-for-ext-container -# with: -# use-server-rc: ${{ inputs.use-server-rc }} -# server-tag: ${{ inputs.server-tag }} -# docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} -# docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} -# -# - name: Remove aerospike docker image -# if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} -# run: | -# if docker ps -aq | grep -q .; then -# docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." -# else -# echo "No containers to remove." -# fi -# -# # TODO: combine this composite action and the above into one -# - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" -# if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} -# uses: ./.github/actions/run-ee-server-for-ext-container -# with: -# use-server-rc: ${{ inputs.use-server-rc }} -# server-tag: ${{ inputs.server-tag }} -# docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} -# docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} -# -# # FIND NO SERVER TESTS AND RUN THEM -# # -# #- name: If not running tests against server, only run basic import test -# # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} -# # # Use double quotes otherwise Windows will throw this error in cibuildwheel -# # # 'import -# # # ^ -# # # SyntaxError: EOL while scanning string literal -# # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV -# # shell: bash -# -# #- name: Otherwise, enable integration tests -# # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} -# # run: echo "TEST_COMMAND=cd ts-test; -# # npm install typescript --save-dev; -# # npx tsc; -# # cd ..; -# # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV -# # shell: bash -# -# -# - name: Download artifacts -# uses: actions/download-artifact@v4 -# with: -# name: nodejs-client-artifacts -# path: ./downloaded-artifacts -# -# - name: list Artifacts first -# run: | -# ls ./downloaded-artifacts -# ls ./downloaded-artifacts/glibc@2.31 -# ls ./downloaded-artifacts/glibc@2.35 -# -# - name: Move artifacts -# run: | -# mkdir -p lib/binding -# cp -r downloaded-artifacts/* lib/binding -# -# -# - name: Delete leftover artifacts -# if: ${{ !(inputs.platform-tag == 'win_amd64') }} -# run: | -# rm -rf downloaded-artifacts/ -# -# - name: check binding -# run: -# ls lib/binding; -# ls lib/binding/glibc@2.35; -# ls lib/binding/glibc@2.31; -# -# - name: Change install command for release -# run: node ./scripts/change-install-command.js -# -# - name: Run tests -# if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} -# run: | -# docker ps; -# docker logs aerospike; -# cd ts-test; -# npm install; -# npx tsc; -# cd ..; -# npx tsc; -# npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; -# npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; -# -# - name: Run tests -# if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} -# run: | -# docker ps; -# docker logs aerospike; -# cd ts-test; -# npm install; -# npx tsc; -# cd ..; -# npx tsc; -# npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; -# npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; -# -# - name: Set final commit status -# uses: myrotvorets/set-commit-status-action@v2.0.0 -# if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} -# with: -# sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} -# status: ${{ job.status }} -# context: ${{ env.STATUS_CHECK_MESSAGE }} + test-metrics: + needs: get-runner-os + strategy: + matrix: + nodejs-tag: ${{ fromJSON(inputs.nodejs-tags) }} + fail-fast: false + runs-on: ${{ needs.get-runner-os.outputs.runner-os }} + env: + BUILD_IDENTIFIER: "${{ matrix.nodejs-tag[0] }}-${{ inputs.platform-tag }}" + MACOS_OPENSSL_VERSION: 3 + steps: + + # REUSABLE PART + - name: Create status check message + run: echo STATUS_CHECK_MESSAGE="test-ee (${{ env.BUILD_IDENTIFIER }})" >> $GITHUB_ENV + shell: bash + + - name: Show job status for commit + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + context: ${{ env.STATUS_CHECK_MESSAGE }} + + - uses: actions/checkout@v4 + with: + submodules: recursive + ref: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + # We need the last tag before the ref, so we can relabel the version if needed + fetch-depth: 0 + + - uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.nodejs-tag[1] }} + + - name: print conditional values + run: | + echo "Platform tag: '${{ inputs.platform-tag }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'win_amd64' }}'" + echo "Platform conditional: 'if: ${{ inputs.platform-tag == 'macosx_x86_64' }}'" + echo "Platform conditional: 'runs-on: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + echo "Platform conditional: '${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }}'" + + - name: 'Windows: Install C client deps' + if: ${{ inputs.platform-tag == 'win_amd64' }} + run: nuget restore + working-directory: aerospike-client-c/vs + + - name: 'macOS x86: Setup Docker using colima for testing' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/setup-docker-on-macos + + - name: 'macOS x86: run Aerospike server in Docker container and connect via localhost' + if: ${{ inputs.platform-tag == 'macosx_x86_64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + - name: Remove aerospike docker image + if: ${{ inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + run: | + if docker ps -aq | grep -q .; then + docker rm -f $(docker ps -aq) || echo "Failed to remove one or more containers." + else + echo "No containers to remove." + fi + + # TODO: combine this composite action and the above into one + - name: "Linux: run Aerospike server in Docker container and configure config.conf to connect to the server container's Docker IP address" + if: ${{ inputs.platform-tag == 'manylinux_x86_64' || inputs.platform-tag == 'manylinux_aarch64' || inputs.platform-tag == 'manylinux_20_x86_64' || inputs.platform-tag == 'manylinux_20_aarch64' }} + uses: ./.github/actions/run-ee-server-for-ext-container + with: + use-server-rc: ${{ inputs.use-server-rc }} + server-tag: ${{ inputs.server-tag }} + docker-hub-username: ${{ secrets.DOCKER_HUB_BOT_USERNAME }} + docker-hub-password: ${{ secrets.DOCKER_HUB_BOT_PW }} + + # FIND NO SERVER TESTS AND RUN THEM + # + #- name: If not running tests against server, only run basic import test + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'false' }} + # # Use double quotes otherwise Windows will throw this error in cibuildwheel + # # 'import + # # ^ + # # SyntaxError: EOL while scanning string literal + # run: echo "TEST_COMMAND=python -c \"import aerospike\"" >> $GITHUB_ENV + # shell: bash + + #- name: Otherwise, enable integration tests + # if: ${{ env.RUN_INTEGRATION_TESTS_IN_CIBW == 'true' }} + # run: echo "TEST_COMMAND=cd ts-test; + # npm install typescript --save-dev; + # npx tsc; + # cd ..; + # npm run test dist/ -- --h 127.0.0.1 --port 3000" >> $GITHUB_ENV + # shell: bash + + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + name: nodejs-client-artifacts + path: ./downloaded-artifacts + + - name: list Artifacts first + run: | + ls ./downloaded-artifacts + ls ./downloaded-artifacts/glibc@2.31 + ls ./downloaded-artifacts/glibc@2.35 + + - name: Move artifacts + run: | + mkdir -p lib/binding + cp -r downloaded-artifacts/* lib/binding + + + - name: Delete leftover artifacts + if: ${{ !(inputs.platform-tag == 'win_amd64') }} + run: | + rm -rf downloaded-artifacts/ + + - name: check binding + run: + ls lib/binding; + ls lib/binding/glibc@2.35; + ls lib/binding/glibc@2.31; + + - name: Change install command for release + run: node ./scripts/change-install-command.js + + - name: Run tests + if: ${{ inputs.run_tests && startsWith(inputs.platform-tag, 'manylinux') }} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + - name: Run tests + if: ${{ inputs.run_tests && inputs.platform-tag == 'macosx_x86_64'}} + run: | + docker ps; + docker logs aerospike; + cd ts-test; + npm install; + npx tsc; + cd ..; + npx tsc; + npm run test dist/metrics_node_close.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + npm run test dist/metrics_cluster_name.js -- --testMetrics true --h localhost --port 3000 --t 15000 --U superuser --P superuser; + + - name: Set final commit status + uses: myrotvorets/set-commit-status-action@v2.0.0 + if: ${{ always() && github.event_name != 'push' && github.event_name != 'pull_request' }} + with: + sha: ${{ env.COMMIT_SHA_TO_BUILD_AND_TEST }} + status: ${{ job.status }} + context: ${{ env.STATUS_CHECK_MESSAGE }} test-ce: needs: get-runner-os diff --git a/package.json b/package.json index df495a700..81a4625c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.1.0-dev.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From c2f390651cad336bebf3616655e8648f78964130 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:23:19 -0700 Subject: [PATCH 144/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 144 ++++++++++++------------ aerospike-client-c | 2 +- package-lock.json | 4 +- src/main/commands/enable_metrics.cc | 4 +- 4 files changed, 77 insertions(+), 77 deletions(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index df247e9b6..b8790a171 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -1,75 +1,75 @@ -#name: Stage workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# download-jfrog-artifacts: -# uses: ./.github/workflows/download-jfrog-artifacts.yml -# with: -# version: 6.0.2.dev1 -# secrets: inherit -# -# #test-with-server-release: -# # uses: ./.github/workflows/test-artifacts.yml -# # needs: [ -# # download-jfrog-artifacts -# # ] -# # with: -# # run_tests: true -# # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# download-jfrog-artifacts, -# #test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# download-jfrog-artifacts, -# #test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# stage: true -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml +name: Stage workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + download-jfrog-artifacts: + uses: ./.github/workflows/download-jfrog-artifacts.yml + with: + version: 6.0.2.dev1 + secrets: inherit + + #test-with-server-release: + # uses: ./.github/workflows/test-artifacts.yml + # needs: [ + # download-jfrog-artifacts + # ] + # with: + # run_tests: true + # secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + download-jfrog-artifacts, + #test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + download-jfrog-artifacts, + #test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + stage: true + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml diff --git a/aerospike-client-c b/aerospike-client-c index 57160bb73..1b409ff48 160000 --- a/aerospike-client-c +++ b/aerospike-client-c @@ -1 +1 @@ -Subproject commit 57160bb736217c6c96b3f0ce8d310dce18c41b1f +Subproject commit 1b409ff48f0cf07d3a3f6fdc501015ebf4884b8b diff --git a/package-lock.json b/package-lock.json index fd20599f5..0ebbfe12b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.1.0-dev.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.1.0-dev.1", "cpu": [ "x64", "arm64" diff --git a/src/main/commands/enable_metrics.cc b/src/main/commands/enable_metrics.cc index 9f8e2d38d..0b1ea673c 100644 --- a/src/main/commands/enable_metrics.cc +++ b/src/main/commands/enable_metrics.cc @@ -52,7 +52,7 @@ class MetricsCommand : public AerospikeCommand { { Nan::HandleScope scope; if (listeners != NULL){ - cf_free(listeners) + cf_free(listeners); } if (policy != NULL) { cf_free(policy); @@ -77,7 +77,7 @@ class MetricsCommand : public AerospikeCommand { bool* client_closed; bool disabled = false; - as_metrics_listeners* listeners = NULL; + as_metrics_listeners* listeners = NULL; as_metrics_policy* policy = NULL; as_cluster* cluster = NULL; as_node* node = NULL; From e5770719c6cdd29f6ad112182552872045979347 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:28:29 -0700 Subject: [PATCH 145/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 20 +++--- .github/workflows/stage-workflow-p1.yml | 88 ++++++++++++------------- src/main/commands/enable_metrics.cc | 1 - 3 files changed, 54 insertions(+), 55 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 44d183ca8..a6779cdf6 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -33,15 +33,15 @@ jobs: run_tests: true secrets: inherit - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit upload-to-jfrog: name: Upload artifacts to JFrog @@ -51,7 +51,7 @@ jobs: ] uses: ./.github/workflows/upload-to-jfrog.yml with: - version: ${{ needs.bump-dev-number.outputs.new_version }} + version: 6.1.0-dev.1 secrets: inherit # We don't want the artifacts in JFrog to also exist in Github diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index b8790a171..ca1e1dc13 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -26,50 +26,50 @@ on: type: boolean default: false -jobs: - download-jfrog-artifacts: - uses: ./.github/workflows/download-jfrog-artifacts.yml - with: - version: 6.0.2.dev1 - secrets: inherit - - #test-with-server-release: - # uses: ./.github/workflows/test-artifacts.yml - # needs: [ - # download-jfrog-artifacts - # ] - # with: - # run_tests: true - # secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - download-jfrog-artifacts, - #test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - download-jfrog-artifacts, - #test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - stage: true - version: ${{ needs.bump-dev-number.outputs.new_version }} - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml +#jobs: +# download-jfrog-artifacts: +# uses: ./.github/workflows/download-jfrog-artifacts.yml +# with: +# version: 6.0.2.dev1 +# secrets: inherit +# +# #test-with-server-release: +# # uses: ./.github/workflows/test-artifacts.yml +# # needs: [ +# # download-jfrog-artifacts +# # ] +# # with: +# # run_tests: true +# # secrets: inherit +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# download-jfrog-artifacts, +# #test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# download-jfrog-artifacts, +# #test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# stage: true +# version: 6.1.0-dev.1 +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml diff --git a/src/main/commands/enable_metrics.cc b/src/main/commands/enable_metrics.cc index 0b1ea673c..623877f64 100644 --- a/src/main/commands/enable_metrics.cc +++ b/src/main/commands/enable_metrics.cc @@ -20,7 +20,6 @@ #include "conversions.h" #include "policy.h" #include "log.h" -#include #include #include From 32820d1a0b4717161737a37e4be2361d69ee6de0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:29:41 -0700 Subject: [PATCH 146/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index a6779cdf6..d245ec3e9 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -47,7 +47,7 @@ jobs: name: Upload artifacts to JFrog needs: [ test-with-server-release, - bump-dev-number + #bump-dev-number ] uses: ./.github/workflows/upload-to-jfrog.yml with: From cd236500d854e79ad49cac7c60ed0b6cda665bea Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:37:13 -0700 Subject: [PATCH 147/161] PIPELINE IMPROVMENTS --- src/main/commands/enable_metrics.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/commands/enable_metrics.cc b/src/main/commands/enable_metrics.cc index 623877f64..6784a4c88 100644 --- a/src/main/commands/enable_metrics.cc +++ b/src/main/commands/enable_metrics.cc @@ -212,9 +212,9 @@ static void respond_enable(uv_work_t *req, int status) as_v8_debug(log, "Executing Metrics Enable Callback"); - Local argv[] = {}; + Local argv[] = {Nan::Null()}; - cmd->Enable_Callback(0, argv); + cmd->Enable_Callback(1, argv); delete req; } From 25d00e4e3b15308c9f8d62b53b671b737902221c Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:41:28 -0700 Subject: [PATCH 148/161] PIPELINE IMPROVMENTS --- ts-test/tests/metrics.ts | 2 +- ts-test/tests/metrics_cluster_name.ts | 2 +- ts-test/tests/metrics_node_close.ts | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/ts-test/tests/metrics.ts b/ts-test/tests/metrics.ts index 6c400e1d6..f72222dad 100644 --- a/ts-test/tests/metrics.ts +++ b/ts-test/tests/metrics.ts @@ -30,7 +30,7 @@ import * as fs from 'fs'; describe('Metrics tests', function () { const client: Cli = helper.client - + this.timeout(10000) const blank_policy: MetricsPolicy = new Aerospike.MetricsPolicy() diff --git a/ts-test/tests/metrics_cluster_name.ts b/ts-test/tests/metrics_cluster_name.ts index 2551426b4..c4f3d382f 100644 --- a/ts-test/tests/metrics_cluster_name.ts +++ b/ts-test/tests/metrics_cluster_name.ts @@ -30,7 +30,7 @@ import * as helper from './test_helper'; describe('Test metrics cluster name', async function () { const client: Cli = helper.client - + this.timeout(40000) helper.skipUnlessAdvancedMetrics(this) diff --git a/ts-test/tests/metrics_node_close.ts b/ts-test/tests/metrics_node_close.ts index 6a533232f..897d274ee 100644 --- a/ts-test/tests/metrics_node_close.ts +++ b/ts-test/tests/metrics_node_close.ts @@ -33,6 +33,7 @@ describe('Metrics node close test', async function () { let nodeCloseTriggered: boolean = false + this.timeout(40000) function enableListener() { return From 968209ff2261b731adc027f7502e3ba63522a665 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 10:49:14 -0700 Subject: [PATCH 149/161] PIPELINE IMPROVMENTS --- ts-test/tests/metrics_node_close.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ts-test/tests/metrics_node_close.ts b/ts-test/tests/metrics_node_close.ts index 897d274ee..123a22e64 100644 --- a/ts-test/tests/metrics_node_close.ts +++ b/ts-test/tests/metrics_node_close.ts @@ -32,8 +32,8 @@ import * as helper from './test_helper'; describe('Metrics node close test', async function () { let nodeCloseTriggered: boolean = false - this.timeout(40000) + helper.skipUnlessAdvancedMetrics(this) function enableListener() { return From c5a20a03a020007a6abadef29b72103fca80d748 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 11:29:20 -0700 Subject: [PATCH 150/161] PIPELINE IMPROVMENTS --- .github/workflows/build-bindings.yml | 10 +- .github/workflows/dev-workflow-p1.yml | 116 ++++++++++++------------ .github/workflows/stage-workflow-p1.yml | 88 +++++++++--------- 3 files changed, 107 insertions(+), 107 deletions(-) diff --git a/.github/workflows/build-bindings.yml b/.github/workflows/build-bindings.yml index df39a489a..7b9b9905f 100644 --- a/.github/workflows/build-bindings.yml +++ b/.github/workflows/build-bindings.yml @@ -224,11 +224,11 @@ jobs: npm install; ls lib/binding; - - name: Debug server - run: | - docker ps; - docker logs aerospike; - + #- name: Debug server + # run: | + # docker ps; + # docker logs aerospike; + - name: Run tests if: ${{ inputs.run_tests && inputs.platform-tag == 'manylinux_x86_64'}} run: | diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index d245ec3e9..1b1ae3ed3 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,38 +1,38 @@ -name: Dev workflow (part 1) - -# 1. When a PR review is requested, run tests on that PR -# 2. If all of the tests pass, allow the PR to be merged into `dev` -# 3. Whenever a PR is merged to `dev`, bump version number in `dev` - -on: - pull_request: - types: - - opened - - review_requested - - synchronize - branches: - - 'dev*' - - 'dev-CICD' - - '2024-Pipeline-Improvement' - paths-ignore: - - 'docs/**' - - 'aerospike-stubs/**' - - # So we can test changes to the test-server-rc workflow - workflow_dispatch: - inputs: - run_server_release_tests: - description: 'DEBUG: Run server release tests in build-wheels workflow?' - type: boolean - default: false - -jobs: - test-with-server-release: - uses: ./.github/workflows/build-artifacts.yml - with: - run_tests: true - secrets: inherit - +#name: Dev workflow (part 1) +# +## 1. When a PR review is requested, run tests on that PR +## 2. If all of the tests pass, allow the PR to be merged into `dev` +## 3. Whenever a PR is merged to `dev`, bump version number in `dev` +# +#on: +# pull_request: +# types: +# - opened +# - review_requested +# - synchronize +# branches: +# - 'dev*' +# - 'dev-CICD' +# - '2024-Pipeline-Improvement' +# paths-ignore: +# - 'docs/**' +# - 'aerospike-stubs/**' +# +# # So we can test changes to the test-server-rc workflow +# workflow_dispatch: +# inputs: +# run_server_release_tests: +# description: 'DEBUG: Run server release tests in build-wheels workflow?' +# type: boolean +# default: false +# +#jobs: +# test-with-server-release: +# uses: ./.github/workflows/build-artifacts.yml +# with: +# run_tests: true +# secrets: inherit +# # bump-dev-number: # #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} # uses: ./.github/workflows/bump-version.yml @@ -42,27 +42,27 @@ jobs: # with: # change: 'bump-dev-num' # secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - test-with-server-release, - #bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - version: 6.1.0-dev.1 - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml - - -# test-with-server-rc: -# needs: test-with-server-release -# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -# uses: ./.github/workflows/test-server-rc.yml +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# version: ${{ needs.bump-dev-number.outputs.new_version }} # secrets: inherit -# \ No newline at end of file +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml +# +# +## test-with-server-rc: +## needs: test-with-server-release +## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +## uses: ./.github/workflows/test-server-rc.yml +## secrets: inherit +## \ No newline at end of file diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index ca1e1dc13..4e6d0880d 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -26,50 +26,50 @@ on: type: boolean default: false -#jobs: -# download-jfrog-artifacts: -# uses: ./.github/workflows/download-jfrog-artifacts.yml -# with: -# version: 6.0.2.dev1 -# secrets: inherit -# -# #test-with-server-release: -# # uses: ./.github/workflows/test-artifacts.yml -# # needs: [ -# # download-jfrog-artifacts -# # ] -# # with: -# # run_tests: true -# # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# download-jfrog-artifacts, -# #test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# download-jfrog-artifacts, -# #test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# stage: true -# version: 6.1.0-dev.1 -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml +jobs: + download-jfrog-artifacts: + uses: ./.github/workflows/download-jfrog-artifacts.yml + with: + version: 6.0.2.dev1 + secrets: inherit + + #test-with-server-release: + # uses: ./.github/workflows/test-artifacts.yml + # needs: [ + # download-jfrog-artifacts + # ] + # with: + # run_tests: true + # secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + download-jfrog-artifacts, + #test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + download-jfrog-artifacts, + #test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + stage: true + version: 6.1.0-dev.1 + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml From a461e089a91e2da7ada817d49dc56eced7d3dd3c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 18:30:56 +0000 Subject: [PATCH 151/161] Auto-bump version to 6.1.0-rc.1 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0ebbfe12b..9dce9f261 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.1.0-dev.1", + "version": "6.1.0-rc.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.1.0-dev.1", + "version": "6.1.0-rc.1", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 81a4625c1..099623355 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.1.0-dev.1", + "version": "6.1.0-rc.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 06bd0540fe6afa3583e34ebbc6fe57f8c21da5ab Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 12:23:33 -0700 Subject: [PATCH 152/161] PIPELINE IMPROVMENTS --- src/main/util/conversions.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/util/conversions.cc b/src/main/util/conversions.cc index a6fe30b6b..2877c2542 100644 --- a/src/main/util/conversions.cc +++ b/src/main/util/conversions.cc @@ -1530,11 +1530,13 @@ void cluster_to_jsobject(as_cluster_s* cluster, Local v8_cluster, latenc as_error_init(&err); char* cluster_name = cluster->cluster_name; - - if (cluster_name == NULL) { - cluster_name = ""; + + if (cluster->cluster_name) { + cluster_name = strdup(cluster->cluster_name); + } else { + cluster_name = strdup(""); // Allocates memory for an empty string } - /* + /* uint32_t cpu_load, mem; as_metrics_process_cpu_load_mem_usage(&err, NULL, &cpu_load, &mem); From e07a673f378d4c6345e3badb5bc2a6d389d8fd52 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 12:27:29 -0700 Subject: [PATCH 153/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 134 ++++++++++++------------ .github/workflows/stage-workflow-p1.yml | 88 ++++++++-------- 2 files changed, 111 insertions(+), 111 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 1b1ae3ed3..44d183ca8 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -1,68 +1,68 @@ -#name: Dev workflow (part 1) -# -## 1. When a PR review is requested, run tests on that PR -## 2. If all of the tests pass, allow the PR to be merged into `dev` -## 3. Whenever a PR is merged to `dev`, bump version number in `dev` -# -#on: -# pull_request: -# types: -# - opened -# - review_requested -# - synchronize -# branches: -# - 'dev*' -# - 'dev-CICD' -# - '2024-Pipeline-Improvement' -# paths-ignore: -# - 'docs/**' -# - 'aerospike-stubs/**' -# -# # So we can test changes to the test-server-rc workflow -# workflow_dispatch: -# inputs: -# run_server_release_tests: -# description: 'DEBUG: Run server release tests in build-wheels workflow?' -# type: boolean -# default: false -# -#jobs: -# test-with-server-release: -# uses: ./.github/workflows/build-artifacts.yml -# with: -# run_tests: true +name: Dev workflow (part 1) + +# 1. When a PR review is requested, run tests on that PR +# 2. If all of the tests pass, allow the PR to be merged into `dev` +# 3. Whenever a PR is merged to `dev`, bump version number in `dev` + +on: + pull_request: + types: + - opened + - review_requested + - synchronize + branches: + - 'dev*' + - 'dev-CICD' + - '2024-Pipeline-Improvement' + paths-ignore: + - 'docs/**' + - 'aerospike-stubs/**' + + # So we can test changes to the test-server-rc workflow + workflow_dispatch: + inputs: + run_server_release_tests: + description: 'DEBUG: Run server release tests in build-wheels workflow?' + type: boolean + default: false + +jobs: + test-with-server-release: + uses: ./.github/workflows/build-artifacts.yml + with: + run_tests: true + secrets: inherit + + bump-dev-number: + #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + uses: ./.github/workflows/bump-version.yml + needs: [ + test-with-server-release + ] + with: + change: 'bump-dev-num' + secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + test-with-server-release, + bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + version: ${{ needs.bump-dev-number.outputs.new_version }} + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml + + +# test-with-server-rc: +# needs: test-with-server-release +# if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} +# uses: ./.github/workflows/test-server-rc.yml # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# version: ${{ needs.bump-dev-number.outputs.new_version }} -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml -# -# -## test-with-server-rc: -## needs: test-with-server-release -## if: ${{ github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, 'new-server-features') }} -## uses: ./.github/workflows/test-server-rc.yml -## secrets: inherit -## \ No newline at end of file +# \ No newline at end of file diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index 4e6d0880d..ca1e1dc13 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -26,50 +26,50 @@ on: type: boolean default: false -jobs: - download-jfrog-artifacts: - uses: ./.github/workflows/download-jfrog-artifacts.yml - with: - version: 6.0.2.dev1 - secrets: inherit - - #test-with-server-release: - # uses: ./.github/workflows/test-artifacts.yml - # needs: [ - # download-jfrog-artifacts - # ] - # with: - # run_tests: true - # secrets: inherit - - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - download-jfrog-artifacts, - #test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - download-jfrog-artifacts, - #test-with-server-release, - bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - stage: true - version: 6.1.0-dev.1 - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml +#jobs: +# download-jfrog-artifacts: +# uses: ./.github/workflows/download-jfrog-artifacts.yml +# with: +# version: 6.0.2.dev1 +# secrets: inherit +# +# #test-with-server-release: +# # uses: ./.github/workflows/test-artifacts.yml +# # needs: [ +# # download-jfrog-artifacts +# # ] +# # with: +# # run_tests: true +# # secrets: inherit +# +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# download-jfrog-artifacts, +# #test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# download-jfrog-artifacts, +# #test-with-server-release, +# bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# stage: true +# version: 6.1.0-dev.1 +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml From f07b8e2181fdf19930c695db8aee69c2295ab7f1 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 12:53:00 -0700 Subject: [PATCH 154/161] PIPELINE IMPROVMENTS --- src/include/conversions.h | 33 +++++++++++++++++++++++++++++++++ src/main/util/conversions.cc | 21 +++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/include/conversions.h b/src/include/conversions.h index e3958db12..eed3a40e7 100644 --- a/src/include/conversions.h +++ b/src/include/conversions.h @@ -224,3 +224,36 @@ int setGeneration(v8::Local obj, uint16_t *generation, const LogInfo *log); size_t as_strlcpy(char *d, const char *s, size_t bufsize); + +static inline void +as_conn_stats_init(as_conn_stats* stats) +{ + stats->in_pool = 0; + stats->in_use = 0; + stats->opened = 0; + stats->closed = 0; +} + +void +as_conn_stats_sum(as_conn_stats* stats, as_async_conn_pool* pool); + +void +as_conn_stats_sum(as_conn_stats* stats, as_async_conn_pool* pool) +{ + // Warning: cross-thread reference without a lock. + int tmp = as_queue_size(&pool->queue); + + // Timing issues may cause values to go negative. Adjust. + if (tmp < 0) { + tmp = 0; + } + stats->in_pool += tmp; + tmp = pool->queue.total - tmp; + + if (tmp < 0) { + tmp = 0; + } + stats->in_use += tmp; + stats->opened += pool->opened; + stats->closed += pool->closed; +} \ No newline at end of file diff --git a/src/main/util/conversions.cc b/src/main/util/conversions.cc index 2877c2542..06dc8e1d5 100644 --- a/src/main/util/conversions.cc +++ b/src/main/util/conversions.cc @@ -1599,6 +1599,27 @@ void cluster_to_jsobject(as_cluster_s* cluster, Local v8_cluster, latenc } +void +as_conn_stats_sum(as_conn_stats* stats, as_async_conn_pool* pool) +{ + // Warning: cross-thread reference without a lock. + int tmp = as_queue_size(&pool->queue); + + // Timing issues may cause values to go negative. Adjust. + if (tmp < 0) { + tmp = 0; + } + stats->in_pool += tmp; + tmp = pool->queue.total - tmp; + + if (tmp < 0) { + tmp = 0; + } + stats->in_use += tmp; + stats->opened += pool->opened; + stats->closed += pool->closed; +} + void node_to_jsobject(as_node_s* node, Local v8_node, latency* latency, uint32_t bucket_max) { Nan::Set(v8_node, Nan::New("name").ToLocalChecked(), Nan::New(node->name).ToLocalChecked()); From c7968f6a617c5501c340ed1d3960ec2833652a8b Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 13:19:54 -0700 Subject: [PATCH 155/161] PIPELINE IMPROVMENTS --- src/include/conversions.h | 27 ++++----------------------- src/main/util/conversions.cc | 4 ++-- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/src/include/conversions.h b/src/include/conversions.h index eed3a40e7..581bc8c80 100644 --- a/src/include/conversions.h +++ b/src/include/conversions.h @@ -22,6 +22,7 @@ extern "C" { #include #include #include +#include #include #include #include @@ -226,34 +227,14 @@ int setGeneration(v8::Local obj, uint16_t *generation, size_t as_strlcpy(char *d, const char *s, size_t bufsize); static inline void -as_conn_stats_init(as_conn_stats* stats) +as_conn_stats_init_internal(as_conn_stats* stats) { stats->in_pool = 0; stats->in_use = 0; stats->opened = 0; stats->closed = 0; -} - -void -as_conn_stats_sum(as_conn_stats* stats, as_async_conn_pool* pool); +}; void -as_conn_stats_sum(as_conn_stats* stats, as_async_conn_pool* pool) -{ - // Warning: cross-thread reference without a lock. - int tmp = as_queue_size(&pool->queue); - - // Timing issues may cause values to go negative. Adjust. - if (tmp < 0) { - tmp = 0; - } - stats->in_pool += tmp; - tmp = pool->queue.total - tmp; +as_conn_stats_sum_internal(as_conn_stats* stats, as_async_conn_pool* pool); - if (tmp < 0) { - tmp = 0; - } - stats->in_use += tmp; - stats->opened += pool->opened; - stats->closed += pool->closed; -} \ No newline at end of file diff --git a/src/main/util/conversions.cc b/src/main/util/conversions.cc index 06dc8e1d5..02faf9c77 100644 --- a/src/main/util/conversions.cc +++ b/src/main/util/conversions.cc @@ -1600,7 +1600,7 @@ void cluster_to_jsobject(as_cluster_s* cluster, Local v8_cluster, latenc } void -as_conn_stats_sum(as_conn_stats* stats, as_async_conn_pool* pool) +as_conn_stats_sum_internal(as_conn_stats* stats, as_async_conn_pool* pool) { // Warning: cross-thread reference without a lock. int tmp = as_queue_size(&pool->queue); @@ -1634,7 +1634,7 @@ void node_to_jsobject(as_node_s* node, Local v8_node, latency* latency, Nan::Set(v8_node, Nan::New("port").ToLocalChecked(), Nan::New(port)); //Should this just by conn in NODEJS struct as_conn_stats_s async; - as_conn_stats_init(&async); + as_conn_stats_init_internal(&async); for (uint32_t i = 0; i < as_event_loop_size; i++) { // Regular async. From 643f4711d5e3510c4e3178e19a001736cb09428a Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 13:26:08 -0700 Subject: [PATCH 156/161] PIPELINE IMPROVMENTS --- src/main/util/conversions.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/util/conversions.cc b/src/main/util/conversions.cc index 02faf9c77..d0e0a2709 100644 --- a/src/main/util/conversions.cc +++ b/src/main/util/conversions.cc @@ -1638,7 +1638,7 @@ void node_to_jsobject(as_node_s* node, Local v8_node, latency* latency, for (uint32_t i = 0; i < as_event_loop_size; i++) { // Regular async. - as_conn_stats_sum(&async, &node->async_conn_pools[i]); + as_conn_stats_sum_internal(&async, &node->async_conn_pools[i]); } Local v8_conn_stats = Nan::New(); From e5cad4f0ce2ffa095bb6a6a2b430cf78b4afaadc Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 28 Feb 2025 20:43:26 +0000 Subject: [PATCH 157/161] Auto-bump version to 6.1.1 [skip ci] --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9dce9f261..2aa8040dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.1.0-rc.1", + "version": "6.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.1.0-rc.1", + "version": "6.1.1", "cpu": [ "x64", "arm64" diff --git a/package.json b/package.json index 099623355..99a408ece 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.1.0-rc.1", + "version": "6.1.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From bac0e4e3c3a6ebc6f46b25efb55da70ade1329a0 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 13:46:33 -0700 Subject: [PATCH 158/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 20 ++++++++++---------- package.json | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index 44d183ca8..a6779cdf6 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -33,15 +33,15 @@ jobs: run_tests: true secrets: inherit - bump-dev-number: - #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - uses: ./.github/workflows/bump-version.yml - needs: [ - test-with-server-release - ] - with: - change: 'bump-dev-num' - secrets: inherit +# bump-dev-number: +# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# uses: ./.github/workflows/bump-version.yml +# needs: [ +# test-with-server-release +# ] +# with: +# change: 'bump-dev-num' +# secrets: inherit upload-to-jfrog: name: Upload artifacts to JFrog @@ -51,7 +51,7 @@ jobs: ] uses: ./.github/workflows/upload-to-jfrog.yml with: - version: ${{ needs.bump-dev-number.outputs.new_version }} + version: 6.1.0-dev.1 secrets: inherit # We don't want the artifacts in JFrog to also exist in Github diff --git a/package.json b/package.json index 99a408ece..81a4625c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "aerospike", - "version": "6.1.1", + "version": "6.1.0-dev.1", "description": "Aerospike Client Library", "keywords": [ "aerospike", From 881ef66a030c3843b3287fa96a60653984a6ecc8 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 13:54:29 -0700 Subject: [PATCH 159/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index a6779cdf6..d245ec3e9 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -47,7 +47,7 @@ jobs: name: Upload artifacts to JFrog needs: [ test-with-server-release, - bump-dev-number + #bump-dev-number ] uses: ./.github/workflows/upload-to-jfrog.yml with: From 123ca470600878b53e6101aed70d5bda85361090 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 14:16:22 -0700 Subject: [PATCH 160/161] PIPELINE IMPROVMENTS --- .github/workflows/stage-workflow-p1.yml | 88 +++++++++--------- typings/index.d.ts | 113 +++++++++++++++++++++++- 2 files changed, 156 insertions(+), 45 deletions(-) diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index ca1e1dc13..a35f8235f 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -26,50 +26,50 @@ on: type: boolean default: false -#jobs: -# download-jfrog-artifacts: -# uses: ./.github/workflows/download-jfrog-artifacts.yml -# with: -# version: 6.0.2.dev1 -# secrets: inherit -# -# #test-with-server-release: -# # uses: ./.github/workflows/test-artifacts.yml -# # needs: [ -# # download-jfrog-artifacts -# # ] -# # with: -# # run_tests: true -# # secrets: inherit -# -# bump-dev-number: -# #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} -# uses: ./.github/workflows/bump-version.yml -# needs: [ -# download-jfrog-artifacts, -# #test-with-server-release -# ] -# with: -# change: 'bump-dev-num' -# secrets: inherit -# -# upload-to-jfrog: -# name: Upload artifacts to JFrog -# needs: [ -# download-jfrog-artifacts, -# #test-with-server-release, -# bump-dev-number -# ] -# uses: ./.github/workflows/upload-to-jfrog.yml -# with: -# stage: true -# version: 6.1.0-dev.1 -# secrets: inherit -# -# # We don't want the artifacts in JFrog to also exist in Github -# delete-artifacts: -# needs: upload-to-jfrog -# uses: ./.github/workflows/delete-artifacts.yml +jobs: + download-jfrog-artifacts: + uses: ./.github/workflows/download-jfrog-artifacts.yml + with: + version: 6.1.0-dev.1 + secrets: inherit + + test-with-server-release: + uses: ./.github/workflows/test-artifacts.yml + needs: [ + download-jfrog-artifacts + ] + with: + run_tests: true + secrets: inherit + + #bump-dev-number: + # #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} + # uses: ./.github/workflows/bump-version.yml + # needs: [ + # download-jfrog-artifacts, + # #test-with-server-release + # ] + # with: + # change: 'bump-dev-num' + # secrets: inherit + + upload-to-jfrog: + name: Upload artifacts to JFrog + needs: [ + download-jfrog-artifacts, + test-with-server-release, + #bump-dev-number + ] + uses: ./.github/workflows/upload-to-jfrog.yml + with: + stage: true + version: 6.1.0-rc.1 + secrets: inherit + + # We don't want the artifacts in JFrog to also exist in Github + delete-artifacts: + needs: upload-to-jfrog + uses: ./.github/workflows/delete-artifacts.yml diff --git a/typings/index.d.ts b/typings/index.d.ts index 900de7370..a46f34de6 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -16454,7 +16454,118 @@ export namespace filter { export function range(bin: string, min: number, max: number, indexType?: indexType, ctx?: cdt.Context): filter.RangePredicate; } - +/** + * Database operation error codes. + * + * @see {@link Query} + * + * Status codes used as return values as AerospikeErro.code values. + * + * + * See the table below to match each status code with its corresponding status. + * + * | Status | Status (without prefix) | Status Code | + * |---------------------------------------------------|-----------------------------------------|-------------| + * | {@link AEROSPIKE_TXN_ALREADY_ABORTED} | {@link TXN_ALREADY_ABORTED} | -19 | + * | {@link AEROSPIKE_TXN_ALREADY_COMMITTED} | {@link TXN_ALREADY_COMMITTED} | -18 | + * | {@link AEROSPIKE_TXN_FAILED} | {@link TXN_FAILED} | -17 | + * | {@link AEROSPIKE_BATCH_FAILED} | {@link BATCH_FAILED} | -16 | + * | {@link AEROSPIKE_NO_RESPONSE} | {@link NO_RESPONSE} | -15 | + * | {@link AEROSPIKE_MAX_ERROR_RATE} | {@link MAX_ERROR_RATE} | -14 | + * | {@link AEROSPIKE_USE_NORMAL_RETRY} | {@link USE_NORMAL_RETRY} | -13 | + * | {@link AEROSPIKE_ERR_MAX_RETRIES_EXCEEDED} | {@link ERR_MAX_RETRIES_EXCEEDED} | -12 | + * | {@link AEROSPIKE_ERR_ASYNC_QUEUE_FULL} | {@link ERR_ASYNC_QUEUE_FULL} | -11 | + * | {@link AEROSPIKE_ERR_CONNECTION} | {@link ERR_CONNECTION} | -10 | + * | {@link AEROSPIKE_ERR_TLS_ERROR} | {@link ERR_TLS_ERROR} | -9 | + * | {@link AEROSPIKE_ERR_INVALID_NODE} | {@link ERR_INVALID_NODE} | -8 | + * | {@link AEROSPIKE_ERR_NO_MORE_CONNECTIONS} | {@link ERR_NO_MORE_CONNECTIONS} | -7 | + * | {@link AEROSPIKE_ERR_ASYNC_CONNECTION} | {@link ERR_ASYNC_CONNECTION} | -6 | + * | {@link AEROSPIKE_ERR_CLIENT_ABORT} | {@link ERR_CLIENT_ABORT} | -5 | + * | {@link AEROSPIKE_ERR_INVALID_HOST} | {@link ERR_INVALID_HOST} | -4 | + * | {@link AEROSPIKE_NO_MORE_RECORDS} | {@link NO_MORE_RECORDS} | -3 | + * | {@link AEROSPIKE_ERR_PARAM} | {@link ERR_PARAM} | -2 | + * | {@link AEROSPIKE_ERR_CLIENT} | {@link ERR_CLIENT} | -1 | + * | {@link AEROSPIKE_OK} | {@link OK} | 0 | + * | {@link AEROSPIKE_ERR_SERVER} | {@link ERR_SERVER} | 1 | + * | {@link AEROSPIKE_ERR_RECORD_NOT_FOUND} | {@link ERR_RECORD_NOT_FOUND} | 2 | + * | {@link AEROSPIKE_ERR_RECORD_GENERATION} | {@link ERR_RECORD_GENERATION} | 3 | + * | {@link AEROSPIKE_ERR_REQUEST_INVALID} | {@link ERR_REQUEST_INVALID} | 4 | + * | {@link AEROSPIKE_ERR_RECORD_EXISTS} | {@link ERR_RECORD_EXISTS} | 5 | + * | {@link AEROSPIKE_ERR_BIN_EXISTS} | {@link ERR_BIN_EXISTS} | 6 | + * | {@link AEROSPIKE_ERR_CLUSTER_CHANGE} | {@link ERR_CLUSTER_CHANGE} | 7 | + * | {@link AEROSPIKE_ERR_SERVER_FULL} | {@link ERR_SERVER_FULL} | 8 | + * | {@link AEROSPIKE_ERR_TIMEOUT} | {@link ERR_TIMEOUT} | 9 | + * | {@link AEROSPIKE_ERR_ALWAYS_FORBIDDEN} | {@link ERR_ALWAYS_FORBIDDEN} | 10 | + * | {@link AEROSPIKE_ERR_CLUSTER} | {@link ERR_CLUSTER} | 11 | + * | {@link AEROSPIKE_ERR_BIN_INCOMPATIBLE_TYPE} | {@link ERR_BIN_INCOMPATIBLE_TYPE} | 12 | + * | {@link AEROSPIKE_ERR_RECORD_TOO_BIG} | {@link ERR_RECORD_TOO_BIG} | 13 | + * | {@link AEROSPIKE_ERR_RECORD_BUSY} | {@link ERR_RECORD_BUSY} | 14 | + * | {@link AEROSPIKE_ERR_SCAN_ABORTED} | {@link ERR_SCAN_ABORTED} | 15 | + * | {@link AEROSPIKE_ERR_UNSUPPORTED_FEATURE} | {@link ERR_UNSUPPORTED_FEATURE} | 16 | + * | {@link AEROSPIKE_ERR_BIN_NOT_FOUND} | {@link ERR_BIN_NOT_FOUND} | 17 | + * | {@link AEROSPIKE_ERR_DEVICE_OVERLOAD} | {@link ERR_DEVICE_OVERLOAD} | 18 | + * | {@link AEROSPIKE_ERR_RECORD_KEY_MISMATCH} | {@link ERR_RECORD_KEY_MISMATCH} | 19 | + * | {@link AEROSPIKE_ERR_NAMESPACE_NOT_FOUND} | {@link ERR_NAMESPACE_NOT_FOUND} | 20 | + * | {@link AEROSPIKE_ERR_BIN_NAME} | {@link ERR_BIN_NAME} | 21 | + * | {@link AEROSPIKE_ERR_FAIL_FORBIDDEN} | {@link ERR_FAIL_FORBIDDEN} | 22 | + * | {@link AEROSPIKE_ERR_FAIL_ELEMENT_NOT_FOUND} | {@link ERR_FAIL_ELEMENT_NOT_FOUND} | 23 | + * | {@link AEROSPIKE_ERR_FAIL_ELEMENT_EXISTS} | {@link ERR_FAIL_ELEMENT_EXISTS} | 24 | + * | {@link AEROSPIKE_ERR_ENTERPRISE_ONLY} | {@link ERR_ENTERPRISE_ONLY} | 25 | + * | {@link AEROSPIKE_ERR_OP_NOT_APPLICABLE} | {@link ERR_OP_NOT_APPLICABLE} | 26 | + * | {@link AEROSPIKE_FILTERED_OUT} | {@link FILTERED_OUT} | 27 | + * | {@link AEROSPIKE_LOST_CONFLICT} | {@link LOST_CONFLICT} | 28 | + * | {@link AEROSPIKE_XDR_KEY_BUSY} | {@link XDR_KEY_BUSY} | 32 | + * | {@link AEROSPIKE_QUERY_END} | {@link QUERY_END} | 50 | + * | {@link AEROSPIKE_SECURITY_NOT_SUPPORTED} | {@link SECURITY_NOT_SUPPORTED} | 51 | + * | {@link AEROSPIKE_SECURITY_NOT_ENABLED} | {@link SECURITY_NOT_ENABLED} | 52 | + * | {@link AEROSPIKE_SECURITY_SCHEME_NOT_SUPPORTED} | {@link SECURITY_SCHEME_NOT_SUPPORTED} | 53 | + * | {@link AEROSPIKE_INVALID_COMMAND} | {@link INVALID_COMMAND} | 54 | + * | {@link AEROSPIKE_INVALID_FIELD} | {@link INVALID_FIELD} | 55 | + * | {@link AEROSPIKE_ILLEGAL_STATE} | {@link ILLEGAL_STATE} | 56 | + * | {@link AEROSPIKE_INVALID_USER} | {@link INVALID_USER} | 60 | + * | {@link AEROSPIKE_USER_ALREADY_EXISTS} | {@link USER_ALREADY_EXISTS} | 61 | + * | {@link AEROSPIKE_INVALID_PASSWORD} | {@link INVALID_PASSWORD} | 62 | + * | {@link AEROSPIKE_EXPIRED_PASSWORD} | {@link EXPIRED_PASSWORD} | 63 | + * | {@link AEROSPIKE_FORBIDDEN_PASSWORD} | {@link FORBIDDEN_PASSWORD} | 64 | + * | {@link AEROSPIKE_INVALID_CREDENTIAL} | {@link INVALID_CREDENTIAL} | 65 | + * | {@link AEROSPIKE_EXPIRED_SESSION} | {@link EXPIRED_SESSION} | 66 | + * | {@link AEROSPIKE_INVALID_ROLE} | {@link INVALID_ROLE} | 70 | + * | {@link AEROSPIKE_ROLE_ALREADY_EXISTS} | {@link ROLE_ALREADY_EXISTS} | 71 | + * | {@link AEROSPIKE_INVALID_PRIVILEGE} | {@link INVALID_PRIVILEGE} | 72 | + * | {@link AEROSPIKE_INVALID_WHITELIST} | {@link INVALID_WHITELIST} | 73 | + * | {@link AEROSPIKE_QUOTAS_NOT_ENABLED} | {@link QUOTAS_NOT_ENABLED} | 74 | + * | {@link AEROSPIKE_INVALID_QUOTA} | {@link INVALID_QUOTA} | 75 | + * | {@link AEROSPIKE_NOT_AUTHENTICATED} | {@link NOT_AUTHENTICATED} | 80 | + * | {@link AEROSPIKE_ROLE_VIOLATION} | {@link ROLE_VIOLATION} | 81 | + * | {@link AEROSPIKE_NOT_WHITELISTED} | {@link NOT_WHITELISTED} | 82 | + * | {@link AEROSPIKE_QUOTA_EXCEEDED} | {@link QUOTA_EXCEEDED} | 83 | + * | {@link AEROSPIKE_ERR_UDF} | {@link ERR_UDF} | 100 | + * | {@link AEROSPIKE_MRT_BLOCKED} | {@link MRT_BLOCKED} | 120 | + * | {@link AEROSPIKE_MRT_VERSION_MISMATCH} | {@link MRT_VERSION_MISMATCH} | 121 | + * | {@link AEROSPIKE_MRT_EXPIRED} | {@link MRT_EXPIRED} | 122 | + * | {@link AEROSPIKE_MRT_TOO_MANY_WRITES} | {@link MRT_TOO_MANY_WRITES} | 123 | + * | {@link AEROSPIKE_MRT_COMMITTED} | {@link MRT_COMMITTED} | 124 | + * | {@link AEROSPIKE_MRT_ABORTED} | {@link MRT_ABORTED} | 125 | + * | {@link AEROSPIKE_MRT_ALREADY_LOCKED} | {@link MRT_ALREADY_LOCKED} | 126 | + * | {@link AEROSPIKE_MRT_MONITOR_EXISTS} | {@link MRT_MONITOR_EXISTS} | 127 | + * | {@link AEROSPIKE_ERR_BATCH_DISABLED} | {@link ERR_BATCH_DISABLED} | 150 | + * | {@link AEROSPIKE_ERR_BATCH_MAX_REQUESTS_EXCEEDED} | {@link ERR_BATCH_MAX_REQUESTS_EXCEEDED} | 151 | + * | {@link AEROSPIKE_ERR_BATCH_QUEUES_FULL} | {@link ERR_BATCH_QUEUES_FULL} | 152 | + * | {@link AEROSPIKE_ERR_GEO_INVALID_GEOJSON} | {@link ERR_GEO_INVALID_GEOJSON} | 160 | + * | {@link AEROSPIKE_ERR_INDEX_FOUND} | {@link ERR_INDEX_FOUND} | 200 | + * | {@link AEROSPIKE_ERR_INDEX_NOT_FOUND} | {@link ERR_INDEX_NOT_FOUND} | 201 | + * | {@link AEROSPIKE_ERR_INDEX_OOM} | {@link ERR_INDEX_OOM} | 202 | + * | {@link AEROSPIKE_ERR_INDEX_NOT_READABLE} | {@link ERR_INDEX_NOT_READABLE} | 203 | + * | {@link AEROSPIKE_ERR_INDEX} | {@link ERR_INDEX} | 204 | + * | {@link AEROSPIKE_ERR_INDEX_NAME_MAXLEN} | {@link ERR_INDEX_NAME_MAXLEN} | 205 | + * | {@link AEROSPIKE_ERR_INDEX_MAXCOUNT} | {@link ERR_INDEX_MAXCOUNT} | 206 | + * | {@link AEROSPIKE_ERR_QUERY_ABORTED} | {@link ERR_QUERY_ABORTED} | 210 | + * | {@link AEROSPIKE_ERR_QUERY_QUEUE_FULL} | {@link ERR_QUERY_QUEUE_FULL} | 211 | + * | {@link AEROSPIKE_ERR_QUERY_TIMEOUT} | {@link ERR_QUERY_TIMEOUT} | 212 | + * | {@link AEROSPIKE_ERR_QUERY} | {@link ERR_QUERY} | 213 | + * | {@link AEROSPIKE_ERR_UDF_NOT_FOUND} | {@link ERR_UDF_NOT_FOUND} | 1301 | + * | {@link AEROSPIKE_ERR_LUA_FILE_NOT_FOUND} | {@link ERR_LUA_FILE_NOT_FOUND} | 1302 | + */ declare namespace statusNamespace { /** * Transaction commit called, but the transaction was already aborted. From 2718917684c2dea9d47bac84094a418d7093d743 Mon Sep 17 00:00:00 2001 From: Dominic Pelini Date: Fri, 28 Feb 2025 14:46:34 -0700 Subject: [PATCH 161/161] PIPELINE IMPROVMENTS --- .github/workflows/dev-workflow-p1.yml | 2 +- .github/workflows/stage-workflow-p1.yml | 88 +- .github/workflows/test-dev-artifacts.yml | 2 +- package-lock.json | 4 +- ts-test/package-lock.json | 9246 ++++++++++++++++++++-- ts-test/tests/metrics_cluster_name.ts | 3 +- ts-test/tests/metrics_node_close.ts | 2 +- 7 files changed, 8579 insertions(+), 768 deletions(-) diff --git a/.github/workflows/dev-workflow-p1.yml b/.github/workflows/dev-workflow-p1.yml index d245ec3e9..ccd1946e0 100644 --- a/.github/workflows/dev-workflow-p1.yml +++ b/.github/workflows/dev-workflow-p1.yml @@ -51,7 +51,7 @@ jobs: ] uses: ./.github/workflows/upload-to-jfrog.yml with: - version: 6.1.0-dev.1 + version: 6.1.0-dev.2 secrets: inherit # We don't want the artifacts in JFrog to also exist in Github diff --git a/.github/workflows/stage-workflow-p1.yml b/.github/workflows/stage-workflow-p1.yml index a35f8235f..f56b4653c 100644 --- a/.github/workflows/stage-workflow-p1.yml +++ b/.github/workflows/stage-workflow-p1.yml @@ -26,50 +26,50 @@ on: type: boolean default: false -jobs: - download-jfrog-artifacts: - uses: ./.github/workflows/download-jfrog-artifacts.yml - with: - version: 6.1.0-dev.1 - secrets: inherit - - test-with-server-release: - uses: ./.github/workflows/test-artifacts.yml - needs: [ - download-jfrog-artifacts - ] - with: - run_tests: true - secrets: inherit - - #bump-dev-number: - # #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} - # uses: ./.github/workflows/bump-version.yml - # needs: [ - # download-jfrog-artifacts, - # #test-with-server-release - # ] - # with: - # change: 'bump-dev-num' - # secrets: inherit - - upload-to-jfrog: - name: Upload artifacts to JFrog - needs: [ - download-jfrog-artifacts, - test-with-server-release, - #bump-dev-number - ] - uses: ./.github/workflows/upload-to-jfrog.yml - with: - stage: true - version: 6.1.0-rc.1 - secrets: inherit - - # We don't want the artifacts in JFrog to also exist in Github - delete-artifacts: - needs: upload-to-jfrog - uses: ./.github/workflows/delete-artifacts.yml +#jobs: +# download-jfrog-artifacts: +# uses: ./.github/workflows/download-jfrog-artifacts.yml +# with: +# version: 6.1.0-dev.1 +# secrets: inherit +# +# test-with-server-release: +# uses: ./.github/workflows/test-artifacts.yml +# needs: [ +# download-jfrog-artifacts +# ] +# with: +# run_tests: true +# secrets: inherit +# +# #bump-dev-number: +# # #if: ${{ github.event_name == 'workflow_dispatch' || github.event.pull_request.merged == true }} +# # uses: ./.github/workflows/bump-version.yml +# # needs: [ +# # download-jfrog-artifacts, +# # #test-with-server-release +# # ] +# # with: +# # change: 'bump-dev-num' +# # secrets: inherit +# +# upload-to-jfrog: +# name: Upload artifacts to JFrog +# needs: [ +# download-jfrog-artifacts, +# test-with-server-release, +# #bump-dev-number +# ] +# uses: ./.github/workflows/upload-to-jfrog.yml +# with: +# stage: true +# version: 6.1.0-rc.1 +# secrets: inherit +# +# # We don't want the artifacts in JFrog to also exist in Github +# delete-artifacts: +# needs: upload-to-jfrog +# uses: ./.github/workflows/delete-artifacts.yml diff --git a/.github/workflows/test-dev-artifacts.yml b/.github/workflows/test-dev-artifacts.yml index 94e509a11..9f1186c39 100644 --- a/.github/workflows/test-dev-artifacts.yml +++ b/.github/workflows/test-dev-artifacts.yml @@ -127,7 +127,7 @@ jobs: shell: bash - test-ee: + test-ee: needs: get-runner-os strategy: matrix: diff --git a/package-lock.json b/package-lock.json index 2aa8040dd..0ebbfe12b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "aerospike", - "version": "6.1.1", + "version": "6.1.0-dev.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aerospike", - "version": "6.1.1", + "version": "6.1.0-dev.1", "cpu": [ "x64", "arm64" diff --git a/ts-test/package-lock.json b/ts-test/package-lock.json index a0983bdc0..b7050cdfb 100644 --- a/ts-test/package-lock.json +++ b/ts-test/package-lock.json @@ -9,8 +9,9 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@types/tmp": "^0.2.6", "aerospike": "file:..", - "dockerode": "^4.0.4" + "dockerode": "^4.0.4", "mocha": "^11.1.0", "typescript": "^5.7.3" }, @@ -19,12 +20,17 @@ "@types/jest": "^29.5.14", "@types/mocha": "^10.0.10", "@types/semver": "^7.5.8", - "@types/tmp": "^0.2.6" + "@types/tmp": "^0.2.6", + "@types/yargs": "^17.0.33", + "mocha": "^10.7.3", + "ts-node": "^10.9.2", + "typedoc": "^0.26.7", + "typescript": "^5.5.4" } }, "..": { "name": "aerospike", - "version": "6.0.3-rc.1", + "version": "6.1.0-dev.1", "cpu": [ "x64", "arm64" @@ -72,10 +78,20 @@ "node": ">=4" } }, - "node_modules/@babel/code-frame": { + "../node_modules/@ampproject/remapping": { + "version": "2.3.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../node_modules/@babel/code-frame": { "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -87,32 +103,363 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { + "../node_modules/@babel/compat-data": { + "version": "7.26.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/core": { + "version": "7.26.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.7", + "@babel/parser": "^7.26.7", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.26.7", + "@babel/types": "^7.26.7", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "../node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../node_modules/@babel/generator": { + "version": "7.26.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/helper-compilation-targets": { + "version": "7.26.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "../node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/@babel/helper-module-imports": { "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@balena/dockerignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", - "license": "Apache-2.0" + "../node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "../node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/helpers": { + "version": "7.26.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/parser": { + "version": "7.26.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../node_modules/@babel/template": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/traverse": { + "version": "7.26.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.7", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/@babel/types": { + "version": "7.26.7", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "../node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "../node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "../node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "../node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "../node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/@eslint/js": { + "version": "9.19.0", "dev": true, "license": "MIT", - "node_modules/@isaacs/cliui": { + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "../node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "../node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "../node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "../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==", "license": "ISC", "dependencies": { "string-width": "^5.1.2", @@ -126,6 +473,7440 @@ "node": ">=12" } }, + "../node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "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", + "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", + "license": "MIT" + }, + "../node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "license": "MIT", + "dependencies": { + "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/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "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", + "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": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "../node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "../node_modules/@mapbox/node-pre-gyp": { + "version": "1.0.11", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "../node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "../node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/@npmcli/agent": { + "version": "2.2.2", + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "../node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.3", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "../node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "../node_modules/@npmcli/fs": { + "version": "3.1.1", + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "../node_modules/@rtsao/scc": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/@shikijs/core": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/engine-javascript": "1.29.1", + "@shikijs/engine-oniguruma": "1.29.1", + "@shikijs/types": "1.29.1", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "../node_modules/@shikijs/engine-javascript": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.1", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "../node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.1", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "../node_modules/@shikijs/langs": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.1" + } + }, + "../node_modules/@shikijs/themes": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.1" + } + }, + "../node_modules/@shikijs/types": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "../node_modules/@shikijs/vscode-textmate": { + "version": "10.0.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/@tootallnate/once": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "../node_modules/@types/hast": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "../node_modules/@types/json5": { + "version": "0.0.29", + "dev": true, + "license": "MIT" + }, + "../node_modules/@types/mdast": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "../node_modules/@types/node": { + "version": "22.10.10", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "../node_modules/@types/unist": { + "version": "3.0.3", + "dev": true, + "license": "MIT" + }, + "../node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/type-utils": "8.21.0", + "@typescript-eslint/utils": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "../node_modules/@typescript-eslint/parser": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "../node_modules/@typescript-eslint/scope-manager": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "../node_modules/@typescript-eslint/type-utils": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.21.0", + "@typescript-eslint/utils": "8.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "../node_modules/@typescript-eslint/types": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "../node_modules/@typescript-eslint/typescript-estree": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/visitor-keys": "8.21.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "../node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/@typescript-eslint/utils": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.21.0", + "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/typescript-estree": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "../node_modules/@typescript-eslint/visitor-keys": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.21.0", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "../node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "../node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "dev": true, + "license": "ISC" + }, + "../node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/acorn": { + "version": "8.14.0", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "../node_modules/acorn-jsx": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "../node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "../node_modules/aggregate-error": { + "version": "3.1.0", + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "../node_modules/ansi-colors": { + "version": "4.1.3", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/ansi-regex": { + "version": "5.0.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/ansi-styles": { + "version": "3.2.1", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/append-transform": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "../node_modules/archy": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/are-we-there-yet": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "../node_modules/argv": { + "version": "0.0.2", + "dev": true, + "engines": { + "node": ">=0.6.10" + } + }, + "../node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/array-includes": { + "version": "3.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/array.prototype.findlast": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/array.prototype.flat": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/assertion-error": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "../node_modules/async-function": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/available-typed-arrays": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/balanced-match": { + "version": "1.0.2", + "license": "MIT" + }, + "../node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/bindings": { + "version": "1.5.0", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "../node_modules/brace-expansion": { + "version": "1.1.11", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "../node_modules/braces": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/browser-stdout": { + "version": "1.3.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/browserslist": { + "version": "4.24.4", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "../node_modules/builtins": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "../node_modules/cacache": { + "version": "18.0.4", + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "../node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../node_modules/cacache/node_modules/foreground-child": { + "version": "3.3.0", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "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": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/cacache/node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/caching-transform": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/call-bind": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/call-bound": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/caniuse-lite": { + "version": "1.0.30001695", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "../node_modules/ccount": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/chai": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/chalk": { + "version": "2.4.2", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/character-entities-html4": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/character-entities-legacy": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/check-error": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "../node_modules/chokidar": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "../node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "../node_modules/choma": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.3.2", + "seedrandom": "^2.4.3" + }, + "peerDependencies": { + "mocha": ">=2" + } + }, + "../node_modules/chownr": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "../node_modules/clean-stack": { + "version": "2.2.0", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "../node_modules/codecov": { + "version": "3.8.3", + "dev": true, + "license": "MIT", + "dependencies": { + "argv": "0.0.2", + "ignore-walk": "3.0.4", + "js-yaml": "3.14.1", + "teeny-request": "7.1.1", + "urlgrey": "1.0.0" + }, + "bin": { + "codecov": "bin/codecov" + }, + "engines": { + "node": ">=4.0" + } + }, + "../node_modules/color-convert": { + "version": "1.9.3", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "../node_modules/color-name": { + "version": "1.1.3", + "license": "MIT" + }, + "../node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "../node_modules/comma-separated-tokens": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/concat-map": { + "version": "0.0.1", + "license": "MIT" + }, + "../node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, + "../node_modules/convert-source-map": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/cross-spawn": { + "version": "7.0.6", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/data-view-buffer": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/data-view-byte-length": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "../node_modules/data-view-byte-offset": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/debug": { + "version": "4.4.0", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "../node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/deep-eql": { + "version": "4.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "../node_modules/default-require-extensions": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "strip-bom": "^4.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/define-data-property": { + "version": "1.1.4", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/define-properties": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/dequal": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/detect-libc": { + "version": "2.0.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "../node_modules/devlop": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/diff": { + "version": "5.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "../node_modules/doctrine": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "../node_modules/dunder-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/eastasianwidth": { + "version": "0.2.0", + "license": "MIT" + }, + "../node_modules/electron-to-chromium": { + "version": "1.5.88", + "dev": true, + "license": "ISC" + }, + "../node_modules/emoji-regex": { + "version": "8.0.0", + "license": "MIT" + }, + "../node_modules/emoji-regex-xs": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/encoding": { + "version": "0.1.13", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "../node_modules/entities": { + "version": "4.5.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "../node_modules/env-paths": { + "version": "2.2.1", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/err-code": { + "version": "2.0.3", + "license": "MIT" + }, + "../node_modules/error-ex": { + "version": "1.3.2", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "../node_modules/es-abstract": { + "version": "1.23.9", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/es-define-property": { + "version": "1.0.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/es-errors": { + "version": "1.3.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/es-iterator-helpers": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/es-object-atoms": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/es-set-tostringtag": { + "version": "2.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/es-shim-unscopables": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "../node_modules/es-to-primitive": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/es6-error": { + "version": "4.1.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/escalade": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/escape-string-regexp": { + "version": "1.0.5", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "../node_modules/eslint": { + "version": "8.57.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "../node_modules/eslint-config-standard": { + "version": "17.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" + } + }, + "../node_modules/eslint-config-standard-jsx": { + "version": "11.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "peerDependencies": { + "eslint": "^8.8.0", + "eslint-plugin-react": "^7.28.0" + } + }, + "../node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "../node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "../node_modules/eslint-module-utils": { + "version": "2.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "../node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "../node_modules/eslint-plugin-es": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" + } + }, + "../node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "../node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" + } + }, + "../node_modules/eslint-plugin-import": { + "version": "2.31.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "../node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "../node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../node_modules/eslint-plugin-n": { + "version": "15.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" + }, + "engines": { + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "../node_modules/eslint-plugin-promise": { + "version": "6.6.0", + "dev": true, + "license": "ISC", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "../node_modules/eslint-plugin-react": { + "version": "7.37.4", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.2.1", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "../node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../node_modules/eslint-scope": { + "version": "7.2.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "../node_modules/eslint-utils": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "../node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "../node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "../node_modules/eslint/node_modules/@eslint/js": { + "version": "8.57.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "../node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "../node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "../node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/espree": { + "version": "9.6.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "../node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/esquery": { + "version": "1.6.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "../node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "../node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "../node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/exponential-backoff": { + "version": "3.1.1", + "license": "Apache-2.0" + }, + "../node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "../node_modules/fast-glob": { + "version": "3.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "../node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "../node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "../node_modules/fast-url-parser": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^1.3.2" + } + }, + "../node_modules/fast-url-parser/node_modules/punycode": { + "version": "1.4.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/fastq": { + "version": "1.18.0", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "../node_modules/file-entry-cache": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "../node_modules/file-uri-to-path": { + "version": "1.0.0", + "license": "MIT" + }, + "../node_modules/fill-range": { + "version": "7.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "../node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/flat": { + "version": "5.0.2", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "../node_modules/flat-cache": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "../node_modules/flatted": { + "version": "3.3.2", + "dev": true, + "license": "ISC" + }, + "../node_modules/for-each": { + "version": "0.3.4", + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/foreground-child": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "../node_modules/fromentries": { + "version": "1.3.2", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "../node_modules/fs-minipass": { + "version": "3.0.3", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "../node_modules/function-bind": { + "version": "1.1.2", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/function.prototype.name": { + "version": "1.1.8", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/functions-have-names": { + "version": "1.2.3", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/gauge": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "../node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "../node_modules/get-func-name": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "../node_modules/get-intrinsic": { + "version": "1.2.7", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/get-package-type": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "../node_modules/get-proto": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/get-stdin": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/get-symbol-description": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/glob": { + "version": "8.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "../node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/globals": { + "version": "15.14.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/globalthis": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/gopd": { + "version": "1.2.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "../node_modules/graphemer": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/has-bigints": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/has-flag": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/has-property-descriptors": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/has-proto": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/has-symbols": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/has-tostringtag": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/hasha": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/hasown": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/hast-util-to-html": { + "version": "9.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/hast-util-whitespace": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/he": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "../node_modules/hosted-git-info": { + "version": "2.8.9", + "license": "ISC" + }, + "../node_modules/html-escaper": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "../node_modules/html-void-elements": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/http-cache-semantics": { + "version": "4.1.1", + "license": "BSD-2-Clause" + }, + "../node_modules/http-proxy-agent": { + "version": "7.0.2", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "../node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "../node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "../node_modules/husky": { + "version": "9.1.7", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "../node_modules/iconv-lite": { + "version": "0.6.3", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/ignore": { + "version": "5.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "../node_modules/ignore-walk": { + "version": "3.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "../node_modules/import-fresh": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/imurmurhash": { + "version": "0.1.4", + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "../node_modules/indent-string": { + "version": "4.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "../node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "../node_modules/internal-slot": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/ip-address": { + "version": "9.0.5", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "../node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "license": "BSD-3-Clause" + }, + "../node_modules/is-array-buffer": { + "version": "3.0.5", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-arrayish": { + "version": "0.2.1", + "license": "MIT" + }, + "../node_modules/is-async-function": { + "version": "2.1.1", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-bigint": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-binary-path": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/is-boolean-object": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-callable": { + "version": "1.2.7", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-core-module": { + "version": "2.16.1", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-data-view": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-date-object": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/is-finalizationregistry": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/is-generator-function": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/is-lambda": { + "version": "1.0.1", + "license": "MIT" + }, + "../node_modules/is-map": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "../node_modules/is-number-object": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-path-inside": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/is-plain-obj": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/is-regex": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-set": { + "version": "2.0.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-stream": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/is-string": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-symbol": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-typed-array": { + "version": "1.1.15", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/is-weakmap": { + "version": "2.0.2", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-weakref": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-weakset": { + "version": "2.0.4", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/is-windows": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/isarray": { + "version": "2.0.5", + "license": "MIT" + }, + "../node_modules/isexe": { + "version": "2.0.0", + "license": "ISC" + }, + "../node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "append-transform": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-processinfo/node_modules/p-map": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-report": { + "version": "3.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/istanbul-reports": { + "version": "3.1.7", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/iterator.prototype": { + "version": "1.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/jackspeak": { + "version": "3.4.3", + "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", + "dev": true, + "license": "MIT" + }, + "../node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "../node_modules/jsbn": { + "version": "1.1.0", + "license": "MIT" + }, + "../node_modules/jsesc": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/json-buffer": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/json-parse-better-errors": { + "version": "1.0.2", + "license": "MIT" + }, + "../node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/json5": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/jsx-ast-utils": { + "version": "3.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "../node_modules/keyv": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "../node_modules/levn": { + "version": "0.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "../node_modules/linkify-it": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "../node_modules/load-json-file": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/lodash.flattendeep": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/lodash.merge": { + "version": "4.6.2", + "dev": true, + "license": "MIT" + }, + "../node_modules/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "../node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "../node_modules/loupe": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "../node_modules/lru-cache": { + "version": "10.4.3", + "license": "ISC" + }, + "../node_modules/lunr": { + "version": "2.3.9", + "dev": true, + "license": "MIT" + }, + "../node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "../node_modules/make-fetch-happen": { + "version": "13.0.1", + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "../node_modules/markdown-it": { + "version": "14.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "../node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "../node_modules/math-intrinsics": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/mdurl": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/memorystream": { + "version": "0.3.1", + "engines": { + "node": ">= 0.10.0" + } + }, + "../node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "../node_modules/micromark-util-character": { + "version": "2.1.1", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "../node_modules/micromark-util-encode": { + "version": "2.0.1", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "../node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "../node_modules/micromark-util-symbol": { + "version": "2.0.1", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "../node_modules/micromark-util-types": { + "version": "2.0.1", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "../node_modules/micromatch": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "../node_modules/minimatch": { + "version": "3.1.2", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "../node_modules/minimist": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/minipass": { + "version": "7.1.2", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "../node_modules/minipass-collect": { + "version": "2.0.1", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "../node_modules/minipass-fetch": { + "version": "3.0.5", + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "../node_modules/minipass-flush": { + "version": "1.0.5", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/minipass-pipeline": { + "version": "1.2.4", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/minipass-sized": { + "version": "1.0.3", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/minizlib": { + "version": "2.1.2", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/mkdirp": { + "version": "1.0.4", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/mocha": { + "version": "10.8.2", + "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": "^8.1.0", + "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": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "../node_modules/mocha-clean": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "../node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "../node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "../node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "../node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/ms": { + "version": "2.1.3", + "license": "MIT" + }, + "../node_modules/nan": { + "version": "2.22.0", + "license": "MIT" + }, + "../node_modules/natural-compare": { + "version": "1.4.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/negotiator": { + "version": "0.6.4", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "../node_modules/nice-try": { + "version": "1.0.5", + "license": "MIT" + }, + "../node_modules/node-fetch": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "../node_modules/node-gyp": { + "version": "10.3.1", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "../node_modules/node-gyp/node_modules/abbrev": { + "version": "2.0.0", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../node_modules/node-gyp/node_modules/foreground-child": { + "version": "3.3.0", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/node-gyp/node_modules/glob": { + "version": "10.4.5", + "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": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "../node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.5", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/node-gyp/node_modules/nopt": { + "version": "7.2.1", + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/node-gyp/node_modules/signal-exit": { + "version": "4.1.0", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "../node_modules/node-preload": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "process-on-spawn": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/node-releases": { + "version": "2.0.19", + "dev": true, + "license": "MIT" + }, + "../node_modules/nopt": { + "version": "5.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/normalize-package-data": { + "version": "2.5.0", + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "../node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "../node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/npm-run-all": { + "version": "4.1.5", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "../node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "../node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "../node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "../node_modules/npmlog": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "../node_modules/nyc": { + "version": "15.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "../node_modules/nyc/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "../node_modules/nyc/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../node_modules/nyc/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "../node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/object-inspect": { + "version": "1.13.3", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/object-keys": { + "version": "1.1.1", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/object.assign": { + "version": "4.1.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/object.entries": { + "version": "1.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/object.fromentries": { + "version": "2.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/object.groupby": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/object.values": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "../node_modules/oniguruma-to-es": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "../node_modules/optionator": { + "version": "0.9.4", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "../node_modules/own-keys": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/p-map": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/p-throttle": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/package-hash": { + "version": "4.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/package-json-from-dist": { + "version": "1.0.1", + "license": "BlueOak-1.0.0" + }, + "../node_modules/parent-module": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/parse-json": { + "version": "4.0.0", + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/path-key": { + "version": "3.1.1", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/path-parse": { + "version": "1.0.7", + "license": "MIT" + }, + "../node_modules/path-scurry": { + "version": "1.11.1", + "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-type": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/pathval": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "../node_modules/picocolors": { + "version": "1.1.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "../node_modules/pidtree": { + "version": "0.3.1", + "license": "MIT", + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "../node_modules/pify": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/pkg-conf": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-conf/node_modules/find-up": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-conf/node_modules/load-json-file": { + "version": "5.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-conf/node_modules/locate-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-conf/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/pkg-conf/node_modules/p-locate": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/pkg-conf/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-conf/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/pkg-conf/node_modules/type-fest": { + "version": "0.3.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=6" + } + }, + "../node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/possible-typed-array-names": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/prelude-ls": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "../node_modules/proc-log": { + "version": "4.2.0", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/process-on-spawn": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "fromentries": "^1.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/promise-retry": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/prop-types": { + "version": "15.8.1", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "../node_modules/property-information": { + "version": "6.5.0", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/punycode": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/punycode.js": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "../node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "../node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "../node_modules/react-is": { + "version": "16.13.1", + "dev": true, + "license": "MIT" + }, + "../node_modules/read-pkg": { + "version": "3.0.0", + "license": "MIT", + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "../node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "../node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/regex": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "../node_modules/regex-recursion": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "../node_modules/regex-utilities": { + "version": "2.3.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/regexpp": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "../node_modules/release-zalgo": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "es6-error": "^4.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "../node_modules/resolve": { + "version": "1.22.10", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/retry": { + "version": "0.12.0", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "../node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "../node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "../node_modules/safe-array-concat": { + "version": "1.1.3", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "../node_modules/safe-push-apply": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/safe-regex-test": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT", + "optional": true + }, + "../node_modules/seedrandom": { + "version": "2.4.4", + "dev": true, + "license": "MIT" + }, + "../node_modules/semver": { + "version": "7.6.3", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/serialize-javascript": { + "version": "6.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "../node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "../node_modules/set-function-length": { + "version": "1.2.2", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/set-function-name": { + "version": "2.0.2", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/set-proto": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/shebang-command": { + "version": "2.0.0", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/shebang-regex": { + "version": "3.0.0", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/shell-quote": { + "version": "1.8.2", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/shiki": { + "version": "1.29.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.1", + "@shikijs/engine-javascript": "1.29.1", + "@shikijs/engine-oniguruma": "1.29.1", + "@shikijs/langs": "1.29.1", + "@shikijs/themes": "1.29.1", + "@shikijs/types": "1.29.1", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "../node_modules/side-channel": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/side-channel-list": { + "version": "1.0.0", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/side-channel-map": { + "version": "1.0.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/side-channel-weakmap": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "../node_modules/smart-buffer": { + "version": "4.2.0", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "../node_modules/socks": { + "version": "2.8.3", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "../node_modules/socks-proxy-agent": { + "version": "8.0.5", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "../node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "../node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/space-separated-tokens": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/spawn-wrap": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/spdx-correct": { + "version": "3.2.0", + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "../node_modules/spdx-exceptions": { + "version": "2.5.0", + "license": "CC-BY-3.0" + }, + "../node_modules/spdx-expression-parse": { + "version": "3.0.1", + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "../node_modules/spdx-license-ids": { + "version": "3.0.21", + "license": "CC0-1.0" + }, + "../node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "../node_modules/ssri": { + "version": "10.0.6", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/standard": { + "version": "17.1.2", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "eslint": "^8.41.0", + "eslint-config-standard": "17.1.0", + "eslint-config-standard-jsx": "^11.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-n": "^15.7.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.36.1", + "standard-engine": "^15.1.0", + "version-guard": "^1.1.1" + }, + "bin": { + "standard": "bin/cmd.cjs" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "../node_modules/standard-engine": { + "version": "15.1.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "get-stdin": "^8.0.0", + "minimist": "^1.2.6", + "pkg-conf": "^3.1.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "../node_modules/stream-events": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "stubs": "^3.0.0" + } + }, + "../node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "../node_modules/string-width": { + "version": "4.2.3", + "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/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "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/string.prototype.matchall": { + "version": "4.0.12", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", + "set-function-name": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/string.prototype.padend": { + "version": "3.1.6", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/string.prototype.repeat": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "../node_modules/string.prototype.trim": { + "version": "1.2.10", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/string.prototype.trimend": { + "version": "1.0.9", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/stringify-entities": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/strip-ansi": { + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/strip-bom": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/strip-json-comments": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/stubs": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/supports-color": { + "version": "5.5.0", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "../node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/tar": { + "version": "6.2.1", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "../node_modules/teeny-request": { + "version": "7.1.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "http-proxy-agent": "^4.0.0", + "https-proxy-agent": "^5.0.0", + "node-fetch": "^2.6.1", + "stream-events": "^1.0.5", + "uuid": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/teeny-request/node_modules/http-proxy-agent": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "../node_modules/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "../node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/tmp": { + "version": "0.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "../node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "../node_modules/tr46": { + "version": "0.0.3", + "dev": true, + "license": "MIT" + }, + "../node_modules/trim-lines": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "../node_modules/ts-api-utils": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "../node_modules/tsconfig-paths": { + "version": "3.15.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "../node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "../node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/type-check": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "../node_modules/type-detect": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "../node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "../node_modules/typed-array-buffer": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "../node_modules/typed-array-byte-length": { + "version": "1.0.3", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/typed-array-length": { + "version": "1.0.7", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "../node_modules/typedoc": { + "version": "0.26.11", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lunr": "^2.3.9", + "markdown-it": "^14.1.0", + "minimatch": "^9.0.5", + "shiki": "^1.16.2", + "yaml": "^2.5.1" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x" + } + }, + "../node_modules/typedoc-plugin-rename-defaults": { + "version": "0.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^8.0.0" + }, + "peerDependencies": { + "typedoc": ">=0.22.x <0.28.x" + } + }, + "../node_modules/typedoc-plugin-rename-defaults/node_modules/camelcase": { + "version": "8.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/typedoc/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "../node_modules/typedoc/node_modules/minimatch": { + "version": "9.0.5", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "../node_modules/typescript": { + "version": "5.6.3", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "../node_modules/typescript-eslint": { + "version": "8.21.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.21.0", + "@typescript-eslint/parser": "8.21.0", + "@typescript-eslint/utils": "8.21.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "../node_modules/uc.micro": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/unbox-primitive": { + "version": "1.1.0", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/undici-types": { + "version": "6.20.0", + "dev": true, + "license": "MIT" + }, + "../node_modules/unique-filename": { + "version": "3.0.0", + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/unique-slug": { + "version": "4.0.0", + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "../node_modules/unist-util-is": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/unist-util-position": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/unist-util-visit": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/update-browserslist-db": { + "version": "1.1.2", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "../node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "../node_modules/urlgrey": { + "version": "1.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "fast-url-parser": "^1.1.3" + } + }, + "../node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "../node_modules/uuid": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "../node_modules/validate-npm-package-license": { + "version": "3.0.4", + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "../node_modules/version-guard": { + "version": "1.1.3", + "dev": true, + "license": "0BSD", + "engines": { + "node": ">=0.10.48" + } + }, + "../node_modules/vfile": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/vfile-message": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "../node_modules/webidl-conversions": { + "version": "3.0.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "../node_modules/whatwg-url": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "../node_modules/which": { + "version": "2.0.2", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "../node_modules/which-boxed-primitive": { + "version": "1.1.1", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/which-builtin-type": { + "version": "1.2.1", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/which-collection": { + "version": "1.0.2", + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/which-module": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "../node_modules/which-typed-array": { + "version": "1.1.18", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "../node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "../node_modules/word-wrap": { + "version": "1.2.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "../node_modules/workerpool": { + "version": "6.5.1", + "dev": true, + "license": "Apache-2.0" + }, + "../node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "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", + "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/node_modules/ansi-styles": { + "version": "4.3.0", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "license": "MIT" + }, + "../node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "../node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "../node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "../node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "../node_modules/write-file-atomic": { + "version": "3.0.3", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "../node_modules/xdg-basedir": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "../node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "../node_modules/yallist": { + "version": "4.0.0", + "license": "ISC" + }, + "../node_modules/yaml": { + "version": "2.7.0", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "../node_modules/yargs": { + "version": "17.7.2", + "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" + }, + "engines": { + "node": ">=12" + } + }, + "../node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "../node_modules/yargs-unparser": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "../node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "../node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "../node_modules/zwitch": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "license": "Apache-2.0" + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.12.6", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.12.6.tgz", @@ -157,51 +7938,8 @@ "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==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "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==", - "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" - }, - "engines": { - "node": ">=12" - } - }, - "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==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/@jest/expect-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "license": "MIT", "dependencies": { @@ -213,8 +7951,6 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "license": "MIT", "dependencies": { @@ -226,8 +7962,6 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "license": "MIT", "dependencies": { @@ -242,14 +7976,14 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "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==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=14" + "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -345,61 +8079,116 @@ "license": "BSD-3-Clause" }, "node_modules/@shikijs/core": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.21.0.tgz", - "integrity": "sha512-zAPMJdiGuqXpZQ+pWNezQAk5xhzRXBNiECFPcJLtUdsFM3f//G95Z15EHTnHchYycU8kIIysqGgxp8OVSj1SPQ==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.21.0", - "@shikijs/engine-oniguruma": "1.21.0", - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.3" + "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.21.0.tgz", - "integrity": "sha512-jxQHNtVP17edFW4/0vICqAVLDAxmyV31MQJL4U/Kg+heQALeKYVOWo0sMmEZ18FqBt+9UCdyqGKYE7bLRtk9mg==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2", - "oniguruma-to-js": "0.4.3" + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.21.0.tgz", - "integrity": "sha512-AIZ76XocENCrtYzVU7S4GY/HL+tgHGbVU+qhiDyNw1qgCA5OSi4B4+HY4BtAoJSMGuD/L5hfTzoRVbzEm2WTvg==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/types": "1.21.0", - "@shikijs/vscode-textmate": "^9.2.2" + "@shikijs/types": "1.29.2" } }, "node_modules/@shikijs/types": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.21.0.tgz", - "integrity": "sha512-tzndANDhi5DUndBtpojEq/42+dpUF2wS7wdCDQaFtIXm3Rd1QkrcVgSSRLOvEwexekihOXfbYJINW37g96tJRw==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.2.2", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "dev": true, "license": "MIT" }, "node_modules/@types/chai": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.0.1.tgz", - "integrity": "sha512-5T8ajsg3M/FOncpLYW7sdOcD6yf4+722sze/tc4KQV0P8Z2rAr3SAuHCIkYmYpt8VbcQlnz8SxlOlPQYefe4cA==", "dev": true, "license": "MIT", "dependencies": { @@ -408,22 +8197,26 @@ }, "node_modules/@types/deep-eql": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", "dev": true, "license": "MIT" }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { @@ -432,8 +8225,6 @@ }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -442,8 +8233,6 @@ }, "node_modules/@types/jest": { "version": "29.5.14", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", - "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -451,18 +8240,23 @@ "pretty-format": "^29.0.0" } }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/@types/mocha": { "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { "version": "22.13.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", - "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", - "dev": true, "license": "MIT", "dependencies": { "undici-types": "~6.20.0" @@ -470,29 +8264,28 @@ }, "node_modules/@types/semver": { "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true, "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, "license": "MIT" }, "node_modules/@types/tmp": { "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", "dev": true, "license": "MIT" }, "node_modules/@types/yargs": { "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", "dependencies": { @@ -501,40 +8294,65 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, "license": "MIT" }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/aerospike": { "resolved": "..", "link": true }, "node_modules/ansi-colors": { "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" } }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -548,8 +8366,7 @@ }, "node_modules/anymatch": { "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -559,10 +8376,16 @@ "node": ">= 8" } }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true, + "license": "MIT" + }, "node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, "license": "Python-2.0" }, "node_modules/asn1": { @@ -576,8 +8399,7 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, "license": "MIT" }, "node_modules/base64-js": { @@ -611,8 +8433,7 @@ }, "node_modules/binary-extensions": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -634,8 +8455,7 @@ }, "node_modules/brace-expansion": { "version": "2.0.1", - "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" @@ -643,8 +8463,7 @@ }, "node_modules/braces": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.1.1" @@ -655,8 +8474,7 @@ }, "node_modules/browser-stdout": { "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, "license": "ISC" }, "node_modules/buffer": { @@ -694,8 +8512,7 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -704,10 +8521,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -720,10 +8547,31 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chokidar": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -752,8 +8600,6 @@ }, "node_modules/ci-info": { "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -780,68 +8626,8 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/cliui/node_modules/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==", - "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/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/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/color-convert": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -852,22 +8638,17 @@ }, "node_modules/color-name": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, "node_modules/cpu-features": { @@ -893,8 +8674,6 @@ }, "node_modules/debug": { "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -908,16 +8687,9 @@ } } }, - "node_modules/debug/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==", - "license": "MIT" - }, "node_modules/decamelize": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -926,10 +8698,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/diff": { "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" @@ -937,8 +8732,6 @@ }, "node_modules/diff-sequences": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "license": "MIT", "engines": { @@ -984,6 +8777,13 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "dev": true, + "license": "MIT" + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -998,6 +8798,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -1005,22 +8806,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "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==", - "license": "MIT" - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -1032,8 +8817,6 @@ }, "node_modules/escape-string-regexp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "license": "MIT", "engines": { @@ -1042,8 +8825,6 @@ }, "node_modules/expect": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", "dependencies": { @@ -1059,8 +8840,7 @@ }, "node_modules/fill-range": { "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -1071,8 +8851,7 @@ }, "node_modules/find-up": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { "locate-path": "^6.0.0", @@ -1087,8 +8866,7 @@ }, "node_modules/flat": { "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, "license": "BSD-3-Clause", "bin": { "flat": "cli.js" @@ -1106,36 +8884,6 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true, "license": "ISC" - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } }, "node_modules/get-caller-file": { "version": "2.0.5", @@ -1147,20 +8895,21 @@ } }, "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==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1168,8 +8917,7 @@ }, "node_modules/glob-parent": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -1178,41 +8926,60 @@ "node": ">= 6" } }, - "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==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true, "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, "license": "MIT", "bin": { "he": "bin/he" @@ -1223,6 +8990,7 @@ "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1268,8 +9036,7 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -1280,8 +9047,7 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1298,8 +9064,7 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -1310,8 +9075,7 @@ }, "node_modules/is-number": { "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -1319,8 +9083,7 @@ }, "node_modules/is-plain-obj": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -1328,8 +9091,7 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1338,31 +9100,8 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "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==", - "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/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { @@ -1377,8 +9116,6 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "license": "MIT", "engines": { @@ -1387,8 +9124,6 @@ }, "node_modules/jest-matcher-utils": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "license": "MIT", "dependencies": { @@ -1403,8 +9138,6 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "license": "MIT", "dependencies": { @@ -1424,8 +9157,6 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "license": "MIT", "dependencies": { @@ -1442,15 +9173,12 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "license": "MIT", "dependencies": { "argparse": "^2.0.1" @@ -1459,10 +9187,19 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, "node_modules/locate-path": { "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", "dependencies": { "p-locate": "^5.0.0" @@ -1482,8 +9219,7 @@ }, "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -1506,23 +9242,159 @@ "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true, - "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==", "license": "ISC" }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, "node_modules/micromatch": { "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -1535,8 +9407,7 @@ }, "node_modules/minimatch": { "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" @@ -1550,20 +9421,12 @@ "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "license": "MIT" - - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } }, "node_modules/mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", - "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", + "dev": true, "license": "MIT", "dependencies": { "ansi-colors": "^4.1.3", @@ -1573,7 +9436,7 @@ "diff": "^5.2.0", "escape-string-regexp": "^4.0.0", "find-up": "^5.0.0", - "glob": "^10.4.5", + "glob": "^8.1.0", "he": "^1.2.0", "js-yaml": "^4.1.0", "log-symbols": "^4.1.0", @@ -1583,8 +9446,8 @@ "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": "^16.2.0", + "yargs-parser": "^20.2.9", "yargs-unparser": "^2.0.0" }, "bin": { @@ -1592,13 +9455,24 @@ "mocha": "bin/mocha.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/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, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, "node_modules/mocha/node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -1609,8 +9483,7 @@ }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -1622,23 +9495,39 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/mocha/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, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/ms": { "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/nan": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.1.tgz", - "integrity": "sha512-pfRR4ZcNTSm2ZFHaztuvbICf+hyiG6ecA06SfAxoPmuHjvMu0KUIae7Y8GyVkbBqeEIidsmXeYooWIX9+qjfRQ==", + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", "license": "MIT", "optional": true }, "node_modules/normalize-path": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -1653,22 +9542,21 @@ "wrappy": "1" } }, - "node_modules/oniguruma-to-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", - "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", "dev": true, + "license": "MIT", "dependencies": { - "regex": "^4.3.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" } }, "node_modules/p-limit": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" @@ -1682,8 +9570,7 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "license": "MIT", "dependencies": { "p-limit": "^3.0.2" @@ -1695,57 +9582,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", - "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", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "license": "MIT", "engines": { "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==", - "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/picocolors": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -1756,8 +9608,6 @@ }, "node_modules/pretty-format": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1771,8 +9621,6 @@ }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, "license": "MIT", "engines": { @@ -1783,10 +9631,11 @@ } }, "node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1831,14 +9680,14 @@ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/randombytes": { "version": "2.1.0", - "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" @@ -1846,8 +9695,6 @@ }, "node_modules/react-is": { "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true, "license": "MIT" }, @@ -1867,8 +9714,7 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -1877,6 +9723,34 @@ "node": ">=8.10.0" } }, + "node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "dev": true, + "license": "MIT" + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -1888,8 +9762,6 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -1914,50 +9786,31 @@ }, "node_modules/serialize-javascript": { "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" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" } }, "node_modules/slash": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { @@ -1969,6 +9822,7 @@ "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -1999,8 +9853,6 @@ }, "node_modules/stack-utils": { "version": "2.0.6", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", - "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2010,23 +9862,6 @@ "node": ">=10" } }, - "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==", - "license": "MIT", - "dependencies": { - "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/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -2036,8 +9871,7 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string-width-cjs": { - "name": "string-width", + "node_modules/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==", @@ -2051,50 +9885,22 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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==", + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -2106,19 +9912,9 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -2129,8 +9925,7 @@ }, "node_modules/supports-color": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -2169,8 +9964,7 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -2184,6 +9978,7 @@ "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -2250,10 +10045,11 @@ "license": "Unlicense" }, "node_modules/typedoc": { - "version": "0.26.7", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.7.tgz", - "integrity": "sha512-gUeI/Wk99vjXXMi8kanwzyhmeFEGv1LTdTQsiyIsmSYsBebvFxhbcyAx7Zjo4cMbpLGxM4Uz3jVIjksu/I2v6Q==", + "version": "0.26.11", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.11.tgz", + "integrity": "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lunr": "^2.3.9", "markdown-it": "^14.1.0", @@ -2276,6 +10072,7 @@ "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" }, @@ -2287,9 +10084,10 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -2299,76 +10097,88 @@ "node": ">=14.17" } }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" + }, "node_modules/undici-types": { "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true, "license": "MIT" }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">= 8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "license": "Apache-2.0" - }, - "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==", + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" + "@types/unist": "^3.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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==", + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "@types/unist": "^3.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/util-deprecate": { @@ -2395,42 +10205,40 @@ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/wrap-ansi-cjs/node_modules/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==", + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/workerpool": { "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" }, @@ -2438,16 +10246,17 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "node_modules/wrap-ansi/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==", "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -2465,6 +10274,19 @@ "node": ">=10" } }, + "node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -2484,18 +10306,18 @@ } }, "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==", + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, "license": "ISC", "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/yargs-unparser": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, "license": "MIT", "dependencies": { "camelcase": "^6.0.0", @@ -2507,51 +10329,28 @@ "node": ">=10" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/yargs/node_modules/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==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, + "node_modules/yargs/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==", + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, "node_modules/yocto-queue": { "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -2559,6 +10358,17 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/ts-test/tests/metrics_cluster_name.ts b/ts-test/tests/metrics_cluster_name.ts index c4f3d382f..925baa1f1 100644 --- a/ts-test/tests/metrics_cluster_name.ts +++ b/ts-test/tests/metrics_cluster_name.ts @@ -31,7 +31,6 @@ import * as helper from './test_helper'; describe('Test metrics cluster name', async function () { const client: Cli = helper.client this.timeout(40000) - helper.skipUnlessAdvancedMetrics(this) @@ -62,6 +61,8 @@ describe('Test metrics cluster name', async function () { it('Test metrics cluster name retrival', async function () { + helper.skipUnlessAdvancedMetrics() + console.log("Running server container..."); const SERVER_PORT_NUMBER = 3000; diff --git a/ts-test/tests/metrics_node_close.ts b/ts-test/tests/metrics_node_close.ts index 123a22e64..c505db3eb 100644 --- a/ts-test/tests/metrics_node_close.ts +++ b/ts-test/tests/metrics_node_close.ts @@ -33,7 +33,6 @@ describe('Metrics node close test', async function () { let nodeCloseTriggered: boolean = false this.timeout(40000) - helper.skipUnlessAdvancedMetrics(this) function enableListener() { return @@ -90,6 +89,7 @@ describe('Metrics node close test', async function () { it('Test the node close listener', async function () { + helper.skipUnlessAdvancedMetrics() console.log("Running server container..."); const SERVER_PORT_NUMBER = 3000;