diff --git a/.github/workflows/node-build.yml b/.github/workflows/node-build.yml index 5afc8c9f5c..7561b94973 100644 --- a/.github/workflows/node-build.yml +++ b/.github/workflows/node-build.yml @@ -92,6 +92,13 @@ jobs: - uses: actions/checkout@v4 - uses: ./.github/workflows/rafiki/env-setup - run: pnpm --filter card-service test:ci + - run: pnpm --filter card-service build + - name: AsyncAPI extension + run: | + echo "{\"extends\":[\"spectral:oas\",\"spectral:asyncapi\"]}" >> .spectral.json + - name: Validate Open API specs + run: | + npx @stoplight/spectral-cli lint ./packages/card-service/src/openapi/specs/*.yaml point-of-sale: runs-on: ubuntu-latest @@ -100,7 +107,7 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/workflows/rafiki/env-setup - - run: pnpm --filter point-of-sale build:deps + - run: pnpm --filter point-of-sale build - run: pnpm --filter point-of-sale test:ci mock-account-servicing-entity: @@ -426,6 +433,8 @@ jobs: - auth - backend - frontend + - card-service + - point-of-sale steps: - name: Checkout code uses: actions/checkout@v4 @@ -461,6 +470,8 @@ jobs: - auth - backend - frontend + - card-service + - point-of-sale steps: - uses: actions/checkout@v4 - name: Fetch docker image from cache @@ -497,6 +508,8 @@ jobs: - auth - backend - frontend + - card-service + - point-of-sale steps: - uses: actions/checkout@v4 - name: Fetch docker image from cache @@ -529,6 +542,8 @@ jobs: - auth - backend - frontend + - card-service + - point-of-sale steps: - uses: actions/checkout@v4 - uses: ./.github/actions/image-push @@ -550,6 +565,8 @@ jobs: - auth - backend - frontend + - card-service + - point-of-sale steps: - uses: actions/checkout@v4 - name: Push manifest list diff --git a/packages/card-service/Dockerfile.prod b/packages/card-service/Dockerfile.prod new file mode 100644 index 0000000000..83a740e944 --- /dev/null +++ b/packages/card-service/Dockerfile.prod @@ -0,0 +1,65 @@ +FROM node:20-alpine3.20 AS base + +WORKDIR /home/rafiki + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable +RUN corepack prepare pnpm@8.7.4 --activate + +COPY pnpm-lock.yaml ./ + +RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ + pnpm fetch \ + | grep -v "cross-device link not permitted\|Falling back to copying packages from store" + +FROM base AS prod-deps + +COPY package.json pnpm-workspace.yaml .npmrc ./ +COPY packages/card-service/knexfile.js ./packages/card-service/knexfile.js +COPY packages/card-service/package.json ./packages/card-service/package.json +RUN pnpm clean +RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ + pnpm install \ + --recursive \ + --prefer-offline \ + --frozen-lockfile \ + --prod \ + | grep -v "cross-device link not permitted\|Falling back to copying packages from store" + +FROM base AS builder + +COPY package.json pnpm-workspace.yaml .npmrc tsconfig.json tsconfig.build.json ./ +COPY packages/card-service ./packages/card-service + +RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ + pnpm install \ + --recursive \ + --offline \ + --frozen-lockfile +RUN pnpm --filter card-service build + +FROM node:20-alpine3.20 AS runner + +# Since this is from a fresh image, we need to first create the Rafiki user +RUN adduser -D rafiki +WORKDIR /home/rafiki + +COPY --from=prod-deps /home/rafiki/node_modules ./node_modules +COPY --from=prod-deps /home/rafiki/packages/card-service/node_modules ./packages/card-service/node_modules +COPY --from=prod-deps /home/rafiki/packages/card-service/package.json ./packages/card-service/package.json +COPY --from=prod-deps /home/rafiki/packages/card-service/knexfile.js ./packages/card-service/knexfile.js + +COPY --from=builder /home/rafiki/packages/card-service/migrations/ ./packages/card-service/migrations +COPY --from=builder /home/rafiki/packages/card-service/dist ./packages/card-service/dist +COPY --from=builder /home/rafiki/packages/card-service/knexfile.js ./packages/card-service/knexfile.js + +USER root + +# For additional paranoia, we make it so that the Rafiki user has no write access to the packages +RUN chown -R :rafiki /home/rafiki/packages +RUN chmod -R 750 /home/rafiki/packages + +USER rafiki +CMD ["node", "/home/rafiki/packages/card-service/dist/index.js"] diff --git a/packages/card-service/package.json b/packages/card-service/package.json index 0ca45df546..8debb11c6a 100644 --- a/packages/card-service/package.json +++ b/packages/card-service/package.json @@ -1,10 +1,6 @@ { "name": "card-service", - "main": "dist/index.js", - "types": "dist/index.d.ts", - "files": [ - "dist/**/*" - ], + "main": "index.js", "scripts": { "build": "pnpm clean && tsc --build tsconfig.json", "clean": "rm -fr dist/", @@ -37,6 +33,7 @@ "@types/koa-bodyparser": "^4.3.12", "@types/koa__cors": "^5.0.0", "@types/koa__router": "^12.0.4", + "@types/node": "^20.14.15", "@types/uuid": "^9.0.8", "jest-environment-node": "^29.7.0", "nock": "14.0.0-beta.19", diff --git a/packages/card-service/src/openapi/specs/card-server.yaml b/packages/card-service/src/openapi/specs/card-server.yaml index 9fff6b91cd..3eb4e94a8f 100644 --- a/packages/card-service/src/openapi/specs/card-server.yaml +++ b/packages/card-service/src/openapi/specs/card-server.yaml @@ -2,6 +2,12 @@ openapi: 3.0.3 info: title: Card Service API version: 1.0.0 + description: Card Service API specs + contact: + email: tech@interledger.org +tags: + - name: payment + description: Operations related to payments paths: /payment: post: @@ -96,6 +102,9 @@ paths: type: string '500': description: Internal server error + description: 'POS service calls this endpoint to initiate a payment request.' + tags: + - payment /payment-event: post: summary: Handle payment event result from backend @@ -158,3 +167,8 @@ paths: description: Payment event accepted '400': description: Malformed request body + '404': + description: Request not found + description: 'Rafiki backend calls this endpoint to send the payment result.' + tags: + - payment diff --git a/packages/point-of-sale/Dockerfile.prod b/packages/point-of-sale/Dockerfile.prod index b15030d030..eb9a757c39 100644 --- a/packages/point-of-sale/Dockerfile.prod +++ b/packages/point-of-sale/Dockerfile.prod @@ -19,7 +19,6 @@ FROM base AS prod-deps COPY package.json pnpm-workspace.yaml .npmrc ./ COPY packages/point-of-sale/knexfile.js ./packages/point-of-sale/knexfile.js COPY packages/point-of-sale/package.json ./packages/point-of-sale/package.json -COPY packages/token-introspection/package.json ./packages/token-introspection/package.json RUN pnpm clean RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ @@ -34,7 +33,6 @@ FROM base AS builder COPY package.json pnpm-workspace.yaml .npmrc tsconfig.json tsconfig.build.json ./ COPY packages/point-of-sale ./packages/point-of-sale -COPY packages/token-introspection ./packages/token-introspection RUN --mount=type=cache,id=pnpm,target=/pnpm/store \ pnpm install \ @@ -52,13 +50,10 @@ WORKDIR /home/rafiki COPY --from=prod-deps /home/rafiki/node_modules ./node_modules COPY --from=prod-deps /home/rafiki/packages/point-of-sale/node_modules ./packages/point-of-sale/node_modules COPY --from=prod-deps /home/rafiki/packages/point-of-sale/package.json ./packages/point-of-sale/package.json -COPY --from=prod-deps /home/rafiki/packages/token-introspection/node_modules ./packages/token-introspection/node_modules -COPY --from=prod-deps /home/rafiki/packages/token-introspection/package.json ./packages/token-introspection/package.json COPY --from=prod-deps /home/rafiki/packages/point-of-sale/knexfile.js ./packages/point-of-sale/knexfile.js COPY --from=builder /home/rafiki/packages/point-of-sale/migrations/ ./packages/point-of-sale/migrations COPY --from=builder /home/rafiki/packages/point-of-sale/dist ./packages/point-of-sale/dist -COPY --from=builder /home/rafiki/packages/token-introspection/dist ./packages/token-introspection/dist COPY --from=builder /home/rafiki/packages/point-of-sale/knexfile.js ./packages/point-of-sale/knexfile.js USER root @@ -66,3 +61,6 @@ USER root # For additional paranoia, we make it so that the Rafiki user has no write access to the packages RUN chown -R :rafiki /home/rafiki/packages RUN chmod -R 750 /home/rafiki/packages + +USER rafiki +CMD ["node", "/home/rafiki/packages/point-of-sale/dist/index.js"] diff --git a/packages/point-of-sale/package.json b/packages/point-of-sale/package.json index f68ef45307..1b892e87e3 100644 --- a/packages/point-of-sale/package.json +++ b/packages/point-of-sale/package.json @@ -12,8 +12,7 @@ "generate": "graphql-codegen --config codegen.yml", "knex": "knex", "dev": "ts-node-dev --inspect=0.0.0.0:9229 --respawn --transpile-only src/index.ts", - "build": "pnpm build:deps && pnpm clean && tsc --build tsconfig.json", - "build:deps": "pnpm --filter token-introspection build", + "build": "pnpm clean && tsc --build tsconfig.json", "clean": "rm -fr dist/" }, "keywords": [], @@ -25,7 +24,7 @@ "@faker-js/faker": "^8.4.1", "@koa/cors": "^5.0.0", "@koa/router": "^12.0.2", - "axios": "1.8.2", + "axios": "1.12.0", "dotenv": "^16.4.7", "graphql": "^16.11.0", "json-canonicalize": "^1.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 40d763f8eb..228e0047c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -104,7 +104,7 @@ importers: version: 9.0.8 axios: specifier: ^1.8.2 - version: 1.8.2(debug@4.3.2) + version: 1.8.2 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -198,7 +198,7 @@ importers: version: 8.12.0 axios: specifier: ^1.8.2 - version: 1.8.2(debug@4.3.2) + version: 1.8.2 dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -394,7 +394,7 @@ importers: version: 8.12.0 axios: specifier: 1.8.2 - version: 1.8.2(debug@4.3.2) + version: 1.8.2 base64url: specifier: ^3.0.1 version: 3.0.1 @@ -613,6 +613,9 @@ importers: '@types/koa__router': specifier: ^12.0.4 version: 12.0.4 + '@types/node': + specifier: ^20.14.15 + version: 20.14.15 '@types/uuid': specifier: ^9.0.8 version: 9.0.8 @@ -693,7 +696,7 @@ importers: version: 2.16.4(typescript@5.8.3) axios: specifier: ^1.8.2 - version: 1.8.2(debug@4.3.2) + version: 1.8.2 class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -823,8 +826,8 @@ importers: specifier: ^12.0.2 version: 12.0.2 axios: - specifier: 1.8.2 - version: 1.8.2(debug@4.3.2) + specifier: 1.12.0 + version: 1.12.0(debug@4.3.2) dotenv: specifier: ^16.4.7 version: 16.4.7 @@ -927,7 +930,7 @@ importers: version: 2.0.2 axios: specifier: ^1.8.2 - version: 1.8.2(debug@4.3.2) + version: 1.8.2 pino: specifier: ^8.19.0 version: 8.19.0 @@ -6586,7 +6589,7 @@ packages: /@ory/client@1.9.0: resolution: {integrity: sha512-O4a1ijgJtMNIA+ZmWUmCodxX13ID72hOaCB0b9FQGQBzuFgF2x/Yq5D43nrMYZaDtvDvja8J1XIXhUkjz1TDOw==} dependencies: - axios: 1.8.2(debug@4.3.2) + axios: 1.8.2 transitivePeerDependencies: - debug dev: false @@ -9489,7 +9492,7 @@ packages: array-buffer-byte-length: 1.0.0 call-bind: 1.0.7 define-properties: 1.2.1 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 dev: true @@ -9503,7 +9506,7 @@ packages: define-properties: 1.2.1 es-abstract: 1.22.5 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 dev: true @@ -9728,7 +9731,16 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.8.2(debug@4.3.2): + /axios@1.12.0(debug@4.3.2): + resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} + dependencies: + follow-redirects: 1.15.9(debug@4.3.2) + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + /axios@1.8.2: resolution: {integrity: sha512-ls4GYBm5aig9vWx8AWDSGLpnpDQRtWAfrjU+EuytuODrFBkqesN2RkOQCBzrA1RQNHw1SmRMSDDDSwzNAYQ6Rg==} dependencies: follow-redirects: 1.15.9(debug@4.3.2) @@ -9736,6 +9748,7 @@ packages: proxy-from-env: 1.1.0 transitivePeerDependencies: - debug + dev: false /axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -10231,7 +10244,7 @@ packages: es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 set-function-length: 1.2.1 /call-bind@1.0.8: @@ -11524,9 +11537,9 @@ packages: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 /define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} @@ -11910,10 +11923,10 @@ packages: arraybuffer.prototype.slice: 1.0.1 available-typed-arrays: 1.0.5 call-bind: 1.0.7 - es-set-tostringtag: 2.0.1 + es-set-tostringtag: 2.1.0 es-to-primitive: 1.2.1 function.prototype.name: 1.1.5 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 get-symbol-description: 1.0.0 globalthis: 1.0.3 gopd: 1.0.1 @@ -11957,17 +11970,17 @@ packages: call-bind: 1.0.7 es-define-property: 1.0.0 es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 es-to-primitive: 1.2.1 function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 get-symbol-description: 1.0.2 globalthis: 1.0.3 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 internal-slot: 1.0.7 is-array-buffer: 3.0.4 is-callable: 1.2.7 @@ -12009,7 +12022,7 @@ packages: es-define-property: 1.0.1 es-errors: 1.3.0 es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 + es-set-tostringtag: 2.1.0 es-to-primitive: 1.3.0 function.prototype.name: 1.1.7 get-intrinsic: 1.2.6 @@ -12052,7 +12065,7 @@ packages: resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 /es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} @@ -12097,22 +12110,13 @@ packages: dependencies: es-errors: 1.3.0 - /es-set-tostringtag@2.0.1: - resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - has: 1.0.3 - has-tostringtag: 1.0.2 - dev: true - /es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 has-tostringtag: 1.0.2 - hasown: 2.0.1 + hasown: 2.0.2 dev: true /es-set-tostringtag@2.1.0: @@ -12133,7 +12137,7 @@ packages: /es-shim-unscopables@1.0.2: resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} dependencies: - hasown: 2.0.1 + hasown: 2.0.2 dev: true /es-to-primitive@1.2.1: @@ -13388,7 +13392,7 @@ packages: function-bind: 1.1.2 has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.1 + hasown: 2.0.2 /get-intrinsic@1.2.6: resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==} @@ -13436,7 +13440,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 dev: true /get-symbol-description@1.0.2: @@ -13445,7 +13449,7 @@ packages: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 dev: true /get-tsconfig@4.5.0: @@ -13614,7 +13618,7 @@ packages: /gopd@1.0.1: resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 /gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} @@ -13939,7 +13943,7 @@ packages: /has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 /has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} @@ -13964,7 +13968,7 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 /has@1.0.3: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} @@ -13972,12 +13976,6 @@ packages: dependencies: function-bind: 1.1.2 - /hasown@2.0.1: - resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} - engines: {node: '>= 0.4'} - dependencies: - function-bind: 1.1.2 - /hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -14618,7 +14616,7 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} dependencies: - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 has: 1.0.3 side-channel: 1.1.0 dev: true @@ -14628,7 +14626,7 @@ packages: engines: {node: '>= 0.4'} dependencies: es-errors: 1.3.0 - hasown: 2.0.1 + hasown: 2.0.2 side-channel: 1.1.0 dev: true @@ -14727,7 +14725,7 @@ packages: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-typed-array: 1.1.10 dev: true @@ -14736,7 +14734,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 dev: true /is-arrayish@0.2.1: @@ -15046,7 +15044,7 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 dev: true /is-symbol@1.1.1: @@ -15073,7 +15071,7 @@ packages: available-typed-arrays: 1.0.5 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 dev: true @@ -16188,7 +16186,7 @@ packages: engines: {node: '>=8.3.0'} hasBin: true dependencies: - axios: 1.8.2(debug@4.3.2) + axios: 1.12.0(debug@4.3.2) debug: 4.3.2 openurl: 1.1.1 yargs: 17.1.1 @@ -18092,7 +18090,7 @@ packages: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - has-symbols: 1.0.3 + has-symbols: 1.1.0 object-keys: 1.1.1 dev: true @@ -18334,7 +18332,7 @@ packages: dependencies: '@types/request': 2.48.8 '@types/superagent': 4.1.15 - axios: 1.8.2(debug@4.3.2) + axios: 1.12.0(debug@4.3.2) combos: 0.2.0 fs-extra: 9.1.0 js-yaml: 4.1.0 @@ -20159,8 +20157,8 @@ packages: engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + get-intrinsic: 1.2.6 + has-symbols: 1.1.0 isarray: 2.0.5 dev: true @@ -20169,7 +20167,7 @@ packages: engines: {node: '>=0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 has-symbols: 1.0.3 isarray: 2.0.5 dev: true @@ -20199,7 +20197,7 @@ packages: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-regex: 1.1.4 dev: true @@ -20386,7 +20384,7 @@ packages: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 gopd: 1.0.1 has-property-descriptors: 1.0.2 @@ -21827,7 +21825,7 @@ packages: engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 - get-intrinsic: 1.2.4 + get-intrinsic: 1.2.6 is-typed-array: 1.1.10 dev: true @@ -23108,7 +23106,7 @@ packages: available-typed-arrays: 1.0.5 call-bind: 1.0.7 for-each: 0.3.3 - gopd: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 dev: true