From f2fbcb153079cc5516461d75fdf8baa0068691e3 Mon Sep 17 00:00:00 2001 From: Lorna Jane Mitchell Date: Sun, 2 Aug 2026 21:06:48 +0100 Subject: [PATCH 01/11] Multiple docs links proposal, first draft --- proposals/2026-08-01-Docs-Links.md | 111 +++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 proposals/2026-08-01-Docs-Links.md diff --git a/proposals/2026-08-01-Docs-Links.md b/proposals/2026-08-01-Docs-Links.md new file mode 100644 index 0000000000..a93da5d394 --- /dev/null +++ b/proposals/2026-08-01-Docs-Links.md @@ -0,0 +1,111 @@ +# Link to multiple external docs resources + +## Metadata + +|Tag |Value | +|---- | ---------------- | +|Proposal |[2026-08-01-Docs-Links](https://github.com/OAI/OpenAPI-Specification/tree/main/proposals/{2026-08-01-Docs-Links.md})| +|Authors|[Lorna Mitchell](https://github.com/lornajane)| +|Review Manager |TBD | +|Status |Proposal| +|Implementations |[Click Here](https://github.com/OAI/OpenAPI-Specification/tree/main/proposals/{YYYY-MM-DD-Short-Name}/implementations.md)| +|Issues |[#1034](https://github.com/OAI/OpenAPI-Specification/issues/1034)| +|Previous Revisions || + +## Change Log + +|Date |Responsible Party |Description | +|---- | ---------------- | ---------- | + +## Introduction + +Describe more and different external resources by allowing more links with more metadata than is currently supported by `externalDocs`. + +## Motivation + +The existing `externalDocs` allows a single name/url combination to be referenced from each place that the field is supported (description root, tags, operations, and schemas). It doesn't say what sort of docs it is, and doesn't allow more than one. By supporting multiple links, we could allow an API description to provide API docs and a changelog and the list of error codes and a link to some other information. + +I see a lot of links in description fields, or additions such as `x-documentation` extensions, to compensate for the limitations in `externalDocs`. This should be supported in the API description format, and **is our second most upvoted issue**. + +## Proposed solution + +I propose a two-part solution: + +* add a new field `externalLinks` that supports an array of External Docuemntation objects, everywhere that `externalDocs` is currently supported, and deprecate the `externalDocs` field +* improve/extend the External Documentation object to include an optional `summary` field alongside the existing `url` (required) and `description` (optional, supports CommonMark) fields + +By keeping the documentation objects that we aready have and switching to an array of the instead of a single one, the upgrade path is very easy for anyone wanting to adopt the new field. +A mechanism for multiple links gives the opportunity to link to multiple different resources in support on an API, operation, tag or schema. +One array is a better place to look than a series of inconsistently named items; after externalDocs, you might see x-documentation or other extensions used for each additional reference. +Naming it without "docs" makes it more obvious that this field can also be used to link to another type of resource if that is useful for the API. + +Agents can be provided more (potentially smaller) resources for context, and these can be scoped specifically to each operation, for example. + +### Example + +This example shows an `externalLinks` entry at the root of an OpenAPI description, with links to API docs and authentication information. + +```yaml +openapi: 3.2.0 +title: Very Interesting Test API +externalLinks: + - url: https://example.com/api-docs + summary: API Documentation + - url: https://example.com/docs/authenticating-your-api-client + summary: Authentication Overview + description: Details on authentication and how to register for application keys +``` + +## Detailed design + +The sections below describe the anticipated edits to the specification document (based on OpenAPI 3.2). + +
+ +In **OpenAPI Object -> Fixed Fields** and similarly in `tags`, `schemas`, and `operations`: + +| Field Name | Type | Description | +| ---- | :----: | ---- | +| externalDocs | [External Documentation Object](#external-documentation-object) | Additional external documentation.

**Deprecated:** The `externalDocs` field has been deprecated in favor of the `externalLinks` keyword that supports an array of objects. | +| externalLinks | [[External Documentation Object](#external-documentation-object)] | An array of additional resources such as documentation. | + +
+ +In **External Documentation Object**: + +Allows referencing an external resource for external documentation or additional context. + +#### Fixed Fields + +| Field Name | Type | Description | +| ---- | :----: | ---- | +| summary | `string` | A short summary of the linked resource, used for display purposes. | +| description | `string` | A description of the linked resource. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. | +| url | `string` | **REQUIRED**. The URI for the linked resource. This MUST be in the form of a URI. | + +This object MAY be extended with [Specification Extensions](#specification-extensions). + +#### External Documentation Object Example + +```yaml +name: API reference +description: Interactive API documentation +url: https://example.com/api-docs +``` + +
+ +## Backwards compatibility + +Since we can't just make the current `externalDocs` field into an array without breaking things, I've recommended a similar-but-looser naming of `externalLinks` to contain an array of the existing External Documentation objects. These items have `url` as the only required field, and are not restricted to documentation only. + +Although the existing field is marked deprecated, tooling can continue to support it, and the similar structure makes migrating to the new approach painless. + +## Alternatives considered + +Considered: + - naming it `docLinks` which is a bit catchier and not so similar to be confusing (but maybe so different that the relationship isn't obvious). + - adding a `kind` field and going down a whole registry path of different types of docs - we could still do this, now or later, but I don't think it's essential. + - using `name` rather than `summary` but since it's an optional field and it's going alongside description, summary is more in keeping with our existing patterns. + - only permitting this new field at the top level; but I think it could make sense in any context so we should not be restrictive. + From 51ad747aa6f4ca08bcdcdec182ecdc85bf51c409 Mon Sep 17 00:00:00 2001 From: Lorna Jane Mitchell Date: Thu, 6 Aug 2026 21:21:21 +0100 Subject: [PATCH 02/11] Link to changelog issue --- proposals/2026-08-01-Docs-Links.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proposals/2026-08-01-Docs-Links.md b/proposals/2026-08-01-Docs-Links.md index a93da5d394..afac53ded0 100644 --- a/proposals/2026-08-01-Docs-Links.md +++ b/proposals/2026-08-01-Docs-Links.md @@ -9,7 +9,7 @@ |Review Manager |TBD | |Status |Proposal| |Implementations |[Click Here](https://github.com/OAI/OpenAPI-Specification/tree/main/proposals/{YYYY-MM-DD-Short-Name}/implementations.md)| -|Issues |[#1034](https://github.com/OAI/OpenAPI-Specification/issues/1034)| +|Issues |[#1034](https://github.com/OAI/OpenAPI-Specification/issues/1034) [#2409](https://github.com/OAI/OpenAPI-Specification/issues/2409)| |Previous Revisions || ## Change Log From 2c4006d8c5870d1993635fecded1ae67bec9b8eb Mon Sep 17 00:00:00 2001 From: Lorna Jane Mitchell Date: Sun, 23 Aug 2026 20:37:25 +0100 Subject: [PATCH 03/11] Added a kind field, and reformatted the intro to make it easier to see the list of supported locations --- proposals/2026-08-01-Docs-Links.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/proposals/2026-08-01-Docs-Links.md b/proposals/2026-08-01-Docs-Links.md index afac53ded0..98f276c4d1 100644 --- a/proposals/2026-08-01-Docs-Links.md +++ b/proposals/2026-08-01-Docs-Links.md @@ -23,7 +23,14 @@ Describe more and different external resources by allowing more links with more ## Motivation -The existing `externalDocs` allows a single name/url combination to be referenced from each place that the field is supported (description root, tags, operations, and schemas). It doesn't say what sort of docs it is, and doesn't allow more than one. By supporting multiple links, we could allow an API description to provide API docs and a changelog and the list of error codes and a link to some other information. +The existing `externalDocs` allows a single name/url combination to be referenced from each place that the field is supported: + +- description root +- tags +- operations +- schemas + +The existing `externalDocs` field doesn't say what sort of docs it is, and doesn't allow more than one. By supporting multiple links, we could allow an API description to provide API docs and a changelog and the list of error codes and a link to some other information. I see a lot of links in description fields, or additions such as `x-documentation` extensions, to compensate for the limitations in `externalDocs`. This should be supported in the API description format, and **is our second most upvoted issue**. @@ -32,7 +39,7 @@ I see a lot of links in description fields, or additions such as `x-documentatio I propose a two-part solution: * add a new field `externalLinks` that supports an array of External Docuemntation objects, everywhere that `externalDocs` is currently supported, and deprecate the `externalDocs` field -* improve/extend the External Documentation object to include an optional `summary` field alongside the existing `url` (required) and `description` (optional, supports CommonMark) fields +* improve/extend the External Documentation object to include optional `summary` and `kind` fields alongside the existing `url` (required) and `description` (optional, supports CommonMark) fields By keeping the documentation objects that we aready have and switching to an array of the instead of a single one, the upgrade path is very easy for anyone wanting to adopt the new field. A mechanism for multiple links gives the opportunity to link to multiple different resources in support on an API, operation, tag or schema. @@ -51,9 +58,11 @@ title: Very Interesting Test API externalLinks: - url: https://example.com/api-docs summary: API Documentation + kind: api-docs - url: https://example.com/docs/authenticating-your-api-client summary: Authentication Overview description: Details on authentication and how to register for application keys + kind: auth ``` ## Detailed design @@ -82,6 +91,7 @@ Allows referencing an external resource for external documentation or additional | summary | `string` | A short summary of the linked resource, used for display purposes. | | description | `string` | A description of the linked resource. [CommonMark syntax](https://spec.commonmark.org/) MAY be used for rich text representation. | | url | `string` | **REQUIRED**. The URI for the linked resource. This MUST be in the form of a URI. | +| kind | `string` | A machine-readable string to categorize what sort of resource is linked. Any string value can be used; a [registry of the most commonly used values](https://spec.openapis.org/registry/tag-kind/) is available. | This object MAY be extended with [Specification Extensions](#specification-extensions). @@ -91,6 +101,7 @@ This object MAY be extended with [Specification Extensions](#specification-exten name: API reference description: Interactive API documentation url: https://example.com/api-docs +kind: api-docs ```
@@ -105,7 +116,6 @@ Although the existing field is marked deprecated, tooling can continue to suppor Considered: - naming it `docLinks` which is a bit catchier and not so similar to be confusing (but maybe so different that the relationship isn't obvious). - - adding a `kind` field and going down a whole registry path of different types of docs - we could still do this, now or later, but I don't think it's essential. - using `name` rather than `summary` but since it's an optional field and it's going alongside description, summary is more in keeping with our existing patterns. - only permitting this new field at the top level; but I think it could make sense in any context so we should not be restrictive. From 6faacf69f1c70918dadb01a58c261d8286a87baf Mon Sep 17 00:00:00 2001 From: Lorna Mitchell Date: Thu, 24 Sep 2026 17:44:07 +0100 Subject: [PATCH 04/11] Link to the open spec-publishing PRs in the meeting agenda --- .github/templates/agenda.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/templates/agenda.md b/.github/templates/agenda.md index f9990bb764..7acb1860e1 100644 --- a/.github/templates/agenda.md +++ b/.github/templates/agenda.md @@ -31,8 +31,7 @@ Intros and governance meta-topics (5 mins) | TDC | | Reports from Special Interest Groups (5 mins) | SIG members | | Any other business (add comments below to suggest topics) | TDC | | [Approved spec PRs](https://github.com/OAI/OpenAPI-Specification/pulls?q=is%3Apr+is%3Aopen+review%3Aapproved) | @OAI/tsc | | -[Active Projects](https://github.com/OAI/OpenAPI-Specification/projects?query=is%3Aopen) | @OAI/openapi-maintainers | | -[New issues needing attention](https://github.com/search?q=repo%3Aoai%2Fopenapi-specification+is%3Aissue+comments%3A0+no%3Alabel+is%3Aopen) | @OAI/triage | | +[Spec Publishing PRs](https://github.com/OAI/spec.openapis.org/pulls) | @OAI/tsc | | Identify next week's meeting host (2 mins) | All | Comment on next week's agenda | /cc [@OAI/tsc](https://github.com/orgs/OAI/teams/tsc) please suggest items for inclusion. From cb0c5ff8ac80f4841c84ef2157ff3a3f806a502f Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Tue, 29 Sep 2026 13:42:06 -0400 Subject: [PATCH 05/11] Fix Mastodon AI policy link Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3dedb47d-ea98-4c0c-877d-a2fc40702f0e --- AI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AI.md b/AI.md index 277c526570..bb8805599a 100644 --- a/AI.md +++ b/AI.md @@ -56,6 +56,6 @@ You are always welcome to reach out to us via GitHub or Slack to discuss any of This policy builds on and acknowledges the work of: -- [Mastodon AI Contribution Policy](https://github.com/mastodon/mastodon/blob/main/AI_POLICY.md) +- [Mastodon AI Contribution Policy](https://github.com/mastodon/.github/blob/main/AI_POLICY.md) - [W3C: Use of Large Language Models in Standards Work](https://www.w3.org/TR/llms-standards/) - [FastAPI / tiangolo contributing guidelines](https://tiangolo.com/open-source/contributing/#automated-code-and-ai), in particular the framing of low-effort AI submissions as a denial-of-service attack on human effort From 19c8bb3d5f0f8b549a95469b72ea116ddc0afd33 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Tue, 29 Sep 2026 13:47:38 -0400 Subject: [PATCH 06/11] Clarify AI policy enforcement Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3dedb47d-ea98-4c0c-877d-a2fc40702f0e --- AI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AI.md b/AI.md index bb8805599a..9c07b64966 100644 --- a/AI.md +++ b/AI.md @@ -46,7 +46,7 @@ Do not use AI to summarise discussion content and then reply to the summary. The ## Enforcement -Maintainers reserve the right to close any pull request, issue, or discussion thread that appears to represent low-effort or AI-generated content, without providing detailed justification. +Maintainers reserve the right to close any pull request, issue, or discussion thread that appears to represent low-effort or undisclosed AI-generated content, without providing detailed justification. Repeated violations may result in a block from OpenAPI Initiative repositories. Reviewer time and expertise are the scarcest resources this project has, and so this policy is there to protect them and ensure the long-term healthy and viability of the project. From 1f1a8a8be5c4599854bcc5009c260555522b3ed5 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Tue, 29 Sep 2026 13:47:46 -0400 Subject: [PATCH 07/11] Fix AI policy grammar Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3dedb47d-ea98-4c0c-877d-a2fc40702f0e --- AI.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AI.md b/AI.md index 9c07b64966..a99f0913ab 100644 --- a/AI.md +++ b/AI.md @@ -49,7 +49,7 @@ Do not use AI to summarise discussion content and then reply to the summary. The Maintainers reserve the right to close any pull request, issue, or discussion thread that appears to represent low-effort or undisclosed AI-generated content, without providing detailed justification. Repeated violations may result in a block from OpenAPI Initiative repositories. -Reviewer time and expertise are the scarcest resources this project has, and so this policy is there to protect them and ensure the long-term healthy and viability of the project. +Reviewer time and expertise are the scarcest resources this project has, and so this policy is there to protect them and ensure the long-term health and viability of the project. You are always welcome to reach out to us via GitHub or Slack to discuss any of these points or their application. ## Acknowledgements From f2d376e246446f27d115c289bae6e8ff2c64b3c2 Mon Sep 17 00:00:00 2001 From: Karen Etheridge Date: Thu, 8 Oct 2026 11:20:21 -0700 Subject: [PATCH 08/11] Clarify the meeting time in the template The weekly meeting is fixed to 9am in the timezone used in California, which is not the same timezone used in other Pacific regions in North America. Most significantly, "Pacific Time" is NOT UTC-0800/0700, but rather UTC-0700 year round, which is not the timezone used for the meeting. more info at: https://www2.gov.bc.ca/gov/content/governments/celebrating-british-columbia/daylight-saving-time https://www.iana.org/time-zones --- .github/templates/agenda.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/templates/agenda.md b/.github/templates/agenda.md index 7acb1860e1..30dc179391 100644 --- a/.github/templates/agenda.md +++ b/.github/templates/agenda.md @@ -1,4 +1,4 @@ -## Weekly meetings happen on Thursdays at 9am - 10am Pacific +## Weekly meetings happen on Thursdays at 9am - 10am Pacific Standard Time / Pacific Daylight Time (UTC-0800, UTC-0700) This agenda gives visibility into discussion topics for the weekly Technical Developer Community (TDC) meetings. Sharing agenda items in advance allows people to plan to attend meetings where they have an interest in specific topics. From 6db4f522b879f6501fd5c00d0f12cecaa134b6ca Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 14 Oct 2026 16:41:26 -0700 Subject: [PATCH 09/11] Update build-infra dependency Refresh the #main resolution to include the shared downstream md2html fixture runner.\n\nCo-authored-by: Codex --- yarn.lock | 603 +++++++++++++++++++++++++++++------------------------- 1 file changed, 327 insertions(+), 276 deletions(-) diff --git a/yarn.lock b/yarn.lock index cf3a467018..e68f6022dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -129,26 +129,37 @@ __metadata: languageName: node linkType: hard -"@hyperjump/json-schema-coverage@npm:1.2.1": - version: 1.2.1 - resolution: "@hyperjump/json-schema-coverage@npm:1.2.1" +"@hyperjump/json-pointer@npm:^1.1.2": + version: 1.1.3 + resolution: "@hyperjump/json-pointer@npm:1.1.3" + checksum: 10c0/a43ff5e5eee047011667238e83212bac178345918f23f6e5b8245a5f6cb2d4adcb64798537a5a871addcafbbdc4d3be859b5eedd6e9f78ce466a5c05a7ea6cc7 + languageName: node + linkType: hard + +"@hyperjump/json-schema-coverage@npm:1.3.0": + version: 1.3.0 + resolution: "@hyperjump/json-schema-coverage@npm:1.3.0" dependencies: "@hyperjump/browser": "npm:^1.3.1" + "@hyperjump/json-pointer": "npm:^1.1.2" "@hyperjump/json-schema": "npm:^1.17.2" "@hyperjump/uri": "npm:^1.3.1" - content-type: "npm:^1.0.5" + "@vitest/istanbul-lib-coverage": "npm:^1.0.1" + "@vitest/istanbul-lib-report": "npm:^1.0.1" + content-type: "npm:^3.0.0" ignore: "npm:^7.0.5" - istanbul-lib-coverage: "npm:^3.2.2" - istanbul-lib-report: "npm:^3.0.1" - istanbul-reports: "npm:^3.1.7" moo: "npm:^0.5.2" pathe: "npm:^2.0.3" + picocolors: "npm:^1.1.1" picomatch: "npm:^4.0.2" tinyglobby: "npm:^0.2.14" vfile: "npm:^6.0.3" + vfile-message: "npm:^4.0.3" yaml: "npm:^2.8.0" - yaml-unist-parser: "npm:^2.0.5" - checksum: 10c0/0913d609eafd788dc189534a208811fa22024f79cd428bc7a6925ff16ffaa2d33780bea554927862dbd552106f9a59f3857b28cf129c6a083c401b35b320a354 + yaml-unist-parser: "npm:^3.1.0" + peerDependencies: + vitest: ^4.0.0 || ^5.0.0 + checksum: 10c0/4b206ccefd705c2fa893b1563fdc87592c869ae43289bce9d0b603ed22f7215330ea60218f26d8ab4d2d15d4a9bdf7ae7fb93d8cf2e0c74a386cd0603b130f22 languageName: node linkType: hard @@ -262,26 +273,26 @@ __metadata: linkType: hard "@oai/build-infra@git+https://github.com/OAI/build-infra.git#main": - version: 1.0.2 - resolution: "@oai/build-infra@https://github.com/OAI/build-infra.git#commit=53b4eb3c405757c3f8adb44f7383384b6a01fcb9" + version: 1.1.0 + resolution: "@oai/build-infra@https://github.com/OAI/build-infra.git#commit=c771ab929b8445becf4fd9349ab365823a553206" dependencies: "@hyperjump/browser": "npm:1.5.0" "@hyperjump/json-schema": "npm:1.17.8" - "@hyperjump/json-schema-coverage": "npm:1.2.1" + "@hyperjump/json-schema-coverage": "npm:1.3.0" "@umbrelladocs/linkspector": "npm:0.5.6" - "@vitest/coverage-v8": "npm:5.0.0" + "@vitest/coverage-v8": "npm:5.0.2" c8: "npm:12.0.0" cheerio: "npm:1.2.0" - content-type: "npm:3.0.0" + content-type: "npm:3.1.1" highlight.js: "npm:11.12.0" - markdown-it: "npm:15.0.1" - markdownlint-cli2: "npm:0.23.2" - respec: "npm:37.3.6" + markdown-it: "npm:15.0.2" + markdownlint-cli2: "npm:0.23.3" + respec: "npm:37.4.0" semver: "npm:7.8.5" - vite: "npm:8.2.2" - vitest: "npm:5.0.0" - yaml: "npm:2.9.0" - yargs: "npm:18.1.0" + vite: "npm:8.3.1" + vitest: "npm:5.0.2" + yaml: "npm:2.9.1" + yargs: "npm:18.2.0" dependenciesMeta: puppeteer: built: true @@ -293,14 +304,14 @@ __metadata: oai-spec-start-release: ./bin/oai-spec-start-release oai-spec-test: ./bin/oai-spec-test oai-spec-validate-markdown: ./bin/oai-spec-validate-markdown - checksum: 10c0/c43a867a51bd448a68250a7521e4c30e5bf632c7061eafc875de6067aca4d5069ea976c632f4c021aa9c7f2171496ab32ddbd658fe191bfb311d6ea3c9a6967a + checksum: 10c0/f67386de48fb0551f9cd0b20f36ecba2c7cb4ff17d4fa96da521b233f36bdcdf4da5ed58652896845d0a65c4aa3d836233bc72938df1804e3aa3ae3b0788df8c languageName: node linkType: hard -"@oxc-project/types@npm:=0.149.0": - version: 0.149.0 - resolution: "@oxc-project/types@npm:0.149.0" - checksum: 10c0/f91ff8101300ce5a29fbfc57bdaafd9c1c9d3d9b46c63093f437c479d047042eb615cb6c3ddac91a0d289701ce60c365632866a85d0f1e0d159b20180115187e +"@oxc-project/types@npm:=0.153.0": + version: 0.153.0 + resolution: "@oxc-project/types@npm:0.153.0" + checksum: 10c0/32011227bc4f0e6536c07ef79ce9254e5a453cdbfdb51b6717d0edc06b7d85a9a2a8ca12102de3b71f91a0e78d4facb538d17b28e6a7b6527ffc8901d8cd82c6 languageName: node linkType: hard @@ -324,11 +335,11 @@ __metadata: languageName: node linkType: hard -"@puppeteer/browsers@npm:3.2.2": - version: 3.2.2 - resolution: "@puppeteer/browsers@npm:3.2.2" +"@puppeteer/browsers@npm:3.2.4": + version: 3.2.4 + resolution: "@puppeteer/browsers@npm:3.2.4" dependencies: - modern-tar: "npm:^0.8.4" + modern-tar: "npm:^0.8.5" yargs: "npm:^18.0.0" peerDependencies: proxy-agent: ">=8.0.1" @@ -340,111 +351,111 @@ __metadata: optional: true bin: browsers: lib/main-cli.js - checksum: 10c0/c26a8c4669ccc5a3a29a1879fd9f68d6af88ea09d6678f0d4405950fa5a13298badbd59c69a777418e60f62898777ec0859fff01e2912568f4d5b660d6dd46f3 + checksum: 10c0/7da694e4b4eb47e5df652893e5b723958154d35ebd63c3d390d87eeae9df885b5db8f72b9a455e80ff10eec6e560acd7b3cc4b6365165997cd675218051a6b3c languageName: node linkType: hard -"@rolldown/binding-android-arm-eabi@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-android-arm-eabi@npm:1.2.8" +"@rolldown/binding-android-arm-eabi@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-android-arm-eabi@npm:1.2.13" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rolldown/binding-android-arm64@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-android-arm64@npm:1.2.8" +"@rolldown/binding-android-arm64@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-android-arm64@npm:1.2.13" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-darwin-arm64@npm:1.2.8" +"@rolldown/binding-darwin-arm64@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-darwin-arm64@npm:1.2.13" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-darwin-x64@npm:1.2.8" +"@rolldown/binding-darwin-x64@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-darwin-x64@npm:1.2.13" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-freebsd-x64@npm:1.2.8" +"@rolldown/binding-freebsd-x64@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-freebsd-x64@npm:1.2.13" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.8" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.13" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.8" +"@rolldown/binding-linux-arm64-gnu@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.13" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.8" +"@rolldown/binding-linux-arm64-musl@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.13" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.8" +"@rolldown/binding-linux-ppc64-gnu@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.13" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.8" +"@rolldown/binding-linux-s390x-gnu@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.13" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.8" +"@rolldown/binding-linux-x64-gnu@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.13" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.8" +"@rolldown/binding-linux-x64-musl@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.13" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.8" +"@rolldown/binding-openharmony-arm64@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.13" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.8" +"@rolldown/binding-win32-arm64-msvc@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.13" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.2.8": - version: 1.2.8 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.8" +"@rolldown/binding-win32-x64-msvc@npm:1.2.13": + version: 1.2.13 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.13" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -586,9 +597,9 @@ __metadata: languageName: node linkType: hard -"@vitest/coverage-v8@npm:5.0.0": - version: 5.0.0 - resolution: "@vitest/coverage-v8@npm:5.0.0" +"@vitest/coverage-v8@npm:5.0.2": + version: 5.0.2 + resolution: "@vitest/coverage-v8@npm:5.0.2" dependencies: "@bcoe/v8-coverage": "npm:^1.0.2" "@vitest/istanbul-lib-coverage": "npm:^1.0.0" @@ -599,12 +610,12 @@ __metadata: std-env: "npm:^4.2.0" tinyrainbow: "npm:^3.1.1" peerDependencies: - "@vitest/browser": 5.0.0 - vitest: 5.0.0 + "@vitest/browser": 5.0.2 + vitest: 5.0.2 peerDependenciesMeta: "@vitest/browser": optional: true - checksum: 10c0/6d7f102af8f11f69df21ba343b4d101fbdb39ce5568bd2686c72cdf44e03934889328df297ebe4e12dbe1bc5e0a6d565bb9dfaf2fbca1958bf5e7770c7dc9675 + checksum: 10c0/291db720aa27ee9ba609104fbf0c6442ea7db595e8e415be63614e68885fab8b267dedabe85eff24f93f247d058b9467e8cdd28ec30a9224fedbf498b763691d languageName: node linkType: hard @@ -615,6 +626,13 @@ __metadata: languageName: node linkType: hard +"@vitest/istanbul-lib-coverage@npm:1.0.2, @vitest/istanbul-lib-coverage@npm:^1.0.1": + version: 1.0.2 + resolution: "@vitest/istanbul-lib-coverage@npm:1.0.2" + checksum: 10c0/c839315f8c54fb1eb7d51c61cd908f78c2909bbd17ee0d3d8824764f7eed2785471c40ab29f065eee18b577b8275ece8d4100f0ca6c7a05a39a4128683c57292 + languageName: node + linkType: hard + "@vitest/istanbul-lib-report@npm:^1.0.0": version: 1.0.1 resolution: "@vitest/istanbul-lib-report@npm:1.0.1" @@ -624,12 +642,21 @@ __metadata: languageName: node linkType: hard -"@vitest/mocker@npm:5.0.0": - version: 5.0.0 - resolution: "@vitest/mocker@npm:5.0.0" +"@vitest/istanbul-lib-report@npm:^1.0.1": + version: 1.0.2 + resolution: "@vitest/istanbul-lib-report@npm:1.0.2" + dependencies: + "@vitest/istanbul-lib-coverage": "npm:1.0.2" + checksum: 10c0/9b0b3c898448dfe99a51a51238fd564efb1efdfd3dc46570ad6b51a592c9f26811de7be6d07756782d4d0ee71d2431b0592c63be0921f7776bf213a22d87f4d3 + languageName: node + linkType: hard + +"@vitest/mocker@npm:5.0.2": + version: 5.0.2 + resolution: "@vitest/mocker@npm:5.0.2" dependencies: "@jridgewell/trace-mapping": "npm:0.3.31" - "@vitest/spy": "npm:5.0.0" + "@vitest/spy": "npm:5.0.2" estree-walker: "npm:^3.0.3" magic-string: "npm:^1.2.3" peerDependencies: @@ -640,14 +667,14 @@ __metadata: optional: true vite: optional: true - checksum: 10c0/b1dde0ef270e8f9401204cb19c798114de416c3cf31e1d44d0029c4281b33e9a799251e3015aaaa2bdf5858c97a56857812dcf1e04dcfd4ebeedf194e6bcf3e6 + checksum: 10c0/e2d847563d47b61e9f3e5ed2d86af42b753311cd52c94ef7226398fd6f810b96ca4737855bcc4a59d78a0300859db50693d831ab29ca6334b159cc8e870f8149 languageName: node linkType: hard -"@vitest/spy@npm:5.0.0": - version: 5.0.0 - resolution: "@vitest/spy@npm:5.0.0" - checksum: 10c0/7521b4ef803bc89974a738cead7d3fcd789af805f3ea3f496108fc802b2bc09b22fe8e7a3cc0be3f92b647427aea528657e3e87dd0201e432f56e62f84f25ba8 +"@vitest/spy@npm:5.0.2": + version: 5.0.2 + resolution: "@vitest/spy@npm:5.0.2" + checksum: 10c0/4a52231cc7b5b8959bb15a700a761464051a6d0cc35a231fc92fd4f58d10a01012671a20ea37ebc79e98bdd5dc257a3c52db10d6a592944560fb69651f6f1296 languageName: node linkType: hard @@ -874,6 +901,18 @@ __metadata: languageName: node linkType: hard +"chromium-bidi@npm:157.0.8090-0": + version: 157.0.8090-0 + resolution: "chromium-bidi@npm:157.0.8090-0" + dependencies: + mitt: "npm:^3.0.1" + zod: "npm:^4.6.5" + peerDependencies: + devtools-protocol: "*" + checksum: 10c0/4cdc062c042431822ee7abb5f1ca1f88088af61359add1ff36751242095584e79b969c3bfda5571ebe185a4ac25af28de5e3b7f3e3be05e1506a113f21315dee + languageName: node + linkType: hard + "chromium-bidi@npm:17.0.2": version: 17.0.2 resolution: "chromium-bidi@npm:17.0.2" @@ -982,10 +1021,10 @@ __metadata: languageName: node linkType: hard -"content-type@npm:3.0.0": - version: 3.0.0 - resolution: "content-type@npm:3.0.0" - checksum: 10c0/4ecb17b151ef272fe3143d2414b78edeea9c7baa45724e2bbcbfc0dbd4bbc5b68d654733df6df2d9c600016af841a25aa26b0a4d290e366b5120705796072d98 +"content-type@npm:3.1.1, content-type@npm:^3.0.0": + version: 3.1.1 + resolution: "content-type@npm:3.1.1" + checksum: 10c0/a9ff3f2afac5aae1356f545e19fc0d6dca644ee3bf694b788f178185954bfe46ba51ca309950e40e07681290da0b7934652fdb5b7fa4ec1e7d43cb71bd703e1f languageName: node linkType: hard @@ -1099,6 +1138,13 @@ __metadata: languageName: node linkType: hard +"devtools-protocol@npm:0.0.1696802": + version: 0.0.1696802 + resolution: "devtools-protocol@npm:0.0.1696802" + checksum: 10c0/33d9a5ead6ab5b71b581ab41782a960bba2f2a4d5a73e5130a50f3441f6cebf876c8e310cf144174def16dc26d0eb30619beaaadc31ca2170819dd9819be874e + languageName: node + linkType: hard + "dom-serializer@npm:^2.0.0": version: 2.0.0 resolution: "dom-serializer@npm:2.0.0" @@ -1175,7 +1221,7 @@ __metadata: languageName: node linkType: hard -"entities@npm:^4.2.0, entities@npm:^4.5.0": +"entities@npm:^4.2.0": version: 4.5.0 resolution: "entities@npm:4.5.0" checksum: 10c0/5b039739f7621f5d1ad996715e53d964035f75ad3b9a4d38c6b3804bb226e282ffeae2443624d8fdd9c47d8e926ae9ac009c54671243f0c3294c26af7cc85250 @@ -1456,17 +1502,18 @@ __metadata: languageName: node linkType: hard -"globby@npm:16.2.2": - version: 16.2.2 - resolution: "globby@npm:16.2.2" +"globby@npm:16.2.4": + version: 16.2.4 + resolution: "globby@npm:16.2.4" dependencies: "@sindresorhus/merge-streams": "npm:^4.0.0" fast-glob: "npm:^3.3.3" ignore: "npm:^7.0.5" is-path-inside: "npm:^4.0.0" + micromatch: "npm:^4.0.8" slash: "npm:^5.1.0" unicorn-magic: "npm:^0.4.0" - checksum: 10c0/77bbd36a8862b2952ccbb7e411064387c5b274cb0a1466fd335b0bf336f2b7d92e05167799ddcaf8beac571229d9a7d8a4d5ea7446d4a90714cdc32cef2443ed + checksum: 10c0/ef4a56b656260138b47706bd9532aad86d2820f028c58d51af41f458cf7f1177ce71cf104697cd6068c18eb1e0f3272bf446bc7c6265a357c6a159a1a1e31cec languageName: node linkType: hard @@ -1725,7 +1772,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0, istanbul-lib-coverage@npm:^3.2.2": +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.2 resolution: "istanbul-lib-coverage@npm:3.2.2" checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b @@ -1743,7 +1790,7 @@ __metadata: languageName: node linkType: hard -"istanbul-reports@npm:^3.1.6, istanbul-reports@npm:^3.1.7": +"istanbul-reports@npm:^3.1.6": version: 3.2.0 resolution: "istanbul-reports@npm:3.2.0" dependencies: @@ -1775,14 +1822,14 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:5.2.2": - version: 5.2.2 - resolution: "js-yaml@npm:5.2.2" +"js-yaml@npm:5.4.1": + version: 5.4.1 + resolution: "js-yaml@npm:5.4.1" dependencies: argparse: "npm:^2.0.1" bin: js-yaml: bin/js-yaml.mjs - checksum: 10c0/e8ded203b235b3d562818c67bf362122abbcee89e507b62bddcdd3085b2f2dd866071e5e78f8e617d41d1a0c0baa1cec12a8fdec5859c571bf862adf585e2684 + checksum: 10c0/efe9dfaf222809694d375ad5ecca825561d2432eb55bc0f628911c0dfa4dbce98a71dcbc3252f630208bbdf5f4e9ac363847e4a7f49845b577ae2548b8fcf147 languageName: node linkType: hard @@ -1970,15 +2017,6 @@ __metadata: languageName: node linkType: hard -"linkify-it@npm:^5.0.2": - version: 5.0.2 - resolution: "linkify-it@npm:5.0.2" - dependencies: - uc.micro: "npm:^2.0.0" - checksum: 10c0/dd70b1735a13d41a2cff0a058ac3771166038f23f6aff004dd53873cf985c64b107902fe0b544a5b3d1ff6e63249cf9c648fb3ae9f285481db48f56887adb0d6 - languageName: node - linkType: hard - "linkify-it@npm:^6.0.0": version: 6.1.0 resolution: "linkify-it@npm:6.1.0" @@ -2050,25 +2088,25 @@ __metadata: languageName: node linkType: hard -"markdown-it@npm:14.3.0": - version: 14.3.0 - resolution: "markdown-it@npm:14.3.0" +"markdown-it@npm:15.0.1": + version: 15.0.1 + resolution: "markdown-it@npm:15.0.1" dependencies: - argparse: "npm:^2.0.1" - entities: "npm:^4.5.0" - linkify-it: "npm:^5.0.2" - mdurl: "npm:^2.0.0" + argparse: "npm:^3.0.0" + entities: "npm:^8.0.0" + linkify-it: "npm:^6.0.0" + mdurl: "npm:^2.1.0" punycode.js: "npm:^2.3.1" - uc.micro: "npm:^2.1.0" + uc.micro: "npm:^3.0.0" bin: markdown-it: bin/markdown-it.mjs - checksum: 10c0/b2dea908968109d6e9088ac972254bca842157d85d2e6838d0eb263cd8106e7e6a72663b138366cc98f57441d9f3f2ebfb842bf7b2f9e1c13187ebe70e0af8f9 + checksum: 10c0/e16357ffdb28358f290aef2b7618aa578faef192692a2d3b715f53c2e75bb97d8d15d6f5eab872fda04fe54eccb1065c63bcdfd1d5d13e94d78789a5ccbb5f9c languageName: node linkType: hard -"markdown-it@npm:15.0.1": - version: 15.0.1 - resolution: "markdown-it@npm:15.0.1" +"markdown-it@npm:15.0.2": + version: 15.0.2 + resolution: "markdown-it@npm:15.0.2" dependencies: argparse: "npm:^3.0.0" entities: "npm:^8.0.0" @@ -2078,7 +2116,7 @@ __metadata: uc.micro: "npm:^3.0.0" bin: markdown-it: bin/markdown-it.mjs - checksum: 10c0/e16357ffdb28358f290aef2b7618aa578faef192692a2d3b715f53c2e75bb97d8d15d6f5eab872fda04fe54eccb1065c63bcdfd1d5d13e94d78789a5ccbb5f9c + checksum: 10c0/a06c47578157bcb01fc161951254158d41386f5f7dc09d335453568c9a95bc58f7099fad235d5be92d8b29fe8672b25c9b809313b64df0eacebdda804c68ca09 languageName: node linkType: hard @@ -2098,22 +2136,22 @@ __metadata: languageName: node linkType: hard -"markdownlint-cli2@npm:0.23.2": - version: 0.23.2 - resolution: "markdownlint-cli2@npm:0.23.2" +"markdownlint-cli2@npm:0.23.3": + version: 0.23.3 + resolution: "markdownlint-cli2@npm:0.23.3" dependencies: - globby: "npm:16.2.2" - js-yaml: "npm:5.2.2" + globby: "npm:16.2.4" + js-yaml: "npm:5.4.1" jsonc-parser: "npm:3.3.1" jsonpointer: "npm:5.0.1" - markdown-it: "npm:14.3.0" + markdown-it: "npm:15.0.1" markdownlint: "npm:0.41.1" markdownlint-cli2-formatter-default: "npm:0.0.6" micromatch: "npm:4.0.8" - smol-toml: "npm:1.7.0" + smol-toml: "npm:1.8.0" bin: markdownlint-cli2: markdownlint-cli2-bin.mjs - checksum: 10c0/a854cc77c8a64b07d1f99a74303d0f3d773a5ff78a361328566ce469df8bb08fbc1d57b2715c5ad111cc85278c034a14bfa92c41b51e5926494d370af94ccd21 + checksum: 10c0/d82f017e202b021b0525d053bed888bf52bbdf1f2272e4777f087ad7911650ab9252391524248bf30db744b44a75cef06a79355257a13cea8c46d5b8a2e8fa1b languageName: node linkType: hard @@ -2288,7 +2326,7 @@ __metadata: languageName: node linkType: hard -"mdurl@npm:^2.0.0, mdurl@npm:^2.1.0": +"mdurl@npm:^2.1.0": version: 2.1.0 resolution: "mdurl@npm:2.1.0" checksum: 10c0/aed11a75b791d596c7104fa6a3d84680e87cd2bfdb32ecfe512e795481d40a64b21d627b325ffd58aadcd15faf7498ac06130b8f198ebec437aceeead24bd1b1 @@ -2740,7 +2778,7 @@ __metadata: languageName: node linkType: hard -"modern-tar@npm:^0.8.4": +"modern-tar@npm:^0.8.5": version: 0.8.5 resolution: "modern-tar@npm:0.8.5" checksum: 10c0/29946b8a79679dff507cb2b042eb9286aa7ec44992f2717d024afdbdbeb2afd274ca8d32c4fcfe76f2b4cd45f6d2900fdd0a5505527677bf07ee0c1f159a848c @@ -2768,12 +2806,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.18": - version: 3.3.18 - resolution: "nanoid@npm:3.3.18" +"nanoid@npm:^3.3.20": + version: 3.3.20 + resolution: "nanoid@npm:3.3.20" bin: nanoid: bin/nanoid.cjs - checksum: 10c0/b994b4e396730f8be2520923284e2040d61eaee55cc6d4935ef6d38d34bafdc46133eda4d3faea5073bda545aa6079d82b886caeac5c731cf9ac18bcc1301425 + checksum: 10c0/856e8bf3bddb959d65997bd94908be030dbc5e6ed88fb3af2a638e51d1938f4d4f454c7c7231aba340775224f88b8cfd3ce1693c70471bfd05f5b6a2227c0c1e languageName: node linkType: hard @@ -2998,7 +3036,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^4.0.2, picomatch@npm:^4.0.4, picomatch@npm:^4.0.5": +"picomatch@npm:^4.0.2, picomatch@npm:^4.0.4": version: 4.0.5 resolution: "picomatch@npm:4.0.5" checksum: 10c0/947bc6b6e1ff1e6c5aaf95b107a0839d12802f4f7b867663f67d47accba939ca1cb582cf99dfc30438efa1c4648ac5990967e783e8929c36b03e8440704ef1bd @@ -3012,14 +3050,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.5.26": - version: 8.5.28 - resolution: "postcss@npm:8.5.28" +"postcss@npm:^8.5.28": + version: 8.5.30 + resolution: "postcss@npm:8.5.30" dependencies: - nanoid: "npm:^3.3.18" + nanoid: "npm:^3.3.20" picocolors: "npm:^1.1.1" - source-map-js: "npm:^1.2.1" - checksum: 10c0/9fe44215a6628d89c8a75184b92f5b2f77e16f9e5b13b39b9009bb7e8e6eccddf82c8854bae922db1f17ace6ef3445073fe38abff513caeb03e5285b1b55620a + source-map-js: "npm:^1.2.2" + checksum: 10c0/219cdc50ba3f2b6d0f8b779c4939514cb9d9f53cc9eb92dae1a06f2d6eb910b2ce339a3ee93e7c893b89e50241509fd92c04f0639af1cdf41a1e13983a476029 languageName: node linkType: hard @@ -3044,17 +3082,17 @@ __metadata: languageName: node linkType: hard -"puppeteer-core@npm:25.10.0": - version: 25.10.0 - resolution: "puppeteer-core@npm:25.10.0" +"puppeteer-core@npm:25.13.0": + version: 25.13.0 + resolution: "puppeteer-core@npm:25.13.0" dependencies: - "@puppeteer/browsers": "npm:3.2.2" - chromium-bidi: "npm:17.0.2" - devtools-protocol: "npm:0.0.1666840" - typed-query-selector: "npm:^2.12.2" - webdriver-bidi-protocol: "npm:0.4.3" + "@puppeteer/browsers": "npm:3.2.4" + chromium-bidi: "npm:157.0.8090-0" + devtools-protocol: "npm:0.0.1696802" + typed-query-selector: "npm:^2.12.3" + webdriver-bidi-protocol: "npm:1.0.1" ws: "npm:^8.21.3" - checksum: 10c0/d95292e389f415b8dc1238df7d67e06a8c37576b8ca6899ee92550f6289c69dedc1b606ee8c443e0eed7e7e5710cfcf45bd83b4e20b75670057d71347441b903 + checksum: 10c0/00cb42d255147cfd20c7708bfa5b66b90df6bbe7224f54f6a3df8b08847a79adafea23c74eb0053683eb76dd493a4c592b8e22a630dd64cdbdbcb5f21b8fe9c2 languageName: node linkType: hard @@ -3072,35 +3110,35 @@ __metadata: languageName: node linkType: hard -"puppeteer@npm:^25.2.1": - version: 25.8.0 - resolution: "puppeteer@npm:25.8.0" +"puppeteer@npm:^25.10.0": + version: 25.13.0 + resolution: "puppeteer@npm:25.13.0" dependencies: - "@puppeteer/browsers": "npm:3.2.1" - chromium-bidi: "npm:17.0.2" - devtools-protocol: "npm:0.0.1666840" + "@puppeteer/browsers": "npm:3.2.4" + chromium-bidi: "npm:157.0.8090-0" + devtools-protocol: "npm:0.0.1696802" lilconfig: "npm:^3.1.3" - puppeteer-core: "npm:25.8.0" - typed-query-selector: "npm:^2.12.2" + puppeteer-core: "npm:25.13.0" + typed-query-selector: "npm:^2.12.3" bin: puppeteer: lib/puppeteer/node/cli.js - checksum: 10c0/2b62c2e18abda3e9f3bc3e9192e1c600d8bb8b72d4453aebabfdff285763da0389a1023ebf1f1a0717a3aa4e6aedf2183a123ff2b3c82ec070f82c5ffc69d9f5 + checksum: 10c0/a2a73bbc1b046929a543661e806e635a0d2be642df9e0b7f7886fe082b6096346d80af9e3fd007d91e299e573af758215ce04b7227677865e785c2b38c95c655 languageName: node linkType: hard -"puppeteer@npm:^25.9.0": - version: 25.10.0 - resolution: "puppeteer@npm:25.10.0" +"puppeteer@npm:^25.2.1": + version: 25.8.0 + resolution: "puppeteer@npm:25.8.0" dependencies: - "@puppeteer/browsers": "npm:3.2.2" + "@puppeteer/browsers": "npm:3.2.1" chromium-bidi: "npm:17.0.2" devtools-protocol: "npm:0.0.1666840" lilconfig: "npm:^3.1.3" - puppeteer-core: "npm:25.10.0" + puppeteer-core: "npm:25.8.0" typed-query-selector: "npm:^2.12.2" bin: puppeteer: lib/puppeteer/node/cli.js - checksum: 10c0/3c57205a40b4ab15a9fa7881bf62060d91491e776fcfbe6e35ff8ac03d730ba5e17479142186e0b016f452acaf9091ed6cac88c81894327ecc199e2144481973 + checksum: 10c0/2b62c2e18abda3e9f3bc3e9192e1c600d8bb8b72d4453aebabfdff285763da0389a1023ebf1f1a0717a3aa4e6aedf2183a123ff2b3c82ec070f82c5ffc69d9f5 languageName: node linkType: hard @@ -3173,19 +3211,19 @@ __metadata: languageName: node linkType: hard -"respec@npm:37.3.6": - version: 37.3.6 - resolution: "respec@npm:37.3.6" +"respec@npm:37.4.0": + version: 37.4.0 + resolution: "respec@npm:37.4.0" dependencies: finalhandler: "npm:^2.1.1" marked: "npm:^18.0.11" - puppeteer: "npm:^25.9.0" + puppeteer: "npm:^25.10.0" sade: "npm:^1.8.1" serve-static: "npm:^2.2.1" bin: respec: tools/respec2html.js respec2html: tools/respec2html.js - checksum: 10c0/1c10000f5c5d6accc8d7c924b331cb83bdb5dc5a8bbb1c96c739d5887f87e907041c852f0846d8bcbd67db0c7982dbd09d97dcf7343e2c23c30dfedff82eef46 + checksum: 10c0/ce68f2d98251cf48d929d2e3e0b3aca3d4f616a3c35d3357b19643224393c5f728a87f335a43f651c54269659664d7f04399beb863305391e1ac0bf87d231a05 languageName: node linkType: hard @@ -3216,26 +3254,26 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:~1.2.4": - version: 1.2.8 - resolution: "rolldown@npm:1.2.8" - dependencies: - "@oxc-project/types": "npm:=0.149.0" - "@rolldown/binding-android-arm-eabi": "npm:1.2.8" - "@rolldown/binding-android-arm64": "npm:1.2.8" - "@rolldown/binding-darwin-arm64": "npm:1.2.8" - "@rolldown/binding-darwin-x64": "npm:1.2.8" - "@rolldown/binding-freebsd-x64": "npm:1.2.8" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.8" - "@rolldown/binding-linux-arm64-gnu": "npm:1.2.8" - "@rolldown/binding-linux-arm64-musl": "npm:1.2.8" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.8" - "@rolldown/binding-linux-s390x-gnu": "npm:1.2.8" - "@rolldown/binding-linux-x64-gnu": "npm:1.2.8" - "@rolldown/binding-linux-x64-musl": "npm:1.2.8" - "@rolldown/binding-openharmony-arm64": "npm:1.2.8" - "@rolldown/binding-win32-arm64-msvc": "npm:1.2.8" - "@rolldown/binding-win32-x64-msvc": "npm:1.2.8" +"rolldown@npm:~1.2.9": + version: 1.2.13 + resolution: "rolldown@npm:1.2.13" + dependencies: + "@oxc-project/types": "npm:=0.153.0" + "@rolldown/binding-android-arm-eabi": "npm:1.2.13" + "@rolldown/binding-android-arm64": "npm:1.2.13" + "@rolldown/binding-darwin-arm64": "npm:1.2.13" + "@rolldown/binding-darwin-x64": "npm:1.2.13" + "@rolldown/binding-freebsd-x64": "npm:1.2.13" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.13" + "@rolldown/binding-linux-arm64-gnu": "npm:1.2.13" + "@rolldown/binding-linux-arm64-musl": "npm:1.2.13" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.13" + "@rolldown/binding-linux-s390x-gnu": "npm:1.2.13" + "@rolldown/binding-linux-x64-gnu": "npm:1.2.13" + "@rolldown/binding-linux-x64-musl": "npm:1.2.13" + "@rolldown/binding-openharmony-arm64": "npm:1.2.13" + "@rolldown/binding-win32-arm64-msvc": "npm:1.2.13" + "@rolldown/binding-win32-x64-msvc": "npm:1.2.13" "@rolldown/pluginutils": "npm:^1.0.0" dependenciesMeta: "@rolldown/binding-android-arm-eabi": @@ -3270,7 +3308,7 @@ __metadata: optional: true bin: rolldown: ./bin/cli.mjs - checksum: 10c0/5a9c6b30a7ef0af257a963e6b0b95d5a60b23512b7dbcca617273bd63fb0892b88be6b33dc9a6cb66350f47d260eff6456af0b7afef34898767f3527ce0d967d + checksum: 10c0/20106c8531c4d90a88de8c2094885f1e2fd748cd05e3317d01292ab338ffa435d6acb678f4fdd8677d1b29be4212d29d3e3ca591ff06abd8423d817fe9e2729c languageName: node linkType: hard @@ -3369,13 +3407,6 @@ __metadata: languageName: node linkType: hard -"siginfo@npm:^2.0.0": - version: 2.0.0 - resolution: "siginfo@npm:2.0.0" - checksum: 10c0/3def8f8e516fbb34cb6ae415b07ccc5d9c018d85b4b8611e3dc6f8be6d1899f693a4382913c9ed51a06babb5201639d76453ab297d1c54a456544acf5c892e34 - languageName: node - linkType: hard - "signal-exit@npm:^3.0.2, signal-exit@npm:^3.0.7": version: 3.0.7 resolution: "signal-exit@npm:3.0.7" @@ -3407,10 +3438,10 @@ __metadata: languageName: node linkType: hard -"smol-toml@npm:1.7.0": - version: 1.7.0 - resolution: "smol-toml@npm:1.7.0" - checksum: 10c0/8eef246b9b96f278a181f6dd2a90c754304cb4cf92ccdfe1d2f714fb980fb3f539ba00283609e8fd2fbcf7c0d48a4ae76b36bc0de556ed286b2c865827a778e8 +"smol-toml@npm:1.8.0": + version: 1.8.0 + resolution: "smol-toml@npm:1.8.0" + checksum: 10c0/4e01dbfb7c7af142176b037ebedaccccafb8229cc873feaa47c184ee31073d86e30b4b1b0fe9a5a6d083ed3ce21615eda9e81d1f5d779ad8b2e2e9459b900aea languageName: node linkType: hard @@ -3421,6 +3452,13 @@ __metadata: languageName: node linkType: hard +"source-map-js@npm:^1.2.2": + version: 1.2.2 + resolution: "source-map-js@npm:1.2.2" + checksum: 10c0/d5d6dec62266834f83dd4f8a2606a196fb1a006ca5d53b0ef80ee513b7eba2f4e2ae241f4bc129ae7e9b80dea24f6e3d92b446b7e6e96be7653cab8888168a94 + languageName: node + linkType: hard + "stack-utils@npm:^2.0.6": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -3430,13 +3468,6 @@ __metadata: languageName: node linkType: hard -"stackback@npm:0.0.2": - version: 0.0.2 - resolution: "stackback@npm:0.0.2" - checksum: 10c0/89a1416668f950236dd5ac9f9a6b2588e1b9b62b1b6ad8dff1bfc5d1a15dbf0aafc9b52d2226d00c28dffff212da464eaeebfc6b7578b9d180cef3e3782c5983 - languageName: node - linkType: hard - "statuses@npm:^2.0.1, statuses@npm:^2.0.2, statuses@npm:~2.0.2": version: 2.0.2 resolution: "statuses@npm:2.0.2" @@ -3565,17 +3596,17 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:6.1.4": - version: 6.1.4 - resolution: "tinybench@npm:6.1.4" - checksum: 10c0/7a815318a02270a98247298ddd289b75c841725606c977f0b74749bc5ec811a44998267ccb60bd3deb23b551dbfaf4d979eb08e9b04fbc87ff571f9b39cc61c3 +"tinybench@npm:^6.1.4": + version: 6.2.2 + resolution: "tinybench@npm:6.2.2" + checksum: 10c0/f0e6391f4ca86875ce5a64510696323aa841c10495fdd1c6ca530457c7e77f2b3aa82d9d6f1553126420062b1008607257677ce2b25ff1948732a79d7a56514a languageName: node linkType: hard -"tinyexec@npm:1.3.0": - version: 1.3.0 - resolution: "tinyexec@npm:1.3.0" - checksum: 10c0/e9b89f97489d2aab2cef408da279e6b32547e738d1275032ccb8fd0028a006d93eb70fc51c6cffd9fc2f5aca6c2a273d8b6f73b52d46ee5116da6b94969ef958 +"tinyexec@npm:^1.3.0": + version: 1.3.1 + resolution: "tinyexec@npm:1.3.1" + checksum: 10c0/c590369cb3fa73cc18a3998caec8a00f9712d91309c881be3ac52b160fb2f80c7b1fbf3591858ab6abab47ad55385b0c86ec19982e32441a01f55298dab9ccd2 languageName: node linkType: hard @@ -3635,10 +3666,10 @@ __metadata: languageName: node linkType: hard -"uc.micro@npm:^2.0.0, uc.micro@npm:^2.1.0": - version: 2.1.0 - resolution: "uc.micro@npm:2.1.0" - checksum: 10c0/8862eddb412dda76f15db8ad1c640ccc2f47cdf8252a4a30be908d535602c8d33f9855dfcccb8b8837855c1ce1eaa563f7fa7ebe3c98fd0794351aab9b9c55fa +"typed-query-selector@npm:^2.12.3": + version: 2.12.3 + resolution: "typed-query-selector@npm:2.12.3" + checksum: 10c0/9748f111d22f351c593b478053ed6a7a68c0f9ce068208743aab001f635f873c7adeba343b4d6d29038b10dc00c166df27513c91e45bac298c280c8e966d4ccb languageName: node linkType: hard @@ -3744,7 +3775,7 @@ __metadata: languageName: node linkType: hard -"vfile-message@npm:^4.0.0": +"vfile-message@npm:^4.0.0, vfile-message@npm:^4.0.3": version: 4.0.3 resolution: "vfile-message@npm:4.0.3" dependencies: @@ -3764,19 +3795,19 @@ __metadata: languageName: node linkType: hard -"vite@npm:8.2.2": - version: 8.2.2 - resolution: "vite@npm:8.2.2" +"vite@npm:8.3.1": + version: 8.3.1 + resolution: "vite@npm:8.3.1" dependencies: fsevents: "npm:~2.3.3" lightningcss: "npm:^1.33.0" - picomatch: "npm:^4.0.5" - postcss: "npm:^8.5.26" - rolldown: "npm:~1.2.4" + picomatch: "npm:^4.0.7" + postcss: "npm:^8.5.28" + rolldown: "npm:~1.2.9" tinyglobby: "npm:^0.2.17" peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.4.0 || ^0.5.0 + "@vitejs/devtools": ^0.7.1 esbuild: ^0.27.0 || ^0.28.0 jiti: ">=1.21.0" less: ^4.0.0 @@ -3817,16 +3848,16 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/94cbbbdc38ad500dcb86b6202ddd14aa41d05c80739766cada9bbe250b410d1a27be433c9c491ed39744019471ac1e27a59908616a88c42f9787bdb6bdca49d2 + checksum: 10c0/a91f4fee1cd331912ee3ac45f49900044846e28b8632ae734fe1978630e643e503d04181b2aeac59f70556fc51137dd49179fd39cbeb72a3e5f0bce88d2bcd30 languageName: node linkType: hard -"vitest@npm:5.0.0": - version: 5.0.0 - resolution: "vitest@npm:5.0.0" +"vitest@npm:5.0.2": + version: 5.0.2 + resolution: "vitest@npm:5.0.2" dependencies: "@types/chai": "npm:^5.2.2" - "@vitest/mocker": "npm:5.0.0" + "@vitest/mocker": "npm:5.0.2" chai: "npm:^6.2.2" es-module-lexer: "npm:^2.3.2" expect-type: "npm:^1.4.0" @@ -3834,20 +3865,20 @@ __metadata: obug: "npm:^2.1.4" picomatch: "npm:^4.0.7" std-env: "npm:^4.2.0" - tinybench: "npm:6.1.4" - tinyexec: "npm:1.3.0" + tinybench: "npm:^6.1.4" + tinyexec: "npm:^1.3.0" tinyglobby: "npm:^0.2.17" - why-is-node-running: "npm:^2.3.0" + why-is-node-running: "npm:^3.2.1" peerDependencies: "@edge-runtime/vm": "*" "@opentelemetry/api": ^1.9.0 "@types/node": ^22.0.0 || >=24.0.0 - "@vitest/browser-playwright": 5.0.0 - "@vitest/browser-preview": 5.0.0 + "@vitest/browser-playwright": 5.0.2 + "@vitest/browser-preview": 5.0.2 "@vitest/browser-webdriverio": ^5.0.0-beta.5 || >=5.0.0 - "@vitest/coverage-istanbul": 5.0.0 - "@vitest/coverage-v8": 5.0.0 - "@vitest/ui": 5.0.0 + "@vitest/coverage-istanbul": 5.0.2 + "@vitest/coverage-v8": 5.0.2 + "@vitest/ui": 5.0.2 happy-dom: "*" jsdom: "*" vite: ^6.4.0 || ^7.0.0 || ^8.0.0 @@ -3878,7 +3909,7 @@ __metadata: optional: false bin: vitest: ./vitest.mjs - checksum: 10c0/de56a0f2e989949e42cdf31150ef5c0c138c04950d14b158f618f8bd4dc9b7f1e9a20c98a2763c9fef0d2b5a97d86456a73dd18ebb8b2b99dd0837efd8688634 + checksum: 10c0/e86919375db85ddecc6308076341f66a9d51c3b28aa7966ea6bcb0f45234b5e2883602c17e509abfa6d729aaf8113b3adf7b59a8316079c2c9a48dbb1b248897 languageName: node linkType: hard @@ -3889,10 +3920,10 @@ __metadata: languageName: node linkType: hard -"webdriver-bidi-protocol@npm:0.4.3": - version: 0.4.3 - resolution: "webdriver-bidi-protocol@npm:0.4.3" - checksum: 10c0/ff3c71ca637af8c604baaac99a685948513d736fe744c512d0e3b56afedbec4c51d2598d1cca712b91cd4f9c95f4ee582e8db3e458acc349f0e4d6b92f7134b9 +"webdriver-bidi-protocol@npm:1.0.1": + version: 1.0.1 + resolution: "webdriver-bidi-protocol@npm:1.0.1" + checksum: 10c0/0243dc8223617c92071c69c4e07b09f68fb2766500aa978ffd52e95a453351fbaed639e5394dd5ab4c5d080d38525848c27a5681cb430e19181eeecdbb2ffda4 languageName: node linkType: hard @@ -3934,15 +3965,12 @@ __metadata: languageName: node linkType: hard -"why-is-node-running@npm:^2.3.0": - version: 2.3.0 - resolution: "why-is-node-running@npm:2.3.0" - dependencies: - siginfo: "npm:^2.0.0" - stackback: "npm:0.0.2" +"why-is-node-running@npm:^3.2.1": + version: 3.2.3 + resolution: "why-is-node-running@npm:3.2.3" bin: why-is-node-running: cli.js - checksum: 10c0/1cde0b01b827d2cf4cb11db962f3958b9175d5d9e7ac7361d1a7b0e2dc6069a263e69118bd974c4f6d0a890ef4eedfe34cf3d5167ec14203dbc9a18620537054 + checksum: 10c0/312c87f0704765fe2bb680fcc1768807c39c987d8e94c363a05ea29b0cbea3de57c6595745c7969f73cca079a70303f88fb247f84749640d5b02310c0a4b2ecf languageName: node linkType: hard @@ -4006,28 +4034,30 @@ __metadata: languageName: node linkType: hard -"yaml-unist-parser@npm:^2.0.5": - version: 2.2.1 - resolution: "yaml-unist-parser@npm:2.2.1" +"yaml-unist-parser@npm:^3.1.0": + version: 3.2.1 + resolution: "yaml-unist-parser@npm:3.2.1" dependencies: - yaml: "npm:^1.10.2" - checksum: 10c0/7a1de393f8937e52df2f1e5341f8a06bad20f329a2b5c19aca5d7a898b139f5cac54c4dc21634d5f94ee2c4fc71fee7ef2075dec4949ddf42ee9a84e072b4f91 + yaml: "npm:^2.9.1" + checksum: 10c0/efcab685d44df2a92d7a13c060aef379668aad2b223fa26d2dd0d44da6601e3aad63d21d79b974f49276d2378610c6ee603d94b36a1f39c4af50d84fe4a14d7b languageName: node linkType: hard -"yaml@npm:2.9.0, yaml@npm:^2.8.0": - version: 2.9.0 - resolution: "yaml@npm:2.9.0" +"yaml@npm:2.9.1, yaml@npm:^2.9.1": + version: 2.9.1 + resolution: "yaml@npm:2.9.1" bin: yaml: bin.mjs - checksum: 10c0/f340718df45e97a9551b9bf9dac61c80050bc464513b710debfb5067c380c8472e3b67809cffacb4ab5ffb5e66ef9310816c88b05f371cec60abfedd8c88e0a2 + checksum: 10c0/9d06676ef02b89559a8b10a71882bd2cdae81e8393dc8dbc871615c3259475d9609ad973d19cb3c9e71e72d6206e3d1e7aa241c7e55f3d16fd2e77db305827d6 languageName: node linkType: hard -"yaml@npm:^1.10.2": - version: 1.10.3 - resolution: "yaml@npm:1.10.3" - checksum: 10c0/c309ff85a0a569a981d71ab9cf0fef68672a16b9cdf40639d1c3b30034f6cd16ee428602bd6d64ecf006f8c8bee499023cac236538f79898aa99fb5db529a2ed +"yaml@npm:^2.8.0": + version: 2.9.0 + resolution: "yaml@npm:2.9.0" + bin: + yaml: bin.mjs + checksum: 10c0/f340718df45e97a9551b9bf9dac61c80050bc464513b710debfb5067c380c8472e3b67809cffacb4ab5ffb5e66ef9310816c88b05f371cec60abfedd8c88e0a2 languageName: node linkType: hard @@ -4045,7 +4075,21 @@ __metadata: languageName: node linkType: hard -"yargs@npm:18.1.0, yargs@npm:^18.0.0": +"yargs@npm:18.2.0": + version: 18.2.0 + resolution: "yargs@npm:18.2.0" + dependencies: + cliui: "npm:^9.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + string-width: "npm:^8.2.1" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^22.0.0" + checksum: 10c0/7419338c3c00f9143ec6b6ab168335061c6f5342d161642aec23ff119e28cac1c417e0eca1d7dc82fd084f07207cc5d34c7d8315f605c0e3dbf12c350e405f3f + languageName: node + linkType: hard + +"yargs@npm:^18.0.0": version: 18.1.0 resolution: "yargs@npm:18.1.0" dependencies: @@ -4087,6 +4131,13 @@ __metadata: languageName: node linkType: hard +"zod@npm:^4.6.5": + version: 4.6.7 + resolution: "zod@npm:4.6.7" + checksum: 10c0/4ce2eb14034317b7254e347ca37b5ad591cf8333147030cf05b9b5d31692d45073f7f2747aa50cf8c6b29012194d2b22978cecc89969cf34a0d18e89d0ee7d7b + languageName: node + linkType: hard + "zwitch@npm:^2.0.0": version: 2.0.4 resolution: "zwitch@npm:2.0.4" From 5f7bfe35bc4b6b86c94e1a2ed5aa354d087ed657 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 14 Oct 2026 16:42:09 -0700 Subject: [PATCH 10/11] Use shared md2html fixture runner Keep the OpenAPI-specific rendering fixtures in this repository while delegating fixture discovery and exact-output comparison to build-infra.\n\nCo-authored-by: Codex --- CONTRIBUTING.md | 2 +- spec.config.json | 10 +++++++ tests/md2html/md2html.test.mjs | 50 ++-------------------------------- 3 files changed, 13 insertions(+), 49 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d2f87a526e..3c89b7c767 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -209,7 +209,7 @@ Before creating a pull request or marking a draft pull request as ready for revi | `yarn validate-markdown` | markdownlint + link check only — fast loop while editing | | `yarn format-markdown` | auto-fix markdownlint violations | | `yarn build-src` | full check: validation, HTML build, schema publish | - | `yarn test` | runs the JSON Schema and build tooling test suites | + | `yarn test` | runs the repository's JSON Schema and Markdown rendering fixture tests | 5. After `yarn build-src`, open output file `deploy-preview/oas.html` with a browser and check your changes diff --git a/spec.config.json b/spec.config.json index 126748e687..31a6ade662 100644 --- a/spec.config.json +++ b/spec.config.json @@ -39,6 +39,16 @@ "schema.yaml", "schema-base.yaml" ], + "tests": { + "md2html": { + "fixtures": "tests/md2html/fixtures", + "otherVersions": [ + "path/31.0.0.md", + "path/30.0.1.md", + "path/30.0.0.md" + ] + } + }, "release": { "sourcePath": "src/oas.md", "releaseHistoryNote": "$releaseType of the OpenAPI Specification $version", diff --git a/tests/md2html/md2html.test.mjs b/tests/md2html/md2html.test.mjs index b9dbc91866..6b20e41320 100644 --- a/tests/md2html/md2html.test.mjs +++ b/tests/md2html/md2html.test.mjs @@ -1,49 +1,3 @@ -import { readdirSync, readFileSync } from "node:fs"; -import { execFile } from "node:child_process"; -import { resolve } from "node:path"; -import { describe, test, expect } from "@oai/build-infra/test"; -import assert from "node:assert"; +import { registerMd2htmlFixtureTests } from "@oai/build-infra/test/md2html"; -const folder = "./tests/md2html/fixtures/"; -describe("md2html", async () => { - readdirSync(folder, { withFileTypes: true }) - .filter((entry) => entry.isFile() && /\.md$/.test(entry.name)) - .forEach((entry) => { - test(entry.name, async () => { - const expected = readFileSync( - folder + entry.name.replace(".md", ".html"), - "utf8", - ); - const output = await md2html( - [ - "--spec-config", - "spec.config.json", - "--maintainers", - entry.name.replace(".md", ".maintainers"), - entry.name, - "path/31.0.0.md\npath/30.0.1.md\npath/30.0.0.md", - ], - folder, - ); - expect(output.stdout).to.equal(expected); - }); - }); -}); - -function md2html(args, cwd) { - return new Promise((res) => { - execFile( - "node", - [`${resolve("./node_modules/@oai/build-infra/src/md2html/md2html.js")}`, ...args], - { cwd }, - (error, stdout, stderr) => { - res({ - code: error?.code || 0, - error, - stdout, - stderr, - }); - }, - ); - }); -} +registerMd2htmlFixtureTests(); From 25a817a1fd1ca787253fcfe5716a8469a8422327 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 14 Oct 2026 16:53:24 -0700 Subject: [PATCH 11/11] Test rendering with the repository config Point the md2html fixtures at the production specification configuration and remove the redundant fixture-local copy.\n\nCo-authored-by: Codex --- spec.config.json | 1 + tests/md2html/fixtures/spec.config.json | 35 ------------------------- 2 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 tests/md2html/fixtures/spec.config.json diff --git a/spec.config.json b/spec.config.json index 31a6ade662..4b7e79f88c 100644 --- a/spec.config.json +++ b/spec.config.json @@ -42,6 +42,7 @@ "tests": { "md2html": { "fixtures": "tests/md2html/fixtures", + "config": "spec.config.json", "otherVersions": [ "path/31.0.0.md", "path/30.0.1.md", diff --git a/tests/md2html/fixtures/spec.config.json b/tests/md2html/fixtures/spec.config.json deleted file mode 100644 index b270bc3542..0000000000 --- a/tests/md2html/fixtures/spec.config.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "slug": "oas", - "shortName": "OAS", - "titleName": "OpenAPI Specification", - "titleSuffix": "| Introduction, Definitions, & More", - "abstractQuestion": "What is the OpenAPI Specification?", - "abstractText": "The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs, which allows both humans and computers to discover and understand the capabilities of a service without requiring access to source code, additional documentation, or inspection of network traffic. When properly defined via OpenAPI, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interface descriptions have done for lower-level programming, the OpenAPI Specification removes guesswork in calling a service.", - "metaDescription": "The OpenAPI Specification (OAS) defines a standard, programming language-agnostic interface description for HTTP APIs.", - "copyright": "the Linux Foundation", - "edDraftURI": "https://github.com/OAI/OpenAPI-Specification/", - "logo": { - "src": "https://raw.githubusercontent.com/OAI/OpenAPI-Style-Guide/master/graphics/bitmap/OpenAPI_Logo_Pantone.png", - "alt": "OpenAPI Initiative", - "height": 48, - "url": "https://openapis.org/" - }, - "participateLinks": [ - { - "value": "GitHub OAI/OpenAPI-Specification", - "href": "https://github.com/OAI/OpenAPI-Specification/" - }, - { - "value": "File a bug", - "href": "https://github.com/OAI/OpenAPI-Specification/issues" - }, - { - "value": "Commit history", - "href": "https://github.com/OAI/OpenAPI-Specification/commits/main/versions/30.0.1.md" - }, - { - "value": "Pull requests", - "href": "https://github.com/OAI/OpenAPI-Specification/pulls" - } - ] -}