diff --git a/.eslintrc b/.eslintrc index 1580a86..1e41d1f 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,9 +1,13 @@ { "root": true, "extends": "eslint-config-formio", + "plugins": [ + "mocha" + ], "env": { "node": true, - "es6": true + "es6": true, + "mocha": true }, "parserOptions": { "ecmaVersion": 2020 diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml index 4e81164..3992a15 100644 --- a/.github/workflows/dockerhub.yml +++ b/.github/workflows/dockerhub.yml @@ -17,8 +17,14 @@ jobs: - name: Login to Dockerhub run: echo ${{secrets.DOCKERHUB_ACCESS_TOKEN}} | docker login -u ${{vars.DOCKERHUB_USERNAME}} --password-stdin + - name: Build intermediate Docker image + run: docker build -f deployment/docker/Dockerfile -t formio/pdf-libs:tmp . + + - name: Run tests on the Docker image + run: docker run formio/pdf-libs:tmp npm test + - name: Build the Docker image - run: docker build -f deployment/docker/Dockerfile -t formio/pdf-libs:${{github.ref_name}} . + run: docker build -f deployment/docker/Dockerfile-no-tests -t formio/pdf-libs:${{github.ref_name}} . - name: Push the Docker image run: docker push formio/pdf-libs:${{github.ref_name}} @@ -27,4 +33,4 @@ jobs: run: | docker tag formio/pdf-libs:${{github.ref_name}} formio/pdf-libs:latest docker push formio/pdf-libs:latest - if: ${{!contains(github.ref_name, 'rc')}} + if: ${{ !contains(github.ref_name, 'rc') && !contains(github.ref_name, 'test') }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 32347f7..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Run unit tests - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x] - # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - steps: - - uses: actions/checkout@v3 - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - cache: 'npm' - - name: Run install - uses: borales/actions-yarn@v4 - with: - cmd: install # will run `yarn install` command - # - name: Run tests - # uses: borales/actions-yarn@v4 - # with: - # cmd: test # will run `yarn test` command diff --git a/deployment/docker/Dockerfile b/deployment/docker/Dockerfile index c5cb1f7..b6eb05c 100644 --- a/deployment/docker/Dockerfile +++ b/deployment/docker/Dockerfile @@ -38,6 +38,8 @@ RUN yarn install --production --frozen-lockfile COPY src ./src COPY *.js ./ +COPY test ./test + # Add docs COPY docs ./docs diff --git a/deployment/docker/Dockerfile-no-tests b/deployment/docker/Dockerfile-no-tests new file mode 100644 index 0000000..683c8fd --- /dev/null +++ b/deployment/docker/Dockerfile-no-tests @@ -0,0 +1,5 @@ +FROM formio/pdf-libs:tmp + +WORKDIR /usr/src/pdf-libs +# Remove test folder +RUN rm -rf test \ No newline at end of file diff --git a/package.json b/package.json index c1ed9a8..dcbef88 100644 --- a/package.json +++ b/package.json @@ -13,24 +13,24 @@ "author": "", "license": "ISC", "dependencies": { + "assert": "^2.1.0", "cors": "^2.8.5", "debug": "^4.3.6", "dotenv": "^16.4.5", + "eslint-plugin-mocha": "^10.5.0", "express": "^4.19.2", "formidable": "^3.5.1", "fs-extra": "^11.2.0", "lodash": "^4.17.21", + "mocha": "^10.7.3", + "superagent": "^10.1.0", "uuid": "^9.0.1" }, "devDependencies": { - "assert": "^2.0.0", "eslint": "^9.6.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-formio": "^1.1.4", "eslint-plugin-import": "^2.29.1", - "mocha": "^10.6.0", - "mock-require": "^3.0.3", - "nodemon": "^3.1.4", - "superagent": "^9.0.2" + "nodemon": "^3.1.4" } } diff --git a/test/e2e/convertToHtml.test.js b/test/e2e/convertToHtml.test.js new file mode 100644 index 0000000..a009a40 --- /dev/null +++ b/test/e2e/convertToHtml.test.js @@ -0,0 +1,29 @@ +const path = require('path'); +const assert = require('assert'); +const superagent = require('superagent'); +const runServer = require('./runServer'); + +const PDF_FIXTURE = path.resolve(__dirname, './fixtures/fw4.pdf'); + +describe('Test convertToHtml', () => { + let server; + + before(async () => { + server = await runServer(3000); + }); + + it('should return html', async () => { + const response = await superagent + .post(`http://localhost:3000/pdf/convertToHtml`) + .set('Content-Type', 'multipart/form-data') + .attach('pdf', PDF_FIXTURE); + + const html = response.text; + assert.ok(html.includes('')); + assert.ok(html.includes('Base CSS for pdf2htmlEX')); + }); + + after(() => { + server.kill(); + }); +}); \ No newline at end of file diff --git a/test/e2e/fixtures/fw4.json b/test/e2e/fixtures/fw4.json new file mode 100644 index 0000000..8281440 --- /dev/null +++ b/test/e2e/fixtures/fw4.json @@ -0,0 +1,579 @@ +{ + "formType": "XfaForm", + "numPages": 4, + "pages": [ + { + "fields": [ + { + "fontSize": 8, + "id": 65536, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_01[0]", + "qualifiedName": "topmostSubform[0].Page1[0].Step1a[0].f1_01[0]", + "rect": [ + 0.1545812254075323, + 0.11869040163238931, + 0.4458508176791247, + 0.13636914622813046 + ], + "textAlignment": "left", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65537, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_02[0]", + "qualifiedName": "topmostSubform[0].Page1[0].Step1a[0].f1_02[0]", + "rect": [ + 0.44871040694406317, + 0.11869040163238931, + 0.7752755010000392, + 0.13636914622813046 + ], + "textAlignment": "left", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65538, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_03[0]", + "qualifiedName": "topmostSubform[0].Page1[0].Step1a[0].f1_03[0]", + "rect": [ + 0.1545812254075323, + 0.14899591902703146, + 0.7752755010000392, + 0.16667466362277283 + ], + "textAlignment": "left", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65539, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_04[0]", + "qualifiedName": "topmostSubform[0].Page1[0].Step1a[0].f1_04[0]", + "rect": [ + 0.1545812254075323, + 0.17930143642167373, + 0.7752755010000392, + 0.196980181017415 + ], + "textAlignment": "left", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65540, + "isPassword": false, + "isVisible": true, + "maxLength": 11, + "name": "f1_05[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_05[0]", + "rect": [ + 0.7781350902649776, + 0.11869040163238931, + 0.9412133809168987, + 0.13636914622813046 + ], + "textAlignment": "hcenter", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "buttonType": "CheckBox", + "exportValue": "1", + "id": 65541, + "isVisible": true, + "name": "c1_1[0]", + "qualifiedName": "topmostSubform[0].Page1[0].c1_1[0]", + "rect": [ + 0.18824267618337975, + 0.19950048486807548, + 0.20131508425167, + 0.20960190310719617 + ], + "type": "FormButton", + "uiName": "" + }, + { + "buttonType": "CheckBox", + "exportValue": "2", + "id": 65542, + "isVisible": true, + "name": "c1_1[1]", + "qualifiedName": "topmostSubform[0].Page1[0].c1_1[1]", + "rect": [ + 0.18824267618337975, + 0.2146551375813165, + 0.20131508425167, + 0.2247565558204372 + ], + "type": "FormButton", + "uiName": "" + }, + { + "buttonType": "CheckBox", + "exportValue": "3", + "id": 65543, + "isVisible": true, + "name": "c1_1[2]", + "qualifiedName": "topmostSubform[0].Page1[0].c1_1[2]", + "rect": [ + 0.18824267618337975, + 0.22949033294274512, + 0.20131508425167, + 0.23959175118186582 + ], + "type": "FormButton", + "uiName": "" + }, + { + "buttonType": "CheckBox", + "exportValue": "1", + "id": 65544, + "isVisible": true, + "name": "c1_2[0]", + "qualifiedName": "topmostSubform[0].Page1[0].c1_2[0]", + "rect": [ + 0.9216047688144633, + 0.4046855428502162, + 0.9346771768827535, + 0.414786961089337 + ], + "type": "FormButton", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65545, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_06[0]", + "qualifiedName": "topmostSubform[0].Page1[0].Step3_ReadOrder[0].f1_06[0]", + "rect": [ + 0.6719217747101193, + 0.5075975291930988, + 0.7765010392564414, + 0.5227483938745 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65546, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_07[0]", + "qualifiedName": "topmostSubform[0].Page1[0].Step3_ReadOrder[0].f1_07[0]", + "rect": [ + 0.6719217747101193, + 0.5303257202311205, + 0.7765010392564414, + 0.5454765849125218 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65547, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_09[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_09[0]", + "rect": [ + 0.8366341163705766, + 0.5682047759505435, + 0.9412133809168987, + 0.5833556406319447 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65548, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_10[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_10[0]", + "rect": [ + 0.8366341163705766, + 0.6136611580265869, + 0.9412133809168987, + 0.6288120227079882 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65549, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_11[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_11[0]", + "rect": [ + 0.8366341163705766, + 0.6666948664592509, + 0.9412133809168987, + 0.6818457311406521 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65550, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_12[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_12[0]", + "rect": [ + 0.8366341163705766, + 0.6969965958220534, + 0.9412133809168987, + 0.7121474605034547 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65551, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_13[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_13[0]", + "rect": [ + 0.1545812254075323, + 0.837155036567134, + 0.6340934938625045, + 0.8788221241262273 + ], + "textAlignment": "left", + "textType": "Multiline", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65552, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f1_14[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_14[0]", + "rect": [ + 0.6369530831274429, + 0.8611459048850458, + 0.763510333738578, + 0.8788221241262273 + ], + "textAlignment": "hcenter", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 65553, + "isPassword": false, + "isVisible": true, + "maxLength": 10, + "name": "f1_15[0]", + "qualifiedName": "topmostSubform[0].Page1[0].f1_15[0]", + "rect": [ + 0.7663699230035165, + 0.8611459048850458, + 0.9412133809168987, + 0.8788221241262273 + ], + "textAlignment": "hcenter", + "textType": "Normal", + "type": "FormText", + "uiName": "" + } + ], + "number": 0, + "size": [ + 611.976, + 791.968 + ] + }, + { + "fields": [], + "number": 1, + "size": [ + 611.976, + 791.968 + ] + }, + { + "fields": [ + { + "fontSize": 8, + "id": 196608, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_01[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_01[0]", + "rect": [ + 0.8353268755637475, + 0.21970458402359694, + 0.9412133809168987, + 0.23485544870499808 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196609, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_02[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_02[0]", + "rect": [ + 0.8353268755637475, + 0.3181946745323043, + 0.9412133809168987, + 0.3333455392137057 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196610, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_03[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_03[0]", + "rect": [ + 0.8353268755637475, + 0.38637924764636955, + 0.9412133809168987, + 0.4015301123277708 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196611, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_04[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_04[0]", + "rect": [ + 0.8353268755637475, + 0.40910743868439137, + 0.9412133809168987, + 0.4242583033657925 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196612, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_05[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_05[0]", + "rect": [ + 0.8235617083022864, + 0.4469864944038143, + 0.9412133809168987, + 0.4621373590852156 + ], + "textAlignment": "hcenter", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196613, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_06[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_06[0]", + "rect": [ + 0.8353268755637475, + 0.5000202028364783, + 0.9412133809168987, + 0.5151710675178796 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196614, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_07[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_07[0]", + "rect": [ + 0.8353268755637475, + 0.5909329669885652, + 0.9412133809168987, + 0.6060838316699665 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196615, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_08[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_08[0]", + "rect": [ + 0.8353268755637475, + 0.6288120227079882, + 0.9412133809168987, + 0.6439628873893894 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196616, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_09[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_09[0]", + "rect": [ + 0.8353268755637475, + 0.6818457311406521, + 0.9412133809168987, + 0.6969965958220534 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196617, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_10[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_10[0]", + "rect": [ + 0.8353268755637475, + 0.7197247868600751, + 0.9412133809168987, + 0.7348756515414765 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + }, + { + "fontSize": 8, + "id": 196618, + "isPassword": false, + "isVisible": true, + "maxLength": -1, + "name": "f3_11[0]", + "qualifiedName": "topmostSubform[0].Page3[0].f3_11[0]", + "rect": [ + 0.8353268755637475, + 0.7424529778980968, + 0.9412133809168987, + 0.7576038425794982 + ], + "textAlignment": "right", + "textType": "Normal", + "type": "FormText", + "uiName": "" + } + ], + "number": 2, + "size": [ + 611.976, + 791.968 + ] + }, + { + "fields": [], + "number": 3, + "size": [ + 611.976, + 791.968 + ] + } + ] +} \ No newline at end of file diff --git a/test/e2e/fixtures/fw4.pdf b/test/e2e/fixtures/fw4.pdf new file mode 100644 index 0000000..d3ea44d Binary files /dev/null and b/test/e2e/fixtures/fw4.pdf differ diff --git a/test/e2e/getFormfields.test.js b/test/e2e/getFormfields.test.js new file mode 100644 index 0000000..0507e3a --- /dev/null +++ b/test/e2e/getFormfields.test.js @@ -0,0 +1,28 @@ +const path = require('path'); +const assert = require('assert'); +const superagent = require('superagent'); +const runServer = require('./runServer'); + +const PDF_FIXTURE = path.resolve(__dirname, './fixtures/fw4.pdf'); + +describe('Test getFormfields', () => { + let server; + + before(async () => { + server = await runServer(3000); + }) + + it('should return formfields', async () => { + const response = await superagent + .post(`http://localhost:3000/pdf/getFormfields`) + .set('Content-Type', 'multipart/form-data') + .attach('pdf', PDF_FIXTURE); + const json = response.body; + const formfields = require('./fixtures/fw4.json'); + assert.deepEqual(json, formfields); + }); + + after(() => { + server.kill(); + }) +}) \ No newline at end of file diff --git a/test/e2e/runServer.js b/test/e2e/runServer.js new file mode 100644 index 0000000..2d5c59f --- /dev/null +++ b/test/e2e/runServer.js @@ -0,0 +1,24 @@ +const {spawn} = require('child_process'); +const path = require('path'); +const NODE_PATH = '/usr/local/bin/node' + +const runServer = async (port) => { + const serverPath = path.resolve(__dirname, '../../main.js'); + const server = spawn(NODE_PATH, [serverPath], { + env: { + ...process.env, + PDFLIBS_PORT: port, + NODE_ENV: 'development' + }, + }); + + await new Promise((resolve) => { + server.stdout.on('data', (data) => { + resolve(); + }); + }); + + return server; +}; + +module.exports = runServer; diff --git a/yarn.lock b/yarn.lock index ef31814..b2ec57e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -225,9 +225,9 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== -assert@^2.0.0: +assert@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" + resolved "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz#6d92a238d05dc02e7427c881fb8be81c8448b2dd" integrity sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw== dependencies: call-bind "^1.0.2" @@ -238,7 +238,7 @@ assert@^2.0.0: asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== available-typed-arrays@^1.0.5: @@ -246,6 +246,13 @@ available-typed-arrays@^1.0.5: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -397,15 +404,15 @@ color-name@~1.1.4: combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" component-emitter@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + version "1.3.1" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17" + integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ== concat-map@0.0.1: version "0.0.1" @@ -441,7 +448,7 @@ cookie@0.6.0: cookiejar@^2.1.4: version "2.1.4" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz#ee669c1fea2cf42dc31585469d193fef0d65771b" integrity sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw== cors@^2.8.5: @@ -475,13 +482,20 @@ debug@^3.2.7: dependencies: ms "^2.1.1" -debug@^4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: +debug@^4, debug@^4.3.1, debug@^4.3.2: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" +debug@^4.3.4, debug@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + debug@^4.3.5: version "4.3.5" resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e" @@ -489,13 +503,6 @@ debug@^4.3.5: dependencies: ms "2.1.2" -debug@^4.3.6: - version "4.3.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" - integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== - dependencies: - ms "2.1.2" - decamelize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" @@ -535,7 +542,7 @@ define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, de delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== depd@2.0.0: @@ -746,6 +753,15 @@ eslint-plugin-import@^2.29.1: semver "^6.3.1" tsconfig-paths "^3.15.0" +eslint-plugin-mocha@^10.5.0: + version "10.5.0" + resolved "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-10.5.0.tgz#0aca8d709e7cddef566e0dc252f6b02e307a2b7e" + integrity sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw== + dependencies: + eslint-utils "^3.0.0" + globals "^13.24.0" + rambda "^7.4.0" + eslint-scope@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc" @@ -754,6 +770,18 @@ eslint-scope@^8.0.1: esrecurse "^4.3.0" estraverse "^5.2.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + eslint-visitor-keys@^3.3.0: version "3.4.3" resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" @@ -905,7 +933,7 @@ fast-levenshtein@^2.0.6: fast-safe-stringify@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fastq@^1.6.0: @@ -977,7 +1005,7 @@ for-each@^0.3.3: form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" @@ -1042,11 +1070,6 @@ functions-have-names@^1.2.3: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -get-caller-file@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -1106,6 +1129,13 @@ glob@^8.1.0: minimatch "^5.0.1" once "^1.3.0" +globals@^13.24.0: + version "13.24.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + globals@^14.0.0: version "14.0.0" resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e" @@ -1176,6 +1206,13 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + hasown@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" @@ -1263,7 +1300,7 @@ ipaddr.js@1.9.1: is-arguments@^1.0.4: version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== dependencies: call-bind "^1.0.2" @@ -1331,7 +1368,7 @@ is-fullwidth-code-point@^3.0.0: is-generator-function@^1.0.7: version "1.0.10" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + resolved "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== dependencies: has-tostringtag "^1.0.0" @@ -1345,7 +1382,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: is-nan@^1.3.2: version "1.3.2" - resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== dependencies: call-bind "^1.0.0" @@ -1407,13 +1444,20 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.2" -is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.3, is-typed-array@^1.1.9: +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: version "1.1.12" resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== dependencies: which-typed-array "^1.1.11" +is-typed-array@^1.1.3: + version "1.1.13" + resolved "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz#d6c5ca56df62334959322d7d7dd1cca50debe229" + integrity sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw== + dependencies: + which-typed-array "^1.1.14" + is-unicode-supported@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" @@ -1548,7 +1592,7 @@ mime@1.6.0: mime@2.6.0: version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== minimatch@^3.1.2: @@ -1570,10 +1614,10 @@ minimist@^1.2.0, minimist@^1.2.6: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mocha@^10.6.0: - version "10.6.0" - resolved "https://registry.npmjs.org/mocha/-/mocha-10.6.0.tgz#465fc66c52613088e10018989a3b98d5e11954b9" - integrity sha512-hxjt4+EEB0SA0ZDygSS015t65lJw/I2yRCS3Ae+SJ5FrbzrXgfYwJr96f0OvIXdj7h4lv/vLCrH3rkiuizFSvw== +mocha@^10.7.3: + version "10.7.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.7.3.tgz#ae32003cabbd52b59aece17846056a68eb4b0752" + integrity sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A== dependencies: ansi-colors "^4.1.3" browser-stdout "^1.3.1" @@ -1596,14 +1640,6 @@ mocha@^10.6.0: yargs-parser "^20.2.9" yargs-unparser "^2.0.0" -mock-require@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/mock-require/-/mock-require-3.0.3.tgz#ccd544d9eae81dd576b3f219f69ec867318a1946" - integrity sha512-lLzfLHcyc10MKQnNUCv7dMcoY/2Qxd6wJfbqCcVk3LDb8An4hF6ohk5AztrvgKhJCqj36uyzi/p5se+tvyD+Wg== - dependencies: - get-caller-file "^1.0.2" - normalize-path "^2.1.1" - ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -1652,13 +1688,6 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w== - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -1675,12 +1704,12 @@ object-inspect@^1.13.1, object-inspect@^1.9.0: integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + version "1.1.6" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" + call-bind "^1.0.7" + define-properties "^1.2.1" object-keys@^1.1.1: version "1.1.1" @@ -1821,6 +1850,11 @@ picomatch@^2.0.4, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +possible-typed-array-names@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" + integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1852,17 +1886,22 @@ qs@6.11.0: side-channel "^1.0.4" qs@^6.11.0: - version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" - integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + version "6.13.0" + resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== dependencies: - side-channel "^1.0.4" + side-channel "^1.0.6" queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +rambda@^7.4.0: + version "7.5.0" + resolved "https://registry.npmjs.org/rambda/-/rambda-7.5.0.tgz#1865044c59bc0b16f63026c6e5a97e4b1bbe98fe" + integrity sha512-y/M9weqWAH4iopRd7EHDEQQvpFPHj1AA3oHozE9tfITHUtTR7Z9PSlIRRG2l1GuW7sefC1cXFfIcF+cgnShdBA== + randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -1901,11 +1940,6 @@ regexp.prototype.flags@^1.5.1: define-properties "^1.2.0" set-function-name "^2.0.0" -remove-trailing-separator@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw== - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -2069,6 +2103,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +side-channel@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" + integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== + dependencies: + call-bind "^1.0.7" + es-errors "^1.3.0" + get-intrinsic "^1.2.4" + object-inspect "^1.13.1" + simple-update-notifier@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb" @@ -2134,10 +2178,10 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -superagent@^9.0.2: - version "9.0.2" - resolved "https://registry.npmjs.org/superagent/-/superagent-9.0.2.tgz#a18799473fc57557289d6b63960610e358bdebc1" - integrity sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w== +superagent@^10.1.0: + version "10.1.0" + resolved "https://registry.npmjs.org/superagent/-/superagent-10.1.0.tgz#9c56cbc51fca902ed07e93ff64bc7af3d823c7ea" + integrity sha512-JMmik7PbnXGlq7g528Gi6apHbVbTz2vrE3du6fuG4kIPSb2PnLoSOPvfjKn8aQYuJcBWAKW6ZG90qPPsE5jZxQ== dependencies: component-emitter "^1.3.0" cookiejar "^2.1.4" @@ -2216,6 +2260,11 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" @@ -2297,7 +2346,7 @@ uri-js@^4.2.2: util@^0.12.5: version "0.12.5" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== dependencies: inherits "^2.0.3" @@ -2343,16 +2392,16 @@ which-typed-array@^1.1.11, which-typed-array@^1.1.13: gopd "^1.0.1" has-tostringtag "^1.0.0" -which-typed-array@^1.1.2: - version "1.1.11" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.11.tgz#99d691f23c72aab6768680805a271b69761ed61a" - integrity sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew== +which-typed-array@^1.1.14, which-typed-array@^1.1.2: + version "1.1.15" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz#264859e9b11a649b388bfaaf4f767df1f779b38d" + integrity sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA== dependencies: - available-typed-arrays "^1.0.5" - call-bind "^1.0.2" + available-typed-arrays "^1.0.7" + call-bind "^1.0.7" for-each "^0.3.3" gopd "^1.0.1" - has-tostringtag "^1.0.0" + has-tostringtag "^1.0.2" which@^2.0.1: version "2.0.2"