From 7520baca1760f11f55b92515f56de6c2da7fbdd4 Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Fri, 26 Sep 2025 21:04:19 +0100 Subject: [PATCH 1/6] feat!: update to pact-js v16 / support PactV4 as default Pact. support PactV2/PactV3 --- .github/workflows/ci.yml | 16 +- .github/workflows/release.yml | 6 +- README.md | 154 ++++++++++++++- package.json | 7 +- src/common/pact-module-providers.enum.ts | 2 + .../pact-consumer-module-options.interface.ts | 36 +++- src/modules/pact-consumer-core.module.ts | 180 +++++++++++++++++- src/modules/pact-consumer.module.ts | 44 ++++- src/providers/pact-publisher.provider.ts | 11 +- src/providers/pact.provider.ts | 4 +- src/services/pact-factory-service.test.ts | 106 ++++++++++- src/services/pact-factory.service.ts | 37 +++- 12 files changed, 579 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 29b051e..932f59e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,8 +10,10 @@ jobs: strategy: fail-fast: false matrix: - node-version: [16.x, 18.x, 20.x] + node-version: [20.x] + # node-version: [20.x, 22.x, 24.x] steps: + - uses: actions/checkout@v4 with: ref: ${{ github.head_ref }} @@ -24,8 +26,20 @@ jobs: - run: corepack enable # Required for yarn, when run via act locally + - name: Clone and Build Pact.js + run: | + cd /tmp + git clone https://github.com/pact-foundation/pact-js + cd pact-js + git checkout feat/v4-asynchronous-messages-pact-core-v17 + yarn install + yarn run dist + cd dist + yarn link - name: Install Dependencies run: yarn install + - name: link @pact-foundation/pact + run: yarn link @pact-foundation/pact - name: Lint Commit Message run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f3c4f1d..5b6d86f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,10 +13,10 @@ jobs: with: fetch-depth: 0 - - name: Setup Node.js 18.x + - name: Setup Node.js 20.x uses: actions/setup-node@v4 with: - node-version: 18.x + node-version: 20.x cache: 'yarn' - run: corepack enable @@ -50,7 +50,7 @@ jobs: uses: cycjimmy/semantic-release-action@v4 with: dry_run: false - semantic_version: 18 + semantic_version: 20 branches: | [ 'master', diff --git a/README.md b/README.md index acd48d7..71e550b 100644 --- a/README.md +++ b/README.md @@ -73,17 +73,63 @@ The obvious advantage of this package is that Pact can be used in combination wi In order to use the `Consumer` module, you need to follow a few simple steps, let's go over it! First, create a file called `pact.module.ts` in your `test` folder (or wherever you put your tests), and simply -load the `PactConsumerModule` like below: +load the `PactV2ConsumerModule` like below: **test/pact/pact.module.ts** +v2 + ```typescript import { Module } from '@nestjs/common'; +import { PactV2ConsumerModule } from 'nestjs-pact'; +import { PactV2ConsumerConfigOptionsService } from './pact-consumer-config-options.service'; +import { AppModule } from '../../src/app.module'; + +@Module({ + imports: [ + PactV2ConsumerModule.registerAsync({ + imports: [AppModule], + useClass: PactV2ConsumerConfigOptionsService, + }), + ], +}) +export class PactModule {} +``` + + +v3 + +```typescript +import { DynamicModule, Module } from '@nestjs/common'; +import { PactV3ConsumerModule } from 'nestjs-pact'; +import { PactV3ConsumerConfigOptionsService } from './pact-consumer-config-options.service'; +import { AppModule } from '../../src/app.module'; + +@Module({ + imports: [ + PactV3ConsumerModule.registerAsync({ + imports: [AppModule], + useClass: PactV3ConsumerConfigOptionsService, + }) as DynamicModule, + ], +}) +export class PactModule {} +``` + +v4 + +```typescript +import { DynamicModule, Module } from '@nestjs/common'; import { PactConsumerModule } from 'nestjs-pact'; +import { PactConsumerConfigOptionsService } from './pact-consumer-config-options.service'; +import { AppModule } from '../../src/app.module'; @Module({ imports: [ - PactConsumerModule.register({ ... }), + PactConsumerModule.registerAsync({ + imports: [AppModule], + useClass: PactConsumerConfigOptionsService, + }) as DynamicModule, ], }) export class PactModule {} @@ -93,22 +139,24 @@ Yay, now let's create the test file! let's call it `my-test.spec.ts` **test/pact/my-test.spec.ts** +v2 + ```typescript -import { Pact } from '@pact-foundation/pact'; +import { PactV2 } from '@pact-foundation/pact'; import { Test } from '@nestjs/testing'; -import { PactFactory } from 'nestjs-pact'; +import { PactV2Factory } from 'nestjs-pact'; import { PactModule } from '@test/pact/pact.module'; describe('Pact', () => { - let pactFactory: PactFactory; - let provider: Pact; + let pactFactory: PactV2Factory; + let provider: PactV2; beforeAll(async () => { const moduleRef = await Test.createTestingModule({ imports: [SomeOtherModule, AndAnotherModuleYouNeed, PactModule], }).compile(); - pactFactory = moduleRef.get(PactFactory); + pactFactory = moduleRef.get(PactV2Factory); provider = pactFactory.createContractBetween({ consumer: 'Consumer Service Name', @@ -134,6 +182,98 @@ describe('Pact', () => { }); ``` +v3 + +```typescript +import { PactV3 } from '@pact-foundation/pact'; +import { Test } from '@nestjs/testing'; +import { PactV3Factory } from 'nestjs-pact'; +import { PactModule } from '@test/pact/pact.module'; + +describe('Pact', () => { + let pactFactory: PactV3Factory; + let provider: PactV3; + + beforeAll(async () => { + const moduleRef = await Test.createTestingModule({ + imports: [SomeOtherModule, AndAnotherModuleYouNeed, PactModule], + }).compile(); + + pactFactory = moduleRef.get(PactV3Factory); + + provider = pactFactory.createContractBetween({ + consumer: 'Consumer Service Name', + provider: 'Provider Service Name', + }); + + }); + + describe('when something happens', () => { + describe('and another thing happens too', () => { + beforeAll(() => provider.addInteraction({ ... })); + + it('returns a 401 unauthorized', () => { + return provider.executeTest(async (mockServer) => { + // mockServer.url is the full url + port of the pact mock server + process.env.API_HOST = mockServer.url; + return expect( ... ); + }); + + }); + }); + }); +}); +``` + +v4 + +```typescript +import { Pact } from '@pact-foundation/pact'; +import { Test } from '@nestjs/testing'; +import { PactFactory } from 'nestjs-pact'; +import { PactModule } from '@test/pact/pact.module'; + +describe('Pact', () => { + let pactFactory: PactFactory; + let provider: Pact; + + beforeAll(async () => { + const moduleRef = await Test.createTestingModule({ + imports: [SomeOtherModule, AndAnotherModuleYouNeed, PactModule], + }).compile(); + + pactFactory = moduleRef.get(PactFactory); + + provider = pactFactory.createContractBetween({ + consumer: 'Consumer Service Name', + provider: 'Provider Service Name', + }); + + }); + + describe('when something happens', () => { + it('returns the animal', async () => { + await provider + .addInteraction() + .given('Has an animal with ID 1') + .uponReceiving('a request for an animal with ID 1') + .withRequest('GET', regex('/animals/[0-9]+','/animals/1'), (builder) => { + builder.headers({ Authorization: 'Bearer token' }); + }) + .willRespondWith(HttpStatus.OK, (builder) => { + builder.headers({ 'Content-Type': 'application/json; charset=utf-8' }); + builder.jsonBody(animalBodyExpectation); + }) + .executeTest(async (mockServer) => { + process.env.API_HOST = mockServer.url; + const suggestedMates = await animalsService.getAnimalById(11); + expect(suggestedMates).toHaveProperty('id', 1); + }); + }); + }); +}); +``` + Now let's look at how we can publish the pacts created from the test file to a Pact broker! **test/pact/publish-pacts.ts** diff --git a/package.json b/package.json index fd1cfa7..3dedd4e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nestjs-pact", - "version": "2.3.5", + "version": "3.0.0", "license": "MIT", "description": "Injectable Pact.js Consumer/Producer for NestJS", "keywords": [ @@ -24,6 +24,9 @@ "bugs": { "url": "https://github.com/omermorad/nestjs-pact/issues" }, + "engines": { + "node": ">=20" + }, "readme": "https://github.com/omermorad/nestjs-pact/README.md", "scripts": { "prebuild": "./node_modules/.bin/rimraf dist", @@ -80,7 +83,7 @@ "peerDependencies": { "@nestjs/common": "7.x || 8.x || 9.x || 10.x || 11.x", "@nestjs/core": "7.x || 8.x || 9.x || 10.x || 11.x", - "@pact-foundation/pact": "10.x || 11.x || 12.x || 13.x || 14.x || 15.x", + "@pact-foundation/pact": "16.x", "@pact-foundation/pact-cli": "15.x || 16.x" }, "dependencies": { diff --git a/src/common/pact-module-providers.enum.ts b/src/common/pact-module-providers.enum.ts index 730a381..3544e63 100644 --- a/src/common/pact-module-providers.enum.ts +++ b/src/common/pact-module-providers.enum.ts @@ -4,4 +4,6 @@ export enum PactModuleProviders { PublicationOptions = 'PUBLICATION_OPTIONS', PactPublisher = 'PACT_PUBLISHER', Pact = 'PACT_INSTANCE', + PactV2 = 'PACT_V2_INSTANCE', + PactV3 = 'PACT_V3_INSTANCE', } diff --git a/src/interfaces/pact-consumer-module-options.interface.ts b/src/interfaces/pact-consumer-module-options.interface.ts index ef3ae43..baa3198 100644 --- a/src/interfaces/pact-consumer-module-options.interface.ts +++ b/src/interfaces/pact-consumer-module-options.interface.ts @@ -1,9 +1,11 @@ import { ModuleMetadata, Type } from '@nestjs/common/interfaces'; -import { PactOptions } from '@pact-foundation/pact'; +import { PactOptions, PactV2Options, PactV3Options } from '@pact-foundation/pact'; import { PublisherOptions } from '@pact-foundation/pact-cli'; export type PactConsumerOptions = Omit; +export type PactV2ConsumerOptions = Omit; +export type PactV3ConsumerOptions = Omit; export type PactPublicationOptions = PublisherOptions; export interface PactConsumerOverallOptions { @@ -11,6 +13,16 @@ export interface PactConsumerOverallOptions { publication?: PactPublicationOptions; } +export interface PactV2ConsumerOverallOptions { + consumer: PactV2ConsumerOptions; + publication?: PactPublicationOptions; +} + +export interface PactV3ConsumerOverallOptions { + consumer: PactV3ConsumerOptions; + publication?: PactPublicationOptions; +} + export interface PactConsumerOptionsFactory { createPactConsumerOptions(): Promise | PactConsumerOverallOptions; } @@ -21,3 +33,25 @@ export interface PactConsumerModuleAsyncOptions extends Pick; useFactory?: (...args: any[]) => Promise | PactConsumerOverallOptions; } + +export interface PactV2ConsumerOptionsFactory { + createPactV2ConsumerOptions(): Promise | PactV2ConsumerOverallOptions; +} + +export interface PactV2ConsumerModuleAsyncOptions extends Pick { + inject?: any[]; + useClass?: Type; + useExisting?: Type; + useFactory?: (...args: any[]) => Promise | PactV2ConsumerOverallOptions; +} + +export interface PactV3ConsumerOptionsFactory { + createPactV3ConsumerOptions(): Promise | PactV3ConsumerOverallOptions; +} + +export interface PactV3ConsumerModuleAsyncOptions extends Pick { + inject?: any[]; + useClass?: Type; + useExisting?: Type; + useFactory?: (...args: any[]) => Promise | PactV3ConsumerOverallOptions; +} diff --git a/src/modules/pact-consumer-core.module.ts b/src/modules/pact-consumer-core.module.ts index 542011a..1863399 100644 --- a/src/modules/pact-consumer-core.module.ts +++ b/src/modules/pact-consumer-core.module.ts @@ -2,11 +2,17 @@ import { DynamicModule, Module, Provider, Type } from '@nestjs/common'; import { PactConsumerModuleAsyncOptions, + PactV2ConsumerModuleAsyncOptions, + PactV3ConsumerModuleAsyncOptions, PactConsumerOptionsFactory, + PactV2ConsumerOptionsFactory, + PactV3ConsumerOptionsFactory, PactConsumerOverallOptions, + PactV2ConsumerOverallOptions, + PactV3ConsumerOverallOptions, } from '../interfaces/pact-consumer-module-options.interface'; -import { PactProvider } from '../providers/pact.provider'; -import { PactFactory } from '../services/pact-factory.service'; +import { PactProvider, PactV2Provider, PactV3Provider } from '../providers/pact.provider'; +import { PactFactory, PactV2Factory, PactV3Factory } from '../services/pact-factory.service'; import { PactModuleProviders } from '../common/pact-module-providers.enum'; import { ProviderFactory } from '../common/provider-factory'; import { PactPublisherProvider } from '../providers/pact-publisher.provider'; @@ -95,3 +101,173 @@ export class PactConsumerCoreModule { ]; } } + +@Module({}) +export class PactV2ConsumerCoreModule { + public static register(options: PactV2ConsumerOverallOptions): DynamicModule { + const consumerOptProvider = ProviderFactory.create(PactModuleProviders.ConsumerOptions, options.consumer); + const publisherOptProvider = ProviderFactory.create(PactModuleProviders.PublicationOptions, options.publication); + + return { + module: PactV2ConsumerCoreModule, + exports: [PactV2Factory, PactPublisherProvider], + providers: [consumerOptProvider, publisherOptProvider, PactV2Provider, PactPublisherProvider, PactV2Factory], + }; + } + + public static registerAsync(options: PactV2ConsumerModuleAsyncOptions): DynamicModule { + return { + module: PactV2ConsumerCoreModule, + exports: [PactV2Factory, PactPublisherProvider], + imports: options.imports, + providers: [...this.createAsyncProviders(options), PactV2Provider, PactPublisherProvider, PactV2Factory], + }; + } + + private static createAsyncProviders(options: PactV2ConsumerModuleAsyncOptions): Provider[] { + if (options.useExisting || options.useFactory) { + return this.createAsyncOptionsProviders(options); + } + + const { useClass } = options; + + return [ + ...this.createAsyncOptionsProviders(options), + { + provide: useClass, + useClass, + }, + ]; + } + + private static createAsyncOptionsProviders(options: PactV2ConsumerModuleAsyncOptions): Provider[] { + if (options.useFactory) { + return [ + { + provide: PactModuleProviders.ConsumerOptions, + useFactory: async () => { + const { consumer } = await options.useFactory(); + return consumer; + }, + inject: options.inject || [], + }, + { + provide: PactModuleProviders.PublicationOptions, + useFactory: async () => { + const { publication } = await options.useFactory(); + return publication; + }, + inject: options.inject || [], + }, + ]; + } + + const inject = [(options.useClass || options.useExisting) as Type]; + + return [ + { + provide: PactModuleProviders.ConsumerOptions, + useFactory: async (optionsFactory: PactV2ConsumerOptionsFactory) => { + const { consumer } = await optionsFactory.createPactV2ConsumerOptions(); + + return consumer; + }, + inject, + }, + { + provide: PactModuleProviders.PublicationOptions, + useFactory: async (optionsFactory: PactV2ConsumerOptionsFactory) => { + const { publication } = await optionsFactory.createPactV2ConsumerOptions(); + + return publication; + }, + inject, + }, + ]; + } +} + +@Module({}) +export class PactV3ConsumerCoreModule { + public static register(options: PactV3ConsumerOverallOptions): DynamicModule { + const consumerOptProvider = ProviderFactory.create(PactModuleProviders.ConsumerOptions, options.consumer); + const publisherOptProvider = ProviderFactory.create(PactModuleProviders.PublicationOptions, options.publication); + + return { + module: PactV3ConsumerCoreModule, + exports: [PactV3Factory, PactPublisherProvider], + providers: [consumerOptProvider, publisherOptProvider, PactV3Provider, PactPublisherProvider, PactV3Factory], + }; + } + + public static registerAsync(options: PactV3ConsumerModuleAsyncOptions): DynamicModule { + return { + module: PactV3ConsumerCoreModule, + exports: [PactV3Factory, PactPublisherProvider], + imports: options.imports, + providers: [...this.createAsyncProviders(options), PactV3Provider, PactPublisherProvider, PactV3Factory], + }; + } + + private static createAsyncProviders(options: PactV3ConsumerModuleAsyncOptions): Provider[] { + if (options.useExisting || options.useFactory) { + return this.createAsyncOptionsProviders(options); + } + + const { useClass } = options; + + return [ + ...this.createAsyncOptionsProviders(options), + { + provide: useClass, + useClass, + }, + ]; + } + + private static createAsyncOptionsProviders(options: PactV3ConsumerModuleAsyncOptions): Provider[] { + if (options.useFactory) { + return [ + { + provide: PactModuleProviders.ConsumerOptions, + useFactory: async () => { + const { consumer } = await options.useFactory(); + return consumer; + }, + inject: options.inject || [], + }, + { + provide: PactModuleProviders.PublicationOptions, + useFactory: async () => { + const { publication } = await options.useFactory(); + return publication; + }, + inject: options.inject || [], + }, + ]; + } + + const inject = [(options.useClass || options.useExisting) as Type]; + + return [ + { + provide: PactModuleProviders.ConsumerOptions, + useFactory: async (optionsFactory: PactV3ConsumerOptionsFactory) => { + const { consumer } = await optionsFactory.createPactV3ConsumerOptions(); + + return consumer; + }, + inject, + }, + { + provide: PactModuleProviders.PublicationOptions, + useFactory: async (optionsFactory: PactV3ConsumerOptionsFactory) => { + const { publication } = await optionsFactory.createPactV3ConsumerOptions(); + + return publication; + }, + inject, + }, + ]; + } +} diff --git a/src/modules/pact-consumer.module.ts b/src/modules/pact-consumer.module.ts index a5759e6..77df530 100644 --- a/src/modules/pact-consumer.module.ts +++ b/src/modules/pact-consumer.module.ts @@ -3,9 +3,17 @@ import { DynamicModule, Module } from '@nestjs/common'; import { PactConsumerModuleAsyncOptions, PactConsumerOverallOptions, + PactV2ConsumerModuleAsyncOptions, + PactV2ConsumerOverallOptions, + PactV3ConsumerModuleAsyncOptions, + PactV3ConsumerOverallOptions, } from '../interfaces/pact-consumer-module-options.interface'; -import { PactConsumerCoreModule } from './pact-consumer-core.module'; +import { + PactConsumerCoreModule, + PactV2ConsumerCoreModule, + PactV3ConsumerCoreModule, +} from './pact-consumer-core.module'; @Module({}) export class PactConsumerModule { @@ -23,3 +31,37 @@ export class PactConsumerModule { }; } } + +@Module({}) +export class PactV2ConsumerModule { + public static register(options: PactV2ConsumerOverallOptions) { + return { + module: PactV2ConsumerModule, + imports: [PactV2ConsumerCoreModule.register(options)], + }; + } + + public static registerAsync(options: PactV2ConsumerModuleAsyncOptions): DynamicModule { + return { + module: PactV2ConsumerModule, + imports: [PactV2ConsumerCoreModule.registerAsync(options)], + }; + } +} + +@Module({}) +export class PactV3ConsumerModule { + public static register(options: PactV3ConsumerOverallOptions) { + return { + module: PactV3ConsumerModule, + imports: [PactV3ConsumerCoreModule.register(options)], + }; + } + + public static registerAsync(options: PactV3ConsumerModuleAsyncOptions): DynamicModule { + return { + module: PactV3ConsumerModule, + imports: [PactV3ConsumerCoreModule.registerAsync(options)], + }; + } +} diff --git a/src/providers/pact-publisher.provider.ts b/src/providers/pact-publisher.provider.ts index 378c583..4328a3e 100644 --- a/src/providers/pact-publisher.provider.ts +++ b/src/providers/pact-publisher.provider.ts @@ -1,4 +1,5 @@ import { FactoryProvider } from '@nestjs/common'; +import * as fs from 'fs'; import { Publisher } from '@pact-foundation/pact-cli'; @@ -7,6 +8,14 @@ import { PactModuleProviders } from '../common/pact-module-providers.enum'; export const PactPublisherProvider: FactoryProvider = { provide: PactModuleProviders.PactPublisher, - useFactory: (options: PactPublicationOptions) => new Publisher(options), + useFactory: (options: PactPublicationOptions) => { + if (!options || !options.pactFilesOrDirs || options.pactFilesOrDirs.length === 0) { + return; + } + if (!fs.existsSync(options.pactFilesOrDirs[0])) { + fs.mkdirSync(options.pactFilesOrDirs[0], { recursive: true }); + } + return new Publisher(options); + }, inject: [PactModuleProviders.PublicationOptions], }; diff --git a/src/providers/pact.provider.ts b/src/providers/pact.provider.ts index 4d6e69e..25d1346 100644 --- a/src/providers/pact.provider.ts +++ b/src/providers/pact.provider.ts @@ -1,8 +1,10 @@ import { Type } from '@nestjs/common'; -import { Pact } from '@pact-foundation/pact'; +import { Pact, PactV2, PactV3 } from '@pact-foundation/pact'; import { ProviderFactory } from '../common/provider-factory'; import { PactModuleProviders } from '../common/pact-module-providers.enum'; export const PactProvider = ProviderFactory.create>(PactModuleProviders.Pact, Pact); +export const PactV2Provider = ProviderFactory.create>(PactModuleProviders.PactV2, PactV2); +export const PactV3Provider = ProviderFactory.create>(PactModuleProviders.PactV3, PactV3); diff --git a/src/services/pact-factory-service.test.ts b/src/services/pact-factory-service.test.ts index c6a8896..ecb7d36 100644 --- a/src/services/pact-factory-service.test.ts +++ b/src/services/pact-factory-service.test.ts @@ -1,11 +1,15 @@ import { Test, TestingModule } from '@nestjs/testing'; -import { Pact } from '@pact-foundation/pact'; +import { Pact, PactV2, PactV3 } from '@pact-foundation/pact'; -import { PactConsumerOptions } from '../interfaces/pact-consumer-module-options.interface'; +import { + PactConsumerOptions, + PactV2ConsumerOptions, + PactV3ConsumerOptions, +} from '../interfaces/pact-consumer-module-options.interface'; import { PactModuleProviders } from '../common/pact-module-providers.enum'; -import { PactFactory } from './pact-factory.service'; +import { PactFactory, PactV2Factory, PactV3Factory } from './pact-factory.service'; jest.mock('@pact-foundation/pact'); @@ -56,3 +60,99 @@ describe('PactFactory', () => { }); }); }); + +describe('PactV2Factory', () => { + let moduleRef: TestingModule; + let pactFactoryService: PactV2Factory; + + const contractBetween = { + provider: 'Provider 1', + consumer: 'Consumer 1', + }; + + const consumerOptions = { + host: 'http://some-host', + port: 1234, + } as PactV2ConsumerOptions; + + beforeAll(async () => { + moduleRef = await Test.createTestingModule({ + providers: [PactV2Factory, { provide: PactModuleProviders.ConsumerOptions, useValue: consumerOptions }], + }).compile(); + + pactFactoryService = moduleRef.get(PactV2Factory); + }); + + describe('Given a PactFactory service', () => { + describe("When calling 'createContractBetween' method", () => { + let pact: PactV2; + + beforeAll(() => { + pact = pactFactoryService.createContractBetween(contractBetween); + }); + + test('then call Pact constructor', () => { + expect(PactV2).toHaveBeenCalledTimes(1); + }); + + test("then call Pact constructor with the 'provider', 'consumer' and the rest of the options", () => { + expect(PactV2).toHaveBeenCalledWith({ + ...consumerOptions, + ...contractBetween, + }); + }); + + test('then return an instance of PactV2', () => { + expect(pact).toBeInstanceOf(PactV2); + }); + }); + }); +}); + +describe('PactV3Factory', () => { + let moduleRef: TestingModule; + let pactV3FactoryService: PactV3Factory; + + const contractBetween = { + provider: 'Provider 1', + consumer: 'Consumer 1', + }; + + const consumerOptions = { + host: 'http://some-host', + port: 1234, + } as PactV3ConsumerOptions; + + beforeAll(async () => { + moduleRef = await Test.createTestingModule({ + providers: [PactV3Factory, { provide: PactModuleProviders.ConsumerOptions, useValue: consumerOptions }], + }).compile(); + + pactV3FactoryService = moduleRef.get(PactV3Factory); + }); + + describe('Given a PactV3Factory service', () => { + describe("When calling 'createContractBetween' method", () => { + let pact: PactV3; + + beforeAll(() => { + pact = pactV3FactoryService.createContractBetween(contractBetween); + }); + + test('then call Pact constructor', () => { + expect(PactV3).toHaveBeenCalledTimes(1); + }); + + test("then call Pact constructor with the 'provider', 'consumer' and the rest of the options", () => { + expect(PactV3).toHaveBeenCalledWith({ + ...consumerOptions, + ...contractBetween, + }); + }); + + test('then return an instance of Pact', () => { + expect(pact).toBeInstanceOf(PactV3); + }); + }); + }); +}); diff --git a/src/services/pact-factory.service.ts b/src/services/pact-factory.service.ts index ef23b25..1b467c3 100644 --- a/src/services/pact-factory.service.ts +++ b/src/services/pact-factory.service.ts @@ -1,9 +1,13 @@ import { Inject, Injectable } from '@nestjs/common'; -import { Pact } from '@pact-foundation/pact'; +import { Pact, PactV2, PactV3 } from '@pact-foundation/pact'; import { ContractBetween } from '../interfaces/contract-between.interface'; -import { PactConsumerOptions } from '../interfaces/pact-consumer-module-options.interface'; +import { + PactConsumerOptions, + PactV2ConsumerOptions, + PactV3ConsumerOptions, +} from '../interfaces/pact-consumer-module-options.interface'; import { PactModuleProviders } from '../common/pact-module-providers.enum'; @Injectable() @@ -20,3 +24,32 @@ export class PactFactory { }); } } + +@Injectable() +export class PactV2Factory { + public constructor(@Inject(PactModuleProviders.ConsumerOptions) private readonly options: PactV2ConsumerOptions) {} + public createContractBetween(sides: ContractBetween): PactV2 { + const { provider, consumer } = sides; + + return new PactV2({ + consumer, + provider, + ...this.options, + }); + } +} + +@Injectable() +export class PactV3Factory { + public constructor(@Inject(PactModuleProviders.ConsumerOptions) private readonly options: PactV3ConsumerOptions) {} + + public createContractBetween(sides: ContractBetween): PactV3 { + const { provider, consumer } = sides; + + return new PactV3({ + consumer, + provider, + ...this.options, + }); + } +} From 52e5cd79e5fa753716f2a8911cba8fbff614a747 Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Fri, 26 Sep 2025 21:18:29 +0100 Subject: [PATCH 2/6] chore(ci): test against node 22/24 --- .github/workflows/ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 932f59e..8e62dea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,8 +10,7 @@ jobs: strategy: fail-fast: false matrix: - node-version: [20.x] - # node-version: [20.x, 22.x, 24.x] + node-version: [20.x, 22.x, 24.x] steps: - uses: actions/checkout@v4 From 89ef56af1d659bc24cf4771b1517ef474dd1c51f Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Fri, 26 Sep 2025 23:18:58 +0100 Subject: [PATCH 3/6] chore(deps): bump nestjs to latest - 11.1.6 --- package.json | 6 +- yarn.lock | 186 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 126 insertions(+), 66 deletions(-) diff --git a/package.json b/package.json index 3dedd4e..b31cec7 100644 --- a/package.json +++ b/package.json @@ -47,9 +47,9 @@ "devDependencies": { "@commitlint/cli": "^17.3.0", "@commitlint/config-conventional": "^17.3.0", - "@nestjs/common": "^9.2.1", - "@nestjs/core": "^9.2.1", - "@nestjs/testing": "^9.2.1", + "@nestjs/common": "11.1.6", + "@nestjs/core": "11.1.6", + "@nestjs/testing": "11.1.6", "@pact-foundation/pact": "^15.0.1", "@pact-foundation/pact-cli": "^16.0.7", "@semantic-release/changelog": "^6.0.2", diff --git a/yarn.lock b/yarn.lock index 1197cf2..697c578 100644 --- a/yarn.lock +++ b/yarn.lock @@ -302,6 +302,11 @@ version "0.2.3" resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" +"@borewit/text-codec@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@borewit/text-codec/-/text-codec-0.1.1.tgz#7e7f27092473d5eabcffef693a849f2cc48431da" + integrity sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA== + "@commitlint/cli@^17.3.0": version "17.3.0" resolved "https://registry.npmjs.org/@commitlint/cli/-/cli-17.3.0.tgz" @@ -751,31 +756,40 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@nestjs/common@^9.2.1": - version "9.2.1" - resolved "https://registry.npmjs.org/@nestjs/common/-/common-9.2.1.tgz" +"@lukeed/csprng@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@lukeed/csprng/-/csprng-1.1.0.tgz#1e3e4bd05c1cc7a0b2ddbd8a03f39f6e4b5e6cfe" + integrity sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA== + +"@nestjs/common@11.1.6": + version "11.1.6" + resolved "https://registry.yarnpkg.com/@nestjs/common/-/common-11.1.6.tgz#704ae26f09ccd135bf3e6f44b6ef4e3407ea3c54" + integrity sha512-krKwLLcFmeuKDqngG2N/RuZHCs2ycsKcxWIDgcm7i1lf3sQ0iG03ci+DsP/r3FcT/eJDFsIHnKtNta2LIi7PzQ== dependencies: + uid "2.0.2" + file-type "21.0.0" iterare "1.2.1" - tslib "2.4.1" - uuid "9.0.0" + load-esm "1.0.2" + tslib "2.8.1" -"@nestjs/core@^9.2.1": - version "9.2.1" - resolved "https://registry.npmjs.org/@nestjs/core/-/core-9.2.1.tgz" +"@nestjs/core@11.1.6": + version "11.1.6" + resolved "https://registry.yarnpkg.com/@nestjs/core/-/core-11.1.6.tgz#9d54882f121168b2fa2b07fa1db0858161a80626" + integrity sha512-siWX7UDgErisW18VTeJA+x+/tpNZrJewjTBsRPF3JVxuWRuAB1kRoiJcxHgln8Lb5UY9NdvklITR84DUEXD0Cg== dependencies: - "@nuxtjs/opencollective" "0.3.2" + uid "2.0.2" + "@nuxt/opencollective" "0.4.1" fast-safe-stringify "2.1.1" iterare "1.2.1" - object-hash "3.0.0" - path-to-regexp "3.2.0" - tslib "2.4.1" - uuid "9.0.0" + path-to-regexp "8.2.0" + tslib "2.8.1" -"@nestjs/testing@^9.2.1": - version "9.2.1" - resolved "https://registry.npmjs.org/@nestjs/testing/-/testing-9.2.1.tgz" +"@nestjs/testing@11.1.6": + version "11.1.6" + resolved "https://registry.yarnpkg.com/@nestjs/testing/-/testing-11.1.6.tgz#7f172a8024948dee4cb318acccfff31c1356f338" + integrity sha512-srYzzDNxGvVCe1j0SpTS9/ix75PKt6Sn6iMaH1rpJ6nj2g8vwNrhK0CoJJXvpCYgrnI+2WES2pprYnq8rAMYHA== dependencies: - tslib "2.4.1" + tslib "2.8.1" "@nodelib/fs.scandir@2.1.5": version "2.1.5" @@ -795,13 +809,12 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@nuxtjs/opencollective@0.3.2": - version "0.3.2" - resolved "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz" +"@nuxt/opencollective@0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@nuxt/opencollective/-/opencollective-0.4.1.tgz#57bc41d2b03b2fba20b935c15950ac0f4bd2cea2" + integrity sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ== dependencies: - chalk "^4.1.0" - consola "^2.15.0" - node-fetch "^2.6.1" + consola "^3.2.3" "@pact-foundation/pact-cli-darwin-arm64@16.0.7": version "16.0.7" @@ -991,6 +1004,20 @@ dependencies: defer-to-connect "^1.0.1" +"@tokenizer/inflate@^0.2.7": + version "0.2.7" + resolved "https://registry.yarnpkg.com/@tokenizer/inflate/-/inflate-0.2.7.tgz#32dd9dfc9abe457c89b3d9b760fc0690c85a103b" + integrity sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg== + dependencies: + debug "^4.4.0" + fflate "^0.8.2" + token-types "^6.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + "@tsconfig/node10@^1.0.7": version "1.0.9" resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" @@ -2688,9 +2715,10 @@ configstore@^4.0.0: write-file-atomic "^2.0.0" xdg-basedir "^3.0.0" -consola@^2.15.0: - version "2.15.3" - resolved "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz" +consola@^3.2.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.4.2.tgz#5af110145397bb67afdab77013fdc34cae590ea7" + integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: version "1.1.0" @@ -2922,6 +2950,13 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.4.0: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + debuglog@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" @@ -3763,6 +3798,11 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fflate@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.8.2.tgz#fc8631f5347812ad6028bbe4a2308b2792aa1dea" + integrity sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A== + figgy-pudding@^3.4.1, figgy-pudding@^3.5.1: version "3.5.2" resolved "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz" @@ -3779,6 +3819,16 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-type@21.0.0: + version "21.0.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-21.0.0.tgz#b6c5990064bc4b704f8e5c9b6010c59064d268bc" + integrity sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg== + dependencies: + "@tokenizer/inflate" "^0.2.7" + strtok3 "^10.2.2" + token-types "^6.0.0" + uint8array-extras "^1.4.0" + fill-range@^7.1.1: version "7.1.1" resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" @@ -5705,6 +5755,11 @@ listr2@^5.0.5: through "^2.3.8" wrap-ansi "^7.0.0" +load-esm@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/load-esm/-/load-esm-1.0.2.tgz#35dbac8a1a3abdb802cf236008048fcc8a9289a6" + integrity sha512-nVAvWk/jeyrWyXEAs84mpQCYccxRqgKY4OznLuJhJCa0XsPSfdOIr2zvBZEj3IHEHbX97jjscKRRV539bW0Gpw== + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz" @@ -6136,9 +6191,9 @@ ms@2.1.2, ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" -ms@2.1.3: +ms@2.1.3, ms@^2.1.3: version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== mute-stream@0.0.8, mute-stream@~0.0.4: @@ -6178,12 +6233,6 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@^2.6.1: - version "2.6.7" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz" - dependencies: - whatwg-url "^5.0.0" - node-gyp-build@^4.6.0: version "4.8.3" resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.3.tgz" @@ -6502,10 +6551,6 @@ object-assign@^4.1.0: version "4.1.1" resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" -object-hash@3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - object-inspect@^1.12.2, object-inspect@^1.12.3, object-inspect@^1.13.1: version "1.13.3" resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz" @@ -6871,9 +6916,10 @@ path-to-regexp@0.1.12: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== -path-to-regexp@3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz" +path-to-regexp@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" + integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== path-type@^4.0.0: version "4.0.0" @@ -8321,6 +8367,13 @@ strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" +strtok3@^10.2.2: + version "10.3.4" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-10.3.4.tgz#793ebd0d59df276a085586134b73a406e60be9c1" + integrity sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg== + dependencies: + "@tokenizer/token" "^0.3.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" @@ -8473,6 +8526,15 @@ toidentifier@1.0.1: resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +token-types@^6.0.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-6.1.1.tgz#85bd0ada82939b9178ecd5285881a538c4c00fdd" + integrity sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ== + dependencies: + "@borewit/text-codec" "^0.1.0" + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + tough-cookie@^2.3.3, tough-cookie@~2.5.0: version "2.5.0" resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" @@ -8480,10 +8542,6 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - travis-ci@^2.1.1: version "2.2.0" resolved "https://registry.npmjs.org/travis-ci/-/travis-ci-2.2.0.tgz" @@ -8560,14 +8618,19 @@ tsconfig-paths@^4.1.1: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@2.4.1, tslib@^2.1.0, tslib@^2.4.0: - version "2.4.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" +tslib@2.8.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" +tslib@^2.1.0, tslib@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + tsutils@^3.21.0: version "3.21.0" resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" @@ -8728,6 +8791,18 @@ uid-number@0.0.6: version "0.0.6" resolved "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz" +uid@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/uid/-/uid-2.0.2.tgz#4b5782abf0f2feeefc00fa88006b2b3b7af3e3b9" + integrity sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g== + dependencies: + "@lukeed/csprng" "^1.0.0" + +uint8array-extras@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/uint8array-extras/-/uint8array-extras-1.5.0.tgz#10d2a85213de3ada304fea1c454f635c73839e86" + integrity sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A== + umask@^1.1.0, umask@~1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz" @@ -8863,10 +8938,6 @@ utils-merge@1.0.1: resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@9.0.0: - version "9.0.0" - resolved "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz" - uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" @@ -8929,17 +9000,6 @@ wcwidth@^1.0.0, wcwidth@^1.0.1: dependencies: defaults "^1.0.3" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - which-boxed-primitive@^1.0.2: version "1.0.2" resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" From db30d7024993dc48eb2e9797346fc16dd26dc8ea Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Tue, 7 Oct 2025 14:48:40 +0100 Subject: [PATCH 4/6] ci: revert ci build changes for pact-js --- .github/workflows/ci.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e62dea..af9ee69 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,20 +25,8 @@ jobs: - run: corepack enable # Required for yarn, when run via act locally - - name: Clone and Build Pact.js - run: | - cd /tmp - git clone https://github.com/pact-foundation/pact-js - cd pact-js - git checkout feat/v4-asynchronous-messages-pact-core-v17 - yarn install - yarn run dist - cd dist - yarn link - name: Install Dependencies run: yarn install - - name: link @pact-foundation/pact - run: yarn link @pact-foundation/pact - name: Lint Commit Message run: | From 5c8adb7f118d5d9e4f6a60f6d6b905bc17b76942 Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Tue, 7 Oct 2025 14:49:18 +0100 Subject: [PATCH 5/6] docs: update headings for PactConsumer V2/V3/V4 setup and test --- README.md | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 71e550b..240175e 100644 --- a/README.md +++ b/README.md @@ -25,6 +25,12 @@ - [About](#about) - [Introduction](#introduction) - [Consumer](#consumer) + - [V2 setup](#v2-setup) + - [V3 setup](#v3-setup) + - [V4 setup](#v4-setup) + - [V2 test](#v2-test) + - [V3 test](#v3-test) + - [V4 test](#v4-test) - [Provider](#provider) - [License](#license) - [Acknowledgements](#acknowledgements) @@ -73,11 +79,11 @@ The obvious advantage of this package is that Pact can be used in combination wi In order to use the `Consumer` module, you need to follow a few simple steps, let's go over it! First, create a file called `pact.module.ts` in your `test` folder (or wherever you put your tests), and simply -load the `PactV2ConsumerModule` like below: +load the `PactConsumerModule`, `PactV2ConsumerModule`, or `PactV3ConsumerModule` like below: **test/pact/pact.module.ts** -v2 +#### V2 setup ```typescript import { Module } from '@nestjs/common'; @@ -96,8 +102,7 @@ import { AppModule } from '../../src/app.module'; export class PactModule {} ``` - -v3 +#### V3 setup ```typescript import { DynamicModule, Module } from '@nestjs/common'; @@ -116,7 +121,7 @@ import { AppModule } from '../../src/app.module'; export class PactModule {} ``` -v4 +#### V4 setup ```typescript import { DynamicModule, Module } from '@nestjs/common'; @@ -139,7 +144,7 @@ Yay, now let's create the test file! let's call it `my-test.spec.ts` **test/pact/my-test.spec.ts** -v2 +#### V2 test ```typescript import { PactV2 } from '@pact-foundation/pact'; @@ -182,7 +187,7 @@ describe('Pact', () => { }); ``` -v3 +#### V3 test ```typescript import { PactV3 } from '@pact-foundation/pact'; @@ -225,7 +230,7 @@ describe('Pact', () => { }); ``` -v4 +#### V4 test ```typescript import { Pact } from '@pact-foundation/pact'; From 3eacf824e67b3a22922b953871b18467e7ff9952 Mon Sep 17 00:00:00 2001 From: Yousaf Nabi Date: Tue, 7 Oct 2025 14:51:44 +0100 Subject: [PATCH 6/6] chore(deps): update to latest pact-foundation/pact and pact-cli --- package.json | 4 +- yarn.lock | 996 ++++++++++++++++++++++++++------------------------- 2 files changed, 508 insertions(+), 492 deletions(-) diff --git a/package.json b/package.json index b31cec7..e647549 100644 --- a/package.json +++ b/package.json @@ -50,8 +50,8 @@ "@nestjs/common": "11.1.6", "@nestjs/core": "11.1.6", "@nestjs/testing": "11.1.6", - "@pact-foundation/pact": "^15.0.1", - "@pact-foundation/pact-cli": "^16.0.7", + "@pact-foundation/pact": "^16.0.0", + "@pact-foundation/pact-cli": "^16.1.4", "@semantic-release/changelog": "^6.0.2", "@semantic-release/git": "^10.0.1", "@types/get-port": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 697c578..441f6b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -816,126 +816,127 @@ dependencies: consola "^3.2.3" -"@pact-foundation/pact-cli-darwin-arm64@16.0.7": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-darwin-arm64/-/pact-cli-darwin-arm64-16.0.7.tgz#b34821daebee451496faff1f0326037ff811c4bc" - integrity sha512-n9GbKfeedEaI7HEWxLwBJraWghUKAZoquHpagV2X4/rVfZDVILbCh8oRWj7CJ/mhn7RTVNH2Vf2WRNV49fOH0w== - -"@pact-foundation/pact-cli-darwin-x64@16.0.7": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-darwin-x64/-/pact-cli-darwin-x64-16.0.7.tgz#88152dac1d408864a5c6215c8ab13653990ac0f7" - integrity sha512-S71H+yJdyW5pGKU9EqM5V7/mp3/JCvUOpc4uOjoG+8r0z6zzlGzbZJicLz5iPOj+1LUFJLXrH4OBK6zMiZm7oA== - -"@pact-foundation/pact-cli-linux-arm64@16.0.7": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-linux-arm64/-/pact-cli-linux-arm64-16.0.7.tgz#e66ceebca2cf4f046477064a26c9157f50f21bba" - integrity sha512-VPiNKIGShY11W6/OZlHf5GZHowQfLcsaCKC+lSiQnvDZ52788p5BpHT05AjklMgH0LBn4lJ9NufXjux9WAvtlQ== - -"@pact-foundation/pact-cli-linux-x64@16.0.7": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-linux-x64/-/pact-cli-linux-x64-16.0.7.tgz#d2ae840b3cb146c34b5c71c726a584951e5d7e2c" - integrity sha512-sgHLyKyFigROPZGAzkZGZgUk18sv1kDApYnUpOT5OCf/qmhCJ270KPyUKgZG9HBiVBZe0sa4N3897xp4Urpz/w== - -"@pact-foundation/pact-cli-windows-x64@16.0.7": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-windows-x64/-/pact-cli-windows-x64-16.0.7.tgz#e9ca1d33c44ea464b21e77059083a205f2b56b73" - integrity sha512-kahbIHx3rwIfg6/GUtAQlYXp77QgbWGYa7hkkviuOkmTPfU06KaW2H0KGKGN2u9ntYGpLoGJNfwfYcWC8OodSQ== - -"@pact-foundation/pact-cli@^16.0.7": - version "16.0.7" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli/-/pact-cli-16.0.7.tgz#d8e142973ff69ec09021a27a4f4c52ddfa8da7f0" - integrity sha512-lm0n7txmeHpPdrvqP2NZD6U85DGpJJWA0V6JqMIFEB+sBG6k7ULeKK7ggqzXKYcgy7b1SUqDaXQIOigF1gbz5w== +"@pact-foundation/pact-cli-darwin-arm64@16.1.4": + version "16.1.4" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-darwin-arm64/-/pact-cli-darwin-arm64-16.1.4.tgz#277d2f0f417971497c3f76f4c15da049c92931af" + integrity sha512-oMM9oTEgBjqY0G4P7HY4GnP54QJSe0DGsSCUbOVfAkBBxsPqxKGVqJIQ5zwxNgpTkE+PXva0gQc9bEdS64VX7w== + +"@pact-foundation/pact-cli-darwin-x64@16.1.4": + version "16.1.4" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-darwin-x64/-/pact-cli-darwin-x64-16.1.4.tgz#330d2b9bb9e12fc94f6cf71a3342428ef7babcae" + integrity sha512-nlJKqBphLAuxKPDZFuVHbyPzFo2OOaxiGQ1wo/ivS/aHCV59kfqF/Y4TL3AA6TVVm2IopurxpZ5oPC21WUERsw== + +"@pact-foundation/pact-cli-linux-arm64@16.1.4": + version "16.1.4" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-linux-arm64/-/pact-cli-linux-arm64-16.1.4.tgz#d72790e2aca8e34e738f55ecd95771cdf0b08bf5" + integrity sha512-zsF8LdAiGPn/4bfIDlIe/NkpXRgzE7VIAmVctQV5Y5WzR6laiGRwL7yrO0LUXfP3K+GSrP+bU/LKpjdiWNXd7A== + +"@pact-foundation/pact-cli-linux-x64@16.1.4": + version "16.1.4" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-linux-x64/-/pact-cli-linux-x64-16.1.4.tgz#6041c554cba42c44b597d8bd453939f3d915cba1" + integrity sha512-H4Ma/2CJRsN+rRQN980iNgoPyTcgXMF9Uf55SPmiwwWcmfbZavxiBlOQoAiMM2+YPC4c47i2EW7au8EW/1jOCg== + +"@pact-foundation/pact-cli-windows-x64@16.1.4": + version "16.1.4" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli-windows-x64/-/pact-cli-windows-x64-16.1.4.tgz#8cca40c4ef45f6e957720232fdbbdc5eca8a0ab8" + integrity sha512-wn79XtC+GQqBmGxjGpRvGqO4TF3H6VDmDy7FjZhXFsT5mfByEmujZRtYIrE4EeS+1PdIM2l86yT88+iT0dDV3Q== + +"@pact-foundation/pact-cli@^16.1.4": + version "16.1.4" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-cli/-/pact-cli-16.1.4.tgz#ad20048678df0699b078a59237ee60cf8f7d724e" + integrity sha512-kJ9ZZLLtBfRzpLM2HfkEait1RbKbDo7mVKZJzMFfdZUGgysRc97tkev8gBZoU+uJZh+n6RgAo4q2yTAHaZaiAw== dependencies: chalk "4.1.2" check-types "11.2.3" cross-spawn "7.0.6" mkdirp "3.0.1" needle "^3.3.1" - pino "^9.5.0" + pino "^9.7.0" pino-pretty "^13.0.0" promise-timeout "1.3.0" rimraf "4.4.1" underscore "1.13.7" optionalDependencies: - "@pact-foundation/pact-cli-darwin-arm64" "16.0.7" - "@pact-foundation/pact-cli-darwin-x64" "16.0.7" - "@pact-foundation/pact-cli-linux-arm64" "16.0.7" - "@pact-foundation/pact-cli-linux-x64" "16.0.7" - "@pact-foundation/pact-cli-windows-x64" "16.0.7" + "@pact-foundation/pact-cli-darwin-arm64" "16.1.4" + "@pact-foundation/pact-cli-darwin-x64" "16.1.4" + "@pact-foundation/pact-cli-linux-arm64" "16.1.4" + "@pact-foundation/pact-cli-linux-x64" "16.1.4" + "@pact-foundation/pact-cli-windows-x64" "16.1.4" -"@pact-foundation/pact-core-darwin-arm64@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-darwin-arm64/-/pact-core-darwin-arm64-16.0.0.tgz#c18b91993e680f819f7e571dbc9bc43f6716c835" - integrity sha512-cXMBT9o+1Vs/bXJRwa+UNpgBJZ6MvI35IPL1vtiRdd1eclsZEkilRznzKFokcB2fO+oOFsq7LDY4eFGgsfPiEg== +"@pact-foundation/pact-core-darwin-arm64@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-darwin-arm64/-/pact-core-darwin-arm64-17.0.0.tgz#a6d5417a36691704372eba9c312fe8487dc27f7f" + integrity sha512-OSAwR7O4Nk6rHYhon9KUyIJHJuLaJmSughire74KZu7YbM/F0nZhlxGEMN5yxRcKgbDGHtHDBkmsJ44omGsvdw== -"@pact-foundation/pact-core-darwin-x64@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-darwin-x64/-/pact-core-darwin-x64-16.0.0.tgz#ac04363acdf9f2f0a1969c962b6ae862d1ae416a" - integrity sha512-in9VZsuvQnqHHD+hxcwERYPESPHM6ZapJx0ptZKXPIOsSIfAlNEeXWI9a6cqdHE87oEE+ypyMDV9HcARLbCxGA== +"@pact-foundation/pact-core-darwin-x64@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-darwin-x64/-/pact-core-darwin-x64-17.0.0.tgz#48764fcb24d40d5c60037ab367edd40612da1d34" + integrity sha512-UHDgCkZPSeUZMracPysHAfMsUBWpah9zZJfwPvGUkjOjHvrnRGP0y98wP7PmbXiJxbxHqaaV7EHRsLjaFdS50A== -"@pact-foundation/pact-core-linux-arm64-glibc@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-arm64-glibc/-/pact-core-linux-arm64-glibc-16.0.0.tgz#c8500843cbb6bc82233007c563764fde01ad0db8" - integrity sha512-EbfSfnveyx1Fo73Cyx8IAor8Af6j6hxspikJTKNbencpsrEeXgOCBGFvnwTHR+xuvn88oBmRo0MtGJwsIT1S1A== +"@pact-foundation/pact-core-linux-arm64-glibc@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-arm64-glibc/-/pact-core-linux-arm64-glibc-17.0.0.tgz#f47ca37e0aab2ccde57175b7811d06bf46fade5a" + integrity sha512-akoL9agQklL8iGxqr4yI4X11ufjeYxEGvCtiXhDH2KFoB60MsyTOeD9SGfM90cQ/W/PjusOKHmSlz1hPWRX9Vw== -"@pact-foundation/pact-core-linux-arm64-musl@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-arm64-musl/-/pact-core-linux-arm64-musl-16.0.0.tgz#34390daa19fee8b9b31e2cdb7a49e7cc42c7e96f" - integrity sha512-hQW06EYz3leTTfNZx6126JsghC8Ilqg8FToY0mLUBZ/Y9RKM9msOR7bJi05u8nHA7g2JBFyIwNllkq5aqELeIg== +"@pact-foundation/pact-core-linux-arm64-musl@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-arm64-musl/-/pact-core-linux-arm64-musl-17.0.0.tgz#0f8f75437d4fb37c8a2c312d4445c810c5ccead8" + integrity sha512-kjDukgS7hjfb/PB68CHNCHBnG7kID3lLq3HirGp2vJ7RfqC8IOD18KTTSaHJoi48ofILx1M3Vb8zODFmxVB1pQ== -"@pact-foundation/pact-core-linux-x64-glibc@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-x64-glibc/-/pact-core-linux-x64-glibc-16.0.0.tgz#8eba976c19566d980459b75439f318bef58ee454" - integrity sha512-DqwIoM15YXol6Xc3YoCrWazEF9u/Z97zU2an83ceroRXc1VWEjf+ssd/LRT11J8OPhC2e11RDyRp+qgGWIES1Q== +"@pact-foundation/pact-core-linux-x64-glibc@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-x64-glibc/-/pact-core-linux-x64-glibc-17.0.0.tgz#4a81671577db91f4e78e0a4e64b7a65ccb53e868" + integrity sha512-AVYwU0KRmjBcHVgQz9n15D4R8BQSgK4ophzYHG9qC8DVmQ1zM3VEt/e8JcRPyd8OifK3OMJpcvvFeIRgh/s5uQ== -"@pact-foundation/pact-core-linux-x64-musl@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-x64-musl/-/pact-core-linux-x64-musl-16.0.0.tgz#e8dd3f14e7aeb6503d374cfd03d3dc8108eb13fc" - integrity sha512-C9b+lhYrwpn96USpeWNNZrbOoaMKo7/JqFoL81V9QQFmUawZOZNhp1i5HbznM35Apk2QdLM73P2DESUryVJ4ng== +"@pact-foundation/pact-core-linux-x64-musl@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-linux-x64-musl/-/pact-core-linux-x64-musl-17.0.0.tgz#f51850a7b05c9847c48c3c5f7b14b10d88a84574" + integrity sha512-3969TiqWc6r6qwaX/faNoEDCowhFCIygf5jOECDUfHX9uysS9qqZP+O7qMfGT6t0E3FIUqKS9G1bMln5e68LTQ== -"@pact-foundation/pact-core-windows-x64@16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-windows-x64/-/pact-core-windows-x64-16.0.0.tgz#6215c94967f553ac631fb1e719251f13e3562bcc" - integrity sha512-/6d0bjouofuSCWM2wauAf7+tD2AG+y5X0duchkj0vpjBdYG7tbgEB322QcyTWBi7na4plEdLSdIMnfZs6faEqA== +"@pact-foundation/pact-core-windows-x64@17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core-windows-x64/-/pact-core-windows-x64-17.0.0.tgz#b9b8691d9e2c60a1ec32ecbef3031d2a53b8b67e" + integrity sha512-Oa9S1YEfaSO5wmxFw+3F6Jbvgy0CH3Wn1qcm0tGx+7pAPNj5SOp0k0myF2OC+Xg0+iC5Q6DXfS666oNHgZlEVQ== -"@pact-foundation/pact-core@^16.0.0": - version "16.0.0" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core/-/pact-core-16.0.0.tgz#7544db4e7fb1ef0399bf7477017a59029ddba434" - integrity sha512-Zdo/JIsReDrJLg0tCN0IinTmMi4tU+gmKPNc70J0wY0j/zMuL4xdpqotKhIDChf9yK4sEr2K24lKEZ9yQN2eWw== +"@pact-foundation/pact-core@^17.0.0": + version "17.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact-core/-/pact-core-17.0.0.tgz#ff4bb871e530986304eaef11ebc9965318ed1279" + integrity sha512-H6uGvjIgiT1vcGFhFwF0wCCbX9t3w5/d+Q3UGrHSw0/hOEQdGcETSeMUIheW9oCvm9qkxPBV5YkwUwmDIUXnYg== dependencies: - check-types "7.4.0" + check-types "11.2.3" detect-libc "^2.0.3" node-gyp-build "^4.6.0" - pino "^8.7.0" - pino-pretty "^9.1.1" + pino "^9.9.0" + pino-pretty "^13.1.1" underscore "1.13.7" optionalDependencies: - "@pact-foundation/pact-core-darwin-arm64" "16.0.0" - "@pact-foundation/pact-core-darwin-x64" "16.0.0" - "@pact-foundation/pact-core-linux-arm64-glibc" "16.0.0" - "@pact-foundation/pact-core-linux-arm64-musl" "16.0.0" - "@pact-foundation/pact-core-linux-x64-glibc" "16.0.0" - "@pact-foundation/pact-core-linux-x64-musl" "16.0.0" - "@pact-foundation/pact-core-windows-x64" "16.0.0" - -"@pact-foundation/pact@^15.0.1": - version "15.0.1" - resolved "https://registry.yarnpkg.com/@pact-foundation/pact/-/pact-15.0.1.tgz#b05270149d5720186198114b5bf6e333ebba634e" - integrity sha512-9pv9mN/grXiXCPmyzQb9YYeyT8aHYO4uRNtfuR4IGLhNSHkHIhiS97ZUsegPruVkWiTcCv9tJahG+1OhL5BrTQ== - dependencies: - "@pact-foundation/pact-core" "^16.0.0" - axios "^1.8.4" - body-parser "^1.20.3" + "@pact-foundation/pact-core-darwin-arm64" "17.0.0" + "@pact-foundation/pact-core-darwin-x64" "17.0.0" + "@pact-foundation/pact-core-linux-arm64-glibc" "17.0.0" + "@pact-foundation/pact-core-linux-arm64-musl" "17.0.0" + "@pact-foundation/pact-core-linux-x64-glibc" "17.0.0" + "@pact-foundation/pact-core-linux-x64-musl" "17.0.0" + "@pact-foundation/pact-core-windows-x64" "17.0.0" + +"@pact-foundation/pact@^16.0.0": + version "16.0.0" + resolved "https://registry.yarnpkg.com/@pact-foundation/pact/-/pact-16.0.0.tgz#ef07273808d6f2bcc8425eb70e2f5896cf29152a" + integrity sha512-QPjvu40M0vX5L6boUIPZt8JGsA+eL6G48XTtDAUGKA9wlgIjShaVF4bdkDGZmex3WLb1aht4P5BG+DGguR7NZQ== + dependencies: + "@pact-foundation/pact-core" "^17.0.0" + axios "^1.12.2" + body-parser "^2.2.0" chalk "4.1.2" - express "^4.21.1" - graphql "^16.10.0" - graphql-tag "^2.9.1" + express "^5.1.0" + graphql "^16.11.0" + graphql-tag "^2.12.6" http-proxy "^1.18.1" - https-proxy-agent "^7.0.4" - js-base64 "^3.6.1" + https-proxy-agent "^7.0.6" + js-base64 "^3.7.8" lodash "^4.17.21" - ramda "^0.30.0" + ramda "^0.31.3" randexp "^0.5.3" + router "^2.2.0" "@pkgjs/parseargs@^0.11.0": version "0.11.0" @@ -1274,20 +1275,13 @@ abbrev@1, abbrev@~1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== +accepts@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-2.0.0.tgz#bbcf4ba5075467f3f2131eab3cffc73c2f5d7895" + integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng== dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" + mime-types "^3.0.0" + negotiator "^1.0.0" acorn-jsx@^5.3.2: version "5.3.2" @@ -1308,12 +1302,10 @@ agent-base@4, agent-base@^4.3.0: dependencies: es6-promisify "^5.0.0" -agent-base@^7.0.2: - version "7.1.1" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" - integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== - dependencies: - debug "^4.3.4" +agent-base@^7.1.2: + version "7.1.4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== agent-base@~4.2.1: version "4.2.1" @@ -1483,11 +1475,6 @@ array-buffer-byte-length@^1.0.1: call-bind "^1.0.5" is-array-buffer "^3.0.4" -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - array-ify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz" @@ -1627,13 +1614,13 @@ aws4@^1.8.0: version "1.11.0" resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" -axios@^1.8.4: - version "1.8.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.4.tgz#78990bb4bc63d2cae072952d374835950a82f447" - integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw== +axios@^1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.2.tgz#6c307390136cf7a2278d09cec63b136dfc6e6da7" + integrity sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw== dependencies: follow-redirects "^1.15.6" - form-data "^4.0.0" + form-data "^4.0.4" proxy-from-env "^1.1.0" babel-code-frame@^6.26.0: @@ -2204,23 +2191,20 @@ bluebird@^3.5.0, bluebird@^3.5.1, bluebird@^3.5.3, bluebird@^3.5.5: version "3.7.2" resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" -body-parser@1.20.3, body-parser@^1.20.3: - version "1.20.3" - resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz" - integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== +body-parser@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-2.2.0.tgz#f7a9656de305249a715b549b7b8fd1ab9dfddcfa" + integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg== dependencies: - bytes "3.1.2" - content-type "~1.0.5" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.13.0" - raw-body "2.5.2" - type-is "~1.6.18" - unpipe "1.0.0" + bytes "^3.1.2" + content-type "^1.0.5" + debug "^4.4.0" + http-errors "^2.0.0" + iconv-lite "^0.6.3" + on-finished "^2.4.1" + qs "^6.14.0" + raw-body "^3.0.0" + type-is "^2.0.0" boxen@^1.2.1: version "1.3.0" @@ -2306,14 +2290,6 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - builtins@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz" @@ -2326,9 +2302,9 @@ byte-size@^5.0.1: version "5.0.1" resolved "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz" -bytes@3.1.2: +bytes@3.1.2, bytes@^3.1.2: version "3.1.2" - resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cacache@^12.0.0, cacache@^12.0.2, cacache@^12.0.3: @@ -2367,6 +2343,14 @@ cachedir@2.3.0: version "2.3.0" resolved "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz" +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz" @@ -2378,6 +2362,14 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bound@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + call-limit@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/call-limit/-/call-limit-1.1.1.tgz" @@ -2458,11 +2450,6 @@ check-types@11.2.3: resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.2.3.tgz#1ffdf68faae4e941fce252840b1787b8edc93b71" integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg== -check-types@7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/check-types/-/check-types-7.4.0.tgz#0378ec1b9616ec71f774931a3c6516fad8c152f4" - integrity sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg== - chownr@^1.1.1, chownr@^1.1.2, chownr@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" @@ -2724,16 +2711,16 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control- version "1.1.0" resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== +content-disposition@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-1.0.0.tgz#844426cb398f934caefcbb172200126bc7ceace2" + integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg== dependencies: safe-buffer "5.2.1" -content-type@~1.0.4, content-type@~1.0.5: +content-type@^1.0.5: version "1.0.5" - resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== conventional-changelog-angular@^5.0.11: @@ -2774,15 +2761,15 @@ convert-source-map@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz" -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== +cookie-signature@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.2.2.tgz#57c7fc3cc293acab9fec54d73e15690ebe4a1793" + integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg== -cookie@0.7.1: - version "0.7.1" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz" - integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== +cookie@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== copy-concurrently@^1.0.0: version "1.0.5" @@ -2925,13 +2912,6 @@ dateformat@^4.6.3: resolved "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== -debug@2.6.9, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" @@ -2944,13 +2924,20 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "2.1.2" +debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" dependencies: ms "^2.1.1" -debug@^4.4.0: +debug@^4.3.5, debug@^4.4.0: version "4.4.3" resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== @@ -3045,16 +3032,11 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" -depd@2.0.0: +depd@2.0.0, depd@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - detect-file@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz" @@ -3140,6 +3122,15 @@ drange@^1.0.2: version "1.1.1" resolved "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz" +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexer3@^0.1.4: version "0.1.5" resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz" @@ -3194,14 +3185,9 @@ emoji-regex@^9.2.2: version "9.2.2" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encodeurl@~2.0.0: +encodeurl@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== encoding@^0.1.11: @@ -3354,6 +3340,11 @@ es-define-property@^1.0.0: dependencies: get-intrinsic "^1.2.4" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" @@ -3366,6 +3357,13 @@ es-object-atoms@^1.0.0: dependencies: es-errors "^1.3.0" +es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz" @@ -3383,6 +3381,16 @@ es-set-tostringtag@^2.0.3: has-tostringtag "^1.0.2" hasown "^2.0.1" +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + es-shim-unscopables@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz" @@ -3412,9 +3420,9 @@ escalade@^3.1.1: resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-html@~1.0.3: +escape-html@^1.0.3: version "1.0.3" - resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: @@ -3601,25 +3609,15 @@ esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" -etag@~1.8.1: +etag@^1.8.1: version "1.8.1" - resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" -events@^3.3.0: - version "3.3.0" - resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - execa@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" @@ -3692,42 +3690,38 @@ expect@^29.0.0, expect@^29.3.1: jest-message-util "^29.3.1" jest-util "^29.3.1" -express@^4.21.1: - version "4.21.2" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" - integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.3" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.7.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~2.0.0" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.3.1" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.3" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.12" - proxy-addr "~2.0.7" - qs "6.13.0" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.19.0" - serve-static "1.16.2" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" +express@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/express/-/express-5.1.0.tgz#d31beaf715a0016f0d53f47d3b4d7acf28c75cc9" + integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA== + dependencies: + accepts "^2.0.0" + body-parser "^2.2.0" + content-disposition "^1.0.0" + content-type "^1.0.5" + cookie "^0.7.1" + cookie-signature "^1.2.1" + debug "^4.4.0" + encodeurl "^2.0.0" + escape-html "^1.0.3" + etag "^1.8.1" + finalhandler "^2.1.0" + fresh "^2.0.0" + http-errors "^2.0.0" + merge-descriptors "^2.0.0" + mime-types "^3.0.0" + on-finished "^2.4.1" + once "^1.4.0" + parseurl "^1.3.3" + proxy-addr "^2.0.7" + qs "^6.14.0" + range-parser "^1.2.1" + router "^2.2.0" + send "^1.1.0" + serve-static "^2.2.0" + statuses "^2.0.1" + type-is "^2.0.1" + vary "^1.1.2" extend@~3.0.2: version "3.0.2" @@ -3745,7 +3739,7 @@ extsprintf@1.3.0, extsprintf@^1.2.0: version "1.3.0" resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" -fast-copy@^3.0.0, fast-copy@^3.0.2: +fast-copy@^3.0.2: version "3.0.2" resolved "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz" integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== @@ -3777,11 +3771,6 @@ fast-levenshtein@^2.0.6: version "2.0.6" resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" -fast-redact@^3.1.1: - version "3.5.0" - resolved "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz" - integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== - fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" @@ -3840,18 +3829,17 @@ filter-obj@^1.1.0: resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== -finalhandler@1.3.1: - version "1.3.1" - resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz" - integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== - dependencies: - debug "2.6.9" - encodeurl "~2.0.0" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" +finalhandler@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-2.1.0.tgz#72306373aa89d05a8242ed569ed86a1bff7c561f" + integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q== + dependencies: + debug "^4.4.0" + encodeurl "^2.0.0" + escape-html "^1.0.3" + on-finished "^2.4.1" + parseurl "^1.3.3" + statuses "^2.0.1" find-node-modules@^2.1.2: version "2.1.3" @@ -3936,13 +3924,15 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" -form-data@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz" - integrity sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw== +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" form-data@~2.3.2: @@ -3959,10 +3949,10 @@ forwarded@0.2.0: resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz" integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== +fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-2.0.0.tgz#8dd7df6a1b3a1b3a5cf186c05a5dd267622635a4" + integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A== from2@^1.3.0: version "1.3.0" @@ -4104,6 +4094,22 @@ get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@ has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-package-type@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" @@ -4112,6 +4118,14 @@ get-port@*, get-port@^5.0.0: version "5.1.1" resolved "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz" +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" @@ -4214,17 +4228,6 @@ glob@^10.3.7: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^8.0.0: - version "8.1.0" - resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - glob@^9.2.0: version "9.3.5" resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" @@ -4314,6 +4317,11 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + got@^6.7.1: version "6.7.1" resolved "https://registry.npmjs.org/got/-/got-6.7.1.tgz" @@ -4355,16 +4363,17 @@ graphemer@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" -graphql-tag@^2.9.1: +graphql-tag@^2.12.6: version "2.12.6" - resolved "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" + integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== dependencies: tslib "^2.1.0" -graphql@^16.10.0: - version "16.10.0" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.10.0.tgz#24c01ae0af6b11ea87bf55694429198aaa8e220c" - integrity sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ== +graphql@^16.11.0: + version "16.11.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-16.11.0.tgz#96d17f66370678027fdf59b2d4c20b4efaa8a633" + integrity sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw== har-schema@^2.0.0: version "2.0.0" @@ -4420,6 +4429,11 @@ has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" +has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" @@ -4460,14 +4474,6 @@ hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -help-me@^4.0.1: - version "4.2.0" - resolved "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz" - integrity sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA== - dependencies: - glob "^8.0.0" - readable-stream "^3.6.0" - help-me@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" @@ -4508,9 +4514,9 @@ http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" -http-errors@2.0.0: +http-errors@2.0.0, http-errors@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -4549,12 +4555,12 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" -https-proxy-agent@^7.0.4: - version "7.0.5" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz" - integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== +https-proxy-agent@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== dependencies: - agent-base "^7.0.2" + agent-base "^7.1.2" debug "4" human-signals@^2.1.0: @@ -4575,7 +4581,14 @@ husky@^8.0.2: version "8.0.3" resolved "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz" -iconv-lite@0.4.24, iconv-lite@^0.4.24: +iconv-lite@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.7.0.tgz#c50cd80e6746ca8115eb98743afa81aa0e147a3e" + integrity sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" dependencies: @@ -4919,6 +4932,11 @@ is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" +is-promise@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + is-redirect@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz" @@ -5441,9 +5459,10 @@ joycon@^3.1.1: resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz" integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== -js-base64@^3.6.1: - version "3.7.3" - resolved "https://registry.npmjs.org/js-base64/-/js-base64-3.7.3.tgz" +js-base64@^3.7.8: + version "3.7.8" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-3.7.8.tgz#af44496bc09fa178ed9c4adf67eb2b46f5c6d2a4" + integrity sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -5985,15 +6004,20 @@ map-obj@^4.0.0: version "4.3.0" resolved "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz" +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + meant@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/meant/-/meant-1.0.3.tgz#67769af9de1d158773e928ae82c456114903554c" integrity sha512-88ZRGcNxAq4EH38cQ4D85PM57pikCwS8Z99EWHODxN7KBY+UuPiqzRTtZzS8KTXO/ywSWbdjjJST2Hly/EQxLw== -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== +media-typer@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" + integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== meow@^8.0.0: version "8.1.2" @@ -6011,10 +6035,10 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -merge-descriptors@1.0.3: - version "1.0.3" - resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz" - integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== +merge-descriptors@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-2.0.0.tgz#ea922f660635a2249ee565e0449f951e6b603808" + integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g== merge-stream@^2.0.0: version "2.0.0" @@ -6028,11 +6052,6 @@ merge@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz" -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" @@ -6045,16 +6064,23 @@ mime-db@1.52.0: version "1.52.0" resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" -mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-db@^1.54.0: + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.35" resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" dependencies: mime-db "1.52.0" -mime@1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== +mime-types@^3.0.0, mime-types@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-3.0.1.tgz#b1d94d6997a9b32fd69ebaed0db73de8acb519ce" + integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA== + dependencies: + mime-db "^1.54.0" mimic-fn@^2.1.0: version "2.1.0" @@ -6079,13 +6105,6 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimatch@^5.0.1: - version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" - integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== - dependencies: - brace-expansion "^2.0.1" - minimatch@^8.0.2: version "8.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-8.0.4.tgz#847c1b25c014d4e9a7f68aaf63dedd668a626229" @@ -6191,7 +6210,7 @@ ms@2.1.2, ms@^2.0.0, ms@^2.1.1: version "2.1.2" resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" -ms@2.1.3, ms@^2.1.3: +ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6216,10 +6235,10 @@ needle@^3.3.1: iconv-lite "^0.6.3" sax "^1.2.4" -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== +negotiator@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-1.0.0.tgz#b6c91bb47172d69f93cfd7c357bbb529019b5f6a" + integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg== nice-try@^1.0.4: version "1.0.5" @@ -6556,6 +6575,11 @@ object-inspect@^1.12.2, object-inspect@^1.12.3, object-inspect@^1.13.1: resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz" integrity sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA== +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + object-keys@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" @@ -6622,9 +6646,9 @@ on-exit-leak-free@^2.1.0: resolved "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz" integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== -on-finished@2.4.1: +on-finished@^2.4.1: version "2.4.1" - resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== dependencies: ee-first "1.1.1" @@ -6857,9 +6881,9 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" -parseurl@~1.3.3: +parseurl@^1.3.3: version "1.3.3" - resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== path-exists@^3.0.0: @@ -6911,16 +6935,16 @@ path-scurry@^1.6.1: lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" -path-to-regexp@0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" - integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== - path-to-regexp@8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.2.0.tgz#73990cc29e57a3ff2a0d914095156df5db79e8b4" integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ== +path-to-regexp@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-8.3.0.tgz#aa818a6981f99321003a08987d3cec9c3474cd1f" + integrity sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -6950,14 +6974,6 @@ pify@^4.0.0: version "4.0.1" resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" -pino-abstract-transport@^1.0.0, pino-abstract-transport@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.2.0.tgz" - integrity sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q== - dependencies: - readable-stream "^4.0.0" - split2 "^4.0.0" - pino-abstract-transport@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" @@ -6984,67 +7000,44 @@ pino-pretty@^13.0.0: sonic-boom "^4.0.1" strip-json-comments "^3.1.1" -pino-pretty@^9.1.1: - version "9.4.1" - resolved "https://registry.npmjs.org/pino-pretty/-/pino-pretty-9.4.1.tgz" - integrity sha512-loWr5SNawVycvY//hamIzyz3Fh5OSpvkcO13MwdDW+eKIGylobPLqnVGTDwDXkdmpJd1BhEG+qhDw09h6SqJiQ== +pino-pretty@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-13.1.1.tgz#70130b9ff3737c8757f53e42d69e9f96835142b8" + integrity sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA== dependencies: colorette "^2.0.7" dateformat "^4.6.3" - fast-copy "^3.0.0" + fast-copy "^3.0.2" fast-safe-stringify "^2.1.1" - help-me "^4.0.1" + help-me "^5.0.0" joycon "^3.1.1" minimist "^1.2.6" on-exit-leak-free "^2.1.0" - pino-abstract-transport "^1.0.0" + pino-abstract-transport "^2.0.0" pump "^3.0.0" - readable-stream "^4.0.0" - secure-json-parse "^2.4.0" - sonic-boom "^3.0.0" - strip-json-comments "^3.1.1" - -pino-std-serializers@^6.0.0: - version "6.2.2" - resolved "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz" - integrity sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA== + secure-json-parse "^4.0.0" + sonic-boom "^4.0.1" + strip-json-comments "^5.0.2" pino-std-serializers@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== -pino@^8.7.0: - version "8.21.0" - resolved "https://registry.npmjs.org/pino/-/pino-8.21.0.tgz" - integrity sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.1.1" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^1.2.0" - pino-std-serializers "^6.0.0" - process-warning "^3.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.2.0" - safe-stable-stringify "^2.3.1" - sonic-boom "^3.7.0" - thread-stream "^2.6.0" - -pino@^9.5.0: - version "9.5.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-9.5.0.tgz#a7ef0fea868d22d52d8a4ce46e6e03c5dc46fdd6" - integrity sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw== +pino@^9.7.0, pino@^9.9.0: + version "9.13.1" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.13.1.tgz#55f0230cf691af42510c6dee08eeaca7319418ea" + integrity sha512-Szuj+ViDTjKPQYiKumGmEn3frdl+ZPSdosHyt9SnUevFosOkMY2b7ipxlEctNKPmMD/VibeBI+ZcZCJK+4DPuw== dependencies: atomic-sleep "^1.0.0" - fast-redact "^3.1.1" on-exit-leak-free "^2.1.0" pino-abstract-transport "^2.0.0" pino-std-serializers "^7.0.0" - process-warning "^4.0.0" + process-warning "^5.0.0" quick-format-unescaped "^4.0.3" real-require "^0.2.0" safe-stable-stringify "^2.3.1" + slow-redact "^0.3.0" sonic-boom "^4.0.1" thread-stream "^3.0.0" @@ -7101,20 +7094,10 @@ process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" -process-warning@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/process-warning/-/process-warning-3.0.0.tgz" - integrity sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ== - -process-warning@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-4.0.0.tgz#581e3a7a1fb456c5f4fd239f76bce75897682d5a" - integrity sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== +process-warning@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" + integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== promise-inflight@^1.0.1, promise-inflight@~1.0.1: version "1.0.1" @@ -7155,9 +7138,9 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" -proxy-addr@~2.0.7: +proxy-addr@^2.0.7: version "2.0.7" - resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: forwarded "0.2.0" @@ -7214,12 +7197,12 @@ qrcode-terminal@^0.12.0: version "0.12.0" resolved "https://registry.npmjs.org/qrcode-terminal/-/qrcode-terminal-0.12.0.tgz" -qs@6.13.0: - version "6.13.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz" - integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== +qs@^6.14.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== dependencies: - side-channel "^1.0.6" + side-channel "^1.1.0" qs@~6.5.2: version "6.5.3" @@ -7254,10 +7237,10 @@ qw@~1.0.1: resolved "https://registry.yarnpkg.com/qw/-/qw-1.0.2.tgz#0c31a6f810320a91c58b05198679427103b03c4a" integrity sha512-1PhZ/iLKwlVNq45dnerTMKFjMof49uqli7/0QsvPNbX5OJ3IZ8msa9lUpvPheVdP+IYYPrf6cOaVil7S35joVA== -ramda@^0.30.0: - version "0.30.1" - resolved "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz" - integrity sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw== +ramda@^0.31.3: + version "0.31.3" + resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.31.3.tgz#0f54199ec99a7bd6702277d28d6bf7f93b916bb9" + integrity sha512-xKADKRNnqmDdX59PPKLm3gGmk1ZgNnj3k7DryqWwkamp4TJ6B36DdpyKEQ0EoEYmH2R62bV4Q+S0ym2z8N2f3Q== randexp@^0.5.3: version "0.5.3" @@ -7266,19 +7249,19 @@ randexp@^0.5.3: drange "^1.0.2" ret "^0.2.0" -range-parser@~1.2.1: +range-parser@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.5.2: - version "2.5.2" - resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== +raw-body@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-3.0.1.tgz#ced5cd79a77bbb0496d707f2a0f9e1ae3aecdcb1" + integrity sha512-9G8cA+tuMS75+6G/TzW8OtLzmBDMo8p1JRxN5AZ+LAp8uxGA8V8GZm4GQ4/N5QNQEnLmg6SS7wyuSmbKepiKqA== dependencies: bytes "3.1.2" http-errors "2.0.0" - iconv-lite "0.4.24" + iconv-lite "0.7.0" unpipe "1.0.0" rc@1.2.8, rc@^1.0.1, rc@^1.1.6, rc@^1.2.8: @@ -7383,17 +7366,6 @@ readable-stream@^3.6.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^4.0.0: - version "4.5.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz" - integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== - dependencies: - abort-controller "^3.0.0" - buffer "^6.0.3" - events "^3.3.0" - process "^0.11.10" - string_decoder "^1.3.0" - readable-stream@~1.1.10: version "1.1.14" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" @@ -7690,6 +7662,17 @@ rimraf@^5.0.5: dependencies: glob "^10.3.7" +router@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/router/-/router-2.2.0.tgz#019be620b711c87641167cc79b99090f00b146ef" + integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ== + dependencies: + debug "^4.4.0" + depd "^2.0.0" + is-promise "^4.0.0" + parseurl "^1.3.3" + path-to-regexp "^8.0.0" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" @@ -7737,7 +7720,7 @@ safe-array-concat@^1.1.2: has-symbols "^1.0.3" isarray "^2.0.5" -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1: version "5.2.1" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" @@ -7781,6 +7764,11 @@ secure-json-parse@^2.4.0: resolved "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz" integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== +secure-json-parse@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-4.1.0.tgz#4f1ab41c67a13497ea1b9131bb4183a22865477c" + integrity sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA== + semantic-release-cli@^5.4.4: version "5.4.4" resolved "https://registry.npmjs.org/semantic-release-cli/-/semantic-release-cli-5.4.4.tgz" @@ -7838,34 +7826,32 @@ semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3: resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== -send@0.19.0: - version "0.19.0" - resolved "https://registry.npmjs.org/send/-/send-0.19.0.tgz" - integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" +send@^1.1.0, send@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/send/-/send-1.2.0.tgz#32a7554fb777b831dfa828370f773a3808d37212" + integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw== + dependencies: + debug "^4.3.5" + encodeurl "^2.0.0" + escape-html "^1.0.3" + etag "^1.8.1" + fresh "^2.0.0" + http-errors "^2.0.0" + mime-types "^3.0.1" + ms "^2.1.3" + on-finished "^2.4.1" + range-parser "^1.2.1" + statuses "^2.0.1" -serve-static@1.16.2: - version "1.16.2" - resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz" - integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== +serve-static@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-2.2.0.tgz#9c02564ee259bdd2251b82d659a2e7e1938d66f9" + integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ== dependencies: - encodeurl "~2.0.0" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.19.0" + encodeurl "^2.0.0" + escape-html "^1.0.3" + parseurl "^1.3.3" + send "^1.2.0" set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" @@ -7932,7 +7918,36 @@ shebang-regex@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" -side-channel@^1.0.4, side-channel@^1.0.6: +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + 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" + +side-channel@^1.0.4: version "1.0.6" resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz" integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== @@ -7942,6 +7957,17 @@ side-channel@^1.0.4, side-channel@^1.0.6: get-intrinsic "^1.2.4" object-inspect "^1.13.1" +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + 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" + signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" @@ -7993,6 +8019,11 @@ slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz" +slow-redact@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/slow-redact/-/slow-redact-0.3.1.tgz#4cb9ad7011dcba97b8a4b58ce8a5d660243100f6" + integrity sha512-NvFvl1GuLZNW4U046Tfi8b26zXo8aBzgCAS2f7yVJR/fArN93mOqSA99cB9uITm92ajSz01bsu1K7SCVVjIMpQ== + smart-buffer@^4.1.0: version "4.2.0" resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz" @@ -8011,13 +8042,6 @@ socks@~2.3.2: ip "1.1.5" smart-buffer "^4.1.0" -sonic-boom@^3.0.0, sonic-boom@^3.7.0: - version "3.8.1" - resolved "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.8.1.tgz" - integrity sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg== - dependencies: - atomic-sleep "^1.0.0" - sonic-boom@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" @@ -8135,6 +8159,11 @@ statuses@2.0.1: resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +statuses@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.2.tgz#8f75eecef765b5e1cfcdc080da59409ed424e382" + integrity sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw== + stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz" @@ -8277,13 +8306,6 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -string_decoder@^1.3.0: - 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== - dependencies: - safe-buffer "~5.2.0" - string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" @@ -8363,6 +8385,11 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" +strip-json-comments@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.3.tgz#b7304249dd402ee67fd518ada993ab3593458bcf" + integrity sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw== + strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" @@ -8447,13 +8474,6 @@ text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" -thread-stream@^2.6.0: - version "2.7.0" - resolved "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz" - integrity sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw== - dependencies: - real-require "^0.2.0" - thread-stream@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" @@ -8692,13 +8712,14 @@ type-fest@^0.8.1: version "0.8.1" resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== +type-is@^2.0.0, type-is@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-2.0.1.tgz#64f6cf03f92fce4015c2b224793f6bdd4b068c97" + integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw== dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" + content-type "^1.0.5" + media-typer "^1.1.0" + mime-types "^3.0.0" typed-array-buffer@^1.0.0: version "1.0.0" @@ -8933,11 +8954,6 @@ util-promisify@^2.1.0: dependencies: object.getownpropertydescriptors "^2.0.3" -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - uuid@^3.3.2, uuid@^3.3.3: version "3.4.0" resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" @@ -8975,9 +8991,9 @@ validator@^12.0.0: version "12.2.0" resolved "https://registry.npmjs.org/validator/-/validator-12.2.0.tgz" -vary@~1.1.2: +vary@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: