diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml index d894425..cba3b56 100644 --- a/.github/workflows/deploy.yaml +++ b/.github/workflows/deploy.yaml @@ -5,10 +5,6 @@ on: - main workflow_dispatch: -concurrency: - group: "pages" - cancel-in-progress: false - jobs: deploy: name: Deploy @@ -16,12 +12,7 @@ jobs: container: image: node:24-alpine permissions: - contents: read - pages: write - id-token: write - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} + contents: write steps: - name: Checkout uses: actions/checkout@v4 @@ -32,12 +23,8 @@ jobs: - name: Build run: | yarn build - - name: Configure Pages - uses: actions/configure-pages@v5 - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + - name: Deploy to gh-pages + uses: peaceiris/actions-gh-pages@v4 with: - path: 'dist' - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 \ No newline at end of file + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist diff --git a/.gitignore b/.gitignore index ea6ef6e..63d1577 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,5 @@ test/sdk-integration/go/bin/ dist node_modules out +tmp +.tmp diff --git a/README.md b/README.md index b1c28d0..1e9cb83 100644 --- a/README.md +++ b/README.md @@ -64,30 +64,51 @@ Runs the `bin/create-version.js` script, which is used to create a new versioned **Compliance Testing** -`yarn test:compliance https://api.example.com dist/latest/openapi.yaml` +`yarn test:compliance` -Executes the `bin/test-compliance.js` script to run compliance tests against the OpenAPI specification. This ensures that the specification is valid and conforms to the OpenAPI standard. It uses [`wiretap`](https://github.com/pb33f/wiretap) that acts like a proxy server to intercept requests and validate them against the OpenAPI spec. +Runs a comprehensive compliance test suite against a live Cloud Foundry API. This script uses `wiretap` to proxy requests to the API, validating them against the OpenAPI specification in real-time. It clones the `capi-bara-tests` repository and executes its test suite against the proxied API. + +> :warning: Unfortunally wiretap seems to be quite instable it cannot properly handle multiform-data requests and sometimes just crashes with memory erros. Its currently as good as it is and helped a lot making the spec compliant. + +**Prerequisites:** + +- Go must be installed and available in your `PATH`. +- The following environment variables must be set: + - `CF_API_URL`: The URL of the Cloud Foundry API. + - `CF_APPS_DOMAIN`: The application domain for your Cloud Foundry instance. + - `CF_ADMIN_USER`: The username for an admin user. + - `CF_ADMIN_PASSWORD`: The password for the admin user. + +**Optional:** + +- `THREADS`: The number of parallel test nodes to run (default: 6). + +The script will generate a `wiretap-report.json` file in the `out` directory, which contains a detailed report of the API interactions and any compliance issues found. ```mermaid flowchart TD - A[CF CLI] -->|HTTP Request| B[Wiretap http://localhost:9090] - B -->|HTTP Request| C[Real API Server] + A[CAPI BARA Tests] -->|HTTP Request| B[Wiretap Proxy] + B -->|HTTP Request| C[CF API Server] C -->|HTTP Response| B B -->|HTTP Response| A - - A2[CATS Testsuite] -->|HTTP Request| B2[Wiretap http://localhost:9090] - B2 -->|HTTP Request| C2[Real API Server] - C2 -->|HTTP Response| B2 - B2 -->|HTTP Response| A2 ``` -Hereby `Wiretap` acts as a proxy server that intercepts HTTP requests and responses between the CF CLI or CATS testsuite and the real API server. It validates the requests and responses against the OpenAPI specification, ensuring compliance. +**Contract Testing (Mock Server)** + +`yarn test:mockserver ` + +Executes the `bin/test-mockserver.js` script to run contract tests against a running server (either a live API or a mock server). This script uses `wiretap` to validate that the server's responses conform to the OpenAPI specification. -**Mock Server** +**Example:** + +```bash +yarn test:mockserver http://localhost:4010 dist/latest/openapi.yaml +``` -`yarn test:mockserver` +This is useful for: -Runs the `bin/test-mockserver.js` script to start a mock server based on the OpenAPI specification. This is useful for testing API clients and integrations without needing a live CAPI environment. +- Validating a mock server's implementation against the OpenAPI spec. +- Quickly checking a live API for compliance without running the full `capi-bara-tests` suite. ## Contributing diff --git a/apis/cf/latest/components/parameters/CreatedAts.yaml b/apis/cf/latest/components/parameters/CreatedAts.yaml index 5aaa234..aaca05a 100644 --- a/apis/cf/latest/components/parameters/CreatedAts.yaml +++ b/apis/cf/latest/components/parameters/CreatedAts.yaml @@ -4,5 +4,5 @@ required: false schema: type: string description: | - Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. + Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. Also supports filtering with [relational operators](#relational-operators). example: "2021-01-01T00:00:00Z" diff --git a/apis/cf/latest/components/parameters/Guid.yaml b/apis/cf/latest/components/parameters/Guid.yaml index be14dc2..0ac29e4 100644 --- a/apis/cf/latest/components/parameters/Guid.yaml +++ b/apis/cf/latest/components/parameters/Guid.yaml @@ -4,4 +4,4 @@ required: true schema: type: string format: uuid -description: The GUID of the resource +description: The unique identifier for the resource diff --git a/apis/cf/latest/components/parameters/LabelSelector.yaml b/apis/cf/latest/components/parameters/LabelSelector.yaml index 11a8ee0..a7f97bf 100644 --- a/apis/cf/latest/components/parameters/LabelSelector.yaml +++ b/apis/cf/latest/components/parameters/LabelSelector.yaml @@ -1,6 +1,6 @@ name: label_selector in: query -description: Selectors allow users to filter and group API resources by the labels applied to them. +description: A query string containing a list of [label selector](#labels-and-selectors) requirements required: false schema: type: string diff --git a/apis/cf/latest/components/parameters/OrderBy.yaml b/apis/cf/latest/components/parameters/OrderBy.yaml index 2452fbe..c7654ee 100644 --- a/apis/cf/latest/components/parameters/OrderBy.yaml +++ b/apis/cf/latest/components/parameters/OrderBy.yaml @@ -4,5 +4,5 @@ required: false schema: type: string description: | - Order results by a specific field. Prepend with - to sort descending. + Value to sort by. Defaults to ascending; prepend with `-` to sort descending. example: "created_at" diff --git a/apis/cf/latest/components/parameters/UpdatedAts.yaml b/apis/cf/latest/components/parameters/UpdatedAts.yaml index 4aaf4f2..fda0bc2 100644 --- a/apis/cf/latest/components/parameters/UpdatedAts.yaml +++ b/apis/cf/latest/components/parameters/UpdatedAts.yaml @@ -4,5 +4,5 @@ required: false schema: type: string description: | - Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. + Timestamp to filter by. When filtering on equality, several comma-delimited timestamps may be passed. Also supports filtering with [relational operators](#relational-operators). example: "2021-01-01T00:00:00Z" diff --git a/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml index e247c6c..b72b48a 100644 --- a/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/AppCreateRequestBody.yaml @@ -15,11 +15,13 @@ content: type: string lifecycle: $ref: '../schemas/Lifecycle.yaml' + description: Provides the lifecycle object for the application relationships: type: object properties: space: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to a space required: - space metadata: diff --git a/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml b/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml index 12f4f72..d90d155 100644 --- a/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/AppUpdateRequestBody.yaml @@ -15,6 +15,7 @@ content: type: string lifecycle: $ref: '../schemas/Lifecycle.yaml' + description: Lifecycle to be used when updating the app; note `data` is a required field in lifecycle if lifecycle is updated. `type` may NOT be changed from its current value. metadata: $ref: '../schemas/Metadata.yaml' description: Request schema for updating an app diff --git a/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml index d770335..b37dac6 100644 --- a/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/BuildCreateRequestBody.yaml @@ -16,6 +16,7 @@ content: description: App package to stage lifecycle: $ref: '../schemas/Lifecycle.yaml' + description: Lifecycle information for a build metadata: $ref: '../schemas/Metadata.yaml' required: diff --git a/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml index 1345232..15f8f61 100644 --- a/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/BuildpackCreateRequestBody.yaml @@ -10,25 +10,21 @@ content: description: The name of the buildpack stack: type: string - description: The stack the buildpack is compatible with + description: The name of the stack that the buildpack will use position: type: integer - description: The position of the buildpack in the order of execution - state: + description: The order in which the buildpacks are checked during buildpack auto-detection + lifecycle: type: string - description: The state of the buildpack - enum: - - AWAITING_UPLOAD - - READY + description: The version of buildpack the buildpack will use. `buildpack` indicates [Classic Buildpacks](https://docs.cloudfoundry.org/buildpacks/classic.html). `cnb` indicates [Cloud Native Buildpacks](https://docs.cloudfoundry.org/buildpacks/cnb/) enabled: type: boolean - description: Whether the buildpack is enabled + description: Whether or not the buildpack will be used for staging locked: type: boolean - description: Whether the buildpack is locked - filename: - type: string - description: The filename of the buildpack + description: Whether or not the buildpack is locked to prevent updating the bits + metadata: + $ref: '../schemas/Metadata.yaml' required: - name description: Request schema for creating a buildpack diff --git a/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml b/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml index 41ef507..778635c 100644 --- a/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/BuildpackUpdateRequestBody.yaml @@ -10,16 +10,16 @@ content: description: The name of the buildpack position: type: integer - description: The position of the buildpack in the order of execution + description: The order in which the buildpacks are checked during buildpack auto-detection enabled: type: boolean - description: Whether the buildpack is enabled + description: Whether or not the buildpack will be used for staging locked: type: boolean - description: Whether the buildpack is locked + description: Whether or not the buildpack is locked to prevent updating the bits stack: type: string - description: The stack the buildpack is compatible with + description: The name of the stack that the buildpack will use metadata: $ref: '../schemas/Metadata.yaml' description: Request schema for updating a buildpack diff --git a/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml index 5216f87..ef424f2 100644 --- a/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/DomainCreateRequestBody.yaml @@ -4,6 +4,8 @@ content: application/json: schema: type: object + required: + - name properties: name: type: string @@ -17,16 +19,15 @@ content: guid: type: string format: uuid - description: The router group the domain will be associated with + description: "The desired router group guid. _note: creates a `tcp` domain; cannot be used when `internal` is set to `true` or domain is scoped to an org_\"" relationships: type: object properties: organization: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to the organization the domain will be scoped to; _note cannot be used when `internal` is set to `true` or domain is associated with a router group_ shared_organizations: $ref: '../schemas/RelationshipToMany.yaml' + description: A relationship to organizations the domain will be shared with _Note cannot be used without an organization relationship_ metadata: $ref: '../schemas/Metadata.yaml' - required: - - name - description: Request schema for creating a domain diff --git a/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml index 03be174..a1dfbae 100644 --- a/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/DropletCreateRequestBody.yaml @@ -6,7 +6,13 @@ content: type: object properties: relationships: - $ref: '../schemas/Relationships.yaml' + type: object + properties: + app: + $ref: '../schemas/RelationshipToOne.yaml' + description: App to create droplet for + required: + - app process_types: type: object description: Process names and start commands for the droplet diff --git a/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml b/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml index 74c5532..79d9027 100644 --- a/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml +++ b/apis/cf/latest/components/requestBodies/IsolationSegmentCreate.yaml @@ -6,7 +6,7 @@ content: properties: name: type: string - description: The name of the isolation segment + description: Name of the isolation segment; isolation segment names must be unique across the entire system, and case is ignored when checking for uniqueness metadata: $ref: '../schemas/Metadata.yaml' required: diff --git a/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml index 6e6f870..bcb37ff 100644 --- a/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/OrganizationQuotaCreateRequestBody.yaml @@ -62,6 +62,7 @@ content: properties: organizations: $ref: '../schemas/RelationshipToMany.yaml' + description: A relationship to the organizations where the quota is applied metadata: $ref: '../schemas/Metadata.yaml' required: diff --git a/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml index edaba43..bd980bf 100644 --- a/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/PackageCreateRequestBody.yaml @@ -28,14 +28,8 @@ content: type: object properties: app: - type: object - properties: - data: - type: object - properties: - guid: - type: string - format: uuid + $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to an app required: - app metadata: diff --git a/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml b/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml index 2570c5a..bd3c8f4 100644 --- a/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/PackageUpdateRequestBody.yaml @@ -7,4 +7,10 @@ content: properties: metadata: $ref: '../schemas/Metadata.yaml' + username: + type: string + description: The username for the image’s registry. Only possible for Docker package. + password: + type: string + description: The password for the image’s registry. Only possible for Docker package. description: Request schema for updating a package diff --git a/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml b/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml index 8989ea3..56c0550 100644 --- a/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/PackageUploadRequestBody.yaml @@ -8,8 +8,7 @@ content: bits: type: string format: binary - description: A gzipped tar file that contains the package bits resources: - type: string - description: Fingerprints of the application bits that have previously been pushed to Cloud Foundry - description: Request schema for uploading package bits + type: array + items: + $ref: '../schemas/ResourceMatch.yaml' diff --git a/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml b/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml index 320aebe..2049a2c 100644 --- a/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/ProcessUpdateRequestBody.yaml @@ -10,8 +10,10 @@ content: description: The command used to start the process; use null to revert to the buildpack-detected or procfile-provided start command health_check: $ref: '../schemas/HealthCheck.yaml' + description: The health check to perform on the process readiness_health_check: $ref: '../schemas/HealthCheck.yaml' + description: The readiness health check to perform on the process metadata: $ref: '../schemas/Metadata.yaml' description: Request schema for updating a process diff --git a/apis/cf/latest/components/requestBodies/RoleCreate.yaml b/apis/cf/latest/components/requestBodies/RoleCreate.yaml index df77bae..4c7b997 100644 --- a/apis/cf/latest/components/requestBodies/RoleCreate.yaml +++ b/apis/cf/latest/components/requestBodies/RoleCreate.yaml @@ -6,7 +6,7 @@ content: properties: type: type: string - description: Role type + description: Role to create enum: - organization_user - organization_auditor @@ -21,7 +21,10 @@ content: properties: user: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to a user; the user can be defined by either a `guid` or, if the `set_roles_by_username` [feature_flag](#list-of-feature-flags) is enabled, a `username` (with the option of including an `origin` to disambiguate it) organization: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to an organization; required only when creating an organization role space: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to a space; required only when creating a space role diff --git a/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml index 27a246a..0abb124 100644 --- a/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/RouteCreateRequestBody.yaml @@ -6,16 +6,21 @@ content: properties: host: type: string + description: The host component for the route; not compatible with routes specifying the `tcp` protocol path: type: string + description: The path component for the route; should begin with a `/` and not compatible with routes specifying the `tcp` protocol port: type: integer + description: The port the route will listen on; only compatible with routes leveraging a domain that supports the `tcp` protocol. For `tcp` domains, a port will be randomly assigned if not specified relationships: type: object properties: domain: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to the domain of the route space: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to the space containing the route; routes can only be mapped to destinations in that space required: - relationships diff --git a/apis/cf/latest/components/requestBodies/RouteDestinations.yaml b/apis/cf/latest/components/requestBodies/RouteDestinations.yaml index 7742c81..f230192 100644 --- a/apis/cf/latest/components/requestBodies/RouteDestinations.yaml +++ b/apis/cf/latest/components/requestBodies/RouteDestinations.yaml @@ -8,3 +8,4 @@ content: type: array items: $ref: '../schemas/RouteDestination.yaml' + description: List of destinations to add to route; destinations without `process.type` specified will get process type `"web"` by default diff --git a/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml index 71dd121..a58b931 100644 --- a/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/ServiceInstanceCreateRequestBody.yaml @@ -19,7 +19,7 @@ content: description: Name of the service instance parameters: type: object - description: A JSON object that is passed to the service broker (managed services only) + description: A JSON object that is passed to the service broker credentials: type: object description: A JSON object that is made available to apps bound to this service instance (user-provided services only) @@ -41,9 +41,10 @@ content: properties: space: $ref: '../schemas/RelationshipToOne.yaml' + description: The space in which to create the service instance service_plan: $ref: '../schemas/RelationshipToOne.yaml' - description: Required for managed service instances + description: The service plan from which to create the service instance description: Relationships for the service instance metadata: $ref: '../schemas/Metadata.yaml' diff --git a/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml b/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml index 9d6f352..8ea04a8 100644 --- a/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/ServiceInstanceUpdateRequestBody.yaml @@ -29,7 +29,7 @@ content: properties: service_plan: $ref: '../schemas/RelationshipToOne.yaml' - description: The service plan from which to create the service instance (managed services only) + description: The service plan from which to create the service instance description: Relationships for the service instance maintenance_info: type: object @@ -39,7 +39,7 @@ content: version: type: string description: Must be a semantic version value and it must match the version in the maintenance_info for the service instance plan in the updated broker catalog - description: Maintenance info object for service instance upgrades (managed services only) + description: If provided, must have the `version` field; `version` must be a semantic version value and it must match the `version` in the `maintenance_info` for the service instance plan in the updated broker catalog. Any other value for `version` will cause a `MaintenanceInfoConflict` error metadata: $ref: '../schemas/Metadata.yaml' examples: diff --git a/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml index a6f99ed..310f27e 100644 --- a/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/SpaceCreateRequestBody.yaml @@ -13,6 +13,7 @@ content: properties: organization: $ref: '../schemas/RelationshipToOne.yaml' + description: A relationship to an organization required: - organization metadata: diff --git a/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml b/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml index bc3f861..468c113 100644 --- a/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/SpaceUpdateRequestBody.yaml @@ -7,7 +7,7 @@ content: properties: name: type: string - description: Name of the space + description: New space name metadata: $ref: '../schemas/Metadata.yaml' description: Request schema for updating a space diff --git a/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml b/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml index ec40d43..2a655aa 100644 --- a/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml +++ b/apis/cf/latest/components/requestBodies/TaskCreateRequestBody.yaml @@ -7,7 +7,7 @@ content: properties: command: type: string - description: The command to run for the task + description: The command to run for the task. **NOTE:** optional if a `template.process.guid` is provided name: type: string description: Human-readable name for the task @@ -36,6 +36,7 @@ content: format: uuid required: - guid + description: The guid of the process that will be used as a template metadata: $ref: '../schemas/Metadata.yaml' description: Request schema for creating a task diff --git a/apis/cf/latest/components/responses/ServiceUnavailable.yaml b/apis/cf/latest/components/responses/ServiceUnavailable.yaml new file mode 100644 index 0000000..cf7fc73 --- /dev/null +++ b/apis/cf/latest/components/responses/ServiceUnavailable.yaml @@ -0,0 +1,5 @@ +description: Service Unavailable +content: + application/json: + schema: + $ref: '../schemas/Errors.yaml' diff --git a/apis/cf/latest/components/schemas/App.yaml b/apis/cf/latest/components/schemas/App.yaml index 6e09ca7..4c40eeb 100644 --- a/apis/cf/latest/components/schemas/App.yaml +++ b/apis/cf/latest/components/schemas/App.yaml @@ -7,9 +7,13 @@ allOf: description: The name of the app state: type: string - description: Current desired state of the app; valid values are STOPPED or STARTED + description: Current desired state of the app + enum: + - STOPPED + - STARTED lifecycle: $ref: './Lifecycle.yaml' + description: Provides the default lifecycle object for the application. This lifecycle will be used when staging and running the application. The staging lifecycle can be overridden on builds relationships: $ref: './Relationships.yaml' metadata: diff --git a/apis/cf/latest/components/schemas/AppCredentialBinding.yaml b/apis/cf/latest/components/schemas/AppCredentialBinding.yaml index dc0ed67..cdb5f03 100644 --- a/apis/cf/latest/components/schemas/AppCredentialBinding.yaml +++ b/apis/cf/latest/components/schemas/AppCredentialBinding.yaml @@ -26,6 +26,9 @@ properties: type: type: string description: Type of the last operation + enum: + - create + - delete state: type: string description: State of the last operation @@ -36,7 +39,7 @@ properties: - failed description: type: string - description: Description of the last operation + description: A textual explanation associated with this state created_at: type: string format: date-time diff --git a/apis/cf/latest/components/schemas/AppFeature.yaml b/apis/cf/latest/components/schemas/AppFeature.yaml index 53449bf..8945040 100644 --- a/apis/cf/latest/components/schemas/AppFeature.yaml +++ b/apis/cf/latest/components/schemas/AppFeature.yaml @@ -8,6 +8,6 @@ properties: description: The description of the app feature enabled: type: boolean - description: Whether the app feature is enabled + description: Denotes whether or not the app feature is enabled description: > App features are used to manage whether optional capabilities are enabled for a given application. diff --git a/apis/cf/latest/components/schemas/AppUsageEvent.yaml b/apis/cf/latest/components/schemas/AppUsageEvent.yaml index 37a9304..0fe0b5f 100644 --- a/apis/cf/latest/components/schemas/AppUsageEvent.yaml +++ b/apis/cf/latest/components/schemas/AppUsageEvent.yaml @@ -7,62 +7,79 @@ properties: properties: current: type: string + description: Current state of the app that this event pertains to, if applicable previous: type: string + description: Previous state of the app that this event pertains to, if applicable app: type: object properties: guid: type: string + description: Unique identifier of the app that this event pertains to, if applicable name: type: string + description: Name of the app that this event pertains to, if applicable process: type: object properties: guid: type: string + description: Unique identifier of the process that this event pertains to, if applicable type: type: string + description: Type of the process that this event pertains to, if applicable space: type: object properties: guid: type: string + description: Unique identifier of the space that this event pertains to, if applicable name: type: string + description: Name of the space that this event pertains to, if applicable organization: type: object properties: guid: type: string + description: Unique identifier of the org that this event pertains to, if applicable buildpack: type: object properties: guid: type: string + description: Unique identifier of the buildpack that this event pertains to, if applicable name: type: string + description: Name of the buildpack that this event pertains to, if applicable task: type: object properties: guid: type: string + description: Unique identifier of the task that this event pertains to, if applicable name: type: string + description: Name of the task that this event pertains to, if applicable memory_in_mb_per_instance: type: object properties: current: type: integer + description: Current memory in MB of the app that this event pertains to, if applicable previous: type: integer + description: Previous memory in MB of the app that this event pertains to, if applicable instance_count: type: object properties: current: type: integer + description: Current instance count of the app that this event pertains to, if applicable previous: type: integer + description: Previous instance count of the app that this event pertains to, if applicable description: >- App usage events are a record of changes in the usage of apps and tasks. Examples include starting an application, scaling an application (from, say, one to three instances), and stopping an application. diff --git a/apis/cf/latest/components/schemas/AuditEvent.yaml b/apis/cf/latest/components/schemas/AuditEvent.yaml index cb9ecc2..7650919 100644 --- a/apis/cf/latest/components/schemas/AuditEvent.yaml +++ b/apis/cf/latest/components/schemas/AuditEvent.yaml @@ -31,19 +31,19 @@ allOf: description: The name of the target data: type: object - description: Additional information about the event + description: Additional information about event space: type: object properties: guid: type: string - description: The unique identifier for the space where the event occurred + description: Unique identifier for the space where the event occurred; if the event did not occur within a space, the `space` field will be `null` organization: type: object properties: guid: type: string - description: The unique identifier for the organization where the event occurred + description: Unique identifier for the organization where the event occurred; if the event did not occur within an organization, the `organization` field will be `null` links: type: object properties: diff --git a/apis/cf/latest/components/schemas/BaseSchema.yaml b/apis/cf/latest/components/schemas/BaseSchema.yaml index cf590e5..9b6b16d 100644 --- a/apis/cf/latest/components/schemas/BaseSchema.yaml +++ b/apis/cf/latest/components/schemas/BaseSchema.yaml @@ -3,15 +3,15 @@ properties: guid: type: string format: uuid - description: The GUID of the resource + description: The unique identifier for the resource created_at: type: string format: date-time - description: "The time the resource was created. \nTimestamps generally appear in created_at and updated_at fields on resources. \nPrecision beyond seconds is not supported, even if the underlying database supports it (e.g. Postgres). \nAs a result, filtering on sub-second timestamps is not allowed.\nAll v3 timestamps have the following format YYYY-MM-DDThh:mm:ssZ.\nExample timestamp (June 30, 2020 at 11:49:04 PM UTC): 2020-06-30T23:49:04Z\n" + description: The ISO8601 compatible date and time when resource was created updated_at: type: string format: date-time - description: "The time the resource was last updated\nTimestamps generally appear in created_at and updated_at fields on resources. \nPrecision beyond seconds is not supported, even if the underlying database supports it (e.g. Postgres). \nAs a result, filtering on sub-second timestamps is not allowed.\nAll v3 timestamps have the following format YYYY-MM-DDThh:mm:ssZ.\nExample timestamp (June 30, 2020 at 11:49:04 PM UTC): 2020-06-30T23:49:04Z\n" + description: The ISO8601 compatible date and time when resource was last updated description: | A resource represents an individual object within the system, such as an app or a service. It is represented as a JSON object. A resource consists of several required resource fields and other attributes specific to the resource. diff --git a/apis/cf/latest/components/schemas/Build.yaml b/apis/cf/latest/components/schemas/Build.yaml index c0c066e..0f8707f 100644 --- a/apis/cf/latest/components/schemas/Build.yaml +++ b/apis/cf/latest/components/schemas/Build.yaml @@ -4,7 +4,11 @@ allOf: - properties: state: type: string - description: State of the build; valid states are STAGING, STAGED, or FAILED + description: State of the build + enum: + - STAGING + - STAGED + - FAILED staging_memory_in_mb: type: integer description: Memory in MB allocated for staging of the build @@ -15,10 +19,11 @@ allOf: type: integer description: Log rate limit in bytes per second allocated for staging of the build error: - type: string + type: [string, 'null'] description: A string describing errors during the build process lifecycle: $ref: './Lifecycle.yaml' + description: Provides the lifecycle object to use during staging; this will override the build’s application’s default lifecycle for this build checksum: type: object properties: @@ -32,14 +37,26 @@ allOf: $ref: './Metadata.yaml' relationships: $ref: './Relationships.yaml' + package: + type: object + properties: + guid: + type: string + format: uuid + description: The package that is the input to the staging process droplet: - $ref: './RelationshipToOne.yaml' + type: [object, 'null'] + properties: + guid: + type: string + format: uuid + description: A resulting droplet from the staging process; `droplet` will be `null` if staging has not completed created_by: type: object properties: guid: type: string - description: The GUID of the user that created the build + description: The guid of the user that created the build name: type: string description: The name of the user that created the build diff --git a/apis/cf/latest/components/schemas/Buildpack.yaml b/apis/cf/latest/components/schemas/Buildpack.yaml index b7aca59..e53679c 100644 --- a/apis/cf/latest/components/schemas/Buildpack.yaml +++ b/apis/cf/latest/components/schemas/Buildpack.yaml @@ -4,21 +4,30 @@ allOf: - properties: name: type: string - description: The name of the buildpack + description: The name of the buildpack; to be used by app buildpack field (only alphanumeric characters) + state: + type: string + description: The state of the buildpack + enum: + - AWAITING_UPLOAD + - READY stack: + type: [string, 'null'] + description: The name of the stack that the buildpack uses + lifecycle: type: string - description: The stack the buildpack is compatible with + description: The version of buildpacks the buildpack uses. `buildpack` indicates [Classic Buildpacks](https://docs.cloudfoundry.org/buildpacks/classic.html). `cnb` indicates [Cloud Native Buildpacks](https://docs.cloudfoundry.org/buildpacks/cnb/) position: type: integer - description: The position of the buildpack in the order of execution + description: The order in which the buildpacks are checked during buildpack auto-detection enabled: type: boolean - description: Whether the buildpack is enabled + description: Whether or not the buildpack can be used for staging locked: type: boolean - description: Whether the buildpack is locked + description: Whether or not the buildpack is locked to prevent updating the bits filename: - type: string + type: [string, 'null'] description: The filename of the buildpack metadata: $ref: './Metadata.yaml' diff --git a/apis/cf/latest/components/schemas/Deployment.yaml b/apis/cf/latest/components/schemas/Deployment.yaml index 6117bd5..b405bbd 100644 --- a/apis/cf/latest/components/schemas/Deployment.yaml +++ b/apis/cf/latest/components/schemas/Deployment.yaml @@ -7,10 +7,20 @@ allOf: properties: value: type: string - description: The current status of the deployment; valid values are ACTIVE (in progress) and FINALIZED (finished, either successfully or not) + description: The current status of the deployment + enum: + - ACTIVE + - FINALIZED reason: type: string description: The reason for the status of the deployment + enum: + - DEPLOYING + - PAUSED + - CANCELING + - DEPLOYED + - CANCELED + - SUPERSEDED details: type: object properties: @@ -24,7 +34,10 @@ allOf: description: Timestamp of last change to status.value or status.reason strategy: type: string - description: Strategy used for the deployment; supported strategies are rolling and canary (experimental) + description: Strategy used for the deployment + enum: + - rolling + - canary options: type: object properties: @@ -32,9 +45,19 @@ allOf: type: integer description: The maximum number of new instances to deploy simultaneously droplet: - $ref: './RelationshipToOne.yaml' + type: object + properties: + guid: + type: string + format: uuid + description: The droplet guid that the deployment is transitioning the app to previous_droplet: - $ref: './RelationshipToOne.yaml' + type: object + properties: + guid: + type: string + format: uuid + description: The app’s [current droplet guid](#get-current-droplet-association-for-an-app) before the deployment was created new_processes: type: array items: diff --git a/apis/cf/latest/components/schemas/Domain.yaml b/apis/cf/latest/components/schemas/Domain.yaml index b1031f1..520314e 100644 --- a/apis/cf/latest/components/schemas/Domain.yaml +++ b/apis/cf/latest/components/schemas/Domain.yaml @@ -4,23 +4,27 @@ allOf: - properties: name: type: string - description: The name of the domain; must be between 3-253 characters and follow RFC 1035 + description: The name of the domain; must be between 3 ~ 253 characters and follow [RFC 1035](https://tools.ietf.org/html/rfc1035) internal: type: boolean description: Whether the domain is used for internal (container-to-container) traffic router_group: - type: object + type: + - object + - 'null' properties: guid: type: string format: uuid - description: The GUID of the router group to route TCP traffic through - description: The router group that the domain will use for TCP traffic + description: The guid of the desired router group to route `tcp` traffic through; if set, the domain will only be available for `tcp` traffic supported_protocols: type: array items: type: string - description: Available protocols for routes using the domain, currently http and tcp + enum: + - http + - tcp + description: Available protocols for routes using the domain, currently `http` and `tcp` relationships: $ref: './Relationships.yaml' metadata: diff --git a/apis/cf/latest/components/schemas/Droplet.yaml b/apis/cf/latest/components/schemas/Droplet.yaml index 0b69551..4c9d130 100644 --- a/apis/cf/latest/components/schemas/Droplet.yaml +++ b/apis/cf/latest/components/schemas/Droplet.yaml @@ -6,7 +6,7 @@ allOf: type: string description: State of the droplet; valid states are AWAITING_UPLOAD, PROCESSING_UPLOAD, STAGED, COPYING, FAILED, or EXPIRED error: - type: string + type: [string, 'null'] description: A string describing the last error during the droplet lifecycle lifecycle: $ref: './Lifecycle.yaml' @@ -40,7 +40,7 @@ allOf: $ref: './Link.yaml' description: The URL to upload the droplet checksum: - type: object + type: [object, 'null'] properties: type: type: string @@ -57,18 +57,18 @@ allOf: type: string description: System buildpack name detect_output: - type: string + type: [string, 'null'] description: Output during buildpack detect process version: - type: string + type: [string, 'null'] description: Version reported by the buildpack buildpack_name: type: string description: Name reported by the buildpack stack: - type: string + type: [string, 'null'] description: The root filesystem to use with the buildpack, for example cflinuxfs4 image: - type: string + type: [string, 'null'] description: Docker image name for Docker droplets description: A droplet is the result of staging an application package. There are two types (lifecycles) of droplets buildpack and docker. In the case of the buildpacks, the droplet contains the bits produced by the buildpack, typically application code and dependencies. diff --git a/apis/cf/latest/components/schemas/HealthCheck.yaml b/apis/cf/latest/components/schemas/HealthCheck.yaml index fe1c238..fc62fc5 100644 --- a/apis/cf/latest/components/schemas/HealthCheck.yaml +++ b/apis/cf/latest/components/schemas/HealthCheck.yaml @@ -8,13 +8,13 @@ properties: type: object properties: timeout: - type: integer + type: [integer, 'null'] description: The duration in seconds that health checks can fail before the process is restarted invocation_timeout: - type: integer + type: [integer, 'null'] description: The timeout in seconds for individual health check requests for http and port health checks interval: - type: integer + type: [integer, 'null'] description: The interval in seconds between health check requests endpoint: type: string diff --git a/apis/cf/latest/components/schemas/Package.yaml b/apis/cf/latest/components/schemas/Package.yaml index 4b1ffec..5a3d76c 100644 --- a/apis/cf/latest/components/schemas/Package.yaml +++ b/apis/cf/latest/components/schemas/Package.yaml @@ -13,7 +13,7 @@ allOf: description: Data for package type properties: error: - type: string + type: [string, 'null'] description: If an error occurs this field will contain the error message checksum: type: object @@ -22,7 +22,7 @@ allOf: type: string description: The checksum type, for example sha256 value: - type: string + type: [string, 'null'] description: The checksum value; this will be populated after bits are uploaded image: type: string diff --git a/apis/cf/latest/components/schemas/Pagination.yaml b/apis/cf/latest/components/schemas/Pagination.yaml index 67c4fc4..2260104 100644 --- a/apis/cf/latest/components/schemas/Pagination.yaml +++ b/apis/cf/latest/components/schemas/Pagination.yaml @@ -15,13 +15,15 @@ properties: - $ref: './Link.yaml' - description: The last page of results next: - allOf: + oneOf: - $ref: './Link.yaml' - - description: The next page of results + - type: "null" + description: The next page of results previous: - allOf: + oneOf: - $ref: './Link.yaml' - - description: The previous page of results + - type: "null" + description: The previous page of results description: | Pagination is a technique used to divide a large set of results into smaller, more manageable sets. This allows clients to retrieve results in smaller chunks, reducing the amount of data transferred and improving performance. The pagination object is a JSON object that contains information about the pagination state of the results. It includes the total number of results available, the total number of pages available, and links to the first, last, next, and previous pages of results. diff --git a/apis/cf/latest/components/schemas/Process.yaml b/apis/cf/latest/components/schemas/Process.yaml index 05b9ad7..5f15e2b 100644 --- a/apis/cf/latest/components/schemas/Process.yaml +++ b/apis/cf/latest/components/schemas/Process.yaml @@ -37,7 +37,9 @@ allOf: app: $ref: './RelationshipToOne.yaml' revision: - $ref: './RelationshipToOne.yaml' + oneOf: + - $ref: './RelationshipToOne.yaml' + - type: 'null' metadata: $ref: './Metadata.yaml' links: diff --git a/apis/cf/latest/components/schemas/ProcessStats.yaml b/apis/cf/latest/components/schemas/ProcessStats.yaml index 254daee..2a532cb 100644 --- a/apis/cf/latest/components/schemas/ProcessStats.yaml +++ b/apis/cf/latest/components/schemas/ProcessStats.yaml @@ -11,17 +11,17 @@ properties: type: integer state: type: string - enum: ["RUNNING", "CRASHED", "STARTING", "DOWN"] + enum: ["RUNNING", "CRASHED", "STARTING", "DOWN", "STOPPING"] host: type: string uptime: type: integer mem_quota: - type: integer + type: [integer, 'null'] disk_quota: - type: integer + type: [integer, 'null'] log_rate_limit: - type: integer + type: [integer, 'null'] usage: type: object properties: diff --git a/apis/cf/latest/components/schemas/RelationshipToOne.yaml b/apis/cf/latest/components/schemas/RelationshipToOne.yaml index 7931dcd..421c53d 100644 --- a/apis/cf/latest/components/schemas/RelationshipToOne.yaml +++ b/apis/cf/latest/components/schemas/RelationshipToOne.yaml @@ -1,6 +1,8 @@ type: object properties: data: - $ref: './Relationship.yaml' + oneOf: + - $ref: './Relationship.yaml' + - type: "null" description: | Some relationships relate a resource to exactly one other resource. For example an app can belong to only one space. diff --git a/apis/cf/latest/components/schemas/Route.yaml b/apis/cf/latest/components/schemas/Route.yaml index 0f84360..076121a 100644 --- a/apis/cf/latest/components/schemas/Route.yaml +++ b/apis/cf/latest/components/schemas/Route.yaml @@ -9,7 +9,7 @@ allOf: path: type: string port: - type: integer + type: [integer, 'null'] url: type: string description: Fully qualified path or address where the route directs traffic diff --git a/apis/cf/latest/components/schemas/RouteDestination.yaml b/apis/cf/latest/components/schemas/RouteDestination.yaml index 5b559f4..c7da6e6 100644 --- a/apis/cf/latest/components/schemas/RouteDestination.yaml +++ b/apis/cf/latest/components/schemas/RouteDestination.yaml @@ -13,7 +13,9 @@ properties: type: type: string weight: - type: integer + type: + - integer + - 'null' port: type: integer protocol: diff --git a/apis/cf/latest/components/schemas/ServiceBrokerCreate.yaml b/apis/cf/latest/components/schemas/ServiceBrokerCreate.yaml new file mode 100644 index 0000000..6159892 --- /dev/null +++ b/apis/cf/latest/components/schemas/ServiceBrokerCreate.yaml @@ -0,0 +1,22 @@ +type: object +properties: + name: + type: string + description: Name of the service broker + url: + type: string + format: uri + description: URL of the service broker + authentication: + type: object + properties: + type: + type: string + enum: [basic] + credentials: + type: object + properties: + username: + type: string + password: + type: string diff --git a/apis/cf/latest/components/schemas/Sidecar.yaml b/apis/cf/latest/components/schemas/Sidecar.yaml index d2c65db..e76b181 100644 --- a/apis/cf/latest/components/schemas/Sidecar.yaml +++ b/apis/cf/latest/components/schemas/Sidecar.yaml @@ -55,4 +55,3 @@ required: - command - process_types - relationships - - links diff --git a/apis/cf/latest/components/schemas/SidecarCreate.yaml b/apis/cf/latest/components/schemas/SidecarCreate.yaml new file mode 100644 index 0000000..b8d7f7f --- /dev/null +++ b/apis/cf/latest/components/schemas/SidecarCreate.yaml @@ -0,0 +1,16 @@ +type: object +properties: + name: + type: string + description: Name of the sidecar + command: + type: string + description: Command to run for the sidecar + process_types: + type: array + items: + type: string + description: Process types that the sidecar applies to + memory_in_mb: + type: integer + description: Memory limit for the sidecar in MB diff --git a/apis/cf/latest/components/schemas/SpaceCreate.yaml b/apis/cf/latest/components/schemas/SpaceCreate.yaml new file mode 100644 index 0000000..dbf006c --- /dev/null +++ b/apis/cf/latest/components/schemas/SpaceCreate.yaml @@ -0,0 +1,16 @@ +type: object +properties: + name: + type: string + description: Name of the space + relationships: + type: object + properties: + organization: + $ref: './RelationshipToOne.yaml' + description: The organization that the space belongs to + metadata: + $ref: './Metadata.yaml' +required: + - name + - relationships diff --git a/apis/cf/latest/components/schemas/SpaceQuota.yaml b/apis/cf/latest/components/schemas/SpaceQuota.yaml index 56c9c5c..c0db52a 100644 --- a/apis/cf/latest/components/schemas/SpaceQuota.yaml +++ b/apis/cf/latest/components/schemas/SpaceQuota.yaml @@ -19,19 +19,19 @@ properties: type: object properties: total_memory_in_mb: - type: integer + type: [integer, 'null'] description: Total memory allowed for all apps in MB per_process_memory_in_mb: - type: integer + type: [integer, 'null'] description: Maximum memory per process in MB log_rate_limit_in_bytes_per_second: - type: integer + type: [integer, 'null'] description: Log rate limit in bytes per second total_instances: - type: integer + type: [integer, 'null'] description: Total number of app instances allowed per_app_tasks: - type: integer + type: [integer, 'null'] description: Maximum number of tasks per app description: App limits for the space quota services: @@ -41,20 +41,20 @@ properties: type: boolean description: Whether paid services are allowed total_service_instances: - type: integer + type: [integer, 'null'] description: Total number of service instances allowed total_service_keys: - type: integer + type: [integer, 'null'] description: Total number of service keys allowed description: Service limits for the space quota routes: type: object properties: total_routes: - type: integer + type: [integer, 'null'] description: Total number of routes allowed total_reserved_ports: - type: integer + type: [integer, 'null'] description: Total number of reserved ports allowed description: Route limits for the space quota relationships: diff --git a/apis/cf/latest/components/schemas/SpaceQuotaCreate.yaml b/apis/cf/latest/components/schemas/SpaceQuotaCreate.yaml new file mode 100644 index 0000000..c797f90 --- /dev/null +++ b/apis/cf/latest/components/schemas/SpaceQuotaCreate.yaml @@ -0,0 +1,59 @@ +type: object +properties: + name: + type: string + description: Name of the space quota + apps: + type: object + properties: + total_memory_in_mb: + type: integer + description: Total memory allowed for all apps in MB + per_process_memory_in_mb: + type: integer + description: Maximum memory per process in MB + log_rate_limit_in_bytes_per_second: + type: integer + description: Log rate limit in bytes per second + total_instances: + type: integer + description: Total number of app instances allowed + per_app_tasks: + type: integer + description: Maximum number of tasks per app + description: App limits for the space quota + services: + type: object + properties: + paid_services_allowed: + type: boolean + description: Whether paid services are allowed + total_service_instances: + type: integer + description: Total number of service instances allowed + total_service_keys: + type: integer + description: Total number of service keys allowed + description: Service limits for the space quota + routes: + type: object + properties: + total_routes: + type: integer + description: Total number of routes allowed + total_reserved_ports: + type: integer + description: Total number of reserved ports allowed + description: Route limits for the space quota + relationships: + type: object + properties: + organization: + $ref: ./RelationshipToOne.yaml + spaces: + $ref: ./RelationshipToMany.yaml + description: Relationships for the space quota + metadata: + $ref: ./Metadata.yaml +required: + - name diff --git a/apis/cf/latest/components/schemas/SpaceQuotaUpdate.yaml b/apis/cf/latest/components/schemas/SpaceQuotaUpdate.yaml new file mode 100644 index 0000000..e271e1d --- /dev/null +++ b/apis/cf/latest/components/schemas/SpaceQuotaUpdate.yaml @@ -0,0 +1,49 @@ +type: object +properties: + name: + type: string + description: Name of the space quota + apps: + type: object + properties: + total_memory_in_mb: + type: integer + description: Total memory allowed for all apps in MB + per_process_memory_in_mb: + type: integer + description: Maximum memory per process in MB + log_rate_limit_in_bytes_per_second: + type: integer + description: Log rate limit in bytes per second + total_instances: + type: integer + description: Total number of app instances allowed + per_app_tasks: + type: integer + description: Maximum number of tasks per app + description: App limits for the space quota + services: + type: object + properties: + paid_services_allowed: + type: boolean + description: Whether paid services are allowed + total_service_instances: + type: integer + description: Total number of service instances allowed + total_service_keys: + type: integer + description: Total number of service keys allowed + description: Service limits for the space quota + routes: + type: object + properties: + total_routes: + type: integer + description: Total number of routes allowed + total_reserved_ports: + type: integer + description: Total number of reserved ports allowed + description: Route limits for the space quota + metadata: + $ref: ./Metadata.yaml diff --git a/apis/cf/latest/openapi.yaml b/apis/cf/latest/openapi.yaml index 4663a76..0c68c1f 100644 --- a/apis/cf/latest/openapi.yaml +++ b/apis/cf/latest/openapi.yaml @@ -539,8 +539,8 @@ paths: $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{guid}' /v3/space_quotas/{quota_guid}/relationships/spaces: $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{quota_guid}~1relationships~1spaces' - /v3/space_quotas/{quota_guid}/relationships/spaces/{space_guid}: - $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{quota_guid}~1relationships~1spaces~1{space_guid}' + /v3/space_quotas/{guid}/relationships/spaces/{space_guid}: + $ref: './paths/SpaceQuotas.yaml#/~1v3~1space_quotas~1{guid}~1relationships~1spaces~1{space_guid}' /v3/stacks: $ref: './paths/Stacks.yaml#/~1v3~1stacks' /v3/stacks/{guid}: @@ -579,6 +579,8 @@ paths: $ref: './paths/Packages.yaml#/~1v3~1packages' /v3/packages/{guid}: $ref: './paths/Packages.yaml#/~1v3~1packages~1{guid}' + /v3/packages/{guid}/droplets: + $ref: './paths/Packages.yaml#/~1v3~1packages~1{guid}~1droplets' /v3/apps/{guid}/packages: $ref: './paths/Packages.yaml#/~1v3~1apps~1{guid}~1packages' /v3/packages/{guid}/upload: diff --git a/apis/cf/latest/paths/AdminClearBuildpackCache.yaml b/apis/cf/latest/paths/AdminClearBuildpackCache.yaml index a701f26..5cea3ea 100644 --- a/apis/cf/latest/paths/AdminClearBuildpackCache.yaml +++ b/apis/cf/latest/paths/AdminClearBuildpackCache.yaml @@ -1,6 +1,6 @@ post: summary: Clear the buildpack cache - description: Clears the buildpack cache. + description: This endpoint will delete all of the existing buildpack caches in the blobstore. The buildpack cache is used during staging by buildpacks as a way to cache certain resources, e.g. downloaded Ruby gems. An admin who wants to decrease the size of their blobstore could use this endpoint to delete unnecessary blobs. operationId: clearBuildpackCache tags: - Admin diff --git a/apis/cf/latest/paths/AppUsageEvents.yaml b/apis/cf/latest/paths/AppUsageEvents.yaml index 6f6f3dc..5ea264b 100644 --- a/apis/cf/latest/paths/AppUsageEvents.yaml +++ b/apis/cf/latest/paths/AppUsageEvents.yaml @@ -1,7 +1,7 @@ /v3/app_usage_events: get: summary: List app usage events - description: Retrieve all app usage events the user has access to. + description: Retrieve all app usage events. operationId: listAppUsageEvents tags: - App Usage Events @@ -36,7 +36,7 @@ /v3/app_usage_events/{guid}: get: summary: Get an app usage event - description: Retrieve a specific app usage event by its GUID. + description: Retrieve a specific app usage event. operationId: getAppUsageEvent tags: - App Usage Events diff --git a/apis/cf/latest/paths/Apps.yaml b/apis/cf/latest/paths/Apps.yaml index 307c05b..c5396a8 100644 --- a/apis/cf/latest/paths/Apps.yaml +++ b/apis/cf/latest/paths/Apps.yaml @@ -51,6 +51,10 @@ in: query schema: type: string + enum: + - buildpack + - cnb + - docker description: Lifecycle type to filter by - name: include in: query @@ -58,7 +62,10 @@ type: array items: type: string - description: Comma-delimited list of resource names to include in the response + enum: + - space + - space.organization + description: Optionally include a list of unique related resources in the response responses: '200': description: OK @@ -74,7 +81,7 @@ $ref: '../components/responses/500.yaml' post: summary: Create an app - description: Create a new app. + description: Creates a new app. operationId: createApp tags: - Apps @@ -126,7 +133,7 @@ /v3/apps/{guid}: get: summary: Get an app - description: Retrieve details of a specific app by its GUID. + description: Retrieve a specific app. operationId: getApp tags: - Apps @@ -156,7 +163,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update an app - description: Update attributes of a specific app by its GUID. + description: Update an app. operationId: updateApp tags: - Apps @@ -190,7 +197,7 @@ $ref: '../components/responses/UnprocessableEntity.yaml' delete: summary: Delete an app - description: Delete a specific app by its GUID. + description: Delete an app. operationId: deleteApp tags: - Apps @@ -212,7 +219,7 @@ /v3/apps/{guid}/actions/start: post: summary: Start an app - description: Start a specific app by its GUID. + description: Start an app. operationId: startApp tags: - Apps @@ -232,7 +239,7 @@ /v3/apps/{guid}/actions/stop: post: summary: Stop an app - description: Stop a specific app by its GUID. + description: Stop an app. operationId: stopApp tags: - Apps @@ -252,7 +259,7 @@ /v3/apps/{guid}/actions/restart: post: summary: Restart an app - description: Stop and then start a specific app by its GUID. + description: This endpoint will synchronously stop and start an application. Unlike the start and stop actions, this endpoint will error if the app is not successfully stopped in the runtime. For restarting applications without downtime, see the deployments resource. operationId: restartApp tags: - Apps @@ -383,7 +390,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update environment variables for an app - description: Update the environment variables associated with the given app. The variables given in the request will be merged with the existing app environment variables. Any requested variables with a value of null will be removed from the app. Environment variable names may not start with VCAP_. PORT is not a valid environment variable. The updated environment variables will not take effect until the app is restarted. + description: Update the environment variables associated with the given app. The variables given in the request will be merged with the existing app environment variables. Any requested variables with a value of `null` will be removed from the app. Environment variable names may not start with VCAP_. PORT is not a valid environment variable. The updated environment variables will not take effect until the app is restarted. operationId: updateEnvironmentVariablesForApp tags: - Apps @@ -414,7 +421,7 @@ /v3/apps/{guid}/permissions: get: summary: Get permissions for an app - description: Get the current user's permissions for the given app. If a user can see an app, then they can see its basic data. Only admin, read-only admins, and space developers can read sensitive data. + description: Get the current user’s permissions for the given app. If a user can see an app, then they can see its basic data. Only admin, read-only admins, and space developers can read sensitive data. operationId: getPermissionsForApp tags: - Apps @@ -434,7 +441,7 @@ /v3/apps/{guid}/ssh_enabled: get: summary: Get SSH enabled for an app - description: Returns if an application's runtime environment will accept ssh connections. If ssh is disabled, the reason field will describe whether it is disabled globally, at the space level, or at the app level. + description: Returns if an application’s runtime environment will accept ssh connections. If ssh is disabled, the `reason` field will describe whether it is disabled globally, at the space level, or at the app level. operationId: getSshEnabledForApp tags: - Apps @@ -497,6 +504,11 @@ required: true schema: type: string + enum: + - ssh + - revisions + - service-binding-k8s + - file-based-vcap-services responses: '200': description: OK @@ -517,6 +529,11 @@ required: true schema: type: string + enum: + - ssh + - revisions + - service-binding-k8s + - file-based-vcap-services requestBody: content: application/json: @@ -530,4 +547,4 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: '../components/responses/NotFound.yaml' \ No newline at end of file + $ref: '../components/responses/NotFound.yaml' diff --git a/apis/cf/latest/paths/AuditEvents.yaml b/apis/cf/latest/paths/AuditEvents.yaml index 427cba3..b87bf03 100644 --- a/apis/cf/latest/paths/AuditEvents.yaml +++ b/apis/cf/latest/paths/AuditEvents.yaml @@ -17,6 +17,126 @@ type: array items: type: string + enum: + - audit.app.apply_manifest + - audit.app.build.create + - audit.app.copy-bits + - audit.app.create + - audit.app.delete-request + - audit.app.deployment.cancel + - audit.app.deployment.create + - audit.app.deployment.continue + - audit.app.droplet.create + - audit.app.droplet.delete + - audit.app.droplet.download + - audit.app.droplet.mapped + - audit.app.droplet.upload + - audit.app.environment.show + - audit.app.environment_variables.show + - audit.app.map-route + - audit.app.package.create + - audit.app.package.delete + - audit.app.package.download + - audit.app.package.upload + - audit.app.process.crash + - audit.app.process.create + - audit.app.process.delete + - audit.app.process.ready + - audit.app.process.not-ready + - audit.app.process.rescheduling + - audit.app.process.scale + - audit.app.process.terminate_instance + - audit.app.process.update + - audit.app.restage + - audit.app.restart + - audit.app.revision.create + - audit.app.revision.environment_variables.show + - audit.app.ssh-authorized + - audit.app.ssh-unauthorized + - audit.app.start + - audit.app.stop + - audit.app.task.cancel + - audit.app.task.create + - audit.app.unmap-route + - audit.app.update + - audit.app.upload-bits + - audit.organization.create + - audit.organization.delete-request + - audit.organization.update + - audit.route.create + - audit.route.delete-request + - audit.route.share + - audit.route.transfer-owner + - audit.route.unshare + - audit.route.update + - audit.service.create + - audit.service.delete + - audit.service.update + - audit.service_binding.create + - audit.service_binding.delete + - audit.service_binding.show + - audit.service_binding.start_create + - audit.service_binding.start_delete + - audit.service_binding.update + - audit.service_broker.create + - audit.service_broker.delete + - audit.service_broker.update + - audit.service_dashboard_client.create + - audit.service_dashboard_client.delete + - audit.service_instance.bind_route + - audit.service_instance.create + - audit.service_instance.delete + - audit.service_instance.purge + - audit.service_instance.share + - audit.service_instance.show + - audit.service_instance.start_create + - audit.service_instance.start_delete + - audit.service_instance.start_update + - audit.service_instance.unbind_route + - audit.service_instance.unshare + - audit.service_instance.update + - audit.service_key.create + - audit.service_key.delete + - audit.service_key.show + - audit.service_key.start_create + - audit.service_key.start_delete + - audit.service_key.update + - audit.service_plan.create + - audit.service_plan.delete + - audit.service_plan.update + - audit.service_plan_visibility.create + - audit.service_plan_visibility.delete + - audit.service_plan_visibility.update + - audit.service_route_binding.create + - audit.service_route_binding.delete + - audit.service_route_binding.start_create + - audit.service_route_binding.start_delete + - audit.service_route_binding.update + - audit.space.create + - audit.space.delete-request + - audit.space.update + - audit.user.organization_auditor_add + - audit.user.organization_auditor_remove + - audit.user.organization_billing_manager_add + - audit.user.organization_billing_manager_remove + - audit.user.organization_manager_add + - audit.user.organization_manager_remove + - audit.user.organization_user_add + - audit.user.organization_user_remove + - audit.user.space_auditor_add + - audit.user.space_auditor_remove + - audit.user.space_developer_add + - audit.user.space_developer_remove + - audit.user.space_manager_add + - audit.user.space_manager_remove + - audit.user.space_supporter_add + - audit.user.space_supporter_remove + - audit.user_provided_service_instance.create + - audit.user_provided_service_instance.delete + - audit.user_provided_service_instance.show + - audit.user_provided_service_instance.update + - app.crash + - blob.remove_orphan description: Comma-delimited list of event types to filter by - name: target_guids in: query @@ -51,7 +171,7 @@ /v3/audit_events/{guid}: get: summary: Get an audit event - description: Retrieve a specific audit event by its GUID. + description: Retrieve a specific audit event. operationId: getAuditEvent tags: - Audit Events diff --git a/apis/cf/latest/paths/Buildpacks.yaml b/apis/cf/latest/paths/Buildpacks.yaml index dda3dc7..9f63cab 100644 --- a/apis/cf/latest/paths/Buildpacks.yaml +++ b/apis/cf/latest/paths/Buildpacks.yaml @@ -1,7 +1,7 @@ /v3/buildpacks: get: summary: List buildpacks - description: Retrieve a list of buildpacks available in the system. + description: Retrieve all buildpacks. operationId: listBuildpacks tags: - Buildpacks @@ -12,7 +12,7 @@ - $ref: '../components/parameters/CreatedAts.yaml' - $ref: '../components/parameters/UpdatedAts.yaml' - $ref: '../components/parameters/LabelSelector.yaml' - - name: name + - name: names in: query schema: type: array @@ -43,7 +43,7 @@ $ref: '../components/responses/500.yaml' post: summary: Create a buildpack - description: Create a new buildpack + description: Create a buildpack. operationId: createBuildpack tags: - Buildpacks @@ -60,8 +60,8 @@ $ref: '../components/responses/Forbidden.yaml' /v3/buildpacks/{guid}: get: - summary: Retrieve a buildpack - description: Retrieve details of a specific buildpack by its GUID. + summary: Get a buildpack + description: Retrieve a buildpack. operationId: getBuildpack tags: - Buildpacks @@ -80,7 +80,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a buildpack - description: Update attributes of a specific buildpack by its GUID. + description: Update a buildpack. operationId: updateBuildpack tags: - Buildpacks @@ -104,14 +104,10 @@ '404': $ref: '../components/responses/NotFound.yaml' '422': - description: Unprocessable Entity - content: - application/json: - schema: - $ref: '../components/schemas/Error.yaml' + $ref: '../components/responses/UnprocessableEntity.yaml' delete: summary: Delete a buildpack - description: Delete a specific buildpack by its GUID. + description: Delete a buildpack. operationId: deleteBuildpack tags: - Buildpacks @@ -126,8 +122,8 @@ $ref: '../components/responses/NotFound.yaml' /v3/buildpacks/{guid}/upload: post: - summary: Upload a buildpack - description: Upload a buildpack file for a specific buildpack by its GUID. + summary: Upload buildpack bits + description: Upload a zip file containing a Cloud Foundry compatible buildpack. The file must be sent as part of a multi-part form. operationId: uploadBuildpack tags: - Buildpacks @@ -144,10 +140,20 @@ bits: type: string format: binary - description: The buildpack file to be uploaded - required: - - bits - description: Request schema for uploading a buildpack + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string responses: '200': description: Successfully uploaded buildpack @@ -155,6 +161,17 @@ application/json: schema: $ref: '../components/schemas/Buildpack.yaml' + '202': + description: Upload initiated + headers: + Location: + schema: + type: string + description: URL of the job tracking the upload + content: + application/json: + schema: + $ref: '../components/schemas/Buildpack.yaml' '401': $ref: '../components/responses/Unauthorized.yaml' '404': diff --git a/apis/cf/latest/paths/Builds.yaml b/apis/cf/latest/paths/Builds.yaml index 8eb8238..549235b 100644 --- a/apis/cf/latest/paths/Builds.yaml +++ b/apis/cf/latest/paths/Builds.yaml @@ -1,7 +1,7 @@ /v3/builds: get: summary: List builds - description: Retrieve all builds the user has access to. + description: Retrieve all builds. operationId: listBuilds tags: - Builds @@ -18,6 +18,10 @@ type: array items: type: string + enum: + - STAGING + - STAGED + - FAILED description: Comma-delimited list of build states to filter by - name: app_guids in: query @@ -44,7 +48,7 @@ $ref: '../components/responses/Unauthorized.yaml' post: summary: Create a build - description: Create a new build. + description: Create a build. operationId: createBuild tags: - Builds @@ -96,7 +100,7 @@ /v3/builds/{guid}: get: summary: Get a build - description: Retrieve details of a specific build by its GUID. + description: Retrieve a build. operationId: getBuild tags: - Builds @@ -127,7 +131,7 @@ /v3/apps/{guid}/builds: get: summary: List builds for an app - description: Retrieve all builds for the app. + description: Retrieve all builds for an app. operationId: listAppBuilds tags: - Builds @@ -142,6 +146,10 @@ type: array items: type: string + enum: + - STAGING + - STAGED + - FAILED description: Comma-delimited list of build states to filter by - $ref: '../components/parameters/LabelSelector.yaml' - $ref: '../components/parameters/CreatedAts.yaml' @@ -159,7 +167,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a build - description: Update attributes of a specific build by its GUID. + description: Update a build. operationId: updateBuild tags: - Builds diff --git a/apis/cf/latest/paths/Deployments.yaml b/apis/cf/latest/paths/Deployments.yaml index ee4dc12..014c5f5 100644 --- a/apis/cf/latest/paths/Deployments.yaml +++ b/apis/cf/latest/paths/Deployments.yaml @@ -1,7 +1,7 @@ /v3/deployments: get: summary: List deployments - description: Retrieve a list of all deployments the user has access to. + description: Retrieve all deployments. operationId: listDeployments tags: - Deployments @@ -25,21 +25,31 @@ type: array items: type: string - description: Comma-delimited list of deployment states to filter by + description: Comma-delimited list of states to filter by - name: status_reasons in: query schema: type: array items: type: string - description: Comma-delimited list of status reasons to filter by; valid values include DEPLOYING, PAUSED, CANCELING, DEPLOYED, CANCELED, SUPERSEDED + enum: + - DEPLOYING + - PAUSED + - CANCELING + - DEPLOYED + - CANCELED + - SUPERSEDED + description: Comma-delimited list of status reasons to filter by - name: status_values in: query schema: type: array items: type: string - description: Comma-delimited list of status values to filter by; valid values include ACTIVE and FINALIZED + enum: + - ACTIVE + - FINALIZED + description: Comma-delimited list of status values to filter by responses: '200': description: OK @@ -53,7 +63,7 @@ $ref: '../components/responses/Forbidden.yaml' post: summary: Create a deployment - description: Create a new deployment. + description: When you create a new deployment you can either provide a specific droplet or revision to deploy. If no revision or droplet is provided, the droplet associated with the app is deployed. operationId: createDeployment tags: - Deployments @@ -69,6 +79,9 @@ $ref: '../components/schemas/Relationships.yaml' strategy: type: string + enum: + - rolling + - canary droplet: $ref: '../components/schemas/Relationship.yaml' revision: @@ -106,8 +119,8 @@ $ref: '../components/responses/Forbidden.yaml' /v3/deployments/{guid}: get: - summary: Retrieve a deployment - description: Retrieve details of a specific deployment by its GUID. + summary: Get a deployment + description: Retrieve a deployment. operationId: getDeployment tags: - Deployments @@ -142,7 +155,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a deployment - description: Update attributes of a specific deployment by its GUID. + description: Update a deployment. operationId: updateDeployment tags: - Deployments @@ -173,7 +186,7 @@ /v3/deployments/{guid}/actions/cancel: post: summary: Cancel a deployment - description: Cancel a deployment in progress. + description: Cancel a deployment. operationId: cancelDeployment tags: - Deployments @@ -193,7 +206,7 @@ /v3/deployments/{guid}/actions/continue: post: summary: Continue a deployment - description: Continue a paused deployment. + description: Continue a deployment. operationId: continueDeployment tags: - Deployments diff --git a/apis/cf/latest/paths/Domains.yaml b/apis/cf/latest/paths/Domains.yaml index 885a9c0..7080d3c 100644 --- a/apis/cf/latest/paths/Domains.yaml +++ b/apis/cf/latest/paths/Domains.yaml @@ -1,7 +1,7 @@ /v3/domains: get: summary: List domains - description: Retrieve a list of all domains the user has access to. + description: Retrieve all domains the user has access to. operationId: listDomains tags: - Domains @@ -46,7 +46,7 @@ $ref: '../components/responses/Forbidden.yaml' post: summary: Create a domain - description: Create a new domain. + description: Create a domain. operationId: createDomain tags: - Domains @@ -73,8 +73,8 @@ $ref: '../components/responses/Forbidden.yaml' /v3/domains/{guid}: get: - summary: Retrieve a domain - description: Retrieve details of a specific domain by its GUID. + summary: Get a domain + description: Retrieve a domain. operationId: getDomain tags: - Domains @@ -99,7 +99,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a domain - description: Update attributes of a specific domain by its GUID. + description: Update a domain. operationId: updateDomain tags: - Domains @@ -129,7 +129,7 @@ $ref: '../components/responses/NotFound.yaml' delete: summary: Delete a domain - description: Delete a specific domain by its GUID. + description: Delete a domain. operationId: deleteDomain tags: - Domains @@ -145,7 +145,7 @@ /v3/domains/{guid}/relationships/shared_organizations: post: summary: Share a domain - description: Share an organization-scoped domain to other organizations specified by a list of organization GUIDs. + description: This endpoint shares an organization-scoped domain to other organizations specified by a list of organization guids. This will allow any of the other organizations to use the organization-scoped domain. operationId: shareDomain tags: - Domains @@ -189,7 +189,10 @@ /v3/organizations/{guid}/domains: get: summary: List domains for an organization - description: Retrieve all domains available in an organization for the current user. + description: |- + Retrieve all domains available in an organization for the current user. This will return unscoped domains (those without an owning organization), domains that are scoped to the given organization (owned by the given organization), and domains that have been shared with the organization. + + To retrieve the default domain for an organization, use the [get default domain](#get-default-domain) endpoint. operationId: listDomainsForOrganization tags: - Domains @@ -219,7 +222,7 @@ /v3/domains/{guid}/route_reservations: get: summary: Check reserved routes for a domain - description: Check if a specific route for a domain exists. + description: Check if a specific route for a domain exists, regardless of the user’s visibility for the route in case the route belongs to a space the user does not belong to. operationId: checkReservedRoutesForDomain tags: - Domains @@ -257,7 +260,7 @@ /v3/domains/{guid}/relationships/shared_organizations/{org_guid}: delete: summary: Unshare a domain - description: Unshare a domain from a specific organization. + description: This endpoint removes an organization from the list of organizations an organization-scoped domain is shared with. This prevents the organization from using the organization-scoped domain. operationId: unshareDomain tags: - Domains diff --git a/apis/cf/latest/paths/Droplets.yaml b/apis/cf/latest/paths/Droplets.yaml index bd7327b..c2340f9 100644 --- a/apis/cf/latest/paths/Droplets.yaml +++ b/apis/cf/latest/paths/Droplets.yaml @@ -1,7 +1,7 @@ /v3/droplets: get: summary: List droplets - description: Retrieve a list of droplets available in the system. + description: Retrieve all droplets. operationId: listDroplets tags: - Droplets @@ -26,6 +26,13 @@ type: array items: type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - STAGED + - COPYING + - FAILED + - EXPIRED description: > Comma-delimited list of droplet states to filter by - name: app_guids @@ -67,7 +74,7 @@ $ref: '../components/responses/500.yaml' post: summary: Create a droplet - description: Create a new droplet + description: This endpoint is only for creating a droplet without a package. To create a droplet based on a package, see [Create a build](#create-a-build). operationId: createDroplet tags: - Droplets @@ -90,8 +97,8 @@ $ref: '../components/responses/BadRequest.yaml' /v3/droplets/{guid}: get: - summary: Retrieve a droplet - description: Retrieve details of a specific droplet by its GUID. + summary: Get a droplet + description: Retrieve a droplet. operationId: getDroplet tags: - Droplets @@ -114,7 +121,7 @@ $ref: '../components/responses/BadRequest.yaml' patch: summary: Update a droplet - description: Update attributes of a specific droplet by its GUID. + description: Update a droplet. operationId: updateDroplet tags: - Droplets @@ -148,10 +155,14 @@ '404': $ref: '../components/responses/NotFound.yaml' '422': - $ref: '../components/responses/UnprocessableEntity.yaml' + description: Unprocessable Entity + content: + application/json: + schema: + $ref: '../components/schemas/Error.yaml' delete: summary: Delete a droplet - description: Delete a specific droplet by its GUID. + description: Delete a droplet. operationId: deleteDroplet tags: - Droplets @@ -166,8 +177,11 @@ $ref: '../components/responses/NotFound.yaml' /v3/droplets/{guid}/download: get: - summary: Download a droplet - description: Download a droplet file by its GUID. + summary: Download droplet bits + description: |- + Download a gzip compressed tarball file containing a Cloud Foundry compatible droplet. + When using a remote blobstore, such as AWS, the response is a redirect to the actual location of the bits. If the client is automatically following redirects, then the OAuth token that was used to communicate with Cloud Controller will be relayed on the new redirect request. Some blobstores may reject the request in that case. Clients may need to follow the redirect without including the OAuth token. + Only droplets that are in the `STAGED` state and have lifecycle type `buildpack` can be downloaded. operationId: downloadDroplet tags: - Droplets @@ -181,6 +195,9 @@ schema: type: string format: binary + text/html: + schema: + type: string '302': description: Redirect to download location '401': @@ -189,8 +206,8 @@ $ref: '../components/responses/NotFound.yaml' /v3/droplets/{guid}/upload: post: - summary: Upload a droplet - description: Upload a droplet file for a specific droplet by its GUID. + summary: Upload droplet bits + description: Upload a gzip compressed tarball file containing a Cloud Foundry compatible droplet. The file must be sent as part of a multi-part form. operationId: uploadDroplet tags: - Droplets @@ -207,13 +224,34 @@ bits: type: string format: binary - description: The droplet file to be uploaded - required: - - bits - description: Request schema for uploading a droplet + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string responses: '200': $ref: '../components/responses/DropletGetResponse.yaml' + '202': + description: Upload initiated + headers: + Location: + schema: + type: string + description: URL of the job tracking the upload + content: + application/json: + schema: + $ref: '../components/schemas/Droplet.yaml' '401': $ref: '../components/responses/Unauthorized.yaml' '404': diff --git a/apis/cf/latest/paths/EnvironmentVariableGroups.yaml b/apis/cf/latest/paths/EnvironmentVariableGroups.yaml index 3e689a4..b3a7a48 100644 --- a/apis/cf/latest/paths/EnvironmentVariableGroups.yaml +++ b/apis/cf/latest/paths/EnvironmentVariableGroups.yaml @@ -1,7 +1,7 @@ /v3/environment_variable_groups/{name}: get: summary: Get an environment variable group - description: Retrieve the environment variable group. + description: Retrieve an environment variable group. operationId: getEnvironmentVariableGroup tags: - Environment Variable Groups @@ -29,7 +29,10 @@ $ref: ../components/responses/500.yaml patch: summary: Update environment variable group - description: Update the environment variable group. + description: |- + Update the environment variable group. The variables given in the request will be merged with the existing environment variable group. Any requested variables with a value of `null` will be removed from the group. Environment variable names may not start with VCAP_. PORT is not a valid environment variable. + + Variables updated in the **running** environment variable group will not take effect until apps are restarted. operationId: updateEnvironmentVariableGroup tags: - Environment Variable Groups diff --git a/apis/cf/latest/paths/FeatureFlags.yaml b/apis/cf/latest/paths/FeatureFlags.yaml index a5c7c16..370bd89 100644 --- a/apis/cf/latest/paths/FeatureFlags.yaml +++ b/apis/cf/latest/paths/FeatureFlags.yaml @@ -1,7 +1,7 @@ /v3/feature_flags: get: summary: List feature flags - description: Retrieve a list of all feature flags. + description: Retrieve all feature_flags. operationId: listFeatureFlags tags: - Feature Flags @@ -29,8 +29,8 @@ $ref: ../components/responses/Forbidden.yaml /v3/feature_flags/{name}: get: - summary: Retrieve a feature flag - description: Retrieve details of a specific feature flag by its name. + summary: Get a feature flag + description: Get a feature flag. operationId: getFeatureFlag tags: - Feature Flags @@ -40,6 +40,25 @@ required: true schema: type: string + enum: + - app_bits_upload + - app_scaling + - diego_docker + - diego_cnb + - env_var_visibility + - hide_marketplace_from_unauthenticated_users + - private_domain_creation + - resource_matching + - route_creation + - route_sharing + - service_instance_creation + - service_instance_sharing + - set_roles_by_username + - space_developer_env_var_visibility + - space_scoped_private_broker_creation + - task_creation + - unset_roles_by_username + - user_org_creation description: The name of the feature flag responses: '200': @@ -54,7 +73,7 @@ $ref: ../components/responses/NotFound.yaml patch: summary: Update a feature flag - description: Update the properties of a specific feature flag by its name. + description: Update a feature flag. operationId: updateFeatureFlag tags: - Feature Flags @@ -64,6 +83,25 @@ required: true schema: type: string + enum: + - app_bits_upload + - app_scaling + - diego_docker + - diego_cnb + - env_var_visibility + - hide_marketplace_from_unauthenticated_users + - private_domain_creation + - resource_matching + - route_creation + - route_sharing + - service_instance_creation + - service_instance_sharing + - set_roles_by_username + - space_developer_env_var_visibility + - space_scoped_private_broker_creation + - task_creation + - unset_roles_by_username + - user_org_creation description: The name of the feature flag requestBody: description: Feature flag object that needs to be updated diff --git a/apis/cf/latest/paths/Info.yaml b/apis/cf/latest/paths/Info.yaml index c54890d..97c1365 100644 --- a/apis/cf/latest/paths/Info.yaml +++ b/apis/cf/latest/paths/Info.yaml @@ -2,7 +2,7 @@ get: summary: Get platform info description: |- - Returns information about the platform. + Get information about the platform. operationId: getPlatformInfo tags: - Info @@ -55,6 +55,8 @@ - description: Link to the support website for the platform '403': $ref: '../components/responses/Forbidden.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' '500': $ref: '../components/responses/500.yaml' /v3/info/usage_summary: @@ -75,12 +77,7 @@ properties: usage_summary: type: object - description: |- - Usage summary object - - Name Type Description - started_instances integer Total number of process instances in the STARTED state - memory_in_mb integer Sum of memory usage of all tasks in the RUNNING state and all process instances in the STARTED state + description: Usage summary properties: started_instances: type: integer @@ -88,6 +85,24 @@ memory_in_mb: type: integer description: Sum of memory usage of all tasks in the RUNNING state and all process instances in the STARTED state + routes: + type: integer + description: Total number of routes + service_instances: + type: integer + description: Total number of managed service instances + reserved_ports: + type: integer + description: Total number of reserved ports + domains: + type: integer + description: Total number of private domains + per_app_tasks: + type: integer + description: Total number of running tasks + service_keys: + type: integer + description: Total number of service keys links: type: object description: Links to related resources @@ -100,5 +115,7 @@ $ref: '../components/responses/Unauthorized.yaml' '403': $ref: '../components/responses/Forbidden.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' '500': $ref: '../components/responses/500.yaml' diff --git a/apis/cf/latest/paths/IsolationSegments.yaml b/apis/cf/latest/paths/IsolationSegments.yaml index 0c66d0e..041ccd9 100644 --- a/apis/cf/latest/paths/IsolationSegments.yaml +++ b/apis/cf/latest/paths/IsolationSegments.yaml @@ -1,7 +1,7 @@ /v3/isolation_segments: get: summary: List isolation segments - description: Retrieve all isolation segments the user has access to. + description: Retrieves all isolation segments to which the user has access. For admin, this is all the isolation segments in the system. For anyone else, this is the isolation segments in the allowed list for any organization to which the user belongs. operationId: listIsolationSegments tags: - Isolation Segments @@ -50,7 +50,7 @@ $ref: ../components/responses/500.yaml post: summary: Create an isolation segment - description: Create a new isolation segment. + description: Create an isolation segment. operationId: createIsolationSegment tags: - Isolation Segments @@ -74,7 +74,7 @@ /v3/isolation_segments/{guid}: get: summary: Get an isolation segment - description: Retrieve a specific isolation segment by its GUID. + description: Retrieve an isolation segment to which the user has access. For admin, this is any isolation segment in the system. For anyone else, this is an isolation segment in the allowed list for any organization to which the user belongs. operationId: getIsolationSegment tags: - Isolation Segments @@ -93,7 +93,7 @@ $ref: ../components/responses/NotFound.yaml patch: summary: Update an isolation segment - description: Update a specific isolation segment by its GUID. + description: Update an isolation segment. operationId: updateIsolationSegment tags: - Isolation Segments @@ -125,7 +125,7 @@ $ref: ../components/responses/NotFound.yaml delete: summary: Delete an isolation segment - description: Delete a specific isolation segment by its GUID. + description: An isolation segment cannot be deleted if it is entitled to any organization. operationId: deleteIsolationSegment tags: - Isolation Segments @@ -177,9 +177,9 @@ '404': $ref: ../components/responses/NotFound.yaml get: - summary: List organizations + summary: List organizations relationship description: |- - List all organizations entitled to the isolation segment. + This endpoint lists the organizations entitled for the isolation segment. For an Admin, this will list all entitled organizations in the system. For any other user, this will list only the entitled organizations to which the user belongs. operationId: listOrganizationsForIsolationSegment tags: - Isolation Segments @@ -200,8 +200,8 @@ $ref: ../components/responses/NotFound.yaml /v3/isolation_segments/{guid}/relationships/organizations/{org_guid}: delete: - summary: Revoke entitlement of an organization - description: Revoke the entitlement of an organization for an isolation segment. + summary: Revoke entitlement to isolation segment for an organization + description: This endpoint revokes the entitlement for the specified organization to the isolation segment. If the isolation segment is assigned to a space within an organization, the entitlement cannot be revoked. If the isolation segment is the organization’s default, the entitlement cannot be revoked. operationId: revokeIsolationSegmentForOrganization tags: - Isolation Segments @@ -223,8 +223,8 @@ $ref: ../components/responses/NotFound.yaml /v3/isolation_segments/{guid}/relationships/spaces: get: - summary: List spaces - description: List all spaces assigned to the isolation segment. + summary: List spaces relationship + description: This endpoint lists the spaces to which the isolation segment is assigned. For an Admin, this will list all associated spaces in the system. For an org manager, this will list only those associated spaces belonging to orgs for which the user is a manager. For any other user, this will list only those associated spaces to which the user has access. operationId: listSpacesForIsolationSegment tags: - Isolation Segments diff --git a/apis/cf/latest/paths/Jobs.yaml b/apis/cf/latest/paths/Jobs.yaml index 485a27a..b00328b 100644 --- a/apis/cf/latest/paths/Jobs.yaml +++ b/apis/cf/latest/paths/Jobs.yaml @@ -1,7 +1,7 @@ /v3/jobs/{guid}: get: summary: Get a job - description: Retrieve a specific job by its GUID. + description: Retrieve a specific job. operationId: getJob tags: - Jobs diff --git a/apis/cf/latest/paths/Manifests.yaml b/apis/cf/latest/paths/Manifests.yaml index 9bf6adb..c77349b 100644 --- a/apis/cf/latest/paths/Manifests.yaml +++ b/apis/cf/latest/paths/Manifests.yaml @@ -1,7 +1,10 @@ /v3/spaces/{guid}/actions/apply_manifest: post: summary: Apply a manifest to a space - description: Apply changes specified in a manifest to the named apps and their underlying processes. The apps must reside in the space. These changes are additive and will not modify any unspecified properties or remove any existing environment variables, routes, or services. Apply manifest will only trigger an immediate update for the “instances” property or routing changes. All other properties require an app restart to take effect. + description: |- + Apply changes specified in a manifest to the named apps and their underlying processes. The apps must reside in the space. These changes are additive and will not modify any unspecified properties or remove any existing environment variables, app features, routes, or services. + + Apply manifest will only trigger an immediate update for the “instances” property or routing changes. All other properties require an app restart to take effect. operationId: applyManifest tags: - Manifests @@ -48,7 +51,10 @@ /v3/spaces/{guid}/manifest_diff: post: summary: Create a manifest diff for a space (experimental) - description: This endpoint returns a JSON representation of the difference between the provided manifest and the current state of a space. + description: |- + This endpoint returns a JSON representation of the difference between the provided manifest and the current state of a space. + + Currently, this endpoint can only diff [version 1](#the-manifest-schema) manifests. operationId: createManifestDiff tags: - Manifests diff --git a/apis/cf/latest/paths/OrganizationQuotas.yaml b/apis/cf/latest/paths/OrganizationQuotas.yaml index 89109be..86fee74 100644 --- a/apis/cf/latest/paths/OrganizationQuotas.yaml +++ b/apis/cf/latest/paths/OrganizationQuotas.yaml @@ -43,7 +43,10 @@ $ref: '../components/responses/Unauthorized.yaml' post: summary: Create an organization quota - description: This endpoint creates a new organization quota, but does not assign it to a specific organization unless an organization GUID is provided in the relationships.organizations parameter. + description: |- + This endpoint creates a new organization quota, but does not assign it to a specific organization unless an organization GUID is provided in the `relationships.organizations` parameter. + + To create an organization quota you must be an admin. operationId: createOrganizationQuota tags: - Organization Quotas @@ -127,7 +130,10 @@ /v3/organization_quotas/{quota_guid}/relationships/organizations: post: summary: Apply an organization quota to an organization - description: This endpoint applies an organization quota to one or more organizations. + description: |- + This endpoint applies an organization quota to one or more organizations. + + Only admin users can apply an organization quota to an organization. operationId: applyOrganizationQuota tags: - Organization Quotas diff --git a/apis/cf/latest/paths/Organizations.yaml b/apis/cf/latest/paths/Organizations.yaml index 03ddd9e..b7146dd 100644 --- a/apis/cf/latest/paths/Organizations.yaml +++ b/apis/cf/latest/paths/Organizations.yaml @@ -37,7 +37,7 @@ $ref: '../components/responses/Unauthorized.yaml' post: summary: Create an organization - description: Create a new organization. + description: Create an organization. operationId: createOrganization tags: - Organizations @@ -281,7 +281,10 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Assign default isolation segment - description: Set the default isolation segment for a given organization. + description: |- + Set the default isolation segment for a given organization. Only isolation segments that are entitled to the organization are eligible to be the default isolation segment. + + Apps will not run in the new default isolation segment until they are restarted. operationId: assignDefaultIsolationSegmentForOrganization tags: - Organizations diff --git a/apis/cf/latest/paths/Packages.yaml b/apis/cf/latest/paths/Packages.yaml index e91f21e..e9ddcf8 100644 --- a/apis/cf/latest/paths/Packages.yaml +++ b/apis/cf/latest/paths/Packages.yaml @@ -1,7 +1,7 @@ /v3/packages: get: summary: List packages - description: Retrieve all packages the user has access to. + description: Retrieve all packages. operationId: listPackages tags: - Packages @@ -25,6 +25,13 @@ type: array items: type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - READY + - FAILED + - COPYING + - EXPIRED description: Comma-delimited list of package states to filter by - name: types in: query @@ -32,6 +39,9 @@ type: array items: type: string + enum: + - bits + - docker description: Comma-delimited list of package types to filter by - name: app_guids in: query @@ -65,7 +75,7 @@ $ref: '../components/responses/Unauthorized.yaml' post: summary: Create a package - description: Create a new package. + description: Create a package. operationId: createPackage tags: - Packages @@ -95,7 +105,7 @@ /v3/packages/{guid}: get: summary: Get a package - description: Retrieve a specific package by its GUID. + description: Retrieve a package. operationId: getPackage tags: - Packages @@ -118,17 +128,137 @@ $ref: '../components/responses/Unauthorized.yaml' '404': $ref: '../components/responses/NotFound.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + patch: + summary: Update a package + description: Update a package. + operationId: updatePackage + tags: + - Packages + parameters: + - $ref: ../components/parameters/Guid.yaml + requestBody: + description: Package object that needs to be updated + required: true + content: + application/json: + schema: + type: object + properties: + metadata: + $ref: '../components/schemas/Metadata.yaml' + username: + type: string + description: The username for the image’s registry. Only possible for Docker package. + password: + type: string + description: The password for the image’s registry. Only possible for Docker package. + responses: + '200': + description: Successfully updated package + content: + application/json: + schema: + $ref: '../components/schemas/Package.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + delete: + summary: Delete a package + description: Delete a package. + operationId: deletePackage + tags: + - Packages + parameters: + - $ref: '../components/parameters/Guid.yaml' + responses: + '202': + description: Accepted + headers: + Location: + description: URL of the job that is deleting the package + schema: + type: string + format: uri + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' +/v3/packages/{guid}/droplets: + get: + summary: List droplets for a package + description: Retrieve a list of droplets belonging to a package. + operationId: listPackageDroplets + tags: + - Packages + - Droplets + parameters: + - $ref: '../components/parameters/Guid.yaml' + - $ref: '../components/parameters/Page.yaml' + - $ref: '../components/parameters/PerPage.yaml' + - $ref: '../components/parameters/OrderBy.yaml' + - $ref: '../components/parameters/LabelSelector.yaml' + - name: guids + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of droplet guids to filter by + - name: states + in: query + schema: + type: array + items: + type: string + description: Comma-delimited list of droplet states to filter by + responses: + '200': + description: List of droplets for the package + content: + application/json: + schema: + $ref: '../components/schemas/DropletList.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' /v3/packages/{guid}/upload: post: summary: Upload package bits - description: Upload the bits for a specific package by its GUID. + description: This upload endpoint takes a multi-part form requests for packages of type `bits`. The request requires either a [.zip file](https://en.wikipedia.org/wiki/Zip_(file_format)) uploaded under the `bits` field or a list of [resource match objects](#the-resource-match-object) under the `resources` field. These field may be used together. operationId: uploadPackageBits tags: - Packages parameters: - $ref: '../components/parameters/Guid.yaml' requestBody: - $ref: '../components/requestBodies/PackageUploadRequestBody.yaml' + content: + multipart/form-data: + schema: + type: object + properties: + bits: + type: string + format: binary + resources: + type: array + items: + type: object + properties: + path: + type: string + size_in_bytes: + type: integer + checksum: + type: object + properties: + value: + type: string responses: '200': description: Successfully uploaded package bits @@ -136,14 +266,30 @@ application/json: schema: $ref: '../components/schemas/Package.yaml' + '202': + description: Upload initiated + headers: + Location: + schema: + type: string + description: URL of the job tracking the upload + content: + application/json: + schema: + $ref: '../components/schemas/Package.yaml' '401': $ref: '../components/responses/Unauthorized.yaml' '404': $ref: '../components/responses/NotFound.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' /v3/packages/{guid}/download: get: summary: Download package bits - description: Download the bits for a specific package by its GUID. + description: |- + This endpoint downloads the bits of an existing package. + + When using a remote blobstore, such as AWS, the response is a redirect to the actual location of the bits. If the client is automatically following redirects, then the OAuth token that was used to communicate with Cloud Controller will be replayed on the new redirect request. Some blobstores may reject the request in that case. Clients may need to follow the redirect without including the OAuth token. operationId: downloadPackageBits tags: - Packages @@ -157,7 +303,7 @@ /v3/packages?source_guid={source_guid}: post: summary: Copy a package - description: Copy a package to a different app. + description: This endpoint copies the bits of a source package to a target package. operationId: copyPackage tags: - Packages @@ -218,6 +364,13 @@ type: array items: type: string + enum: + - AWAITING_UPLOAD + - PROCESSING_UPLOAD + - READY + - FAILED + - COPYING + - EXPIRED description: Comma-delimited list of package states to filter by - name: types in: query @@ -225,6 +378,9 @@ type: array items: type: string + enum: + - bits + - docker description: Comma-delimited list of package types to filter by responses: '200': @@ -236,4 +392,4 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: '../components/responses/NotFound.yaml' \ No newline at end of file + $ref: '../components/responses/NotFound.yaml' diff --git a/apis/cf/latest/paths/Processes.yaml b/apis/cf/latest/paths/Processes.yaml index 4ad6087..737d45b 100644 --- a/apis/cf/latest/paths/Processes.yaml +++ b/apis/cf/latest/paths/Processes.yaml @@ -1,7 +1,7 @@ /v3/processes: get: summary: List processes - description: Retrieve all processes the user has access to. + description: Retrieve all processes. operationId: listProcesses tags: - Processes @@ -141,6 +141,8 @@ $ref: '../components/responses/Unauthorized.yaml' '404': $ref: '../components/responses/NotFound.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' /v3/processes/{guid}/actions/scale: post: summary: Scale a process @@ -156,13 +158,13 @@ schema: properties: instances: - type: integer + type: [integer, 'null', string] memory_in_mb: - type: integer + type: [integer, 'null', string] disk_in_mb: - type: integer + type: [integer, 'null', string] log_rate_limit_in_bytes_per_second: - type: integer + type: [integer, 'null', string] responses: '202': description: Accepted @@ -179,7 +181,10 @@ /v3/processes/{guid}/instances/{index}: delete: summary: Terminate a process instance - description: Terminate a process instance. + description: |- + Terminate an instance of a specific process. Health management will eventually restart the instance. + + This allows a user to stop a single misbehaving instance of a process. operationId: terminateProcessInstance tags: - Processes @@ -200,7 +205,7 @@ /v3/apps/{guid}/processes: get: summary: List processes for an app - description: Retrieve all processes for an app. + description: Retrieves all processes belonging to an app. operationId: listAppProcesses tags: - Processes @@ -270,6 +275,8 @@ $ref: '../components/responses/Unauthorized.yaml' '404': $ref: '../components/responses/NotFound.yaml' + '503': + $ref: '../components/responses/ServiceUnavailable.yaml' /v3/apps/{guid}/processes/{type}/actions/scale: post: summary: Scale a process for an app @@ -290,13 +297,13 @@ schema: properties: instances: - type: integer + type: [integer, 'null', string] memory_in_mb: - type: integer + type: [integer, 'null', string] disk_in_mb: - type: integer + type: [integer, 'null'] log_rate_limit_in_bytes_per_second: - type: integer + type: [integer, 'null'] responses: '202': description: Accepted diff --git a/apis/cf/latest/paths/ResourceMatches.yaml b/apis/cf/latest/paths/ResourceMatches.yaml index e61f19b..5a1e8e8 100644 --- a/apis/cf/latest/paths/ResourceMatches.yaml +++ b/apis/cf/latest/paths/ResourceMatches.yaml @@ -1,7 +1,16 @@ /v3/resource_matches: post: summary: Create a resource match - description: This endpoint returns a list of matching resources from the input list. + description: |- + This endpoint returns a list of **cached** resources from the input list. + + This endpoint matches given resource SHA-1/file size pairs against the Cloud Controller cache and reports the subset that describes already cached files. This is usually used to avoid uploading duplicate files when pushing an app which has only been partially changed. The `path` and `mode` fields are not used when matching. + + When [uploading package bits](#upload-package-bits), the response from this endpoint should be used as the `resources` form field. As such, it is useful to include the `path` and `mode` fields for each resource even though they are not used when determining a resource match. + + Cloud Foundry operators may set minimum/maximum file sizes to match against. If the file size provided is outside this range, it will not be matched against. + + If the `resource_matching` [feature flag](#the-feature-flag-object) is disabled, resource matching will always return an empty array. operationId: postResourceMatches tags: - Resource Matches @@ -9,13 +18,25 @@ content: application/json: schema: + type: object properties: resources: + type: array + items: + type: object + properties: + checksum: + type: object + properties: + value: + type: string + size_in_bytes: + type: integer + path: + type: string description: List of resources to check for in the resource cache - type: string required: - resources - type: object responses: '201': description: Created diff --git a/apis/cf/latest/paths/Revisions.yaml b/apis/cf/latest/paths/Revisions.yaml index fc54065..069b36c 100644 --- a/apis/cf/latest/paths/Revisions.yaml +++ b/apis/cf/latest/paths/Revisions.yaml @@ -1,7 +1,7 @@ /v3/revisions/{guid}: get: summary: Get a revision - description: Retrieve a specific revision by its GUID. + description: Retrieve a revision. operationId: getRevision tags: - Revisions @@ -26,7 +26,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a revision - description: This endpoint will only update the parameters specified in the request body. Any unspecified parameters will retain their existing values. + description: Update a revision. operationId: updateRevision tags: - Revisions diff --git a/apis/cf/latest/paths/Roles.yaml b/apis/cf/latest/paths/Roles.yaml index 0007e8c..468ae1d 100644 --- a/apis/cf/latest/paths/Roles.yaml +++ b/apis/cf/latest/paths/Roles.yaml @@ -76,11 +76,24 @@ $ref: '../components/responses/Unauthorized.yaml' '403': $ref: '../components/responses/Forbidden.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' '500': $ref: '../components/responses/500.yaml' post: summary: Create a role - description: Create a new role. + description: |- + This endpoint creates a new role for a user in an organization or space. + + To create an organization role you must be an admin or organization manager in the organization associated with the role. + + To create a space role you must be an admin, an organization manager in the parent organization of the space associated with the role, or a space manager in the space associated with the role. + + For a user to be assigned a space role, the user must already have an organization role in the parent organization. + + If the associated user is valid but does not exist in Cloud Controller’s database, a user resource will be created automatically. + + If CAPI property `cc.allow_user_creation_by_org_manager` is enabled, the organization role is being created by username + origin and the user does not exist in UAA yet, the user will be created. The origin must be different from `uaa` in this case. operationId: createRole tags: - Roles @@ -115,12 +128,14 @@ $ref: '../components/responses/Unauthorized.yaml' '403': $ref: '../components/responses/Forbidden.yaml' + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' '500': $ref: '../components/responses/500.yaml' /v3/roles/{guid}: get: summary: Get a role - description: Retrieve a specific role by its GUID. + description: This endpoint gets an individual role resource. operationId: getRole tags: - Roles @@ -166,7 +181,7 @@ $ref: '../components/responses/NotFound.yaml' delete: summary: Delete a role - description: Delete a specific role by its GUID. + description: This endpoint deletes an individual role. operationId: deleteRole tags: - Roles diff --git a/apis/cf/latest/paths/Root.yaml b/apis/cf/latest/paths/Root.yaml index 511271a..0410b8f 100644 --- a/apis/cf/latest/paths/Root.yaml +++ b/apis/cf/latest/paths/Root.yaml @@ -1,7 +1,7 @@ get: - summary: Get API root + summary: Global API Root description: |- - Returns the root API endpoint information. + This endpoint returns links to the APIs available on a given Cloud Foundry deployment. operationId: getApiRoot tags: - Root diff --git a/apis/cf/latest/paths/Routes.yaml b/apis/cf/latest/paths/Routes.yaml index 2490b7b..cf29708 100644 --- a/apis/cf/latest/paths/Routes.yaml +++ b/apis/cf/latest/paths/Routes.yaml @@ -1,7 +1,7 @@ /v3/routes: get: summary: List routes - description: Retrieve a list of routes available in the system. + description: Retrieve all routes the user has access to. operationId: listRoutes tags: - Routes @@ -18,6 +18,9 @@ type: array items: type: string + enum: + - http + - tcp description: Comma-delimited list of protocols to filter by - name: hosts in: query @@ -81,7 +84,11 @@ type: array items: type: string - description: Comma-delimited list of resource names to include in the response + enum: + - domain + - space.organization + - space + description: Optionally include a list of unique related resources in the response responses: '200': $ref: '../components/responses/RouteListResponse.yaml' @@ -89,10 +96,42 @@ $ref: '../components/responses/Unauthorized.yaml' '403': $ref: '../components/responses/Forbidden.yaml' + post: + summary: Create a route + description: Create a route. + operationId: createRoute + tags: + - Routes + requestBody: + $ref: '../components/requestBodies/RouteCreateRequestBody.yaml' + responses: + '201': + description: Route created + content: + application/json: + schema: + $ref: '../components/schemas/Route.yaml' + links: + space: + operationId: getSpace + parameters: + guid: $response.body#/relationships/space/data/guid + description: Retrieve the space for this route + domain: + operationId: getDomain + parameters: + guid: $response.body#/relationships/domain/data/guid + description: Retrieve the domain for this route + '400': + $ref: '../components/responses/BadRequest.yaml' + '401': + $ref: '../components/responses/Unauthorized.yaml' + '403': + $ref: '../components/responses/Forbidden.yaml' /v3/routes/{guid}: get: summary: Get a route - description: Retrieve details of a specific route by its GUID. + description: Retrieve a route. operationId: getRoute tags: - Routes @@ -122,7 +161,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a route - description: Update attributes of a specific route by its GUID. + description: Update a route. operationId: updateRoute tags: - Routes @@ -163,7 +202,7 @@ $ref: '../components/responses/NotFound.yaml' delete: summary: Delete a route - description: Delete a specific route by its GUID. + description: Delete a route. operationId: deleteRoute tags: - Routes @@ -254,8 +293,8 @@ '404': $ref: '../components/responses/NotFound.yaml' post: - summary: Share a route with other spaces - description: This endpoint shares the route with the specified spaces. + summary: Share a route with other spaces (experimental) + description: This endpoint shares the route with the specified spaces. This allows users with read and write access in both the route’s space and a shared space to bind a route to an app in the shared space. In order to share into a space the requesting user must have write permission in the target space. operationId: shareRoute tags: - Routes @@ -283,7 +322,7 @@ $ref: '../components/responses/UnprocessableEntity.yaml' /v3/routes/{guid}/relationships/shared_spaces/{space_guid}: delete: - summary: Unshare a route that was shared with another space + summary: Unshare a route that was shared with another space (experimental) description: Unshares a route that was shared with another space. operationId: unshareRoute tags: @@ -306,8 +345,8 @@ $ref: '../components/responses/NotFound.yaml' /v3/routes/{guid}/relationships/space: patch: - summary: Transfer ownership - description: Transfers a the ownership of a route to a another space. + summary: Transfer ownership (experimental) + description: Transfers a the ownership of a route to a another space. Users must have write access for both spaces to perform this action. The original owning space will still retain access to the route as a [shared space](#share-a-route-with-other-spaces-experimental). To completely remove a space from a route, users will have to use [unshare route](#unshare-a-route-that-was-shared-with-another-space-experimental). operationId: transferRouteOwnership tags: - Routes @@ -329,51 +368,43 @@ $ref: '../components/responses/NotFound.yaml' '422': $ref: '../components/responses/UnprocessableEntity.yaml' - post: - summary: Create a route - description: Create a new route - operationId: createRoute +/v3/routes/{guid}/destinations: + get: + summary: List destinations for a route + description: Retrieve all destinations associated with a route. + operationId: listDestinationsForRoute tags: - Routes parameters: - $ref: '../components/parameters/Guid.yaml' - requestBody: - $ref: '../components/requestBodies/RouteCreateRequestBody.yaml' + - $ref: '../components/parameters/Page.yaml' + - $ref: '../components/parameters/PerPage.yaml' responses: - '201': - description: Route created + '200': + description: List of destinations for the route content: application/json: schema: - $ref: '../components/schemas/Route.yaml' - links: - space: - operationId: getSpace - parameters: - guid: $response.body#/relationships/space/data/guid - description: Retrieve the space for this route - domain: - operationId: getDomain - parameters: - guid: $response.body#/relationships/domain/data/guid - description: Retrieve the domain for this route + $ref: '../components/schemas/RouteDestinationList.yaml' '400': $ref: '../components/responses/BadRequest.yaml' '401': $ref: '../components/responses/Unauthorized.yaml' '403': $ref: '../components/responses/Forbidden.yaml' -/v3/routes/{guid}/destinations: - get: - summary: List destinations for a route - description: Retrieve a list of destinations for a specific route by its GUID. - operationId: listDestinationsForRoute + post: + summary: Insert destinations for a route + description: |- + Add one or more destinations to a route, preserving any existing destinations. + + Weighted destinations (deprecated) cannot be added with this endpoint. + operationId: insertDestinationsForRoute tags: - Routes parameters: - $ref: '../components/parameters/Guid.yaml' - - $ref: '../components/parameters/Page.yaml' - - $ref: '../components/parameters/PerPage.yaml' + requestBody: + $ref: '../components/requestBodies/RouteDestinations.yaml' responses: '200': description: List of destinations for the route @@ -387,10 +418,17 @@ $ref: '../components/responses/Unauthorized.yaml' '403': $ref: '../components/responses/Forbidden.yaml' - post: - summary: Insert destinations for a route - description: Insert destinations for a specific route by its GUID. - operationId: insertDestinationsForRoute + '422': + $ref: '../components/responses/UnprocessableEntity.yaml' + patch: + summary: Replace all destinations for a route + description: |- + Replaces all destinations for a route, removing any destinations not included in the provided list. + + Weighted destinations are **deprecated**. Development of the experimental Istio Service Mesh routing layer was discontinued in 2020 and is no longer supported by the platform. Specifying a `weight` for a destination will take no effect. + + If weighted destinations are provided, however, all destinations provided here must have a `weight` specified, and all weights for this route must sum to 100. If not, all provided destinations must not have a `weight`. Mixing weighted and unweighted destinations for a route is not allowed. + operationId: replaceDestinationsForRouteWithPatch tags: - Routes parameters: @@ -414,7 +452,12 @@ $ref: '../components/responses/UnprocessableEntity.yaml' put: summary: Replace all destinations for a route - description: Replace all destinations for a specific route by its GUID. + description: |- + Replaces all destinations for a route, removing any destinations not included in the provided list. + + Weighted destinations are **deprecated**. Development of the experimental Istio Service Mesh routing layer was discontinued in 2020 and is no longer supported by the platform. Specifying a `weight` for a destination will take no effect. + + If weighted destinations are provided, however, all destinations provided here must have a `weight` specified, and all weights for this route must sum to 100. If not, all provided destinations must not have a `weight`. Mixing weighted and unweighted destinations for a route is not allowed. operationId: replaceDestinationsForRoute tags: - Routes @@ -440,7 +483,7 @@ /v3/routes/{guid}/destinations/{destination_guid}: patch: summary: Update a destination protocol for a route - description: Update the protocol of a specific route destination by its GUID. + description: This endpoint updates the protocol of a route destination (app, port and weight cannot be updated) operationId: updateDestinationProtocolForRoute tags: - Routes @@ -484,7 +527,7 @@ $ref: '../components/responses/UnprocessableEntity.yaml' delete: summary: Remove destination for a route - description: Remove a destination from a specific route by its GUID. + description: Remove a destination from a route. operationId: removeDestinationForRoute tags: - Routes @@ -507,7 +550,7 @@ /v3/spaces/{guid}/routes: delete: summary: Delete unmapped routes for a space - description: Delete routes that are unmapped in a specific space. + description: Deletes all routes in a space that are not mapped to any applications and not bound to any service instances. operationId: deleteUnmappedRoutesForSpace tags: - Routes diff --git a/apis/cf/latest/paths/SecurityGroups.yaml b/apis/cf/latest/paths/SecurityGroups.yaml index 827d9e6..9731cf4 100644 --- a/apis/cf/latest/paths/SecurityGroups.yaml +++ b/apis/cf/latest/paths/SecurityGroups.yaml @@ -1,7 +1,7 @@ /v3/security_groups: get: summary: List security groups - description: List security groups + description: List security groups. operationId: listSecurityGroups tags: - Security Groups @@ -62,7 +62,7 @@ $ref: ../components/responses/Forbidden.yaml post: summary: Create a security group - description: Create a security group + description: Create a security group. operationId: createSecurityGroup tags: - Security Groups @@ -89,7 +89,7 @@ /v3/security_groups/{guid}: get: summary: Get a security group - description: Get a security group + description: Get a security group. operationId: getSecurityGroup tags: - Security Groups @@ -145,10 +145,10 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: ../components/responses/NotFound.yaml + $ref: '../components/responses/NotFound.yaml' patch: summary: Update a security group - description: This endpoint will only update the parameters specified in the request body. Any unspecified parameters will retain their existing values. Updates to the `rules` parameter will fully replace the current set of `rules` for the security group. Updates to the `globally_enabled` parameter will be merged with the existing configuration. For example, an update to the `running` parameter will not affect the `staging` configuration. + description: This endpoint will only update the parameters specified in the request body. Any unspecified parameters will retain their existing values. Updates to the `rules` parameter will fully replace the current set of `rules` for the security group. Updates to the `globally_enabled` parameter will be merged with the existing configuration. For example, an update to the `globally_enabled.running` parameter will not affect the `globally_enabled.staging` configuration. operationId: updateSecurityGroup tags: - Security Groups @@ -172,7 +172,7 @@ $ref: ../components/responses/NotFound.yaml delete: summary: Delete a security group - description: Delete a security group + description: Delete a security group. operationId: deleteSecurityGroup tags: - Security Groups diff --git a/apis/cf/latest/paths/ServiceBrokers.yaml b/apis/cf/latest/paths/ServiceBrokers.yaml index 90c0503..f23b6c9 100644 --- a/apis/cf/latest/paths/ServiceBrokers.yaml +++ b/apis/cf/latest/paths/ServiceBrokers.yaml @@ -38,8 +38,7 @@ post: summary: Create a service broker description: |- - This endpoint creates a new service broker and a job to synchronize the service offerings and service plans with those in the broker's catalog. - The `Location` header refers to the created job which syncs the broker with the catalog. See [Jobs](#/components/schemas/job) for more information and limitations. + This endpoint creates a new service broker and a job to synchronize the service offerings and service plans with those in the broker’s catalog. The `Location` header refers to the created job which syncs the broker with the catalog. See [_Service broker jobs_](#service-broker-jobs) for more information and limitations. operationId: createServiceBroker tags: - Service Brokers @@ -47,7 +46,7 @@ content: application/json: schema: - $ref: ../components/schemas/ServiceBroker.yaml + $ref: '../components/schemas/ServiceBrokerCreate.yaml' responses: '202': description: Accepted @@ -58,9 +57,9 @@ type: string format: uri '401': - $ref: ../components/responses/Unauthorized.yaml + $ref: '../components/responses/Unauthorized.yaml' '422': - $ref: ../components/responses/UnprocessableEntity.yaml + $ref: '../components/responses/UnprocessableEntity.yaml' /v3/service_brokers/{guid}: get: summary: Get a service broker @@ -76,7 +75,7 @@ content: application/json: schema: - $ref: ../components/schemas/ServiceBroker.yaml + $ref: '../components/schemas/ServiceBroker.yaml' links: space: operationId: getSpace @@ -86,32 +85,30 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: ../components/responses/NotFound.yaml + $ref: '../components/responses/NotFound.yaml' patch: summary: Update a service broker description: |- - This endpoint updates a service broker. Depending on the parameters specified, - the endpoint may respond with a background job, and it may synchronize the - service offerings and service plans with those in the broker's catalog. When a service broker has a synchronization job in progress, only - updates with `metadata` are permitted until the synchronization job - is complete. + This endpoint updates a service broker. Depending on the parameters specified, the endpoint may respond with a background job, and it may synchronize the service offerings and service plans with those in the broker’s catalog. + + When a service broker has a synchronization job in progress, only updates with `metadata` are permitted until the synchronization job is complete. operationId: updateServiceBroker tags: - Service Brokers parameters: - - $ref: ../components/parameters/Guid.yaml + - $ref: '../components/parameters/Guid.yaml' requestBody: content: application/json: schema: - $ref: ../components/schemas/ServiceBroker.yaml + $ref: '../components/schemas/ServiceBroker.yaml' responses: '200': description: OK content: application/json: schema: - $ref: ../components/schemas/ServiceBroker.yaml + $ref: '../components/schemas/ServiceBroker.yaml' links: space: operationId: getSpace @@ -129,17 +126,17 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: ../components/responses/NotFound.yaml + $ref: '../components/responses/NotFound.yaml' '422': - $ref: ../components/responses/UnprocessableEntity.yaml + $ref: '../components/responses/UnprocessableEntity.yaml' delete: summary: Delete a service broker - description: This endpoint creates a job to delete an existing service broker. The `Location` header refers to the created job. See [Jobs](#/components/schemas/job) for more information and limitations. + description: This endpoint creates a job to delete an existing service broker. The `Location` header refers to the created job. See [_Service broker jobs_](#service-broker-jobs) for more information and limitations. operationId: deleteServiceBroker tags: - Service Brokers parameters: - - $ref: ../components/parameters/Guid.yaml + - $ref: '../components/parameters/Guid.yaml' responses: '202': description: Accepted @@ -152,4 +149,4 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: ../components/responses/NotFound.yaml + $ref: '../components/responses/NotFound.yaml' diff --git a/apis/cf/latest/paths/ServiceCredentialBindings.yaml b/apis/cf/latest/paths/ServiceCredentialBindings.yaml index f2780ee..e2d955b 100644 --- a/apis/cf/latest/paths/ServiceCredentialBindings.yaml +++ b/apis/cf/latest/paths/ServiceCredentialBindings.yaml @@ -96,7 +96,10 @@ type: array items: type: string - description: Comma-delimited list of resource names to include in the response + enum: + - app + - service_instance + description: "Optionally include a list of unique related resources in the response. Valid values are: `app`, `service_instance`" responses: '200': description: OK @@ -109,9 +112,9 @@ post: summary: Create a service credential binding description: |- - This endpoint creates a new service credential binding. Service credential bindings can be of type `app` or `key`; `key` is only - valid for managed service instances. If failures occur when creating a service credential binding for a managed service instances, the API might execute orphan mitigation steps - accordingly to cases outlined in the documentation. + This endpoint creates a new service credential binding. Service credential bindings can be of type `app` or `key`; `key` is only valid for managed service instances. + + If failures occur when creating a service credential binding for a managed service instances, the API might execute orphan mitigation steps accordingly to cases outlined in the [OSBAPI specification](https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#orphan-mitigation) operationId: createServiceCredentialBinding tags: - Service Credential Bindings @@ -247,10 +250,7 @@ get: summary: Get parameters for a service credential binding description: |- - Queries the Service Broker for the parameters associated with this service credential binding. - The broker catalog must have enabled the `bindings_retrievable` feature for the Service Offering. - Check the `feature_flags` for the value of this feature flag. - This endpoint is not available for User-Provided Service Instances. + Queries the Service Broker for the parameters associated with this service credential binding. The broker catalog must have enabled the `bindings_retrievable` feature for the Service Offering. Check the [Service Offering object](#the-service-offering-object) for the value of this feature flag. This endpoint is not available for User-Provided Service Instances. operationId: getServiceCredentialBindingParameters tags: - Service Credential Bindings @@ -266,4 +266,4 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: ../components/responses/NotFound.yaml + $ref: '../components/responses/NotFound.yaml' diff --git a/apis/cf/latest/paths/ServiceInstances.yaml b/apis/cf/latest/paths/ServiceInstances.yaml index 2e2d050..6b7ab6b 100644 --- a/apis/cf/latest/paths/ServiceInstances.yaml +++ b/apis/cf/latest/paths/ServiceInstances.yaml @@ -79,10 +79,9 @@ post: summary: Create a service instance description: |- - This endpoint creates a new service instance. Service instances can be of type `managed` or `user-provided`, and - the required parameters are different for each type. User provided service instances do not require interactions with - service brokers. If failures occur when creating managed service instances, the API might execute orphan mitigation steps - accordingly to cases outlined in the documentation. + This endpoint creates a new service instance. Service instances can be of type `managed` or `user-provided`, and the required parameters are different for each type. User provided service instances do not require interactions with service brokers. + + If failures occur when creating managed service instances, the API might execute orphan mitigation steps accordingly to cases outlined in the [OSBAPI specification](https://github.com/openservicebrokerapi/servicebroker/blob/master/spec.md#orphan-mitigation) operationId: createServiceInstance tags: - Service Instances @@ -120,7 +119,7 @@ /v3/service_instances/{guid}/credentials: get: summary: Get credentials for a user-provided service instance - description: Retrieves the credentials for a user-provided service instance. + description: Retrieves the credentials for a user-provided service instance. This endpoint is not available for managed service instances. operationId: getServiceInstanceCredentials tags: - Service Instances @@ -189,7 +188,7 @@ $ref: ../components/responses/NotFound.yaml post: summary: Share a service instance to other spaces - description: This endpoint shares the service instance with the specified spaces. + description: This endpoint shares the service instance with the specified spaces. In order to share into a space the requesting user must be a space developer in the target space. operationId: shareServiceInstance tags: - Service Instances @@ -216,7 +215,7 @@ /v3/service_instances/{guid}/relationships/shared_spaces/{space_guid}: delete: summary: Unshare a service instance from another space - description: This endpoint unshares the service instance from the specified space. + description: This endpoint unshares the service instance from the specified space. This will automatically unbind any applications bound to this service instance in the specified space. Unsharing a service instance from a space will not delete any service keys. operationId: unshareServiceInstance tags: - Service Instances @@ -238,7 +237,7 @@ /v3/service_instances/{guid}/parameters: get: summary: Get parameters for a managed service instance - description: Queries the Service Broker for the parameters associated with this service instance. + description: Queries the Service Broker for the parameters associated with this service instance. The broker catalog must have enabled the `instances_retrievable` feature for the Service Offering. Check the [Service Offering object](#the-service-offering-object) for the value of this feature flag. operationId: getServiceInstanceParameters tags: - Service Instances @@ -258,7 +257,10 @@ /v3/service_instances/{guid}/permissions: get: summary: Get permissions for a service instance - description: Get the current user’s permissions for the given service instance. + description: |- + Get the current user’s permissions for the given service instance. If a user can get a service instance then they can ‘read’ it. Users who can update a service instance can ‘manage’ it. + + This endpoint’s primary purpose is to enable third-party service dashboards to determine the permissions of a given Cloud Foundry user that has authenticated with the dashboard via single sign-on (SSO). For more information, see the Cloud Foundry documentation on [Dashboard Single Sign-On](https://docs.cloudfoundry.org/services/dashboard-sso.html). operationId: getServiceInstancePermissions tags: - Service Instances @@ -315,7 +317,14 @@ $ref: ../components/responses/NotFound.yaml patch: summary: Update a service instance - description: Update a service instance + description: |- + Some updates can be performed entirely within the Cloud Controller in which case the response is synchronous. Some updates require communication with the service broker, in which case the response will be asynchronous. The response will be asynchronous if any of these parameters are specified: + * `parameters` + * `service_plan` + * `maintenance_info` + * `name` - when the service offering has `allow_context_updates` feature enabled + + Otherwise the response will be synchronous. operationId: updateServiceInstance tags: - Service Instances diff --git a/apis/cf/latest/paths/ServiceOfferings.yaml b/apis/cf/latest/paths/ServiceOfferings.yaml index f5c9cbc..a6ed7b1 100644 --- a/apis/cf/latest/paths/ServiceOfferings.yaml +++ b/apis/cf/latest/paths/ServiceOfferings.yaml @@ -117,10 +117,9 @@ delete: summary: Delete a service offering description: |- - This endpoint deletes a service offering. This is typically used to remove orphan service offerings from the Cloud - Foundry database when they have been removed from the service broker catalog, or when the service broker has been - removed. Note that this operation only affects the Cloud Foundry database, and no attempt is made to contact the service - broker. + This endpoint deletes a service offering. This is typically used to remove orphan service offerings from the Cloud Foundry database when they have been removed from the service broker catalog, or when the service broker has been removed. + + Note that this operation only affects the Cloud Foundry database, and no attempt is made to contact the service broker. operationId: deleteServiceOffering tags: - Service Offerings diff --git a/apis/cf/latest/paths/ServicePlans.yaml b/apis/cf/latest/paths/ServicePlans.yaml index e5c6736..8212996 100644 --- a/apis/cf/latest/paths/ServicePlans.yaml +++ b/apis/cf/latest/paths/ServicePlans.yaml @@ -83,7 +83,10 @@ type: array items: type: string - description: Comma-delimited list of resource names to include in the response + enum: + - space.organization + - service_offering + description: Optionally include a list of unique related resources in the response - $ref: ../components/parameters/LabelSelector.yaml - name: fields in: query @@ -188,7 +191,7 @@ $ref: ../components/responses/NotFound.yaml patch: summary: Update a service plan visibility - description: This endpoint updates a service plan visibility. It behaves similar to the `POST` endpoint but this endpoint will replace the existing list of organizations when the service plan is `organization` visible. + description: This endpoint updates a service plan visibility. It behaves similar to the [POST service plan visibility endpoint](#apply-a-service-plan-visibility) but this endpoint will replace the existing list of organizations when the service plan is `organization` visible. operationId: updateServicePlanVisibility tags: - Service Plans @@ -214,7 +217,7 @@ $ref: ../components/responses/UnprocessableEntity.yaml post: summary: Apply a service plan visibility - description: This endpoint applies a service plan visibility. It behaves similar to the `PATCH` endpoint but this endpoint will append to the existing list of organizations when the service plan is `organization` visible. + description: This endpoint applies a service plan visibility. It behaves similar to the [PATCH service plan visibility endpoint](#update-a-service-plan-visibility) but this endpoint will append to the existing list of organizations when the service plan is `organization` visible. operationId: applyServicePlanVisibility tags: - Service Plans diff --git a/apis/cf/latest/paths/ServiceRouteBindings.yaml b/apis/cf/latest/paths/ServiceRouteBindings.yaml index 7a4590b..2d2d5ad 100644 --- a/apis/cf/latest/paths/ServiceRouteBindings.yaml +++ b/apis/cf/latest/paths/ServiceRouteBindings.yaml @@ -46,7 +46,10 @@ type: array items: type: string - description: Comma-delimited list of resource names to include in the response + enum: + - route + - service_instance + description: "Optionally include a list of unique related resources in the response. Valid values are: `route`, `service_instance`" responses: '200': description: OK @@ -59,10 +62,11 @@ post: summary: Create a service route binding description: |- - This endpoint creates a new route service binding. The service instance and the route - must be in the same space. To bind a route to a user-provided service instance, the service instance must - have the `route_service_url` property set. To bind a route to a managed service instance, the service offering must be bindable, - and the service offering must have `route_service` set in the `requires` property. + This endpoint creates a new route service binding. The service instance and the route must be in the same space. + + To bind a route to a user-provided service instance, the service instance must have the `route_service_url` property set. + + To bind a route to a managed service instance, the service offering must be bindable, and the service offering must have `route_forwarding` set in the `requires` property. operationId: createServiceRouteBinding tags: - Service Route Bindings @@ -191,10 +195,7 @@ get: summary: Get parameters for a route binding description: |- - Queries the Service Broker for the parameters associated with this service route binding. - The broker catalog must have enabled the `bindings_retrievable` feature for the Service Offering. - Check the `feature_flags` for the value of this feature flag. - This endpoint is not available for User-Provided Service Instances. + Queries the Service Broker for the parameters associated with this service route binding. The broker catalog must have enabled the `bindings_retrievable` feature for the Service Offering. Check the [Service Offering object](#the-service-offering-object) for the value of this feature flag. This endpoint is not available for User-Provided Service Instances. operationId: getServiceRouteBindingParameters tags: - Service Route Bindings @@ -210,4 +211,4 @@ '401': $ref: '../components/responses/Unauthorized.yaml' '404': - $ref: ../components/responses/NotFound.yaml + $ref: '../components/responses/NotFound.yaml' diff --git a/apis/cf/latest/paths/ServiceUsageEvents.yaml b/apis/cf/latest/paths/ServiceUsageEvents.yaml index 3649b4c..9b23021 100644 --- a/apis/cf/latest/paths/ServiceUsageEvents.yaml +++ b/apis/cf/latest/paths/ServiceUsageEvents.yaml @@ -24,11 +24,14 @@ type: string - name: service_instance_types in: query - description: Comma-delimited list of service instance types to filter by; valid values are `managed` and `user-provided` + description: Comma-delimited list of service instance types to filter by; valid values are `managed_service_instance` and `user_provided_service_instance` schema: type: array items: type: string + enum: + - managed_service_instance + - user_provided_service_instance - name: service_offering_guids in: query description: Comma-delimited list of service offering guids to filter by @@ -73,13 +76,9 @@ tags: - Service Usage Events responses: - '202': - description: Accepted + '200': + description: OK '401': $ref: '../components/responses/Unauthorized.yaml' '404': $ref: '../components/responses/NotFound.yaml' - content: - application/json: - schema: - $ref: ../components/schemas/Job.yaml diff --git a/apis/cf/latest/paths/Sidecars.yaml b/apis/cf/latest/paths/Sidecars.yaml index 90bba7a..5041fd9 100644 --- a/apis/cf/latest/paths/Sidecars.yaml +++ b/apis/cf/latest/paths/Sidecars.yaml @@ -56,6 +56,21 @@ $ref: '../components/responses/NotFound.yaml' '422': $ref: '../components/responses/UnprocessableEntity.yaml' + delete: + summary: Delete a sidecar + description: Delete a sidecar. + operationId: deleteSidecar + tags: + - Sidecars + parameters: + - $ref: '../components/parameters/Guid.yaml' + responses: + '204': + description: No Content + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: '../components/responses/NotFound.yaml' /v3/apps/{guid}/sidecars: get: summary: List sidecars for app @@ -88,7 +103,7 @@ content: application/json: schema: - $ref: '../components/schemas/Sidecar.yaml' + $ref: '../components/schemas/SidecarCreate.yaml' responses: '201': description: Created diff --git a/apis/cf/latest/paths/SpaceQuotas.yaml b/apis/cf/latest/paths/SpaceQuotas.yaml index 4c1b16b..fccc550 100644 --- a/apis/cf/latest/paths/SpaceQuotas.yaml +++ b/apis/cf/latest/paths/SpaceQuotas.yaml @@ -58,7 +58,7 @@ content: application/json: schema: - $ref: ../components/schemas/SpaceQuota.yaml + $ref: ../components/schemas/SpaceQuotaCreate.yaml responses: '201': description: Created @@ -114,7 +114,7 @@ content: application/json: schema: - $ref: ../components/schemas/SpaceQuota.yaml + $ref: ../components/schemas/SpaceQuotaUpdate.yaml responses: '200': description: OK @@ -158,7 +158,10 @@ /v3/space_quotas/{quota_guid}/relationships/spaces: post: summary: Apply a space quota to a space - description: This endpoint applies a space quota to one or more spaces. Only an admin or an org manager in the quota's parent organization can apply a space quota to a space. + description: |- + This endpoint applies a space quota to one or more spaces. + + Only an admin or an org manager in the quota’s parent organization can apply a space quota to a space. operationId: applySpaceQuota tags: - Space Quotas @@ -185,20 +188,43 @@ $ref: '../components/responses/Unauthorized.yaml' '404': $ref: ../components/responses/NotFound.yaml -/v3/space_quotas/{quota_guid}/relationships/spaces/{space_guid}: +/v3/space_quotas/{guid}/relationships/spaces/{space_guid}: delete: summary: Remove a space quota from a space - description: This endpoint removes a space quota from a space. Only an admin or an org manager in the quota's parent organization can remove a space quota from a space. - operationId: removeSpaceQuota + description: |- + This endpoint removes a space quota from a space. + + Only an admin or an org manager in the quota’s parent organization can remove a space quota from a space. + operationId: removeSpaceQuotaFromSpace tags: - Space Quotas parameters: - - name: quota_guid + - $ref: ../components/parameters/Guid.yaml + - name: space_guid in: path required: true schema: type: string format: uuid + responses: + '204': + description: No Content + '401': + $ref: '../components/responses/Unauthorized.yaml' + '404': + $ref: ../components/responses/NotFound.yaml +/v3/space_quotas/{guid}/relationships/spaces/{space_guid}/: + delete: + summary: Remove a space quota from a space (with trailing slash) + description: |- + This endpoint removes a space quota from a space. + + Only an admin or an org manager in the quota’s parent organization can remove a space quota from a space. + operationId: removeSpaceQuotaFromSpaceWithSlash + tags: + - Space Quotas + parameters: + - $ref: ../components/parameters/Guid.yaml - name: space_guid in: path required: true diff --git a/apis/cf/latest/paths/Spaces.yaml b/apis/cf/latest/paths/Spaces.yaml index ff8a905..a4406e9 100644 --- a/apis/cf/latest/paths/Spaces.yaml +++ b/apis/cf/latest/paths/Spaces.yaml @@ -39,7 +39,9 @@ type: array items: type: string - description: Comma-delimited list of resource names to include in the response + enum: + - organization + description: Optionally include a list of unique related resources in the response responses: '200': description: OK @@ -51,7 +53,7 @@ $ref: '../components/responses/Unauthorized.yaml' post: summary: Create a space - description: Create a space + description: Create a space. operationId: createSpace tags: - Spaces @@ -153,6 +155,14 @@ parameters: - $ref: '../components/parameters/Guid.yaml' responses: + '201': + description: Accepted + headers: + Location: + description: URL of the job that is creating the manifest diff + schema: + type: string + format: uri '202': description: Accepted headers: @@ -168,7 +178,10 @@ /v3/spaces/{guid}/actions/apply_manifest: post: summary: Apply a manifest to a space - description: Apply changes specified in a manifest to the named apps and their underlying processes. The apps must reside in the space. These changes are additive and will not modify any unspecified properties or remove any existing environment variables, routes, or services. + description: |- + Apply changes specified in a manifest to the named apps and their underlying processes. The apps must reside in the space. These changes are additive and will not modify any unspecified properties or remove any existing environment variables, app features, routes, or services. + + Apply manifest will only trigger an immediate update for the “instances” property or routing changes. All other properties require an app restart to take effect. operationId: applyManifestToSpace tags: - Spaces @@ -226,6 +239,8 @@ required: true schema: type: string + enum: + - ssh responses: '200': description: OK @@ -238,8 +253,8 @@ '404': $ref: '../components/responses/NotFound.yaml' patch: - summary: Update space features - description: Update space features + summary: Update a space feature + description: Update a space feature. operationId: updateSpaceFeature tags: - Spaces @@ -250,6 +265,8 @@ required: true schema: type: string + enum: + - ssh requestBody: content: application/json: @@ -271,7 +288,10 @@ /v3/spaces/{guid}/manifest_diff: post: summary: Create a manifest diff for a space (experimental) - description: This endpoint returns a JSON representation of the difference between the provided manifest and the current state of a space. + description: |- + This endpoint returns a JSON representation of the difference between the provided manifest and the current state of a space. + + Currently, this endpoint can only diff [version 1](#the-manifest-schema) manifests. operationId: createManifestDiffForSpace tags: - Spaces @@ -283,6 +303,14 @@ schema: type: string responses: + '201': + description: Accepted + headers: + Location: + description: URL of the job that is creating the manifest diff + schema: + type: string + format: uri '202': description: Accepted headers: @@ -317,7 +345,10 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Manage isolation segment - description: This endpoint assigns an isolation segment to the space. The isolation segment must be entitled to the space's parent organization. + description: |- + This endpoint assigns an isolation segment to the space. The isolation segment must be [entitled](#entitle-organizations-for-an-isolation-segment) to the space’s parent organization. + + Apps will not run in the newly assigned isolation segment until they are restarted. operationId: manageIsolationSegmentForSpace tags: - Spaces diff --git a/apis/cf/latest/paths/Stacks.yaml b/apis/cf/latest/paths/Stacks.yaml index 3b2bf25..4602247 100644 --- a/apis/cf/latest/paths/Stacks.yaml +++ b/apis/cf/latest/paths/Stacks.yaml @@ -30,7 +30,7 @@ $ref: '../components/responses/Unauthorized.yaml' post: summary: Create a stack - description: Create a stack + description: Create a stack. operationId: createStack tags: - Stacks @@ -53,7 +53,7 @@ /v3/stacks/{guid}: get: summary: Get a stack - description: Get a stack + description: Get a stack. operationId: getStack tags: - Stacks @@ -72,7 +72,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a stack - description: Update a stack + description: Update a stack. operationId: updateStack tags: - Stacks @@ -100,7 +100,7 @@ $ref: '../components/responses/UnprocessableEntity.yaml' delete: summary: Delete a stack - description: Delete a stack + description: Delete a stack. operationId: deleteStack tags: - Stacks diff --git a/apis/cf/latest/paths/Tasks.yaml b/apis/cf/latest/paths/Tasks.yaml index 05b7d62..0de4071 100644 --- a/apis/cf/latest/paths/Tasks.yaml +++ b/apis/cf/latest/paths/Tasks.yaml @@ -32,6 +32,12 @@ type: array items: type: string + enum: + - PENDING + - RUNNING + - SUCCEEDED + - CANCELING + - FAILED description: Comma-delimited list of task states to filter by - name: app_guids in: query @@ -73,7 +79,7 @@ /v3/apps/{guid}/tasks: post: summary: Create a task - description: Create a new task. + description: Create a task. operationId: createTask tags: - Tasks @@ -113,7 +119,7 @@ /v3/tasks/{guid}: get: summary: Get a task - description: Retrieve a specific task. The `command` field may be excluded in the response based on the user's role. + description: Retrieve a task. The `command` field may be excluded in the response based on the user’s role. operationId: getTask tags: - Tasks @@ -143,7 +149,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a task - description: Update a task + description: Update a task. operationId: updateTask tags: - Tasks diff --git a/apis/cf/latest/paths/Users.yaml b/apis/cf/latest/paths/Users.yaml index a66ea70..0310d7f 100644 --- a/apis/cf/latest/paths/Users.yaml +++ b/apis/cf/latest/paths/Users.yaml @@ -57,7 +57,12 @@ $ref: '../components/responses/500.yaml' post: summary: Create a user - description: Create a new user. + description: |- + Creating a user requires one value, a GUID. This creates a user in the Cloud Controller database. + + Generally, the GUID should match the GUID of an already-created user in the UAA database, though this is not required. Creating a user by guid is only permitted by admins. + + If CAPI property `cc.allow_user_creation_by_org_manager` is enabled, a UAA user will be automatically created if it does not exist yet. The UAA user will be only created when `username` and `origin` have been provided instead of a guid. Additionally `origin` must be different from `uaa`. Admins and OrgManagers can make use of the UAA user creation. operationId: createUser tags: - Users @@ -77,7 +82,7 @@ /v3/users/{guid}: get: summary: Get a user - description: Retrieve a user by its GUID. + description: Retrieve a user. operationId: getUser tags: - Users @@ -96,7 +101,7 @@ $ref: '../components/responses/NotFound.yaml' patch: summary: Update a user - description: Update an existing user. + description: Update a user’s metadata. operationId: updateUser tags: - Users @@ -113,7 +118,7 @@ $ref: '../components/responses/NotFound.yaml' delete: summary: Delete a user - description: Delete a user by its GUID. + description: All roles associated with a user will be deleted if the user is deleted. operationId: deleteUser tags: - Users diff --git a/bin/build.js b/bin/build.js index 56b9a2e..2054f3b 100644 --- a/bin/build.js +++ b/bin/build.js @@ -5,11 +5,40 @@ const { spawn } = require('child_process'); const apisDir = path.join(process.cwd(), 'apis', 'cf'); const distDir = path.join(process.cwd(), 'dist'); -function runCommand(command, args) { +async function fixUnresolvedReferences(outputFile, apiVersionDir) { + try { + let content = await fs.readFile(outputFile, 'utf8'); + + // Fix references that still point to external files + const fixes = [ + { from: /\$ref: \.\.\/components\/schemas\/Job\.yaml/g, to: '#/components/schemas/Job' }, + { from: /\$ref: \.\.\/components\/schemas\/Link\.yaml/g, to: '#/components/schemas/Link' } + ]; + + let hasChanges = false; + for (const fix of fixes) { + if (fix.from.test(content)) { + console.log(`Fixing unresolved reference: ${fix.from.source} -> ${fix.to}`); + content = content.replace(fix.from, `$ref: ${fix.to}`); + hasChanges = true; + } + } + + if (hasChanges) { + await fs.writeFile(outputFile, content, 'utf8'); + console.log(`Fixed unresolved references in ${outputFile}`); + } + } catch (error) { + console.warn(`Warning: Failed to fix unresolved references in ${outputFile}:`, error.message); + } +} + +function runCommand(command, args, options = {}) { return new Promise((resolve) => { const cmd = `${command} ${args.join(' ')}`; - console.log(`> ${cmd}`); - const child = spawn(command, args); + const cwd = options.cwd || process.cwd(); + console.log(`> ${cmd}${options.cwd ? ` (in ${options.cwd})` : ''}`); + const child = spawn(command, args, { ...options }); let stdout = ''; let stderr = ''; @@ -61,7 +90,16 @@ async function build() { await fs.ensureDir(distApiDir); const outputFile = path.join(distApiDir, 'openapi.yaml'); - promises.push(runCommand('redocly', ['bundle', openapiFile, '-o', outputFile])); + // Run redocly bundle from the API directory + promises.push(runCommand('redocly', ['bundle', 'openapi.yaml', '-o', path.resolve(outputFile)], { + cwd: apiVersionDir + }).then(async (result) => { + // Post-process the bundled file to fix any remaining unresolved references + if (result.code === 0) { + await fixUnresolvedReferences(outputFile, apiVersionDir); + } + return result; + })); const config = { title: `Cloud Foundry V3 (CAPI ${version})`, @@ -139,4 +177,4 @@ async function build() { build().catch(err => { console.error(err); process.exit(1); -}); +}); \ No newline at end of file diff --git a/bin/test-compliance.js b/bin/test-compliance.js index 7b9e81c..147ff41 100644 --- a/bin/test-compliance.js +++ b/bin/test-compliance.js @@ -1,43 +1,625 @@ const { spawn } = require('child_process'); const fs = require('fs-extra'); const path = require('path'); +const net = require('net'); +const http = require('http'); +const httpProxy = require('http-proxy'); -const serverUrl = process.argv[2]; -const specFile = process.argv[3]; +const serverUrl = process.env.CF_API_URL; +const appsDomain = process.env.CF_APPS_DOMAIN; +const specFile = process.argv[2]; +const adminUser = process.env.CF_ADMIN_USER; +const adminPassword = process.env.CF_ADMIN_PASSWORD; +const nodeCount = process.env.THREADS || '6'; -if (!serverUrl || !specFile) { - console.error('Usage: node test-contract.js '); +if (!serverUrl || !specFile || !adminUser || !adminPassword || !appsDomain) { + console.error('Usage: node bin/test-compliance.js '); + console.error('Please also set CF_API_URL, CF_APPS_DOMAIN, CF_ADMIN_USER, and CF_ADMIN_PASSWORD environment variables.'); + console.error('Optional: TEST_NODES (default: 6) - Number of test nodes to run in parallel'); process.exit(1); } -function runCommand(command, args) { +function runCommand(command, args, options = {}) { return new Promise((resolve, reject) => { console.log(`> ${command} ${args.join(' ')}`); - const child = spawn(command, args, { stdio: 'inherit' }); + + const child = spawn(command, args, { + stdio: options.captureOutput ? ['ignore', 'pipe', 'pipe'] : 'inherit', + ...options + }); + + // Track the child process for cleanup if needed + if (options.trackProcess !== false && global.testCompliance_childProcesses) { + global.testCompliance_childProcesses.push(child); + } + + let stdout = ''; + let stderr = ''; + + if (options.captureOutput) { + child.stdout.on('data', (data) => { + const output = data.toString(); + stdout += output; + if (options.logOutput !== false) { + process.stdout.write(output); + } + }); + + child.stderr.on('data', (data) => { + const output = data.toString(); + stderr += output; + if (options.logOutput !== false) { + process.stderr.write(output); + } + }); + } child.on('close', (code) => { + // Remove from tracking when process closes + if (global.testCompliance_childProcesses) { + const index = global.testCompliance_childProcesses.indexOf(child); + if (index > -1) { + global.testCompliance_childProcesses.splice(index, 1); + } + } + if (code === 0) { - resolve(); + resolve({ code, stdout, stderr }); } else { - reject(new Error(`Command failed with exit code ${code}`)); + const error = new Error(`Command failed with exit code ${code}`); + error.code = code; + error.stdout = stdout; + error.stderr = stderr; + reject(error); } }); child.on('error', (err) => { + // Remove from tracking on error + if (global.testCompliance_childProcesses) { + const index = global.testCompliance_childProcesses.indexOf(child); + if (index > -1) { + global.testCompliance_childProcesses.splice(index, 1); + } + } + + err.stdout = stdout; + err.stderr = stderr; reject(err); }); }); } -async function testContract() { +async function checkGoExists() { + try { + await runCommand('go', ['version'], { captureOutput: true, logOutput: false }); + } catch (error) { + console.error('Go is not installed or not in your PATH. Please install Go to run the compliance tests.'); + process.exit(1); + } +} + +async function killOrphanedProcesses() { + console.log('Checking for orphaned wiretap processes...'); + try { + // Kill any existing wiretap processes + const result = await runCommand('pkill', ['-f', 'wiretap'], { + captureOutput: true, + logOutput: false, + trackProcess: false + }); + if (result.stdout || result.stderr) { + console.log('Cleaned up orphaned wiretap processes.'); + } + } catch (error) { + // pkill returns non-zero exit code when no processes are found, which is fine + if (error.code !== 1) { + console.warn(`Warning: Could not check for orphaned processes: ${error.message}`); + } + } +} + +function waitForPort(port, retries = 30, delay = 2000) { + return new Promise((resolve, reject) => { + const tryConnect = (attempt) => { + const socket = new net.Socket(); + socket.setTimeout(5000); + + socket.once('connect', () => { + socket.end(); + resolve(); + }); + + socket.once('error', (err) => { + socket.destroy(); + if (err.code === 'ECONNREFUSED' && attempt < retries) { + console.log(`Port ${port} not ready, retrying in ${delay}ms (attempt ${attempt + 1}/${retries})...`); + setTimeout(() => tryConnect(attempt + 1), delay); + } else { + reject(err); + } + }); + + socket.once('timeout', () => { + socket.destroy(); + if (attempt < retries) { + console.log(`Port ${port} timeout, retrying in ${delay}ms (attempt ${attempt + 1}/${retries})...`); + setTimeout(() => tryConnect(attempt + 1), delay); + } else { + reject(new Error(`Timeout waiting for port ${port}`)); + } + }); + + socket.connect(port, '127.0.0.1'); + }; + tryConnect(0); + }); +} + +function createProxyServer() { + const proxy = httpProxy.createProxyServer({ + timeout: 30000, + proxyTimeout: 30000 + }); + const target = serverUrl; + + proxy.on('error', (err, req, res) => { + console.error(`Proxy error: ${err.message}`); + if (res && !res.headersSent) { + res.writeHead(502, { + 'Content-Type': 'text/plain' + }); + res.end('Bad Gateway - Wiretap may not be ready yet'); + } + }); + + const server = http.createServer((req, res) => { + if (req.url.startsWith('/v2/')) { + // Always proxy v2 requests to the actual CF API + proxy.web(req, res, { target, secure: false, changeOrigin: true }); + } else if (req.headers['content-type'] && req.headers['content-type'].includes('multipart/form-data')) { + // Always proxy multipart requests to the actual CF API + proxy.web(req, res, { target, secure: false, changeOrigin: true }); + } else { + // Try to proxy to wiretap first, fall back to direct CF API on failure + proxy.web(req, res, { + target: 'http://localhost:9090', + secure: false, + timeout: 5000 + }, (proxyErr) => { + if (proxyErr) { + console.log(`Wiretap proxy failed, falling back to direct CF API: ${proxyErr.message}`); + // Fallback: proxy directly to CF API + proxy.web(req, res, { target, secure: false, changeOrigin: true }); + } + }); + } + }); + + return server; +} + +async function startWiretap(wiretapProxyPort, serverUrl, specFile, reportFile) { + console.log('Starting wiretap in the background...'); + console.log(`Wiretap UI will be available at http://localhost:9091`); + + // Ensure log directory exists + const logDir = path.join('out', 'logs'); + await fs.ensureDir(logDir); + const stdoutLogFile = path.join(logDir, 'wiretap-stdout.log'); + const stderrLogFile = path.join(logDir, 'wiretap-stderr.log'); + + return new Promise((resolve, reject) => { + // Use npx to ensure we get the right wiretap binary + const wiretapProcess = spawn('npx', ['wiretap', '-p', wiretapProxyPort, '-u', serverUrl, '-s', specFile, '--hard-validation=false', '--stream-report', "--report-filename", reportFile], { + detached: true, + stdio: ['ignore', 'pipe', 'pipe'], + // Create a new process group so we can kill the entire group + // This ensures child processes of wiretap are also terminated + }); + + // Ensure the process doesn't keep the parent alive + wiretapProcess.unref(); + + let startupOutput = ''; + let startupErrors = ''; + let hasStarted = false; + + // Create write streams for logging + const stdoutStream = fs.createWriteStream(stdoutLogFile, { flags: 'w' }); + const stderrStream = fs.createWriteStream(stderrLogFile, { flags: 'w' }); + + // Log wiretap output for debugging and to files + wiretapProcess.stdout.on('data', (data) => { + const output = data.toString(); + startupOutput += output; + + // Log to console (with timestamp) + const timestamp = new Date().toISOString(); + console.log(`[${timestamp}] wiretap stdout: ${output.trim()}`); + + // Log to file + stdoutStream.write(`[${timestamp}] ${output}`); + + // Look for the success message indicating wiretap is ready + if (output.includes('wiretap is online!') && !hasStarted) { + hasStarted = true; + resolve(wiretapProcess); + } + }); + + wiretapProcess.stderr.on('data', (data) => { + const error = data.toString(); + startupErrors += error; + + // Log to console (with timestamp) + const timestamp = new Date().toISOString(); + console.error(`[${timestamp}] wiretap stderr: ${error.trim()}`); + + // Log to file + stderrStream.write(`[${timestamp}] ${error}`); + }); + + wiretapProcess.on('exit', (code, signal) => { + const timestamp = new Date().toISOString(); + const exitMessage = `wiretap process exited with code ${code}, signal ${signal}`; + console.log(`[${timestamp}] ${exitMessage}`); + + // Close log streams + stdoutStream.end(); + stderrStream.end(); + + if (!hasStarted) { + // Create detailed error message with captured output + let errorMessage = `Wiretap failed to start (exit code: ${code})`; + if (startupOutput) { + errorMessage += `\n\nStdout output:\n${startupOutput}`; + } + if (startupErrors) { + errorMessage += `\n\nStderr output:\n${startupErrors}`; + } + errorMessage += `\n\nFull logs available at:\n- ${stdoutLogFile}\n- ${stderrLogFile}`; + + reject(new Error(errorMessage)); + } + }); + + wiretapProcess.on('error', (error) => { + const timestamp = new Date().toISOString(); + console.error(`[${timestamp}] Wiretap process error:`, error); + + // Close log streams + stdoutStream.end(); + stderrStream.end(); + + if (!hasStarted) { + let errorMessage = `Wiretap process error: ${error.message}`; + if (startupOutput) { + errorMessage += `\n\nStdout output:\n${startupOutput}`; + } + if (startupErrors) { + errorMessage += `\n\nStderr output:\n${startupErrors}`; + } + errorMessage += `\n\nFull logs available at:\n- ${stdoutLogFile}\n- ${stderrLogFile}`; + + reject(new Error(errorMessage)); + } + }); + + console.log(`wiretap started with PID: ${wiretapProcess.pid}`); + console.log(`Wiretap logs will be written to:\n- stdout: ${stdoutLogFile}\n- stderr: ${stderrLogFile}`); + + // Timeout after 30 seconds if wiretap doesn't start + setTimeout(() => { + if (!hasStarted) { + const timestamp = new Date().toISOString(); + console.warn(`[${timestamp}] Wiretap startup timeout - continuing without wiretap monitoring`); + + // Close log streams + stdoutStream.end(); + stderrStream.end(); + + // Log timeout details + let timeoutMessage = 'Wiretap startup timeout (30 seconds)'; + if (startupOutput) { + timeoutMessage += `\n\nStdout output during startup:\n${startupOutput}`; + } + if (startupErrors) { + timeoutMessage += `\n\nStderr output during startup:\n${startupErrors}`; + } + timeoutMessage += `\n\nFull logs available at:\n- ${stdoutLogFile}\n- ${stderrLogFile}`; + + console.warn(timeoutMessage); + + // Don't reject, just resolve with null to continue without wiretap + resolve(null); + } + }, 30000); + }); +} + +async function testCompliance() { + await checkGoExists(); + await killOrphanedProcesses(); + + let wiretapProcess, proxyServer; + + // Initialize global child process tracking + global.testCompliance_childProcesses = []; + + const cleanup = async (signal = 'SIGTERM') => { + console.log(`\nCleaning up processes due to ${signal}...`); + + // Stop wiretap process and its children + if (wiretapProcess && wiretapProcess.pid) { + console.log(`Stopping wiretap process group (PID: ${wiretapProcess.pid})...`); + try { + // Kill the entire process group since wiretap was started detached + process.kill(-wiretapProcess.pid, 'SIGTERM'); + console.log('Wiretap process group terminated.'); + } catch (e) { + console.warn(`Failed to kill wiretap process group ${wiretapProcess.pid}: ${e.message}`); + // Try to kill just the main process as fallback + try { + process.kill(wiretapProcess.pid, 'SIGKILL'); + console.log('Wiretap main process force killed.'); + } catch (e2) { + console.error(`Failed to force kill wiretap process ${wiretapProcess.pid}: ${e2.message}`); + } + } + } + + // Stop proxy server + if (proxyServer) { + console.log('Stopping proxy server...'); + return new Promise((resolve) => { + try { + proxyServer.close((err) => { + if (err) { + console.error(`Error closing proxy server: ${err.message}`); + } else { + console.log('Proxy server stopped.'); + } + resolve(); + }); + + // Force close after 5 seconds + setTimeout(() => { + console.warn('Force closing proxy server...'); + try { + proxyServer.closeAllConnections?.(); + } catch (e) { + console.warn(`Error force closing proxy: ${e.message}`); + } + resolve(); + }, 5000); + } catch (e) { + console.error(`Failed to stop proxy server: ${e.message}`); + resolve(); + } + }); + } + + // Clean up any other tracked child processes + const childProcesses = global.testCompliance_childProcesses || []; + for (const child of childProcesses) { + if (child && child.pid && !child.killed) { + try { + console.log(`Terminating child process ${child.pid}...`); + child.kill('SIGTERM'); + } catch (e) { + console.warn(`Failed to terminate child process ${child.pid}: ${e.message}`); + } + } + } + + // Clear the tracking array + if (global.testCompliance_childProcesses) { + global.testCompliance_childProcesses.length = 0; + } + }; + + // Enhanced signal handling + const signalHandler = (signal) => { + console.log(`\nReceived ${signal}, initiating cleanup...`); + cleanup(signal).then(() => { + console.log('Cleanup completed.'); + process.exit(signal === 'SIGTERM' ? 0 : 1); + }).catch((err) => { + console.error(`Cleanup failed: ${err.message}`); + process.exit(1); + }); + }; + + // Register signal handlers + process.on('SIGINT', () => signalHandler('SIGINT')); + process.on('SIGTERM', () => signalHandler('SIGTERM')); + process.on('SIGHUP', () => signalHandler('SIGHUP')); + process.on('SIGQUIT', () => signalHandler('SIGQUIT')); + + // Handle uncaught exceptions and unhandled rejections + process.on('uncaughtException', (err) => { + console.error('Uncaught Exception:', err); + cleanup('uncaughtException').then(() => process.exit(1)); + }); + + process.on('unhandledRejection', (reason, promise) => { + console.error('Unhandled Rejection at:', promise, 'reason:', reason); + cleanup('unhandledRejection').then(() => process.exit(1)); + }); + + // Cleanup on normal exit + process.on('exit', () => { + console.log('Process exiting, final cleanup...'); + // Note: exit event cannot perform async operations + if (wiretapProcess?.pid) { + try { + process.kill(-wiretapProcess.pid, 'SIGKILL'); + } catch (e) { + // Ignore errors during final cleanup + } + } + }); + + const tempDir = path.join(process.cwd(), '.tmp', 'capi-bara-tests'); + const wiretapProxyPort = 9090; + const wiretapApiHost = `http://127.0.0.1:9999`; + try { - const reportDir = path.join(process.cwd(), 'out', 'reports'); + const reportDir = path.join('out'); await fs.ensureDir(reportDir); - await runCommand('wiretap', ['-u', serverUrl, '-s', specFile, '--stream-report', '--report-filename', 'out/reports/cf.json']); + const reportFile = path.join(reportDir, 'wiretap-report.json'); + + // Start wiretap with improved error handling - allow it to fail gracefully + try { + wiretapProcess = await startWiretap(wiretapProxyPort, serverUrl, specFile, reportFile); + + if (wiretapProcess) { + console.log(`Waiting for wiretap to be ready on port ${wiretapProxyPort}...`); + await waitForPort(wiretapProxyPort); + console.log('Wiretap is ready.'); + } else { + console.warn('Continuing without wiretap - tests will run against CF API directly'); + } + } catch (wiretapError) { + console.warn(`Failed to start wiretap: ${wiretapError.message}`); + console.warn('Continuing without wiretap - tests will run against CF API directly'); + wiretapProcess = null; + } + + console.log('Starting integrated proxy server...'); + proxyServer = createProxyServer(); + proxyServer.listen(9999, () => { + console.log('Integrated proxy server listening on port 9999'); + }); + + console.log('Waiting for proxy server to be ready on port 9999...'); + await waitForPort(9999); + console.log('Proxy server is ready.'); + + // Check if capi-bara-tests repository already exists + const repoExists = await fs.pathExists(tempDir); + if (repoExists) { + console.log('capi-bara-tests repository already exists, skipping clone...'); + } else { + console.log('Cloning capi-bara-tests repository...'); + await fs.ensureDir(path.dirname(tempDir)); + await runCommand('git', ['clone', '-b', 'allow-local-api', 'https://github.com/cloudfoundry/capi-bara-tests.git', tempDir]); + } + + console.log('Populating vendor dependencies...'); + await runCommand('go', ['mod', 'vendor'], { cwd: tempDir }); + + console.log('Configuring capi-bara-tests to point to wiretap proxy...'); + const integrationConfig = { + api: wiretapApiHost, + protocol: wiretapApiHost.startsWith('https') ? 'https' : 'http', + apps_domain: appsDomain, + admin_user: adminUser, + admin_password: adminPassword, + skip_ssl_validation: true, + timeout_scale: 5.0, + }; + const configPath = path.join(tempDir, 'integration_config.json'); + await fs.writeJson(configPath, integrationConfig, { spaces: 2 }); + + const testEnv = { ...process.env }; + delete testEnv.CF_API_URL; + testEnv.CONFIG = configPath; + + console.log(`Running capi-bara-tests with ${nodeCount} nodes...`); + + // Prepare test output logging + const testLogFile = path.join(reportDir, 'capi-bara-tests.log'); + const testErrorLogFile = path.join(reportDir, 'capi-bara-tests-error.log'); + + try { + const testResult = await runCommand('./bin/test', [`-nodes=${nodeCount}`], { + cwd: tempDir, + env: testEnv, + captureOutput: true + }); + + // Write successful test output to log file + if (testResult.stdout) { + await fs.writeFile(testLogFile, testResult.stdout, 'utf8'); + console.log(`Test output logged to: ${testLogFile}`); + } + + console.log('Tests completed successfully.'); + console.log(`Report file available at: ${reportFile}`); + process.exit(0); + + } catch (testError) { + // Enhanced error logging for test failures + const timestamp = new Date().toISOString(); + console.error(`[${timestamp}] capi-bara-tests failed with exit code: ${testError.code}`); + + // Log test output and errors to files + if (testError.stdout) { + await fs.writeFile(testLogFile, testError.stdout, 'utf8'); + console.log(`Test stdout logged to: ${testLogFile}`); + } + + if (testError.stderr) { + await fs.writeFile(testErrorLogFile, testError.stderr, 'utf8'); + console.log(`Test stderr logged to: ${testErrorLogFile}`); + } + + // Provide detailed error information + console.error('\n=== TEST FAILURE SUMMARY ==='); + console.error(`Exit code: ${testError.code}`); + + if (testError.stdout && testError.stdout.length > 0) { + console.error('\nLast 50 lines of stdout:'); + const stdoutLines = testError.stdout.split('\n'); + const lastLines = stdoutLines.slice(-50); + console.error(lastLines.join('\n')); + } + + if (testError.stderr && testError.stderr.length > 0) { + console.error('\nStderr output:'); + console.error(testError.stderr); + } + + console.error(`\nFull test logs available at:\n- stdout: ${testLogFile}\n- stderr: ${testErrorLogFile}`); + console.error('============================\n'); + + throw testError; + } + } catch (error) { - console.error(error.message); + console.error('\n=== COMPLIANCE TEST FAILURE ==='); + console.error('Compliance test failed:'); + console.error(`Error: ${error.message}`); + + if (error.code) { + console.error(`Exit code: ${error.code}`); + } + + if (error.stdout) { + console.error('\nStdout output:'); + console.error(error.stdout); + } + + if (error.stderr) { + console.error('\nStderr output:'); + console.error(error.stderr); + } + + // Check for common wiretap issues and provide helpful suggestions + if (error.message.includes('wiretap') || error.message.includes('ECONNREFUSED')) { + console.error('\n=== TROUBLESHOOTING SUGGESTIONS ==='); + console.error('This appears to be a wiretap-related issue. Try:'); + console.error('1. Check if wiretap is properly installed: npx wiretap --version'); + console.error('2. Verify the OpenAPI spec file is valid'); + console.error('3. Check network connectivity to CF API'); + console.error('4. Review wiretap logs in out/logs/ directory'); + } + + console.error('====================================\n'); process.exit(1); } } -testContract(); +testCompliance(); diff --git a/bin/test-mockserver.js b/bin/test-mockserver.js index 7b9e81c..f4d203f 100644 --- a/bin/test-mockserver.js +++ b/bin/test-mockserver.js @@ -2,11 +2,10 @@ const { spawn } = require('child_process'); const fs = require('fs-extra'); const path = require('path'); -const serverUrl = process.argv[2]; -const specFile = process.argv[3]; +const specFile = process.argv[2]; -if (!serverUrl || !specFile) { - console.error('Usage: node test-contract.js '); +if (!specFile) { + console.error('Usage: yarn test:mockserver '); process.exit(1); } @@ -31,9 +30,9 @@ function runCommand(command, args) { async function testContract() { try { - const reportDir = path.join(process.cwd(), 'out', 'reports'); + const reportDir = path.join(process.cwd(), 'out'); await fs.ensureDir(reportDir); - await runCommand('wiretap', ['-u', serverUrl, '-s', specFile, '--stream-report', '--report-filename', 'out/reports/cf.json']); + await runCommand('wiretap', ['-s', specFile, '-x', '-u', 'http://localhost:9090', '--report-file', 'out/wiretap-mockserver.json']); } catch (error) { console.error(error.message); process.exit(1); diff --git a/package.json b/package.json index 6a6cc1f..da9ff81 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "build": "node bin/build.js", "preview": "node bin/build.js && http-server dist", "create-version": "node bin/create-version.js", - "test:compliance": "node bin/test-compliance.js", + "test:compliance": "node bin/build.js && node bin/test-compliance.js dist/latest/openapi.yaml", "test:mockserver": "node bin/test-mockserver.js" }, "author": "Cloud Foundry Community", @@ -19,6 +19,8 @@ }, "devDependencies": { "@pb33f/wiretap": "^0.4.5", - "http-server": "^14.1.1" + "http-proxy": "^1.18.1", + "http-server": "^14.1.1", + "wait-on": "^7.0.1" } } \ No newline at end of file diff --git a/redocly.yaml b/redocly.yaml index 742d3bb..aaa348e 100644 --- a/redocly.yaml +++ b/redocly.yaml @@ -5,4 +5,4 @@ extends: - recommended ignore: - scripts - - bin \ No newline at end of file + - bin diff --git a/yarn.lock b/yarn.lock index 8d9533a..adca855 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@babel/code-frame@^7.16.0": version "7.27.1" - resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: "@babel/helper-validator-identifier" "^7.27.1" @@ -13,61 +13,73 @@ "@babel/helper-validator-identifier@^7.27.1": version "7.27.1" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3": - version "7.28.2" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.2.tgz" - integrity sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA== + version "7.28.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.3.tgz#75c5034b55ba868121668be5d5bb31cc64e6e61a" + integrity sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA== "@emotion/is-prop-valid@1.2.2": version "1.2.2" - resolved "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz#d4175076679c6a26faa92b03bb786f9e52612337" integrity sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw== dependencies: "@emotion/memoize" "^0.8.1" "@emotion/memoize@^0.8.1": version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.1.tgz#c1ddb040429c6d21d38cc945fe75c818cfb68e17" integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA== "@emotion/unitless@0.8.1": version "0.8.1" - resolved "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.8.1.tgz#182b5a4704ef8ad91bde93f7a860a88fd92c79a3" integrity sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ== "@exodus/schemasafe@^1.0.0-rc.2": version "1.3.0" - resolved "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/@exodus/schemasafe/-/schemasafe-1.3.0.tgz#731656abe21e8e769a7f70a4d833e6312fe59b7f" integrity sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw== "@faker-js/faker@^7.6.0": version "7.6.0" - resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-7.6.0.tgz" + resolved "https://registry.yarnpkg.com/@faker-js/faker/-/faker-7.6.0.tgz#9ea331766084288634a9247fcd8b84f16ff4ba07" integrity sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw== +"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0": + version "9.3.0" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" + integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ== + +"@hapi/topo@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@hapi/topo/-/topo-5.1.0.tgz#dc448e332c6c6e37a4dc02fd84ba8d44b9afb012" + integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg== + dependencies: + "@hapi/hoek" "^9.0.0" + "@humanwhocodes/momoa@^2.0.2": version "2.0.4" - resolved "https://registry.npmjs.org/@humanwhocodes/momoa/-/momoa-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/@humanwhocodes/momoa/-/momoa-2.0.4.tgz#8b9e7a629651d15009c3587d07a222deeb829385" integrity sha512-RE815I4arJFtt+FVeU1Tgp9/Xvecacji8w/V6XtXsWWH/wz/eNkNbhb+ny/+PlVZjV0rxQpRSQKNKE3lcktHEA== "@isaacs/balanced-match@^4.0.1": version "4.0.1" - resolved "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== "@isaacs/brace-expansion@^5.0.0": version "5.0.0" - resolved "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== dependencies: "@isaacs/balanced-match" "^4.0.1" "@isaacs/cliui@^8.0.2": version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== dependencies: string-width "^5.1.2" @@ -79,53 +91,53 @@ "@jest/schemas@^29.6.3": version "29.6.3" - resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA== dependencies: "@sinclair/typebox" "^0.27.8" "@jsep-plugin/assignment@^1.3.0": version "1.3.0" - resolved "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/@jsep-plugin/assignment/-/assignment-1.3.0.tgz#fcfc5417a04933f7ceee786e8ab498aa3ce2b242" integrity sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ== "@jsep-plugin/regex@^1.0.4": version "1.0.4" - resolved "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/@jsep-plugin/regex/-/regex-1.0.4.tgz#cb2fc423220fa71c609323b9ba7f7d344a755fcc" integrity sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg== "@noble/hashes@^1.8.0": version "1.8.0" - resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== "@opentelemetry/api-logs@0.202.0": version "0.202.0" - resolved "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.202.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.202.0.tgz#78ddb3b4a30232fd0916b99f27777b1936355d03" integrity sha512-fTBjMqKCfotFWfLzaKyhjLvyEyq5vDKTTFfBmx21btv3gvy8Lq6N5Dh2OzqeuN4DjtpSvNT1uNVfg08eD2Rfxw== dependencies: "@opentelemetry/api" "^1.3.0" "@opentelemetry/api@^1.3.0": version "1.9.0" - resolved "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== "@opentelemetry/context-async-hooks@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.1.tgz#4416bc2df780c1dda1129afb9392d55831dd861d" integrity sha512-XuY23lSI3d4PEqKA+7SLtAgwqIfc6E/E9eAQWLN1vlpC53ybO3o6jW4BsXo1xvz9lYyyWItfQDDLzezER01mCw== "@opentelemetry/core@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.1.tgz#44e1149d5666a4743cde943ef89841db3ce0f8bc" integrity sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw== dependencies: "@opentelemetry/semantic-conventions" "^1.29.0" "@opentelemetry/exporter-trace-otlp-http@0.202.0": version "0.202.0" - resolved "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.202.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.202.0.tgz#5587696379696bf14f6bfb3ad63e489ac56d9e13" integrity sha512-/hKE8DaFCJuaQqE1IxpgkcjOolUIwgi3TgHElPVKGdGRBSmJMTmN/cr6vWa55pCJIXPyhKvcMrbrya7DZ3VmzA== dependencies: "@opentelemetry/core" "2.0.1" @@ -136,7 +148,7 @@ "@opentelemetry/otlp-exporter-base@0.202.0": version "0.202.0" - resolved "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.202.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.202.0.tgz#f5d9904c2f37a6eed31d73178485138dbe6cb1f1" integrity sha512-nMEOzel+pUFYuBJg2znGmHJWbmvMbdX5/RhoKNKowguMbURhz0fwik5tUKplLcUtl8wKPL1y9zPnPxeBn65N0Q== dependencies: "@opentelemetry/core" "2.0.1" @@ -144,7 +156,7 @@ "@opentelemetry/otlp-transformer@0.202.0": version "0.202.0" - resolved "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.202.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.202.0.tgz#0df9b419e68b726f6de9b85ee3ba3e373ef041b7" integrity sha512-5XO77QFzs9WkexvJQL9ksxL8oVFb/dfi9NWQSq7Sv0Efr9x3N+nb1iklP1TeVgxqJ7m1xWiC/Uv3wupiQGevMw== dependencies: "@opentelemetry/api-logs" "0.202.0" @@ -157,7 +169,7 @@ "@opentelemetry/resources@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.1.tgz#0365d134291c0ed18d96444a1e21d0e6a481c840" integrity sha512-dZOB3R6zvBwDKnHDTB4X1xtMArB/d324VsbiPkX/Yu0Q8T2xceRthoIVFhJdvgVM2QhGVUyX9tzwiNxGtoBJUw== dependencies: "@opentelemetry/core" "2.0.1" @@ -165,7 +177,7 @@ "@opentelemetry/sdk-logs@0.202.0": version "0.202.0" - resolved "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.202.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.202.0.tgz#7caab8f764d5c95e5809a42f5df3ff1ad5ebd862" integrity sha512-pv8QiQLQzk4X909YKm0lnW4hpuQg4zHwJ4XBd5bZiXcd9urvrJNoNVKnxGHPiDVX/GiLFvr5DMYsDBQbZCypRQ== dependencies: "@opentelemetry/api-logs" "0.202.0" @@ -174,7 +186,7 @@ "@opentelemetry/sdk-metrics@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-2.0.1.tgz#efb6e9349e8a9038ac622e172692bfcdcad8010b" integrity sha512-wf8OaJoSnujMAHWR3g+/hGvNcsC16rf9s1So4JlMiFaFHiE4HpIA3oUh+uWZQ7CNuK8gVW/pQSkgoa5HkkOl0g== dependencies: "@opentelemetry/core" "2.0.1" @@ -182,7 +194,7 @@ "@opentelemetry/sdk-trace-base@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.1.tgz#25808bb6a3d08a501ad840249e4d43d3493eb6e5" integrity sha512-xYLlvk/xdScGx1aEqvxLwf6sXQLXCjk3/1SQT9X9AoN5rXRhkdvIFShuNNmtTEPRBqcsMbS4p/gJLNI2wXaDuQ== dependencies: "@opentelemetry/core" "2.0.1" @@ -191,7 +203,7 @@ "@opentelemetry/sdk-trace-node@2.0.1": version "2.0.1" - resolved "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.1.tgz#bbb9bdb4985d7930941b3d4023e1661ba46f60c1" integrity sha512-UhdbPF19pMpBtCWYP5lHbTogLWx9N0EBxtdagvkn5YtsAnCBZzL7SjktG+ZmupRgifsHMjwUaCCaVmqGfSADmA== dependencies: "@opentelemetry/context-async-hooks" "2.0.1" @@ -200,17 +212,17 @@ "@opentelemetry/semantic-conventions@1.34.0": version "1.34.0" - resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz#8b6a46681b38a4d5947214033ac48128328c1738" integrity sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA== "@opentelemetry/semantic-conventions@^1.29.0": version "1.36.0" - resolved "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.36.0.tgz" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.36.0.tgz#149449bd4df4d0464220915ad4164121e0d75d4d" integrity sha512-TtxJSRD8Ohxp6bKkhrm27JRHAxPczQA7idtcTOMYI+wQRRrfgqxHv1cFbCApcSnNjtXkmzFozn6jQtFrOmbjPQ== "@pb33f/wiretap@^0.4.5": version "0.4.5" - resolved "https://registry.npmjs.org/@pb33f/wiretap/-/wiretap-0.4.5.tgz" + resolved "https://registry.yarnpkg.com/@pb33f/wiretap/-/wiretap-0.4.5.tgz#ce2b146f5037a5a0662814ac1ffe1697fd1b9c4e" integrity sha512-tWMqZZnp4sc7Nyh/9cfKx5pJhnd1cgKm2MuUY5F+D3WSnRVUp4NWQzTTgK4agSIPADTSHKnpAlATJEEDvJbZbw== dependencies: "@stomp/stompjs" "^7.0.0" @@ -220,27 +232,27 @@ "@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== "@protobufjs/base64@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== "@protobufjs/codegen@^2.0.4": version "2.0.4" - resolved "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== "@protobufjs/eventemitter@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== "@protobufjs/fetch@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== dependencies: "@protobufjs/aspromise" "^1.1.1" @@ -248,32 +260,32 @@ "@protobufjs/float@^1.0.2": version "1.0.2" - resolved "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== "@protobufjs/inquire@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== "@protobufjs/path@^1.1.2": version "1.1.2" - resolved "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== "@protobufjs/pool@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== "@protobufjs/utf8@^1.1.0": version "1.1.0" - resolved "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== "@redocly/ajv@8.11.2": version "8.11.2" - resolved "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.2.tgz" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.2.tgz#46e1bf321ec0ac1e0fd31dea41a3d1fcbdcda0b5" integrity sha512-io1JpnwtIcvojV7QKDUSIuMN/ikdOUd1ReEnUnMKGfDVridQZ31J0MmIuqwuRjWDZfmvr+Q0MqCcfHM2gTivOg== dependencies: fast-deep-equal "^3.1.1" @@ -283,7 +295,7 @@ "@redocly/ajv@^8.11.2": version "8.11.3" - resolved "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.11.3.tgz" + resolved "https://registry.yarnpkg.com/@redocly/ajv/-/ajv-8.11.3.tgz#4f148d1cec14ef3fd9d0efecedaa504159c959a6" integrity sha512-4P3iZse91TkBiY+Dx5DUgxQ9GXkVJf++cmI0MOyLDxV9b5MUBI4II6ES8zA5JCbO72nKAJxWrw4PUPW+YP3ZDQ== dependencies: fast-deep-equal "^3.1.1" @@ -292,16 +304,16 @@ uri-js-replace "^1.0.1" "@redocly/cli@^2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@redocly/cli/-/cli-2.0.2.tgz" - integrity sha512-eCt1Uwm6hvNaG4xYkEwom7/iLn+6kQzM9rOKsmNwGpPPInrukCQctkehMB9OjT07uIdm/d/hjugQ8WG/08cgXg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@redocly/cli/-/cli-2.0.6.tgz#d17135bc6b3e16a586f4b6d497d630d96a9865cc" + integrity sha512-Hffc/ts8hArT2KQwrqvtYALoYDUp+kD1mbm2el0iAsD1beI8AwqdHHPPnIQef0vBpsNXijfklT/C/ipPjB5fVw== dependencies: "@opentelemetry/exporter-trace-otlp-http" "0.202.0" "@opentelemetry/resources" "2.0.1" "@opentelemetry/sdk-trace-node" "2.0.1" "@opentelemetry/semantic-conventions" "1.34.0" - "@redocly/openapi-core" "2.0.2" - "@redocly/respect-core" "2.0.2" + "@redocly/openapi-core" "2.0.6" + "@redocly/respect-core" "2.0.6" abort-controller "^3.0.0" chokidar "^3.5.1" colorette "^1.2.0" @@ -325,23 +337,23 @@ "@redocly/config@^0.22.0": version "0.22.2" - resolved "https://registry.npmjs.org/@redocly/config/-/config-0.22.2.tgz" + resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.22.2.tgz#9a05e694816d53a5236cf8768d3cad0e49d8b116" integrity sha512-roRDai8/zr2S9YfmzUfNhKjOF0NdcOIqF7bhf4MVC5UxpjIysDjyudvlAiVbpPHp3eDRWbdzUgtkK1a7YiDNyQ== -"@redocly/config@^0.26.4": - version "0.26.4" - resolved "https://registry.npmjs.org/@redocly/config/-/config-0.26.4.tgz" - integrity sha512-YsFgVCuKQqvkC85mV4D5wxmbDuQo90AbNodCqhTVsaT/3wRUFu+1wYJu8PYc1CMGolfmCYSewFjMgsN5M0PJQg== +"@redocly/config@^0.28.0": + version "0.28.0" + resolved "https://registry.yarnpkg.com/@redocly/config/-/config-0.28.0.tgz#4992ed126892c1de1d395563830c21f4bff35c05" + integrity sha512-IdY4bSX9bbjXkDX91oO1OVwCzB00UNF0ozoygacTpS5Exa3ewYCB/6BcbA0tGCAvKDIwSY9Jor2cWQ/ycQfBTg== dependencies: json-schema-to-ts "2.7.2" -"@redocly/openapi-core@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.0.2.tgz" - integrity sha512-xuNR35eR0NQxR5gMMrZRgdguID+bqIzZps4prg7Wfm1ZiIUybYhOGzzePWP61XJdNxY/FXkmye36wTrteTUNBQ== +"@redocly/openapi-core@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-2.0.6.tgz#d9879d8c71110a073846ed6d781172fd0ee81211" + integrity sha512-1C/WGrU5focCcPduTPEP22SoziNMk+DGo0iM+c3eb8dolRbASt998u0Qw9EpGkjU/y9ig4brQnIQu63tE6IcWg== dependencies: "@redocly/ajv" "^8.11.2" - "@redocly/config" "^0.26.4" + "@redocly/config" "^0.28.0" ajv-formats "^2.1.1" colorette "^1.2.0" js-levenshtein "^1.1.6" @@ -352,7 +364,7 @@ "@redocly/openapi-core@^1.4.0": version "1.34.5" - resolved "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.5.tgz" + resolved "https://registry.yarnpkg.com/@redocly/openapi-core/-/openapi-core-1.34.5.tgz#9c2cf901d1098ceb626e789e2065c762fe63727f" integrity sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA== dependencies: "@redocly/ajv" "^8.11.2" @@ -365,15 +377,15 @@ pluralize "^8.0.0" yaml-ast-parser "0.0.43" -"@redocly/respect-core@2.0.2": - version "2.0.2" - resolved "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.0.2.tgz" - integrity sha512-giFM1t3muwKs76kbVJ3W2mbIgbvFwCUzCjdOneTkXGlvRFhANbXa3QOhyy6hxZW/tCy/ceWGGiiAmg2+Hn+SIw== +"@redocly/respect-core@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@redocly/respect-core/-/respect-core-2.0.6.tgz#a3c92bb955a1f8ea7a9cd0703047e83f419b293d" + integrity sha512-nDJGOC+2eRP/MjB5ftdw4736GA7cL1qGwLswlAQtBICWV9BRiAnjvqFienUnpn0nqS5p4f2Ejhwpf4FDhrlDsg== dependencies: "@faker-js/faker" "^7.6.0" "@noble/hashes" "^1.8.0" "@redocly/ajv" "8.11.2" - "@redocly/openapi-core" "2.0.2" + "@redocly/openapi-core" "2.0.6" better-ajv-errors "^1.2.0" colorette "^2.0.20" jest-diff "^29.3.1" @@ -383,60 +395,77 @@ openapi-sampler "^1.6.1" outdent "^0.8.0" +"@sideway/address@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" + integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q== + dependencies: + "@hapi/hoek" "^9.0.0" + +"@sideway/formula@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== + +"@sideway/pinpoint@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sideway/pinpoint/-/pinpoint-2.0.0.tgz#cff8ffadc372ad29fd3f78277aeb29e632cc70df" + integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ== + "@sinclair/typebox@^0.27.8": version "0.27.8" - resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@stomp/stompjs@^7.0.0": version "7.1.1" - resolved "https://registry.npmjs.org/@stomp/stompjs/-/stompjs-7.1.1.tgz" + resolved "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-7.1.1.tgz#9a836da33bed5b76c72a8f17f0594de98120f6d6" integrity sha512-chcDs6YkAnKp1FqzwhGvh3i7v0+/ytzqWdKYw6XzINEKAzke/iD00dNgFPWSZEqktHOK+C1gSzXhLkLbARIaZw== "@types/json-schema@^7.0.7", "@types/json-schema@^7.0.9": version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== "@types/node@>=13.7.0": - version "24.2.0" - resolved "https://registry.npmjs.org/@types/node/-/node-24.2.0.tgz" - integrity sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw== + version "24.3.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.3.0.tgz#89b09f45cb9a8ee69466f18ee5864e4c3eb84dec" + integrity sha512-aPTXCrfwnDLj4VvXrm+UUCQjNEvJgNA8s5F1cvwQU+3KNltTOkBm1j30uNLyqqPNe7gE3KFzImYoZEfLhp4Yow== dependencies: undici-types "~7.10.0" "@types/stylis@4.2.5": version "4.2.5" - resolved "https://registry.npmjs.org/@types/stylis/-/stylis-4.2.5.tgz" + resolved "https://registry.yarnpkg.com/@types/stylis/-/stylis-4.2.5.tgz#1daa6456f40959d06157698a653a9ab0a70281df" integrity sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw== "@types/trusted-types@^2.0.7": version "2.0.7" - resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== abort-controller@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: event-target-shim "^5.0.0" agent-base@^7.1.2: version "7.1.4" - resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== ajv-formats@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== dependencies: ajv "^8.0.0" ajv@^8.0.0: version "8.17.1" - resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== dependencies: fast-deep-equal "^3.1.3" @@ -446,34 +475,34 @@ ajv@^8.0.0: ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== + version "6.2.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.0.tgz#2f302e7550431b1b7762705fffb52cf1ffa20447" + integrity sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg== ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" ansi-styles@^5.0.0: version "5.2.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== ansi-styles@^6.1.0: version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -481,34 +510,43 @@ anymatch@~3.1.2: argparse@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== async@^3.2.6: version "3.2.6" - resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.6.tgz#1b0728e14929d51b85b449b7f06e27c1145e38ce" integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA== asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== +axios@^1.6.1: + version "1.11.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.11.0.tgz#c2ec219e35e414c025b2095e8b8280278478fdb6" + integrity sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== basic-auth@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a" integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg== dependencies: safe-buffer "5.1.2" better-ajv-errors@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/better-ajv-errors/-/better-ajv-errors-1.2.0.tgz#6412d58fa4d460ff6ccbd9e65c5fef9781cc5286" integrity sha512-UW+IsFycygIo7bclP9h5ugkNH8EjCSgqyFB/yQ4Hqqa1OEYDtb0uFIkYE0b6+CjkgJYVM5UKI/pJPxjYe9EZlA== dependencies: "@babel/code-frame" "^7.16.0" @@ -519,26 +557,26 @@ better-ajv-errors@^1.2.0: binary-extensions@^2.0.0: version "2.3.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== brace-expansion@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== dependencies: balanced-match "^1.0.0" braces@~3.0.2: version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== dependencies: fill-range "^7.1.1" call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz" + 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" @@ -546,7 +584,7 @@ call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: call-bound@^1.0.2: version "1.0.4" - resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz" + 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" @@ -554,17 +592,17 @@ call-bound@^1.0.2: call-me-maybe@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" integrity sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ== camelize@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" @@ -572,7 +610,7 @@ chalk@^4.0.0, chalk@^4.1.2: chokidar@^3.5.1: version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== dependencies: anymatch "~3.1.2" @@ -587,17 +625,17 @@ chokidar@^3.5.1: chownr@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== classnames@^2.3.2: version "2.5.1" - resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz" + resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b" integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow== cliui@^7.0.2: version "7.0.4" - resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -606,7 +644,7 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -615,51 +653,51 @@ cliui@^8.0.1: clsx@^2.0.0: version "2.1.1" - resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@~1.1.4: version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== colorette@^1.2.0: version "1.4.0" - resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== colorette@^2.0.20: version "2.0.20" - resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" cookie@^0.7.2: version "0.7.2" - resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== corser@^2.0.1: version "2.0.1" - resolved "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87" integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ== cross-spawn@^7.0.6: version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== dependencies: path-key "^3.1.0" @@ -668,12 +706,12 @@ cross-spawn@^7.0.6: css-color-keywords@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== css-to-react-native@3.2.0: version "3.2.0" - resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" integrity sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ== dependencies: camelize "^1.0.0" @@ -682,56 +720,56 @@ css-to-react-native@3.2.0: csstype@3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== data-uri-to-buffer@^4.0.0: version "4.0.1" - resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e" integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A== debug@4, debug@^4.3.1, debug@^4.3.6: version "4.4.1" - resolved "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" decko@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/decko/-/decko-1.2.0.tgz#fd43c735e967b8013306884a56fbe665996b6817" integrity sha512-m8FnyHXV1QX+S1cl+KPFDIl6NMkxtKsy6+U/aYyjrOqWMuwAwYWu7ePqrsUHtDR5Y8Yk2pi/KIDSgF+vT4cPOQ== delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== diff-sequences@^29.6.3: version "29.6.3" - resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== dom-walk@^0.1.0: version "0.1.2" - resolved "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== dompurify@^3.2.4: version "3.2.6" - resolved "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.6.tgz#ca040a6ad2b88e2a92dc45f38c79f84a714a1cad" integrity sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ== optionalDependencies: "@types/trusted-types" "^2.0.7" dotenv@16.4.7: version "16.4.7" - resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== dunder-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz" + 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" @@ -740,39 +778,39 @@ dunder-proto@^1.0.1: eastasianwidth@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.2.2: version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== es-define-property@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz" + 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.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz" + 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" @@ -782,54 +820,54 @@ es-set-tostringtag@^2.1.0: es6-promise@^3.2.1: version "3.3.1" - resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613" integrity sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg== escalade@^3.1.1: version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 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" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" 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" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== eventemitter3@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fast-safe-stringify@^2.0.7: version "2.1.1" - resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== fast-uri@^3.0.1: version "3.0.6" - resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== fast-xml-parser@^4.5.0: version "4.5.3" - resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== dependencies: strnum "^1.1.1" fetch-blob@^3.1.2, fetch-blob@^3.1.4: version "3.2.0" - resolved "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz" + resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== dependencies: node-domexception "^1.0.0" @@ -837,24 +875,24 @@ fetch-blob@^3.1.2, fetch-blob@^3.1.4: fill-range@^7.1.1: version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== dependencies: to-regex-range "^5.0.1" -follow-redirects@^1.0.0: +follow-redirects@^1.0.0, follow-redirects@^1.15.6: version "1.15.11" - resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== foreach@^2.0.4: version "2.0.6" - resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.6.tgz#87bcc8a1a0e74000ff2bf9802110708cfb02eb6e" integrity sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg== foreground-child@^3.3.1: version "3.3.1" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== dependencies: cross-spawn "^7.0.6" @@ -862,7 +900,7 @@ foreground-child@^3.3.1: form-data@^4.0.4: version "4.0.4" - resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz" + 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" @@ -873,14 +911,14 @@ form-data@^4.0.4: formdata-polyfill@^4.0.10: version "4.0.10" - resolved "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz" + resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== dependencies: fetch-blob "^3.1.2" fs-extra@^11.3.1: version "11.3.1" - resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.3.1.tgz#ba7a1f97a85f94c6db2e52ff69570db3671d5a74" integrity sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g== dependencies: graceful-fs "^4.2.0" @@ -889,29 +927,29 @@ fs-extra@^11.3.1: fs-minipass@^2.0.0: version "2.1.0" - resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" fsevents@~2.3.2: version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== function-bind@^1.1.2: version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: version "1.3.0" - resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz" + 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" @@ -927,7 +965,7 @@ get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: get-proto@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz" + 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" @@ -935,14 +973,14 @@ get-proto@^1.0.1: glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob@^11.0.1: version "11.0.3" - resolved "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== dependencies: foreground-child "^3.3.1" @@ -954,7 +992,7 @@ glob@^11.0.1: global@^4.4.0: version "4.4.0" - resolved "https://registry.npmjs.org/global/-/global-4.4.0.tgz" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" @@ -962,17 +1000,17 @@ global@^4.4.0: gopd@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.11" - resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== handlebars@^4.7.6: version "4.7.8" - resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== dependencies: minimist "^1.2.5" @@ -984,43 +1022,43 @@ handlebars@^4.7.6: has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-symbols@^1.0.3, has-symbols@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== has-tostringtag@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== dependencies: has-symbols "^1.0.3" hasown@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== dependencies: function-bind "^1.1.2" he@^1.2.0: version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== html-encoding-sniffer@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== dependencies: whatwg-encoding "^2.0.0" http-proxy@^1.18.1: version "1.18.1" - resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== dependencies: eventemitter3 "^4.0.0" @@ -1029,7 +1067,7 @@ http-proxy@^1.18.1: http-server@^14.1.1: version "14.1.1" - resolved "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz" + resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e" integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A== dependencies: basic-auth "^2.0.1" @@ -1048,12 +1086,12 @@ http-server@^14.1.1: http2-client@^1.2.5: version "1.3.5" - resolved "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz" + resolved "https://registry.yarnpkg.com/http2-client/-/http2-client-1.3.5.tgz#20c9dc909e3cc98284dd20af2432c524086df181" integrity sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA== https-proxy-agent@^7.0.5: version "7.0.6" - resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz" + 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.1.2" @@ -1061,60 +1099,60 @@ https-proxy-agent@^7.0.5: iconv-lite@0.6.3: version "0.6.3" - resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" inherits@^2.0.3: version "2.0.4" - resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-number@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== jackspeak@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== dependencies: "@isaacs/cliui" "^8.0.2" jest-diff@^29.3.1, jest-diff@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a" integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw== dependencies: chalk "^4.0.0" @@ -1124,12 +1162,12 @@ jest-diff@^29.3.1, jest-diff@^29.7.0: jest-get-type@^29.6.3: version "29.6.3" - resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1" integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw== jest-matcher-utils@^29.3.1: version "29.7.0" - resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12" integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g== dependencies: chalk "^4.0.0" @@ -1137,38 +1175,49 @@ jest-matcher-utils@^29.3.1: jest-get-type "^29.6.3" pretty-format "^29.7.0" +joi@^17.11.0: + version "17.13.3" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.13.3.tgz#0f5cc1169c999b30d344366d384b12d92558bcec" + integrity sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA== + dependencies: + "@hapi/hoek" "^9.3.0" + "@hapi/topo" "^5.1.0" + "@sideway/address" "^4.1.5" + "@sideway/formula" "^3.0.1" + "@sideway/pinpoint" "^2.0.0" + js-levenshtein@^1.1.6: version "1.1.6" - resolved "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz" + resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" jsep@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/jsep/-/jsep-1.4.0.tgz#19feccbfa51d8a79f72480b4b8e40ce2e17152f0" integrity sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw== json-pointer@0.6.2, json-pointer@^0.6.2: version "0.6.2" - resolved "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.2.tgz" + resolved "https://registry.yarnpkg.com/json-pointer/-/json-pointer-0.6.2.tgz#f97bd7550be5e9ea901f8c9264c9d436a22a93cd" integrity sha512-vLWcKbOaXlO+jvRy4qNd+TI1QUPZzfJj1tpJ3vAXDych5XJf93ftpUKe5pKCrzyIIwgBJcOcCVRUfqQP25afBw== dependencies: foreach "^2.0.4" json-schema-to-ts@2.7.2: version "2.7.2" - resolved "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-2.7.2.tgz" + resolved "https://registry.yarnpkg.com/json-schema-to-ts/-/json-schema-to-ts-2.7.2.tgz#e8df41d7153e5517f0e68dbe57be12bb3609d6d5" integrity sha512-R1JfqKqbBR4qE8UyBR56Ms30LL62/nlhoz+1UkfI/VE7p54Awu919FZ6ZUPG8zIa3XB65usPJgr1ONVncUGSaQ== dependencies: "@babel/runtime" "^7.18.3" @@ -1177,13 +1226,13 @@ json-schema-to-ts@2.7.2: json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + version "6.2.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62" + integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg== dependencies: universalify "^2.0.0" optionalDependencies: @@ -1191,7 +1240,7 @@ jsonfile@^6.0.1: jsonpath-plus@^10.0.6: version "10.3.0" - resolved "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz" + resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz#59e22e4fa2298c68dfcd70659bb47f0cad525238" integrity sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA== dependencies: "@jsep-plugin/assignment" "^1.3.0" @@ -1200,114 +1249,119 @@ jsonpath-plus@^10.0.6: jsonpointer@^5.0.0: version "5.0.1" - resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559" integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ== "leven@^3.1.0 < 4": version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + long@^5.0.0: version "5.3.2" - resolved "https://registry.npmjs.org/long/-/long-5.3.2.tgz" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== loose-envify@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== dependencies: js-tokens "^3.0.0 || ^4.0.0" lru-cache@^11.0.0: version "11.1.0" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.1.0.tgz#afafb060607108132dbc1cf8ae661afb69486117" integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A== lunr@^2.3.9: version "2.3.9" - resolved "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz" + resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1" integrity sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow== mark.js@^8.11.1: version "8.11.1" - resolved "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== marked@^4.3.0: version "4.3.0" - resolved "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.3.0.tgz#796362821b019f734054582038b116481b456cf3" integrity sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A== math-intrinsics@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== mime-db@1.52.0: version "1.52.0" - resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 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" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== min-document@^2.19.0: version "2.19.0" - resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: dom-walk "^0.1.0" minimatch@^10.0.1, minimatch@^10.0.3: version "10.0.3" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.3.tgz#cf7a0314a16c4d9ab73a7730a0e8e3c3502d47aa" integrity sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw== dependencies: "@isaacs/brace-expansion" "^5.0.0" minimatch@^5.0.1: version "5.1.6" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== dependencies: brace-expansion "^2.0.1" -minimist@^1.2.5, minimist@^1.2.6: +minimist@^1.2.5, minimist@^1.2.6, minimist@^1.2.8: version "1.2.8" - resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== minipass@^3.0.0: version "3.3.6" - resolved "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== dependencies: yallist "^4.0.0" minipass@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== minipass@^7.1.2: version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== minizlib@^2.1.1: version "2.1.2" - resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: minipass "^3.0.0" @@ -1315,65 +1369,65 @@ minizlib@^2.1.1: mkdirp@^1.0.3: version "1.0.4" - resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mobx-react-lite@^4.1.0: version "4.1.0" - resolved "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-4.1.0.tgz#6a03ed2d94150848213cfebd7d172e123528a972" integrity sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w== dependencies: use-sync-external-store "^1.4.0" mobx-react@^9.1.1: version "9.2.0" - resolved "https://registry.npmjs.org/mobx-react/-/mobx-react-9.2.0.tgz" + resolved "https://registry.yarnpkg.com/mobx-react/-/mobx-react-9.2.0.tgz#c1e4d1ed406f6664d9de0787c948bac3a7ed5893" integrity sha512-dkGWCx+S0/1mfiuFfHRH8D9cplmwhxOV5CkXMp38u6rQGG2Pv3FWYztS0M7ncR6TyPRQKaTG/pnitInoYE9Vrw== dependencies: mobx-react-lite "^4.1.0" mobx@^6.0.4: version "6.13.7" - resolved "https://registry.npmjs.org/mobx/-/mobx-6.13.7.tgz" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.13.7.tgz#70e5dda7a45da947f773b3cd3b065dfe7c8a75de" integrity sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g== 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== nanoid@^3.3.7: version "3.3.11" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== neo-async@^2.6.2: version "2.6.2" - resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== node-domexception@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== node-fetch-h2@^2.3.0: version "2.3.0" - resolved "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz" + resolved "https://registry.yarnpkg.com/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz#c6188325f9bd3d834020bf0f2d6dc17ced2241ac" integrity sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg== dependencies: http2-client "^1.2.5" node-fetch@^2.6.1: version "2.7.0" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-fetch@^3.3.1: version "3.3.2" - resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b" integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA== dependencies: data-uri-to-buffer "^4.0.0" @@ -1382,26 +1436,26 @@ node-fetch@^3.3.1: node-readfiles@^0.2.0: version "0.2.0" - resolved "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz" + resolved "https://registry.yarnpkg.com/node-readfiles/-/node-readfiles-0.2.0.tgz#dbbd4af12134e2e635c245ef93ffcf6f60673a5d" integrity sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA== dependencies: es6-promise "^3.2.1" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== oas-kit-common@^1.0.8: version "1.0.8" - resolved "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz" + resolved "https://registry.yarnpkg.com/oas-kit-common/-/oas-kit-common-1.0.8.tgz#6d8cacf6e9097967a4c7ea8bcbcbd77018e1f535" integrity sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ== dependencies: fast-safe-stringify "^2.0.7" oas-linter@^3.2.2: version "3.2.2" - resolved "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz" + resolved "https://registry.yarnpkg.com/oas-linter/-/oas-linter-3.2.2.tgz#ab6a33736313490659035ca6802dc4b35d48aa1e" integrity sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ== dependencies: "@exodus/schemasafe" "^1.0.0-rc.2" @@ -1410,7 +1464,7 @@ oas-linter@^3.2.2: oas-resolver@^2.5.6: version "2.5.6" - resolved "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz" + resolved "https://registry.yarnpkg.com/oas-resolver/-/oas-resolver-2.5.6.tgz#10430569cb7daca56115c915e611ebc5515c561b" integrity sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ== dependencies: node-fetch-h2 "^2.3.0" @@ -1421,12 +1475,12 @@ oas-resolver@^2.5.6: oas-schema-walker@^1.1.5: version "1.1.5" - resolved "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz" + resolved "https://registry.yarnpkg.com/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz#74c3cd47b70ff8e0b19adada14455b5d3ac38a22" integrity sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ== oas-validator@^5.0.8: version "5.0.8" - resolved "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz" + resolved "https://registry.yarnpkg.com/oas-validator/-/oas-validator-5.0.8.tgz#387e90df7cafa2d3ffc83b5fb976052b87e73c28" integrity sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw== dependencies: call-me-maybe "^1.0.1" @@ -1440,17 +1494,17 @@ oas-validator@^5.0.8: object-assign@^4.1.1: version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.13.3: version "1.13.4" - resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== openapi-sampler@^1.5.0, openapi-sampler@^1.6.1: version "1.6.1" - resolved "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.6.1.tgz" + resolved "https://registry.yarnpkg.com/openapi-sampler/-/openapi-sampler-1.6.1.tgz#fa1839cd372d1789e12cd3cce46b0511d3f5c79e" integrity sha512-s1cIatOqrrhSj2tmJ4abFYZQK6l5v+V4toO5q1Pa0DyN8mtyqy2I+Qrj5W9vOELEtybIMQs/TBZGVO/DtTFK8w== dependencies: "@types/json-schema" "^7.0.7" @@ -1459,32 +1513,32 @@ openapi-sampler@^1.5.0, openapi-sampler@^1.6.1: opener@^1.5.1: version "1.5.2" - resolved "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== outdent@^0.8.0: version "0.8.0" - resolved "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz" + resolved "https://registry.yarnpkg.com/outdent/-/outdent-0.8.0.tgz#2ebc3e77bf49912543f1008100ff8e7f44428eb0" integrity sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A== package-json-from-dist@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== path-browserify@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== path-key@^3.1.0: version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-scurry@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== dependencies: lru-cache "^11.0.0" @@ -1492,34 +1546,34 @@ path-scurry@^2.0.0: perfect-scrollbar@^1.5.5: version "1.5.6" - resolved "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz" + resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz#f1aead2588ba896435ee41b246812b2080573b7c" integrity sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw== picocolors@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pluralize@^8.0.0: version "8.0.0" - resolved "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== polished@^4.2.2: version "4.3.1" - resolved "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz" + resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548" integrity sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA== dependencies: "@babel/runtime" "^7.17.8" portfinder@^1.0.28: version "1.0.37" - resolved "https://registry.npmjs.org/portfinder/-/portfinder-1.0.37.tgz" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.37.tgz#92b754ef89a11801c8efe4b0e5cd845b0064c212" integrity sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw== dependencies: async "^3.2.6" @@ -1527,12 +1581,12 @@ portfinder@^1.0.28: postcss-value-parser@^4.0.2: version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@8.4.49: version "8.4.49" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.49.tgz#4ea479048ab059ab3ae61d082190fabfd994fe19" integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== dependencies: nanoid "^3.3.7" @@ -1541,7 +1595,7 @@ postcss@8.4.49: pretty-format@^29.7.0: version "29.7.0" - resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== dependencies: "@jest/schemas" "^29.6.3" @@ -1550,17 +1604,17 @@ pretty-format@^29.7.0: prismjs@^1.29.0: version "1.30.0" - resolved "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz" + resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.30.0.tgz#d9709969d9d4e16403f6f348c63553b19f0975a9" integrity sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw== process@^0.11.10: version "0.11.10" - resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== prop-types@^15.5.0, prop-types@^15.8.1: version "15.8.1" - resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== dependencies: loose-envify "^1.4.0" @@ -1568,9 +1622,9 @@ prop-types@^15.5.0, prop-types@^15.8.1: react-is "^16.13.1" protobufjs@^7.3.0: - version "7.5.3" - resolved "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz" - integrity sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw== + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== dependencies: "@protobufjs/aspromise" "^1.1.2" "@protobufjs/base64" "^1.1.2" @@ -1585,45 +1639,50 @@ protobufjs@^7.3.0: "@types/node" ">=13.7.0" long "^5.0.0" +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + qs@^6.4.0: version "6.14.0" - resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== dependencies: side-channel "^1.1.0" queue-microtask@^1.2.2: version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" "react-dom@^17.0.0 || ^18.2.0 || ^19.0.0": version "19.1.1" - resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-19.1.1.tgz#2daa9ff7f3ae384aeb30e76d5ee38c046dc89893" integrity sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw== dependencies: scheduler "^0.26.0" react-is@^16.13.1: version "16.13.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== react-is@^18.0.0: version "18.3.1" - resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== react-tabs@^6.0.2: version "6.1.0" - resolved "https://registry.npmjs.org/react-tabs/-/react-tabs-6.1.0.tgz" + resolved "https://registry.yarnpkg.com/react-tabs/-/react-tabs-6.1.0.tgz#a1fc9d9b8db4c6e7bb327a1b6783bc51a1c457a1" integrity sha512-6QtbTRDKM+jA/MZTTefvigNxo0zz+gnBTVFw2CFVvq+f2BuH0nF0vDLNClL045nuTAdOoK/IL1vTP0ZLX0DAyQ== dependencies: clsx "^2.0.0" @@ -1631,12 +1690,12 @@ react-tabs@^6.0.2: "react@^17.0.0 || ^18.2.0 || ^19.0.0": version "19.1.1" - resolved "https://registry.npmjs.org/react/-/react-19.1.1.tgz" + resolved "https://registry.yarnpkg.com/react/-/react-19.1.1.tgz#06d9149ec5e083a67f9a1e39ce97b06a03b644af" integrity sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ== readable-stream@^3.6.0: version "3.6.2" - resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -1645,14 +1704,14 @@ readable-stream@^3.6.0: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" redoc@2.5.0: version "2.5.0" - resolved "https://registry.npmjs.org/redoc/-/redoc-2.5.0.tgz" + resolved "https://registry.yarnpkg.com/redoc/-/redoc-2.5.0.tgz#6b44c55f705e13a57272c5a227cc3fd0d1a06495" integrity sha512-NpYsOZ1PD9qFdjbLVBZJWptqE+4Y6TkUuvEOqPUmoH7AKOmPcE+hYjotLxQNTqVoWL4z0T2uxILmcc8JGDci+Q== dependencies: "@redocly/openapi-core" "^1.4.0" @@ -1679,86 +1738,93 @@ redoc@2.5.0: reftools@^1.1.9: version "1.1.9" - resolved "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz" + resolved "https://registry.yarnpkg.com/reftools/-/reftools-1.1.9.tgz#e16e19f662ccd4648605312c06d34e5da3a2b77e" integrity sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== requires-port@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== +rxjs@^7.8.1: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + safe-buffer@5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== safe-buffer@^5.1.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" - resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== scheduler@^0.26.0: version "0.26.0" - resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.26.0.tgz#4ce8a8c2a2095f13ea11bf9a445be50c555d6337" integrity sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA== secure-compare@3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3" integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw== semver@^7.5.2: version "7.7.2" - resolved "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== set-cookie-parser@^2.3.5: version "2.7.1" - resolved "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz#3016f150072202dfbe90fadee053573cc89d2943" integrity sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ== shallowequal@1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== shebang-command@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: shebang-regex "^3.0.0" shebang-regex@^3.0.0: version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== should-equal@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-2.0.0.tgz#6072cf83047360867e68e98b09d71143d04ee0c3" integrity sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA== dependencies: should-type "^1.4.0" should-format@^3.0.3: version "3.0.3" - resolved "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-3.0.3.tgz#9bfc8f74fa39205c53d38c34d717303e277124f1" integrity sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q== dependencies: should-type "^1.3.0" @@ -1766,7 +1832,7 @@ should-format@^3.0.3: should-type-adaptors@^1.0.1: version "1.1.0" - resolved "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz" + resolved "https://registry.yarnpkg.com/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz#401e7f33b5533033944d5cd8bf2b65027792e27a" integrity sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA== dependencies: should-type "^1.3.0" @@ -1774,17 +1840,17 @@ should-type-adaptors@^1.0.1: should-type@^1.3.0, should-type@^1.4.0: version "1.4.0" - resolved "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-1.4.0.tgz#0756d8ce846dfd09843a6947719dfa0d4cff5cf3" integrity sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ== should-util@^1.0.0: version "1.0.1" - resolved "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/should-util/-/should-util-1.0.1.tgz#fb0d71338f532a3a149213639e2d32cbea8bcb28" integrity sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g== should@^13.2.1: version "13.2.3" - resolved "https://registry.npmjs.org/should/-/should-13.2.3.tgz" + resolved "https://registry.yarnpkg.com/should/-/should-13.2.3.tgz#96d8e5acf3e97b49d89b51feaa5ae8d07ef58f10" integrity sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ== dependencies: should-equal "^2.0.0" @@ -1795,7 +1861,7 @@ should@^13.2.1: side-channel-list@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz" + 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" @@ -1803,7 +1869,7 @@ side-channel-list@^1.0.0: side-channel-map@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz" + 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" @@ -1813,7 +1879,7 @@ side-channel-map@^1.0.1: side-channel-weakmap@^1.0.2: version "1.0.2" - resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz" + 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" @@ -1824,7 +1890,7 @@ side-channel-weakmap@^1.0.2: side-channel@^1.1.0: version "1.1.0" - resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz" + 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" @@ -1835,12 +1901,12 @@ side-channel@^1.1.0: signal-exit@^4.0.1: version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== simple-websocket@^9.0.0: version "9.1.0" - resolved "https://registry.npmjs.org/simple-websocket/-/simple-websocket-9.1.0.tgz" + resolved "https://registry.yarnpkg.com/simple-websocket/-/simple-websocket-9.1.0.tgz#91cbb39eafefbe7e66979da6c639109352786a7f" integrity sha512-8MJPnjRN6A8UCp1I+H/dSFyjwJhp6wta4hsVRhjf8w9qBHRzxYt14RaOcjvQnhD1N4yKOddEjflwMnQM4VtXjQ== dependencies: debug "^4.3.1" @@ -1851,27 +1917,27 @@ simple-websocket@^9.0.0: slugify@~1.4.7: version "1.4.7" - resolved "https://registry.npmjs.org/slugify/-/slugify-1.4.7.tgz" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.7.tgz#e42359d505afd84a44513280868e31202a79a628" integrity sha512-tf+h5W1IrjNm/9rKKj0JU2MDMruiopx0jjVA5zCdBtcGjfp0+c5rHw/zADLC3IeKlGHtVbHtpfzvYA0OYT+HKg== source-map-js@^1.2.1: version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== source-map@^0.6.1: version "0.6.1" - resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== stickyfill@^1.1.1: version "1.1.1" - resolved "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz" + resolved "https://registry.yarnpkg.com/stickyfill/-/stickyfill-1.1.1.tgz#39413fee9d025c74a7e59ceecb23784cc0f17f02" integrity sha512-GCp7vHAfpao+Qh/3Flh9DXEJ/qSi0KJwJw6zYlZOtRYXWUIpMM6mC2rIep/dK8RQqwW0KxGJIllmjPIBOGN8AA== "string-width-cjs@npm:string-width@^4.2.0": version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -1880,7 +1946,7 @@ stickyfill@^1.1.1: string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -1889,7 +1955,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: string-width@^5.0.1, string-width@^5.1.2: version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" @@ -1898,40 +1964,40 @@ string-width@^5.0.1, string-width@^5.1.2: string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" "strip-ansi-cjs@npm:strip-ansi@^6.0.1": version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-ansi@^7.0.1: version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" strnum@^1.1.1: version "1.1.2" - resolved "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== styled-components@^6.0.7: version "6.1.19" - resolved "https://registry.npmjs.org/styled-components/-/styled-components-6.1.19.tgz" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-6.1.19.tgz#9a41b4db79a3b7a2477daecabe8dd917235263d6" integrity sha512-1v/e3Dl1BknC37cXMhwGomhO8AkYmN41CqyX9xhUDxry1ns3BFQy2lLDRQXJRdVVWB9OHemv/53xaStimvWyuA== dependencies: "@emotion/is-prop-valid" "1.2.2" @@ -1946,19 +2012,19 @@ styled-components@^6.0.7: stylis@4.3.2: version "4.3.2" - resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.2.tgz" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" swagger2openapi@^7.0.8: version "7.0.8" - resolved "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz" + resolved "https://registry.yarnpkg.com/swagger2openapi/-/swagger2openapi-7.0.8.tgz#12c88d5de776cb1cbba758994930f40ad0afac59" integrity sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g== dependencies: call-me-maybe "^1.0.1" @@ -1975,7 +2041,7 @@ swagger2openapi@^7.0.8: tar@^6.1.15: version "6.2.1" - resolved "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== dependencies: chownr "^2.0.0" @@ -1987,98 +2053,114 @@ tar@^6.1.15: to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" tr46@~0.0.3: version "0.0.3" - resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== ts-algebra@^1.2.0: version "1.2.2" - resolved "https://registry.npmjs.org/ts-algebra/-/ts-algebra-1.2.2.tgz" + resolved "https://registry.yarnpkg.com/ts-algebra/-/ts-algebra-1.2.2.tgz#b75d301c28cd4126cd344760a47b43e48e2872e0" integrity sha512-kloPhf1hq3JbCPOTYoOWDKxebWjNb2o/LKnNfkWhxVVisFFmMJPPdJeGoGmM+iRLyoXAR61e08Pb+vUXINg8aA== tslib@2.6.2: version "2.6.2" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.1.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + uglify-js@^3.1.4: version "3.19.3" - resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== undici-types@~7.10.0: version "7.10.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.10.0.tgz" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.10.0.tgz#4ac2e058ce56b462b056e629cc6a02393d3ff350" integrity sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag== undici@^6.21.1: version "6.21.3" - resolved "https://registry.npmjs.org/undici/-/undici-6.21.3.tgz" + resolved "https://registry.yarnpkg.com/undici/-/undici-6.21.3.tgz#185752ad92c3d0efe7a7d1f6854a50f83b552d7a" integrity sha512-gBLkYIlEnSp8pFbT64yFgGE6UIB9tAkhukC23PmMDCe5Nd+cRqKxSjw5y54MK2AZMgZfJWMaNE4nYUHgi1XEOw== union@~0.5.0: version "0.5.0" - resolved "https://registry.npmjs.org/union/-/union-0.5.0.tgz" + resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075" integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA== dependencies: qs "^6.4.0" universalify@^2.0.0: version "2.0.1" - resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== uri-js-replace@^1.0.1: version "1.0.1" - resolved "https://registry.npmjs.org/uri-js-replace/-/uri-js-replace-1.0.1.tgz" + resolved "https://registry.yarnpkg.com/uri-js-replace/-/uri-js-replace-1.0.1.tgz#c285bb352b701c9dfdaeffc4da5be77f936c9048" integrity sha512-W+C9NWNLFOoBI2QWDp4UT9pv65r2w5Cx+3sTYFvtMdDBxkKt1syCqsUdSFAChbEe1uK5TfS04wt/nGwmaeIQ0g== url-join@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== url-template@^2.0.8: version "2.0.8" - resolved "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== use-sync-external-store@^1.4.0: version "1.5.0" - resolved "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz#55122e2a3edd2a6c106174c27485e0fd59bcfca0" integrity sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A== util-deprecate@^1.0.1: version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== +wait-on@^7.0.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/wait-on/-/wait-on-7.2.0.tgz#d76b20ed3fc1e2bebc051fae5c1ff93be7892928" + integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ== + dependencies: + axios "^1.6.1" + joi "^17.11.0" + lodash "^4.17.21" + minimist "^1.2.8" + rxjs "^7.8.1" + web-streams-polyfill@^3.0.3: version "3.3.3" - resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz" + resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b" integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw== webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-encoding@^2.0.0: version "2.0.0" - resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== dependencies: iconv-lite "0.6.3" whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" @@ -2086,19 +2168,19 @@ whatwg-url@^5.0.0: which@^2.0.1: version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: isexe "^2.0.0" wordwrap@^1.0.0: version "1.0.0" - resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -2107,7 +2189,7 @@ wordwrap@^1.0.0: wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -2116,7 +2198,7 @@ wrap-ansi@^7.0.0: wrap-ansi@^8.1.0: version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== dependencies: ansi-styles "^6.1.0" @@ -2125,42 +2207,42 @@ wrap-ansi@^8.1.0: ws@^7.4.2: version "7.5.10" - resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== y18n@^5.0.5: version "5.0.8" - resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml-ast-parser@0.0.43: version "0.0.43" - resolved "https://registry.npmjs.org/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz" + resolved "https://registry.yarnpkg.com/yaml-ast-parser/-/yaml-ast-parser-0.0.43.tgz#e8a23e6fb4c38076ab92995c5dca33f3d3d7c9bb" integrity sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A== yaml@^1.10.0: version "1.10.2" - resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== yargs-parser@^20.2.2: version "20.2.9" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs@17.0.1: version "17.0.1" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.0.1.tgz" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== dependencies: cliui "^7.0.2" @@ -2173,7 +2255,7 @@ yargs@17.0.1: yargs@^17.0.1: version "17.7.2" - resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1"