diff --git a/.github/workflows/push-docs.yml b/.github/workflows/push-docs.yml index ce45e25c..470d5d4a 100644 --- a/.github/workflows/push-docs.yml +++ b/.github/workflows/push-docs.yml @@ -22,7 +22,7 @@ jobs: - name: Checkout docs uses: actions/checkout@v6 with: - path: docs + path: docs-repo repository: nanoforge-dev/docs token: ${{ secrets.ACTIONS_KEY }} @@ -43,21 +43,17 @@ jobs: git config --global user.name "github-actions[bot]" git config --global user.email "username@users.noreply.github.com" - - name: install doxygen - uses: ssciwr/doxygen-install@v2 - - name: install deps run: cd engine && pnpm i - name: synchronize docs run: | cd engine - ./scripts/build_docs.sh + pnpm run docs cd .. - rm docs/engine -rf - mkdir -p docs/engine - cp -r engine/docs/* docs/engine - cd docs + mkdir -p docs-repo/docs/engine + rsync -av engine/docs/* docs-repo/docs/engine/ + cd docs-repo git add . || echo "No changes to add" git commit -m "chore(engine): updating docs" || echo "No changes to commit" git push origin main || echo "No changes to push" diff --git a/.gitignore b/.gitignore index 55fac4e5..c46f6217 100644 --- a/.gitignore +++ b/.gitignore @@ -236,3 +236,5 @@ docs/ecs-lib/api/typescript.md emsdk-cache/ +.vscode +.tsdocs \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index f44cc24f..881beaab 100644 --- a/.prettierignore +++ b/.prettierignore @@ -19,3 +19,4 @@ coverage/ CHANGELOG.md emsdk-cache/ +docs/api diff --git a/docs/.gitignore b/docs/.gitignore index cef6e7b6..eedd89b4 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1 @@ -Doxyfile \ No newline at end of file +api diff --git a/docs/asset-manager/index.rst b/docs/asset-manager/index.rst deleted file mode 100644 index 53d2a2f5..00000000 --- a/docs/asset-manager/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -asset-manager -================== - -.. toctree:: - - - api/index.md diff --git a/docs/common/index.rst b/docs/common/index.rst deleted file mode 100644 index 92d8a26a..00000000 --- a/docs/common/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -common -================== - -.. toctree:: - - - api/index.md diff --git a/docs/config/index.rst b/docs/config/index.rst deleted file mode 100644 index 69f60269..00000000 --- a/docs/config/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -config -================== - -.. toctree:: - - - api/index.md diff --git a/docs/core/index.rst b/docs/core/index.rst deleted file mode 100644 index 6c92d53b..00000000 --- a/docs/core/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -core -================== - -.. toctree:: - - - api/index.md diff --git a/docs/documentation.mdx b/docs/documentation.mdx new file mode 100644 index 00000000..cd5dbce8 --- /dev/null +++ b/docs/documentation.mdx @@ -0,0 +1,11 @@ +--- +title: "Documentation" +icon: "book" +description: "Overview of the engine documentation" +--- + +# Documentation + +The documentation for the engine is separated across the different libraries of the engine. Everything is then gathered into this site and published from the repository automatically. + +This documentation is written in reStructuredText and is now being migrated to MDX so it is easier to maintain alongside the rest of the site. Sphinx is used to generate the rendered documentation. diff --git a/docs/documentation.rst b/docs/documentation.rst deleted file mode 100644 index db4f6259..00000000 --- a/docs/documentation.rst +++ /dev/null @@ -1,7 +0,0 @@ -Documentation -============= - -The documentation for the engine is seperated between the different libraries of the engine. -Then everything is packed up and put into this site. The documentation is handled on the engine repository and then automatically pushed. - -This documentation is written in restructured text in order for it to be easier to operate with. We use sphinx to generate the relevant generated documentation. diff --git a/docs/ecs-client/index.rst b/docs/ecs-client/index.rst deleted file mode 100644 index f95c10ee..00000000 --- a/docs/ecs-client/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -ecs-client -================== - -.. toctree:: - - - api/index.md diff --git a/docs/ecs-lib/index.rst b/docs/ecs-lib/index.rst deleted file mode 100644 index 12c7339a..00000000 --- a/docs/ecs-lib/index.rst +++ /dev/null @@ -1,8 +0,0 @@ -ECS Documentation -================= - -.. toctree:: - - - wasm.rst - api/typescript.rst diff --git a/docs/ecs-lib/wasm.rst b/docs/ecs-lib/wasm.rst deleted file mode 100644 index bd9ea6b2..00000000 --- a/docs/ecs-lib/wasm.rst +++ /dev/null @@ -1,11 +0,0 @@ -C++ classes ------------ - -.. doxygenclass:: nfo::Registry - :members: - -.. doxygenclass:: nfo::Entity - :members: - -.. doxygenclass:: nfo::SparseArray - :members: diff --git a/docs/ecs-server/index.rst b/docs/ecs-server/index.rst deleted file mode 100644 index 3cabe153..00000000 --- a/docs/ecs-server/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -ecs-server -================== - -.. toctree:: - - - api/index.md diff --git a/docs/graphics-2d/index.rst b/docs/graphics-2d/index.rst deleted file mode 100644 index eb39a82a..00000000 --- a/docs/graphics-2d/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -graphics-2d -================== - -.. toctree:: - - - api/index.md diff --git a/docs/how_to_use.mdx b/docs/how_to_use.mdx new file mode 100644 index 00000000..d3992cdf --- /dev/null +++ b/docs/how_to_use.mdx @@ -0,0 +1,17 @@ +--- +title: "Introduction to using the Engine" +icon: "book" +description: "Getting started with the engine" +--- + +# Introduction to using the Engine + +Whether you work on this engine as a developer or you want to use it, you will want a test project. This page is a walkthrough for setting up a basic project. + +## As a developer on the engine + +As a developer you want to be able to use your changes in your own project. Therefore it is recommended to use the provided [CLI](https://github.com/NanoForge-dev/CLI). + +## As a user + +As a user you can either use the template and change the dependency location, or create a project and add the Nanoforge dependencies. It is recommended to use Bun as a package manager. diff --git a/docs/how_to_use.rst b/docs/how_to_use.rst deleted file mode 100644 index 68beebb7..00000000 --- a/docs/how_to_use.rst +++ /dev/null @@ -1,20 +0,0 @@ -Introduction to using the Engine -================================ - -Whether you work on this engine as a devlopper or you wanna use this -engine you gonna want to have a test project. This is a walkthrough on -how to setup a basic project - -As a devlopper on the engine ----------------------------- - -As a devlopper you want to be able to use your changes in your project. -Therefore it is recommended to use the provided `cli `__ - -As a user ---------- - -As a user you can either use the template and change the dependencies -location. Or you can create a project and add the nanoforge -dependencies. Note that it is recommended to use bun as a package -manager. diff --git a/docs/index.mdx b/docs/index.mdx new file mode 100644 index 00000000..b2435844 --- /dev/null +++ b/docs/index.mdx @@ -0,0 +1,32 @@ +--- +title: "Engine" +icon: "book" +description: "Nanoforge engine documentation" +--- + +# Engine + +This documentation covers the engine, its packages, and the surrounding usage guides. + +## Start Here + +- [Documentation](documentation.mdx) +- [How to Use](how_to_use.mdx) + +## Packages + +- [Registry](registry/index.mdx) +- [Network](network/index.mdx) +- [Asset Manager](asset-manager/index.mdx) +- [Common](common/index.mdx) +- [Config](config/index.mdx) +- [Core](core/index.mdx) +- [ECS Client](ecs-client/index.mdx) +- [ECS Server](ecs-server/index.mdx) +- [ECS Lib](ecs-lib/index.mdx) +- [Graphics 2D](graphics-2d/index.mdx) +- [Input](input/index.mdx) +- [Music](music/index.mdx) +- [Sound](sound/index.mdx) +- [Network Client](network-client/index.mdx) +- [Network Server](network-server/index.mdx) diff --git a/docs/index.rst b/docs/index.rst deleted file mode 100644 index 50d1b70f..00000000 --- a/docs/index.rst +++ /dev/null @@ -1,25 +0,0 @@ -Engine -====== - -.. toctree:: - - documentation.rst - how_to_use.rst - registry/index.rst - network/index.rst - asset-manager/index.rst - common/index.rst - config/index.rst - core/index.rst - ecs-client/index.rst - ecs-server/index.rst - ecs-lib/index.rst - graphics-2d/index.rst - input/index.rst - music/index.rst - sound/index.rst - network-client/index.rst - network-server/index.rst - -In this doc you will find both the how to use and why use this engine as well as its library. -To understand how to use this engine please refer to :doc:`/how_to_use` diff --git a/docs/input/index.rst b/docs/input/index.rst deleted file mode 100644 index 63938683..00000000 --- a/docs/input/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -input -================== - -.. toctree:: - - - api/index.md diff --git a/docs/music/index.rst b/docs/music/index.rst deleted file mode 100644 index 3f765c63..00000000 --- a/docs/music/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -music -================== - -.. toctree:: - - - api/index.md diff --git a/docs/network-client/index.rst b/docs/network-client/index.rst deleted file mode 100644 index 42220886..00000000 --- a/docs/network-client/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -network-client -================== - -.. toctree:: - - - api/index.md diff --git a/docs/network-server/index.rst b/docs/network-server/index.rst deleted file mode 100644 index 2c4fc798..00000000 --- a/docs/network-server/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -network-server -================== - -.. toctree:: - - - api/index.md diff --git a/docs/network/index.mdx b/docs/network/index.mdx new file mode 100644 index 00000000..b90019ae --- /dev/null +++ b/docs/network/index.mdx @@ -0,0 +1,23 @@ +--- +title: "Network Overview" +icon: "book" +description: "Overview of the engine networking docs" +--- + +# Network Overview + +This page describes the engine's networking libraries: `network-server` and `network-client`. Together they provide a small, pragmatic networking layer used by the example `pong-network` game. + +## Goals + +- Keep the protocol minimal and predictable for multiplayer games. +- Use well-understood transports: TCP for reliable control messages and UDP for low-latency, best-effort state updates. +- Provide clear validation hooks such as magic values and versioning so malformed packets are ignored early. + +## Related Pages + +- [Network Client](network-client.mdx) +- [Network Server](network-server.mdx) +- [Packet Framing](packet-framing.mdx) +- [Network Server API](network-server-api.mdx) +- [Network Client API](network-client-api.mdx) diff --git a/docs/network/index.rst b/docs/network/index.rst deleted file mode 100644 index f9296a96..00000000 --- a/docs/network/index.rst +++ /dev/null @@ -1,76 +0,0 @@ -Network Overview -================ - -.. toctree:: - - network-client - network-server - packet-framing - network-server-api - network-client-api - -This page describes the global design and rationale for the engine's networking -libraries: the `network-server` and `network-client` TypeScript packages. These -libraries provide a small, pragmatic networking layer used by the example -`pong-network` game and designed to be easy to understand and integrate. - -Goals ------ - -- Minimal, predictable protocol for multiplayer games. -- Use well-understood transports: TCP for reliable control messages and UDP - for low-latency, best-effort state updates. -- Provide clear validation hooks (magic value, versioning) to avoid processing - ```restructuredtext - Network Overview - ================ - - This page explains how the engine's TypeScript networking packages actually - work and the rationale behind important implementation choices. The two - packages are `network-server` and `network-client` and are used by the - `example/pong-network` project. - - Design summary - -------------- - - - Two logical transports are provided: a reliable, ordered channel (called - "TCP" in the packages) and an unreliable, unordered channel (called - "UDP"). Important: these names refer to channel semantics in the library, - not to raw OS sockets. Implementation details: - - The reliable channel is implemented over WebSocket (node `ws` and - browser `WebSocket`) to provide an ordered, byte-stream-like channel. - - The unreliable channel is implemented as a WebRTC `RTCDataChannel` - created with `ordered: false, maxRetransmits: 0`. WebSocket is used for - signaling/ICE exchange between client and server. - -- For packet framing and terminator semantics see the dedicated note: - `docs/network/packet-framing.rst`. - - Why these choices - ------------------ - - - WebSocket for reliable messages: WebSocket is universally available in - browsers and easy to host in Node.js. Using it for the "TCP" channel avoids - needing a separate TCP server and simplifies browser + native client parity. - - - WebRTC DataChannel for unreliable messages: Browsers cannot open raw UDP - sockets; WebRTC provides a browser-friendly unreliable datagram channel - with low latency. The repository uses WebSocket for ICE signaling and - negotiates a `RTCDataChannel` for actual game-state messages. - - - Terminator (magic value) appended at packet end: appending a terminator is - robust against fragmented transport frames. Because WebSocket and RTC - DataChannels can split or aggregate application messages, a terminator - allows the receiver to detect full logical packets regardless of chunking. - - - Configurable `magicValue`: The default (`PACKET_END`) is a human-readable - sentinel that makes debugging easier; it is configurable via the server or - client config objects if you prefer a shorter or binary marker. - - Serialization and extensibility - ------------------------------- - - - Example code uses JSON payloads for clarity (easy to inspect and debug). - The transport layer operates on `Uint8Array` buffers, so you can replace - JSON with any binary encoding for - production. diff --git a/docs/network/network-client-api.mdx b/docs/network/network-client-api.mdx new file mode 100644 index 00000000..d90df6e2 --- /dev/null +++ b/docs/network/network-client-api.mdx @@ -0,0 +1,63 @@ +--- +title: "network-client API" +icon: "book" +description: "API reference for the client networking package" +--- + +# network-client API + +## TCPClient + +### connect() + +Initiate a WebSocket connection to the server, for example `ws://:`. + +Returns: `Promise` + +### isConnected() + +Return `true` when the underlying WebSocket is open. + +Returns: `boolean` + +### sendData(data) + +Send a payload to the server. + +Parameter `data`: `Uint8Array` raw payload bytes. + +Returns: `void` + +### getReceivedPackets() + +Return an array of complete packets that were reassembled from received chunks. + +Returns: `Uint8Array[]` + +## UDPClient + +### connect() + +Open a WebSocket for signaling, create an `RTCPeerConnection`, and initiate an SDP offer. + +Returns: `Promise` + +### isConnected() + +Return `true` when the `RTCDataChannel` is open. + +Returns: `boolean` + +### sendData(data) + +Send a payload on the data channel. + +Parameter `data`: `Uint8Array` raw payload bytes. + +Returns: `void` + +### getReceivedPackets() + +Return an array of complete packets reassembled from received data-channel chunks. + +Returns: `Uint8Array[]` diff --git a/docs/network/network-client-api.rst b/docs/network/network-client-api.rst deleted file mode 100644 index 77382792..00000000 --- a/docs/network/network-client-api.rst +++ /dev/null @@ -1,49 +0,0 @@ -TCPClient -~~~~~~~~~ - -**connect** () - Initiate a WebSocket connection to the server (e.g. `ws://:`). - - :return: Promise - -**isConnected** () - Return `true` when the underlying WebSocket is open. - - :return: boolean - -**sendData** (*data*) - Send a payload to the server. - - :param data: Uint8Array — raw payload bytes. - :return: void - -**getReceivedPackets** () - Return an array of complete packets that were reassembled from received chunks. - - :return: Uint8Array[] — array of packet buffers. - - -UDPClient -~~~~~~~~~ - -**connect** () - Open a WebSocket for signaling, create an RTCPeerConnection and initiate an SDP offer. - - :return: Promise - -**isConnected** () - Return `true` when the RTCDataChannel is open. - - :return: boolean - -**sendData** (*data*) - Send a payload on the data channel. - - :param data: Uint8Array — raw payload bytes. - :return: void - -**getReceivedPackets** () - Return an array of complete packets reassembled from received data-channel chunks. - - :return: Uint8Array[] — array of packet buffers. - diff --git a/docs/network/network-client.mdx b/docs/network/network-client.mdx new file mode 100644 index 00000000..6cb664dd --- /dev/null +++ b/docs/network/network-client.mdx @@ -0,0 +1,59 @@ +--- +title: "Client Networking (network-client)" +icon: "book" +description: "How the client-side networking package works" +--- + +# Client Networking (network-client) + +This document describes how the `network-client` package connects to a `network-server` instance and the concrete APIs used from client-side code. + +## Overview + +A client connects to a single server instance. The package uses one TCP/WebSocket control channel and can also negotiate a single WebRTC data channel for unreliable traffic. + +Client responsibilities in a game are typically: + +- Initiate a TCP connection and send control commands such as join, play, and input. +- Optionally negotiate a WebRTC data channel for receiving server snapshots or sending low-latency updates. + +## Example + +It works the same with UDP: + +```javascript +// Wait for connection to be established +async function waitForConnection() { + if (network.tcp?.isConnected()) return; + + return new Promise((resolve) => { + const check = () => { + if (network.tcp.isConnected()) { + resolve(); + } else { + setTimeout(check, 50); + } + }; + + check(); + }); +} + +await waitForConnection(); + +// Send a JSON-encoded packet +network.tcp.sendData(new TextEncoder().encode(JSON.stringify({ hello: "world" }))); + +// Receive raw server packets +const latestPackets = getReceivedPackets(); + +// Decode packets if encoded as JSON +const decodedPackets = latestPackets.map((packet) => { + return JSON.parse(new TextDecoder().decode(packet)); +}); +``` + +## Notes + +- See [Network Client API](network-client-api.mdx) for the full list of available functions. +- For packet framing and terminator semantics, see [Packet Framing](packet-framing.mdx). diff --git a/docs/network/network-client.rst b/docs/network/network-client.rst deleted file mode 100644 index 97bf60b5..00000000 --- a/docs/network/network-client.rst +++ /dev/null @@ -1,58 +0,0 @@ -Client Networking (network-client) -================================== - -This document describes how the `network-client` package actually connects -to a `NetworkServerLibrary` instance and the concrete APIs you will use from -client-side code. - -Overview --------- - -A client connects to a single server instance (one TCP/WebSocket control -channel and optionally a single WebRTC data channel for unreliable traffic). -Client responsibilities in a game are typically: - -- Initiate a TCP connection and send control commands (join/play/input). -- Optionally negotiate a WebRTC data channel for receiving server snapshots - or sending low-latency updates. - -Example -------- - -It works exactly the same with UDP - -.. code-block:: javascript - - // Wait for connection to be established - async function waitForConnection(): Promise { - if (network.tcp?.isConnected()) return; - - return new Promise((resolve) => { - const check = () => { - if (network.tcp.isConnected()) { - resolve(); - } else { - setTimeout(check, 50); - } - }; - check(); - }); - } - await waitForConnection(); - - // Send a json encoded packet - network.tcp.sendData(new TextEncoder().encode(JSON.stringify({ hello: 'world' }))); - - // Receive raw server packets - const latestsPackets = getReceivedPackets(); - - // Decode packets if encoded in json - const decodedPackets = latestsPackets.map((packet) => { - return JSON.parse(new TextDecoder().decode(packet)); - }); - -Notes ------ - -- See `docs/network/network-client-api.rst` for the exact list available functions. -- For packet framing/terminator semantics see `docs/network/packet-framing.rst`. \ No newline at end of file diff --git a/docs/network/network-server-api.mdx b/docs/network/network-server-api.mdx new file mode 100644 index 00000000..c8243997 --- /dev/null +++ b/docs/network/network-server-api.mdx @@ -0,0 +1,83 @@ +--- +title: "network-server API" +icon: "book" +description: "API reference for the server networking package" +--- + +# network-server API + +## TCPServer + +### listen() + +Start the WebSocket server and begin accepting clients. + +Returns: `void` + +### getConnectedClients() + +Return a snapshot array of numeric client IDs currently connected. + +Returns: `number[]` + +### sendToEverybody(data) + +Send a payload to every connected client. + +Parameter `data`: `Uint8Array` raw payload bytes. + +Returns: `void` + +### sendToClient(clientId, data) + +Send a payload to the client identified by `clientId`. + +Parameter `clientId`: `number` numeric client identifier. + +Parameter `data`: `Uint8Array` payload bytes. + +Returns: `void` + +### getReceivedPackets() + +Parse and return complete packets received from each client. Each packet is a `Uint8Array` buffer. + +Returns: `Map` + +## UDPServer + +### listen() + +Start the signaling WebSocket and accept incoming client offers. + +Returns: `void` + +### getConnectedClients() + +Return a snapshot array of client IDs with active data channels. + +Returns: `number[]` + +### sendToEverybody(data) + +Send a payload to every connected data channel. + +Parameter `data`: `Uint8Array` raw payload bytes. + +Returns: `void` + +### sendToClient(clientId, data) + +Send a payload to a single client data channel. + +Parameter `clientId`: `number` + +Parameter `data`: `Uint8Array` + +Returns: `void` + +### getReceivedPackets() + +Parse incoming channel chunks and return a map of complete packets per client. + +Returns: `Map` diff --git a/docs/network/network-server-api.rst b/docs/network/network-server-api.rst deleted file mode 100644 index 4b8e4706..00000000 --- a/docs/network/network-server-api.rst +++ /dev/null @@ -1,64 +0,0 @@ -TCPServer -~~~~~~~~~ - -**listen** () - Start the WebSocket server and begin accepting clients. - - :return: void - -**getConnectedClients** () - Return a snapshot array of numeric client IDs currently connected. - - :return: number[] — an array of client IDs. - -**sendToEverybody** (*data*) - Send a payload to every connected client. - - :param data: Uint8Array — raw payload bytes. - :return: void - :throws: none (errors are logged, not thrown) - -**sendToClient** (*clientId, data*) - Send a payload to the client identified by `clientId`. - - :param clientId: number — numeric client identifier. - :param data: Uint8Array — payload bytes. - :return: void - :throws: none (logs if client unknown) - -**getReceivedPackets** () - Parse and return complete packets received from each client. Each packet is a `Uint8Array` buffer. - - :return: Map — mapping client ID to array of packets. - - -UDPServer -~~~~~~~~~ - -**listen** () - Start the signaling WebSocket and accept incoming client offers (SDP/ICE). - - :return: void - -**getConnectedClients** () - Return a snapshot array of client IDs with active data channels. - - :return: number[] — list of client IDs. - -**sendToEverybody** (*data*) - Send a payload to every connected data channel. - - :param data: Uint8Array — raw payload bytes. - :return: void - -**sendToClient** (*clientId, data*) - Send a payload to a single client data channel. - - :param clientId: number - :param data: Uint8Array - :return: void - -**getReceivedPackets** () - Parse incoming channel chunks and return a map of complete packets per client. - - :return: Map — mapping client ID to array of packets. diff --git a/docs/network/network-server.mdx b/docs/network/network-server.mdx new file mode 100644 index 00000000..7bdb4323 --- /dev/null +++ b/docs/network/network-server.mdx @@ -0,0 +1,44 @@ +--- +title: "Server Networking (network-server)" +icon: "book" +description: "How the server-side networking package works" +--- + +# Server Networking (network-server) + +This document explains the `network-server` package implementation and the APIs used from server-side code. + +## Overview + +The server listens on configured ports and accepts client connections. A single server process can accept many clients, and typical responsibilities in a game are: + +- Accept reliable control messages from clients over the TCP/WebSocket channel. +- Optionally establish `RTCPeerConnection`s via WebSocket signaling to receive unreliable, unordered data channels for low-latency state updates. + +## Example + +It works the same with UDP: + +```javascript +// Send everybody a JSON-encoded packet +network.tcp.sendToEverybody(new TextEncoder().encode(JSON.stringify({ type: "are you here" }))); + +// Check connected clients +const connectedClients = getConnectedClients(); + +// Receive all packets +const allPackets = network.tcp.getReceivedPackets(); + +// Get first client packets +const firstClientPackets = map.get(connectedClients[0]); + +// Decode packets if encoded as JSON +const decodedPackets = firstClientPackets.map((packet) => { + return JSON.parse(new TextDecoder().decode(packet)); +}); +``` + +## Notes + +- See [Network Server API](network-server-api.mdx) for the full list of available functions. +- For packet framing and terminator semantics, see [Packet Framing](packet-framing.mdx). diff --git a/docs/network/network-server.rst b/docs/network/network-server.rst deleted file mode 100644 index 12112e5e..00000000 --- a/docs/network/network-server.rst +++ /dev/null @@ -1,49 +0,0 @@ -Server Networking (network-server) -================================== - -This document explains the actual `network-server` package implementation and -the APIs you will use from server-side code. - -Overview --------- - -The server listens on configured ports and accepts client connections. -A single server process can accept many clients; typical server responsibilities -in a game are: - -- Accept reliable control messages from clients over the TCP (WebSocket) channel. -- Optionally establish `RTCPeerConnection`s (via WebSocket signaling) to receive - unreliable, unordered data channels for low-latency state updates. - -Example --------------------------------------------------- - -It works exactly the same with UDP - -.. code-block:: javascript - // Send everybody a json encoded packet - network.tcp.sendToEverybody( - new TextEncoder().encode(JSON.stringify( - { type: "are you here" } - )) - ); - - // Check connected clients - const connectedClients = getConnectedClients(); - - // Receive all packets - const allPackets = network.tcp.getReceivedPackets(); - - // Get first client packets - const firstClientPackets = map.get(connectedClients[0]); - - // Decode packets if encoded in json - const decodedPackets = firstClientPackets.map((packet) => { - return JSON.parse(new TextDecoder().decode(packet)); - }); - -Notes ------ - -- See `docs/network/network-server-api.rst` for the exact list available functions. -- For packet framing and terminator semantics see `docs/network/packet-framing.rst`. \ No newline at end of file diff --git a/docs/network/packet-framing.mdx b/docs/network/packet-framing.mdx new file mode 100644 index 00000000..871678f4 --- /dev/null +++ b/docs/network/packet-framing.mdx @@ -0,0 +1,34 @@ +--- +title: "Packet Framing" +icon: "book" +description: "How packets are framed and reassembled" +--- + +# Packet Framing + +This note explains how packets are framed and reassembled in the network packages. The framing strategy is simple and robust against transport fragmentation or aggregation. + +## Concept + +- Each logical packet is a payload of bytes that the application wants to send, whether JSON or binary. +- Before sending, the library appends a configurable terminator string, or magic value, to the end of the payload. The default value in the project config is `PACKET_END`. +- The terminator is applied as bytes using UTF-8 encoding, so it becomes a unique byte suffix that marks the end of a logical packet. + +## Why Use an End Terminator + +- Transports like WebSocket and RTC DataChannel may split or combine application messages into arbitrary chunks. A terminator lets a receiver reliably detect the end of each logical packet regardless of how the transport fragments or aggregates bytes. +- A short, human-readable terminator makes debugging easier. +- The terminator is configurable so you can choose a value that does not collide with your payload contents, which matters especially for raw or binary payloads. + +## Sender Logic + +1. Serialize the application message into bytes, for example JSON to UTF-8 bytes or a binary codec output. +2. Append the configured terminator bytes to the end of the payload. +3. Send the resulting buffer on the transport, either WebSocket or DataChannel. + +## Receiver Logic + +1. Accumulate incoming chunks of bytes into a per-connection buffer. +2. Repeatedly search the accumulated buffer for the terminator sequence. +3. For each occurrence, extract bytes from the start of the buffer up to, but not including, the terminator. That is a complete logical packet. +4. Remove the extracted packet and trailing terminator from the buffer, then continue searching. Keep any leftover bytes, which represent a partial packet, for the next incoming chunk. diff --git a/docs/network/packet-framing.rst b/docs/network/packet-framing.rst deleted file mode 100644 index d22f1154..00000000 --- a/docs/network/packet-framing.rst +++ /dev/null @@ -1,49 +0,0 @@ -Packet Framing — Magic Terminator -================================ - -This short note explains how packets are framed and reassembled in the -network packages, at a logical level. The framing strategy is -simple and robust to transport fragmentation or aggregation. - -Concept -------- - -- Each logical packet is a payload of bytes that the application wants to - send (JSON or binary). -- Before sending, the library *appends* a configurable terminator string - (the "magic value") to the end of the payload. The default value in the - project config is `PACKET_END`. -- The terminator is applied as bytes (UTF-8 encoding of the configured - string) and therefore forms a unique byte suffix that marks the end of a - logical packet. - -Why an end terminator ---------------------- - -- Transports like WebSocket and RTC DataChannels may split or combine - application messages into arbitrary chunks. A terminator lets a receiver - reliably detect the end of each logical packet regardless of how the - transport fragments or aggregates bytes. -- Using a short, human-readable terminator makes debugging easier. -- The terminator is configurable so you can pick a value that does not - collide with your payload contents (especially important if using raw or - binary payloads). - -Sender logic ---------------------------- - -1. Serialize the application message into bytes (e.g., JSON => UTF-8 - bytes, or a binary codec output). -2. Append the configured terminator bytes to the end of the payload. -3. Send the resulting buffer on the transport (WebSocket or DataChannel). - -Receiver logic ------------------------------ - -1. Accumulate incoming chunks of bytes into a per-connection buffer. -2. Repeatedly search the accumulated buffer for the terminator sequence. -3. For each occurrence, extract bytes from buffer start up to (but not - including) the terminator — this is a complete logical packet. -4. Remove the extracted packet and trailing terminator from the buffer and - continue searching; keep any leftover bytes (partial packet) for the - next incoming chunk. diff --git a/docs/registry/index.mdx b/docs/registry/index.mdx new file mode 100644 index 00000000..ac8647b3 --- /dev/null +++ b/docs/registry/index.mdx @@ -0,0 +1,21 @@ +--- +title: "Registry" +icon: "book" +description: "Registry and WebAssembly notes" +--- + +# Registry + +The registry class is written in C++ and exposed to WebAssembly using Emscripten. That choice keeps the performance benefits of C++ for entity and component management while still making the code available to web applications. + +## Design Choices + +This design makes some trade-offs between performance and ease of use. A pure C++ ECS would be easier to use on its own, but exposing it to WebAssembly means the interface has to balance clarity and browser-friendly integration. + +### Const Correctness + +In a regular C++ ECS, const correctness is a given, but when exposing C++ to WebAssembly the boundaries do not map perfectly to JavaScript. Methods that would typically return const references in C++ may return non-const references or copies when exposed to WebAssembly. We keep the const correctness in the C++ code to preserve intent and clarity within the C++ domain, even if it does not fully carry over to the WebAssembly interface. + +### Error Handling + +Any thrown exceptions in C++ will result in a runtime error in JavaScript. That can make error messages less descriptive or user-friendly than native JavaScript errors. To mitigate that, thorough testing and validation in the C++ code is recommended before issues reach the WebAssembly layer. diff --git a/docs/registry/index.rst b/docs/registry/index.rst deleted file mode 100644 index a76160e3..00000000 --- a/docs/registry/index.rst +++ /dev/null @@ -1,44 +0,0 @@ -Registry -======== - -.. toctree:: - - - writing_web_assembly.rst - -The registry class is written in C++ and exposed to WebAssembly using -Emscripten. This choice was made to leverage the performance benefits of -C++ for managing entities and components in an ECS architecture. -Emscripten allows us to compile C++ code into WebAssembly, which can -then be used in web applications, providing a bridge between -high-performance C++ code and JavaScript. - -Design Choices --------------- - -This design makes some trade-offs between performance and ease of use. A -pure C++ ECS would have been easier to use but having to bind it as us -make choices that impact usability. - -Const Correctness -~~~~~~~~~~~~~~~~~ - -In a regular C++ ECS, const correctness is a given, but when exposing -C++ to WebAssembly, as in C++ we can force constant of return values. -But in WebAssembly, the concept of const correctness does not directly -translate to JavaScript. Therefore, methods that would typically return -const references in C++ may return non-const references or copies when -exposed to WebAssembly. We deciced to keep the const correctness in the -C++ code to maintain clarity and intent within the C++ domain, even if -it doesn't fully carry over to the WebAssembly interface. - -Error Handling -~~~~~~~~~~~~~~ - -Any thrown exceptions in C++ will result in a runtime error in -JavaScript. The problem with this approach is that the error messages -may not be as descriptive or user-friendly as native JavaScript errors. -As every error thrown in C++ will be caught as a generic runtime error -in JavaScript, it can make debugging more challenging. To mitigate this, -we recommend thorough testing and validation within the C++ code to -catch potential issues before they propagate to the WebAssembly layer. diff --git a/docs/registry/writing_web_assembly.mdx b/docs/registry/writing_web_assembly.mdx new file mode 100644 index 00000000..6515dc8c --- /dev/null +++ b/docs/registry/writing_web_assembly.mdx @@ -0,0 +1,21 @@ +--- +title: "Writing Web Assembly" +icon: "book" +description: "Guidance for WebAssembly modules" +--- + +# Writing Web Assembly + +## Code Splitting + +When writing WebAssembly modules, it is important to consider code splitting for readability and maintainability. We try to split binding and logic into separate files wherever possible. That keeps the codebase organized and makes it easier to navigate. + +For example, in the ECS package, the binding logic is in `.cpp` files while the core logic resides in `.hpp` files. That separation lets developers focus on either the bindings or the logic without having to work through both at the same time. + +## Documentation + +When documenting WebAssembly modules, we follow the same general approach as C++ documentation. Doxygen-style comments are used to provide clear explanations of classes, methods, and parameters. That documentation is important for developers who will use or maintain the modules because it provides the necessary context and usage information. + +## Logging + +Logging in WebAssembly is costly in memory because of the interaction between C++ and JavaScript. For that reason, logging from the JavaScript side is preferred whenever possible. If logging from C++ is necessary, be aware of the performance implications and the risk of memory leaks. WebAssembly memory is limited, so excessive logging can lead to out-of-memory errors. diff --git a/docs/registry/writing_web_assembly.rst b/docs/registry/writing_web_assembly.rst deleted file mode 100644 index 7ad7583b..00000000 --- a/docs/registry/writing_web_assembly.rst +++ /dev/null @@ -1,35 +0,0 @@ -Writing Web Assembly -==================== - -Code Splitting --------------- - -When writing Web Assembly modules, it's important to consider code -splitting for readability and maintainability. We try to split binding -and code logic into separate files where possible. This helps keep the -codebase organized and makes it easier to navigate. - -For example, in the ECS package, the binding logic is in ``.cpp`` files, -while the core logic resides in ``.hpp`` files. This separation allows -developers to focus on either the binding or the logic without being -overwhelmed by both at the same time. - -Documentation -------------- - -When documenting Web Assembly modules, we follow a similar approach to -C++ documentation. We use Doxygen-style comments to provide clear and -concise explanations of classes, methods, and parameters. This -documentation is crucial for developers who will be using or maintaining -the Web Assembly modules, as it provides necessary context and usage -information. - -Logging -------- - -Logging in Web Assembly is costly memory-wise due to the interaction -between C++ and JavaScript. Therefore, we recommend to log from the -JavaScript side whenever possible. If logging from C++ is necessary, be -aware of the potential performance implications and memory leaks. Web -assembly vm is memory limited, so excessive logging will lead to -out-of-memory errors. diff --git a/docs/sound/index.rst b/docs/sound/index.rst deleted file mode 100644 index c8920d84..00000000 --- a/docs/sound/index.rst +++ /dev/null @@ -1,7 +0,0 @@ -sound -================== - -.. toctree:: - - - api/index.md diff --git a/package.json b/package.json index ec033e1a..3e843768 100644 --- a/package.json +++ b/package.json @@ -25,11 +25,13 @@ "test": "pnpm run test:unit && pnpm run test:e2e", "test:unit": "turbo run test:unit --concurrency=5", "test:e2e": "vitest run --config vitest.config.e2e.ts", - "prepare": "husky" + "prepare": "husky", + "docs": "turbo run mint-tsdocs --concurrency=5" }, "devDependencies": { "@commitlint/cli": "catalog:ci", "@commitlint/config-conventional": "catalog:ci", + "@microsoft/api-extractor": "^7.58.7", "@nanoforge-dev/actions": "catalog:ci", "@nanoforge-dev/utils-eslint-config": "workspace:*", "@nanoforge-dev/utils-prettier-config": "workspace:*", @@ -39,11 +41,10 @@ "eslint": "catalog:lint", "husky": "catalog:ci", "lint-staged": "catalog:ci", + "mint-tsdocs": "catalog:docs", "prettier": "catalog:lint", "tsdown": "catalog:build", "turbo": "catalog:core", - "typedoc": "catalog:docs", - "typedoc-plugin-markdown": "catalog:docs", "typescript": "catalog:core", "vitest": "catalog:test" }, diff --git a/packages/asset-manager/.gitignore b/packages/asset-manager/.gitignore index 392e43ff..e2764b6d 100644 --- a/packages/asset-manager/.gitignore +++ b/packages/asset-manager/.gitignore @@ -270,3 +270,6 @@ src/**/*.d.ts public/ compile_commands.json emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/asset-manager/mint-tsdocs.config.json b/packages/asset-manager/mint-tsdocs.config.json new file mode 100644 index 00000000..515b3f98 --- /dev/null +++ b/packages/asset-manager/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/asset-manager", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/asset-manager/package.json b/packages/asset-manager/package.json index 786ed038..34e4e1fd 100644 --- a/packages/asset-manager/package.json +++ b/packages/asset-manager/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/asset-manager/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*" diff --git a/packages/asset-manager/tsconfig.json b/packages/asset-manager/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/asset-manager/tsconfig.json +++ b/packages/asset-manager/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/asset-manager/tsdoc.json b/packages/asset-manager/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/asset-manager/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/asset-manager/typedoc.json b/packages/asset-manager/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/asset-manager/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/common/.gitignore b/packages/common/.gitignore index f7652f89..88ef62e8 100644 --- a/packages/common/.gitignore +++ b/packages/common/.gitignore @@ -229,3 +229,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/common/mint-tsdocs.config.json b/packages/common/mint-tsdocs.config.json new file mode 100644 index 00000000..5b6f939e --- /dev/null +++ b/packages/common/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/common", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/common/package.json b/packages/common/package.json index 383a7351..adb1b78b 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/common/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "devDependencies": { "@favware/cliff-jumper": "catalog:ci", diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/common/tsdoc.json b/packages/common/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/common/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/common/typedoc.json b/packages/common/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/common/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/config/.gitignore b/packages/config/.gitignore index f7652f89..88ef62e8 100644 --- a/packages/config/.gitignore +++ b/packages/config/.gitignore @@ -229,3 +229,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/config/mint-tsdocs.config.json b/packages/config/mint-tsdocs.config.json new file mode 100644 index 00000000..cc4db73c --- /dev/null +++ b/packages/config/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/config", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/config/package.json b/packages/config/package.json index 275161d1..9d7ccf82 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -52,7 +52,8 @@ "format": "prettier --write . && eslint --fix --format=pretty src", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/config/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "class-transformer": "catalog:config", diff --git a/packages/config/tsconfig.json b/packages/config/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/config/tsconfig.json +++ b/packages/config/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/config/tsdoc.json b/packages/config/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/config/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/config/typedoc.json b/packages/config/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/config/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/core-editor/.gitignore b/packages/core-editor/.gitignore index f7652f89..88ef62e8 100644 --- a/packages/core-editor/.gitignore +++ b/packages/core-editor/.gitignore @@ -229,3 +229,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/core-editor/mint-tsdocs.config.json b/packages/core-editor/mint-tsdocs.config.json new file mode 100644 index 00000000..03722c39 --- /dev/null +++ b/packages/core-editor/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/core-editor", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/core-editor/package.json b/packages/core-editor/package.json index d2502535..50d3267c 100644 --- a/packages/core-editor/package.json +++ b/packages/core-editor/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/core-editor/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/asset-manager": "workspace:*", diff --git a/packages/core-editor/tsconfig.json b/packages/core-editor/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/core-editor/tsconfig.json +++ b/packages/core-editor/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/core-editor/tsdoc.json b/packages/core-editor/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/core-editor/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/core-editor/typedoc.json b/packages/core-editor/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/core-editor/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/core/.gitignore b/packages/core/.gitignore index f7652f89..88ef62e8 100644 --- a/packages/core/.gitignore +++ b/packages/core/.gitignore @@ -229,3 +229,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/core/mint-tsdocs.config.json b/packages/core/mint-tsdocs.config.json new file mode 100644 index 00000000..ced6b97b --- /dev/null +++ b/packages/core/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/core", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/core/package.json b/packages/core/package.json index 8596afe0..b050dd4d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/core/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/asset-manager": "workspace:*", diff --git a/packages/core/tsconfig.json b/packages/core/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/core/tsconfig.json +++ b/packages/core/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/core/tsdoc.json b/packages/core/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/core/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/core/typedoc.json b/packages/core/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/core/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/ecs-client/.gitignore b/packages/ecs-client/.gitignore index 0ac38037..ec337acd 100644 --- a/packages/ecs-client/.gitignore +++ b/packages/ecs-client/.gitignore @@ -271,3 +271,6 @@ src/**/*.d.ts lib/ compile_commands.json emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/ecs-client/mint-tsdocs.config.json b/packages/ecs-client/mint-tsdocs.config.json new file mode 100644 index 00000000..e7e2698b --- /dev/null +++ b/packages/ecs-client/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/ecs-client", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/ecs-client/package.json b/packages/ecs-client/package.json index bed42973..9a25078f 100644 --- a/packages/ecs-client/package.json +++ b/packages/ecs-client/package.json @@ -58,7 +58,8 @@ "test:unit": "make fclean && make tests -j 16 && vitest run --config ../../vitest.config.ts && make fclean", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/ecs-client/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*", diff --git a/packages/ecs-client/tsconfig.json b/packages/ecs-client/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/ecs-client/tsconfig.json +++ b/packages/ecs-client/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/ecs-client/tsdoc.json b/packages/ecs-client/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/ecs-client/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/ecs-client/typedoc.json b/packages/ecs-client/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/ecs-client/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/ecs-lib/.gitignore b/packages/ecs-lib/.gitignore index 82ecd49f..5aadf52a 100644 --- a/packages/ecs-lib/.gitignore +++ b/packages/ecs-lib/.gitignore @@ -275,3 +275,6 @@ lib/libecs.js compile_commands.json emsdk/ docs/xml + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/ecs-lib/mint-tsdocs.config.json b/packages/ecs-lib/mint-tsdocs.config.json new file mode 100644 index 00000000..45d7c694 --- /dev/null +++ b/packages/ecs-lib/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/ecs-lib", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/ecs-lib/package.json b/packages/ecs-lib/package.json index db00b081..2c32062f 100644 --- a/packages/ecs-lib/package.json +++ b/packages/ecs-lib/package.json @@ -56,7 +56,8 @@ "test:unit": "make fclean && make -j 16 && vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/ecs-lib/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*" diff --git a/packages/ecs-lib/tsconfig.json b/packages/ecs-lib/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/ecs-lib/tsconfig.json +++ b/packages/ecs-lib/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/ecs-lib/tsdoc.json b/packages/ecs-lib/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/ecs-lib/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/ecs-lib/typedoc.json b/packages/ecs-lib/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/ecs-lib/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/ecs-server/.gitignore b/packages/ecs-server/.gitignore index 0ac38037..ec337acd 100644 --- a/packages/ecs-server/.gitignore +++ b/packages/ecs-server/.gitignore @@ -271,3 +271,6 @@ src/**/*.d.ts lib/ compile_commands.json emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/ecs-server/mint-tsdocs.config.json b/packages/ecs-server/mint-tsdocs.config.json new file mode 100644 index 00000000..9a493659 --- /dev/null +++ b/packages/ecs-server/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/ecs-server", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/ecs-server/package.json b/packages/ecs-server/package.json index db719e28..bba52ea0 100644 --- a/packages/ecs-server/package.json +++ b/packages/ecs-server/package.json @@ -58,7 +58,8 @@ "test:unit": "make fclean && make tests -j 16 && vitest run --config ../../vitest.config.ts && make fclean", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/ecs-server/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*", diff --git a/packages/ecs-server/tsconfig.json b/packages/ecs-server/tsconfig.json index 7b6b2369..2690c0ff 100644 --- a/packages/ecs-server/tsconfig.json +++ b/packages/ecs-server/tsconfig.json @@ -2,8 +2,15 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["node"] + "types": ["node"], + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } }, "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "mdx": { + "checkMdx": true + } } diff --git a/packages/ecs-server/tsdoc.json b/packages/ecs-server/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/ecs-server/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/ecs-server/typedoc.json b/packages/ecs-server/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/ecs-server/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/graphics-2d/.gitignore b/packages/graphics-2d/.gitignore index 42735921..e56e932b 100644 --- a/packages/graphics-2d/.gitignore +++ b/packages/graphics-2d/.gitignore @@ -265,3 +265,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/graphics-2d/mint-tsdocs.config.json b/packages/graphics-2d/mint-tsdocs.config.json new file mode 100644 index 00000000..ab9d47cc --- /dev/null +++ b/packages/graphics-2d/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/graphics-2d", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/graphics-2d/package.json b/packages/graphics-2d/package.json index 71b681c0..cdce9f28 100644 --- a/packages/graphics-2d/package.json +++ b/packages/graphics-2d/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/graphics-2d/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*", diff --git a/packages/graphics-2d/tsconfig.json b/packages/graphics-2d/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/graphics-2d/tsconfig.json +++ b/packages/graphics-2d/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/graphics-2d/tsdoc.json b/packages/graphics-2d/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/graphics-2d/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/graphics-2d/typedoc.json b/packages/graphics-2d/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/graphics-2d/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/input/.gitignore b/packages/input/.gitignore index 392e43ff..e2764b6d 100644 --- a/packages/input/.gitignore +++ b/packages/input/.gitignore @@ -270,3 +270,6 @@ src/**/*.d.ts public/ compile_commands.json emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/input/mint-tsdocs.config.json b/packages/input/mint-tsdocs.config.json new file mode 100644 index 00000000..95a8509e --- /dev/null +++ b/packages/input/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/input", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/input/package.json b/packages/input/package.json index 1ab65f85..cec55556 100644 --- a/packages/input/package.json +++ b/packages/input/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/input/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*" diff --git a/packages/input/tsconfig.json b/packages/input/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/input/tsconfig.json +++ b/packages/input/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/input/tsdoc.json b/packages/input/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/input/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/input/typedoc.json b/packages/input/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/input/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/music/.gitignore b/packages/music/.gitignore index 392e43ff..e2764b6d 100644 --- a/packages/music/.gitignore +++ b/packages/music/.gitignore @@ -270,3 +270,6 @@ src/**/*.d.ts public/ compile_commands.json emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/music/mint-tsdocs.config.json b/packages/music/mint-tsdocs.config.json new file mode 100644 index 00000000..3226205a --- /dev/null +++ b/packages/music/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/music", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/music/package.json b/packages/music/package.json index 72a10243..1fcaadb9 100644 --- a/packages/music/package.json +++ b/packages/music/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/music/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*" diff --git a/packages/music/tsconfig.json b/packages/music/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/music/tsconfig.json +++ b/packages/music/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/music/tsdoc.json b/packages/music/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/music/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/music/typedoc.json b/packages/music/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/music/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/network-client/.gitignore b/packages/network-client/.gitignore index f7652f89..88ef62e8 100644 --- a/packages/network-client/.gitignore +++ b/packages/network-client/.gitignore @@ -229,3 +229,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/network-client/mint-tsdocs.config.json b/packages/network-client/mint-tsdocs.config.json new file mode 100644 index 00000000..a85fdd2f --- /dev/null +++ b/packages/network-client/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/network-client", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/network-client/package.json b/packages/network-client/package.json index 5f7cebf9..256814ce 100644 --- a/packages/network-client/package.json +++ b/packages/network-client/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/network-client/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*", diff --git a/packages/network-client/tsconfig.json b/packages/network-client/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/network-client/tsconfig.json +++ b/packages/network-client/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/network-client/tsdoc.json b/packages/network-client/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/network-client/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/network-client/typedoc.json b/packages/network-client/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/network-client/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/network-server/.gitignore b/packages/network-server/.gitignore index f7652f89..88ef62e8 100644 --- a/packages/network-server/.gitignore +++ b/packages/network-server/.gitignore @@ -229,3 +229,6 @@ dist # Compiled files src/**/*.js src/**/*.d.ts + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/network-server/mint-tsdocs.config.json b/packages/network-server/mint-tsdocs.config.json new file mode 100644 index 00000000..9a36f3da --- /dev/null +++ b/packages/network-server/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/network-server", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/network-server/package.json b/packages/network-server/package.json index f41ec6dc..ba273f54 100644 --- a/packages/network-server/package.json +++ b/packages/network-server/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/network-server/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@mapbox/node-pre-gyp": "catalog:network", diff --git a/packages/network-server/tsconfig.json b/packages/network-server/tsconfig.json index 7b6b2369..2690c0ff 100644 --- a/packages/network-server/tsconfig.json +++ b/packages/network-server/tsconfig.json @@ -2,8 +2,15 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "compilerOptions": { - "types": ["node"] + "types": ["node"], + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } }, "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "mdx": { + "checkMdx": true + } } diff --git a/packages/network-server/tsdoc.json b/packages/network-server/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/network-server/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/network-server/typedoc.json b/packages/network-server/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/network-server/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/packages/sound/.gitignore b/packages/sound/.gitignore index 392e43ff..e2764b6d 100644 --- a/packages/sound/.gitignore +++ b/packages/sound/.gitignore @@ -270,3 +270,6 @@ src/**/*.d.ts public/ compile_commands.json emsdk/ + +# mint-tsdocs cache +docs/.tsdocs/ diff --git a/packages/sound/mint-tsdocs.config.json b/packages/sound/mint-tsdocs.config.json new file mode 100644 index 00000000..e9ed626a --- /dev/null +++ b/packages/sound/mint-tsdocs.config.json @@ -0,0 +1,10 @@ +{ + "$schema": "./node_modules/mint-tsdocs/lib/schemas/config.schema.json", + "entryPoint": "dist/index.d.cts", + "outputFolder": "../../docs/api/sound", + "lint": { + "eslint": { + "enabled": true + } + } +} diff --git a/packages/sound/package.json b/packages/sound/package.json index cafb9bb8..880631a0 100644 --- a/packages/sound/package.json +++ b/packages/sound/package.json @@ -53,7 +53,8 @@ "test:unit": "vitest run --config ../../vitest.config.ts", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/sound/*'", - "release": "cliff-jumper" + "release": "cliff-jumper", + "mint-tsdocs": "mint-tsdocs generate" }, "dependencies": { "@nanoforge-dev/common": "workspace:*" diff --git a/packages/sound/tsconfig.json b/packages/sound/tsconfig.json index 9e6d724b..1ada333c 100644 --- a/packages/sound/tsconfig.json +++ b/packages/sound/tsconfig.json @@ -2,5 +2,14 @@ "$schema": "https://json.schemastore.org/tsconfig.json", "extends": "../../tsconfig.json", "include": ["src/**/*.ts"], - "exclude": ["node_modules", "dist"] + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "declaration": true, + "paths": { + "/snippets/*": ["./docs/snippets/*"] + } + }, + "mdx": { + "checkMdx": true + } } diff --git a/packages/sound/tsdoc.json b/packages/sound/tsdoc.json new file mode 100644 index 00000000..ae9ae564 --- /dev/null +++ b/packages/sound/tsdoc.json @@ -0,0 +1,14 @@ +{ + "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json", + "extends": ["@microsoft/api-extractor/extends/tsdoc-base.json"], + "tagDefinitions": [ + { + "tagName": "@default", + "syntaxKind": "block", + "allowMultiple": false + } + ], + "supportForTags": { + "@default": true + } +} diff --git a/packages/sound/typedoc.json b/packages/sound/typedoc.json deleted file mode 100644 index 7e2ec1a3..00000000 --- a/packages/sound/typedoc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": ["../../typedoc.base.json"], - "entryPoints": ["src/index.ts"], - "skipErrorChecking": true -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eebd302a..22d20d39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,12 +46,9 @@ catalogs: specifier: ^6.0.3 version: 6.0.3 docs: - typedoc: - specifier: ^0.28.19 - version: 0.28.19 - typedoc-plugin-markdown: - specifier: ^4.11.0 - version: 4.11.0 + mint-tsdocs: + specifier: ^0.0.8 + version: 0.0.8 graphics: konva: specifier: ^10.2.3 @@ -118,6 +115,9 @@ importers: '@commitlint/config-conventional': specifier: catalog:ci version: 21.0.1 + '@microsoft/api-extractor': + specifier: ^7.58.7 + version: 7.58.7(@types/node@25.6.0) '@nanoforge-dev/actions': specifier: catalog:ci version: 1.3.0 @@ -145,6 +145,9 @@ importers: lint-staged: specifier: catalog:ci version: 17.0.4 + mint-tsdocs: + specifier: catalog:docs + version: 0.0.8(@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@25.6.0)(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(react-dom@18.3.1(react@18.3.1))(typescript@6.0.3) prettier: specifier: catalog:lint version: 3.8.3 @@ -154,12 +157,6 @@ importers: turbo: specifier: catalog:core version: 2.9.9 - typedoc: - specifier: catalog:docs - version: 0.28.19(typescript@6.0.3) - typedoc-plugin-markdown: - specifier: catalog:docs - version: 4.11.0(typedoc@0.28.19(typescript@6.0.3)) typescript: specifier: catalog:core version: 6.0.3 @@ -971,6 +968,16 @@ packages: resolution: {integrity: sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==} engines: {node: '>=18'} + '@clack/core@0.5.0': + resolution: {integrity: sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==} + + '@clack/prompts@0.11.0': + resolution: {integrity: sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + '@commitlint/cli@21.0.1': resolution: {integrity: sha512-8vq10krmbJwBkvzXKhbs4o4JQEVscd3pqOlWuDUaDBwbeL694/P33UC29tZQFTAgPU9fVJ2+f2m3zw16yKWxHg==} engines: {node: '>=22.12.0'} @@ -1118,8 +1125,12 @@ packages: resolution: {integrity: sha512-PPYtcLzhSafdylp8NBOxMCYIcLqTUMNiQc7ciBoAIvxNG2egM+P7e2nNPui5+Svyk89Q+Tnbrp139ZRIIBw3IA==} engines: {node: '>=v16'} - '@gerrit0/mini-shiki@3.23.0': - resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} + '@headlessui/react@1.7.19': + resolution: {integrity: sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==} + engines: {node: '>=10'} + peerDependencies: + react: ^16 || ^17 || ^18 + react-dom: ^16 || ^17 || ^18 '@humanfs/core@0.19.2': resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} @@ -1431,6 +1442,26 @@ packages: engines: {node: '>=18'} hasBin: true + '@microsoft/api-extractor-model@7.33.8': + resolution: {integrity: sha512-aIcoQggPyer3B6Ze3usz0YWC/oBwUHfRH5ETUsr+oT2BRA6SfTJl7IKPcPZkX4UR+PohowzW4uMxsvjrn8vm+w==} + + '@microsoft/api-extractor@7.58.7': + resolution: {integrity: sha512-yK6OycD46gIzLRpj6ueVUWPk1ACSpkN1LBo05gY1qPTylbWyUCanXfH7+VgkI5LJrJoRSQR5F04XuCffCXLOBw==} + hasBin: true + + '@microsoft/tsdoc-config@0.18.1': + resolution: {integrity: sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==} + + '@microsoft/tsdoc@0.16.0': + resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} + + '@mintlify/components@0.3.15': + resolution: {integrity: sha512-2jlxzV6FJPyXi4LRttx6QAf37S0t2yJOGmFAI1cwEWf38HriU6R9ZXwFTciya+IAdTfvmJ2N1uLt/uBZ5T4iGg==} + peerDependencies: + '@headlessui/react': ^1.7 + react: ^17.0.0 || ^18.0.0 + react-dom: ^17.0.0 || ^18.0.0 + '@nanoforge-dev/actions@1.3.0': resolution: {integrity: sha512-EmArilxSOkmpdBnNhuyIfsXxRNeRugA9LyEp5VRj7n+dhG95UEahgSJll/lautjtYQPX6Dh5ETWwqjjRDclreQ==} engines: {node: '25'} @@ -1800,6 +1831,60 @@ packages: '@rolldown/pluginutils@1.0.0-rc.17': resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + '@rushstack/node-core-library@5.19.1': + resolution: {integrity: sha512-ESpb2Tajlatgbmzzukg6zyAhH+sICqJR2CNXNhXcEbz6UGCQfrKCtkxOpJTftWc8RGouroHG0Nud1SJAszvpmA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/node-core-library@5.23.1': + resolution: {integrity: sha512-wlKmIKIYCKuCASbITvOxLZXepPbwXvrv7S6ig6XNWFchSyhL/E2txmVXspHY49Wu2dzf7nI27a2k/yV5BA3EiA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/problem-matcher@0.1.1': + resolution: {integrity: sha512-Fm5XtS7+G8HLcJHCWpES5VmeMyjAKaWeyZU5qPzZC+22mPlJzAsOxymHiWIfuirtPckX3aptWws+K2d0BzniJA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/problem-matcher@0.2.1': + resolution: {integrity: sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.7.3': + resolution: {integrity: sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==} + + '@rushstack/terminal@0.19.5': + resolution: {integrity: sha512-6k5tpdB88G0K7QrH/3yfKO84HK9ggftfUZ51p7fePyCE7+RLLHkWZbID9OFWbXuna+eeCFE7AkKnRMHMxNbz7Q==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/terminal@0.24.0': + resolution: {integrity: sha512-8ZQS4MMaGsv27EXCBiH7WMPkRZrffeDoIevs6z9TM5dzqiY6+Hn4evfK/G+gvgBTjfvfkHIZPQQmalmI2sM4TQ==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@5.3.9': + resolution: {integrity: sha512-GIHqU+sRGQ3LGWAZu1O+9Yh++qwtyNIIGuNbcWHJjBTm2qRez0cwINUHZ+pQLR8UuzZDcMajrDaNbUYoaL/XtQ==} + '@sapphire/result@2.8.0': resolution: {integrity: sha512-693yWouX+hR9uJm1Jgq0uSSjbSD3UrblMaxiuGbHPjSwzLCSZTcm0h3kvdVhq3o/yl4+oeAWW3hiaJ0TELuRJQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} @@ -1811,21 +1896,6 @@ packages: '@sec-ant/readable-stream@0.4.1': resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@simple-libs/child-process-utils@1.0.2': resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} engines: {node: '>=18'} @@ -1845,6 +1915,15 @@ packages: '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + '@tanstack/react-virtual@3.13.24': + resolution: {integrity: sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + + '@tanstack/virtual-core@3.14.0': + resolution: {integrity: sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q==} + '@trivago/prettier-plugin-sort-imports@6.0.2': resolution: {integrity: sha512-3DgfkukFyC/sE/VuYjaUUWoFfuVjPK55vOFDsxD56XXynFMCZDYFogH2l/hDfOsQAm1myoU/1xByJ3tWqtulXA==} engines: {node: '>= 20'} @@ -1897,6 +1976,9 @@ packages: '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -1912,9 +1994,6 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/hast@3.0.4': - resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} - '@types/jsesc@2.5.1': resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} @@ -1924,9 +2003,6 @@ packages: '@types/node@25.6.0': resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - '@types/validator@13.15.10': resolution: {integrity: sha512-T8L6i7wCuyoK8A/ZeLYt1+q0ty3Zb9+qbSSvrIVitzT3YjZqkTZ40IbRsPanlB4h1QB3JVL1SYCdR6ngtFYcuA==} @@ -2048,6 +2124,14 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: @@ -2059,6 +2143,9 @@ packages: ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + ajv@8.13.0: + resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -2089,12 +2176,18 @@ packages: resolution: {integrity: sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig==} engines: {node: '>=14'} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -2106,6 +2199,13 @@ packages: ast-v8-to-istanbul@1.0.0: resolution: {integrity: sha512-1fSfIwuDICFA4LKkCzRPO7F0hzFf0B7+Xqrl27ynQaa+Rh0e1Es0v6kWHPott3lU10AyAr7oKHa65OppjLn3Rg==} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -2143,6 +2243,18 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2187,6 +2299,10 @@ packages: resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + cli-truncate@5.2.0: resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} engines: {node: '>=20'} @@ -2195,10 +2311,21 @@ packages: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@9.0.1: resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} engines: {node: '>=20'} + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -2209,6 +2336,10 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@14.0.3: resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} engines: {node: '>=20'} @@ -2290,10 +2421,18 @@ packages: resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + defu@6.1.7: resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==} @@ -2304,6 +2443,10 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + domexception@1.0.1: resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} deprecated: Use your platform's native DOMException instead @@ -2325,6 +2468,15 @@ packages: oxc-resolver: optional: true + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2338,10 +2490,6 @@ packages: resolution: {integrity: sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA==} engines: {node: '>=14'} - entities@4.5.0: - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} - engines: {node: '>=0.12'} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -2353,9 +2501,21 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-module-lexer@2.1.0: resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + es-toolkit@1.46.1: resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} @@ -2507,6 +2667,9 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -2518,11 +2681,26 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + fs-extra@11.3.5: + resolution: {integrity: sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==} + engines: {node: '>=14.14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + generator-function@2.0.1: + resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} + engines: {node: '>= 0.4'} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2531,6 +2709,14 @@ packages: resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} engines: {node: '>=18'} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -2590,6 +2776,13 @@ packages: resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} engines: {node: '>=18'} + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2598,6 +2791,21 @@ packages: resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} engines: {node: '>=12'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + hookable@6.1.1: resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} @@ -2633,6 +2841,10 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + import-without-cache@0.3.3: resolution: {integrity: sha512-bDxwDdF04gm550DfZHgffvlX+9kUlcz32UD0AeBTmVPFiWkrexF2XVmiuFFbDhiFuP8fQkrkvI2KdSNPYWAXkQ==} engines: {node: '>=20.19.0'} @@ -2641,6 +2853,9 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + ini@6.0.0: resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} engines: {node: ^20.17.0 || >=22.9.0} @@ -2649,9 +2864,25 @@ packages: resolution: {integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==} engines: {node: '>=8'} + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2669,6 +2900,10 @@ packages: resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} engines: {node: '>=18'} + is-generator-function@1.1.2: + resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} + engines: {node: '>= 0.4'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2686,6 +2921,10 @@ packages: resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} engines: {node: '>=12'} + is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + is-obj@2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} engines: {node: '>=8'} @@ -2694,10 +2933,18 @@ packages: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-regex@1.2.1: + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} + engines: {node: '>= 0.4'} + is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-unicode-supported@2.1.0: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} @@ -2721,6 +2968,11 @@ packages: resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} engines: {node: '>=8'} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} @@ -2728,6 +2980,9 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} @@ -2764,6 +3019,9 @@ packages: jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -2854,14 +3112,16 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - lint-staged@17.0.4: resolution: {integrity: sha512-+rU9lSUyVOZ/hDUmRLVGzyS2v73cDdQjX+XQz1AaOdIE4RysLq0HoPW2HrrgeNCLklkhi904VBU1bmgWLHVnkA==} engines: {node: '>=22.22.1'} hasBin: true + liquidjs@10.25.7: + resolution: {integrity: sha512-rPCjJLiD4eDhQjvv964AeXFC+HbeYBbZrd7Z82Q6hqv1lX7G+5w4SJcKLn9CAAAwHI4aS3dTdo083UB79K3pDA==} + engines: {node: '>=16'} + hasBin: true + listr2@10.2.1: resolution: {integrity: sha512-7I5knELsJKTUjXG+A6BkKAiGkW1i25fNa/xlUl9hFtk15WbE9jndA89xu5FzQKrY5llajE1hfZZFMILXkDHk/Q==} engines: {node: '>=22.13.0'} @@ -2873,6 +3133,9 @@ packages: lodash-es@4.18.1: resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} + lodash.set@4.3.2: + resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==} + log-symbols@7.0.1: resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} engines: {node: '>=18'} @@ -2881,8 +3144,13 @@ packages: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - lunr@2.3.9: - resolution: {integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==} + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -2894,12 +3162,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - markdown-it@14.1.1: - resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} - hasBin: true - - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} meow@13.2.0: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} @@ -2909,10 +3174,18 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} + minimatch@10.2.3: + resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} + engines: {node: 18 || 20 || >=22} + minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -2925,6 +3198,22 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mint-tsdocs@0.0.8: + resolution: {integrity: sha512-nuA+xHeV2fAELFS9HCyDp6N69bY0bhw2s75oCiA7S0D4iMbsB8B57I86Ny78ZomwUMoYxtGJv3gBtRsCkKSsCA==} + engines: {node: '>=18.0.0'} + hasBin: true + peerDependencies: + '@typescript-eslint/parser': '>=6.0.0' + eslint: '>=8.0.0' + eslint-plugin-tsdoc: '>=0.5.0' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-plugin-tsdoc: + optional: true + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -2966,6 +3255,18 @@ packages: resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} engines: {node: '>=18'} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object.assign@4.1.7: + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} + engines: {node: '>= 0.4'} + obug@2.1.1: resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} @@ -3035,6 +3336,9 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} @@ -3049,6 +3353,10 @@ packages: resolution: {integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + postcss@8.5.14: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} @@ -3074,10 +3382,6 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -3088,6 +3392,15 @@ packages: rc9@3.0.1: resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + react-dom@18.3.1: + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + peerDependencies: + react: ^18.3.1 + + react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + engines: {node: '>=0.10.0'} + readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} @@ -3110,6 +3423,11 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -3148,14 +3466,30 @@ packages: rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-regex-test@1.1.0: + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} + engines: {node: '>= 0.4'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -3171,6 +3505,9 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + skin-tone@2.0.0: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} @@ -3191,10 +3528,17 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + source-map@0.7.6: resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} engines: {node: '>= 12'} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -3241,10 +3585,18 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-hyperlinks@4.4.0: resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} engines: {node: '>=20'} + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + synckit@0.11.12: resolution: {integrity: sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3328,19 +3680,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - typedoc-plugin-markdown@4.11.0: - resolution: {integrity: sha512-2iunh2ALyfyh204OF7h2u0kuQ84xB3jFZtFyUr01nThJkLvR8oGGSSDlyt2gyO4kXhvUxDcVbO0y43+qX+wFbw==} - engines: {node: '>= 18'} - peerDependencies: - typedoc: 0.28.x - - typedoc@0.28.19: - resolution: {integrity: sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==} - engines: {node: '>= 18', pnpm: '>= 10'} - hasBin: true - peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x - typescript-eslint@8.59.3: resolution: {integrity: sha512-KgusgyDgG4LI8Ih/sWaCtZ06tckLAS5CvT5A4D1Q7bYVoAAyzwiZvE4BmwDHkhRVkvhRBepKeASoFzQetha7Fg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3348,14 +3687,16 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} hasBin: true - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - unconfig-core@7.5.0: resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} @@ -3377,6 +3718,10 @@ packages: universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + unrun@0.2.37: resolution: {integrity: sha512-AA7vDuYsgeSYVzJMm16UKA+aXFKhy7nFqW9z5l7q44K4ppFWZAMqYS58ePRZbugMLPH0fwwMzD5A8nP0avxwZQ==} engines: {node: '>=20.19.0'} @@ -3390,6 +3735,9 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + validator@13.15.35: resolution: {integrity: sha512-TQ5pAGhd5whStmqWvYF4OjQROlmv9SMFVt37qoCBdqRffuuklWYQlCNnEs2ZaIBD1kZRNnikiZOS1eqgkar0iw==} engines: {node: '>= 0.10'} @@ -3487,6 +3835,10 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which-typed-array@1.1.20: + resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -3539,6 +3891,9 @@ packages: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} @@ -3702,6 +4057,20 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} + '@clack/core@0.5.0': + dependencies: + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@clack/prompts@0.11.0': + dependencies: + '@clack/core': 0.5.0 + picocolors: 1.1.1 + sisteransi: 1.0.5 + + '@colors/colors@1.5.0': + optional: true + '@commitlint/cli@21.0.1(@types/node@25.6.0)(conventional-commits-filter@5.0.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3)': dependencies: '@commitlint/format': 21.0.1 @@ -3896,13 +4265,12 @@ snapshots: dependencies: colorette: 2.0.20 - '@gerrit0/mini-shiki@3.23.0': + '@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 + '@tanstack/react-virtual': 3.13.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + client-only: 0.0.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) '@humanfs/core@0.19.2': dependencies: @@ -4195,6 +4563,51 @@ snapshots: - encoding - supports-color + '@microsoft/api-extractor-model@7.33.8(@types/node@25.6.0)': + dependencies: + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.58.7(@types/node@25.6.0)': + dependencies: + '@microsoft/api-extractor-model': 7.33.8(@types/node@25.6.0) + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + '@rushstack/rig-package': 0.7.3 + '@rushstack/terminal': 0.24.0(@types/node@25.6.0) + '@rushstack/ts-command-line': 5.3.9(@types/node@25.6.0) + diff: 8.0.4 + minimatch: 10.2.3 + resolve: 1.22.12 + semver: 7.7.4 + source-map: 0.6.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.18.1': + dependencies: + '@microsoft/tsdoc': 0.16.0 + ajv: 8.18.0 + jju: 1.4.0 + resolve: 1.22.12 + + '@microsoft/tsdoc@0.16.0': {} + + '@mintlify/components@0.3.15(@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@headlessui/react': 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + assert: 2.1.0 + clsx: 1.2.1 + is-absolute-url: 4.0.1 + lodash.set: 4.3.2 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + '@nanoforge-dev/actions@1.3.0': dependencies: '@actions/core': 3.0.1 @@ -4462,31 +4875,75 @@ snapshots: '@rolldown/pluginutils@1.0.0-rc.17': {} - '@sapphire/result@2.8.0': {} + '@rushstack/node-core-library@5.19.1(@types/node@25.6.0)': + dependencies: + ajv: 8.13.0 + ajv-draft-04: 1.0.0(ajv@8.13.0) + ajv-formats: 3.0.1(ajv@8.13.0) + fs-extra: 11.3.5 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.12 + semver: 7.5.4 + optionalDependencies: + '@types/node': 25.6.0 - '@sapphire/utilities@3.18.2': {} + '@rushstack/node-core-library@5.23.1(@types/node@25.6.0)': + dependencies: + ajv: 8.18.0 + ajv-draft-04: 1.0.0(ajv@8.18.0) + ajv-formats: 3.0.1(ajv@8.18.0) + fs-extra: 11.3.5 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.12 + semver: 7.7.4 + optionalDependencies: + '@types/node': 25.6.0 - '@sec-ant/readable-stream@0.4.1': {} + '@rushstack/problem-matcher@0.1.1(@types/node@25.6.0)': + optionalDependencies: + '@types/node': 25.6.0 - '@shikijs/engine-oniguruma@3.23.0': + '@rushstack/problem-matcher@0.2.1(@types/node@25.6.0)': + optionalDependencies: + '@types/node': 25.6.0 + + '@rushstack/rig-package@0.7.3': dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 + jju: 1.4.0 + resolve: 1.22.12 - '@shikijs/langs@3.23.0': + '@rushstack/terminal@0.19.5(@types/node@25.6.0)': dependencies: - '@shikijs/types': 3.23.0 + '@rushstack/node-core-library': 5.19.1(@types/node@25.6.0) + '@rushstack/problem-matcher': 0.1.1(@types/node@25.6.0) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 25.6.0 - '@shikijs/themes@3.23.0': + '@rushstack/terminal@0.24.0(@types/node@25.6.0)': dependencies: - '@shikijs/types': 3.23.0 + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + '@rushstack/problem-matcher': 0.2.1(@types/node@25.6.0) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 25.6.0 - '@shikijs/types@3.23.0': + '@rushstack/ts-command-line@5.3.9(@types/node@25.6.0)': dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@rushstack/terminal': 0.24.0(@types/node@25.6.0) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' - '@shikijs/vscode-textmate@10.0.2': {} + '@sapphire/result@2.8.0': {} + + '@sapphire/utilities@3.18.2': {} + + '@sec-ant/readable-stream@0.4.1': {} '@simple-libs/child-process-utils@1.0.2': dependencies: @@ -4500,6 +4957,14 @@ snapshots: '@standard-schema/spec@1.1.0': {} + '@tanstack/react-virtual@3.13.24(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@tanstack/virtual-core': 3.14.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@tanstack/virtual-core@3.14.0': {} + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3)': dependencies: '@babel/generator': 7.29.1 @@ -4537,6 +5002,8 @@ snapshots: tslib: 2.8.1 optional: true + '@types/argparse@1.0.38': {} + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -4553,10 +5020,6 @@ snapshots: '@types/estree@1.0.8': {} - '@types/hast@3.0.4': - dependencies: - '@types/unist': 3.0.3 - '@types/jsesc@2.5.1': {} '@types/json-schema@7.0.15': {} @@ -4565,8 +5028,6 @@ snapshots: dependencies: undici-types: 7.19.2 - '@types/unist@3.0.3': {} - '@types/validator@13.15.10': {} '@types/ws@8.18.1': @@ -4729,6 +5190,18 @@ snapshots: agent-base@7.1.4: {} + ajv-draft-04@1.0.0(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + + ajv-draft-04@1.0.0(ajv@8.18.0): + optionalDependencies: + ajv: 8.18.0 + + ajv-formats@3.0.1(ajv@8.13.0): + optionalDependencies: + ajv: 8.13.0 + ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 @@ -4740,6 +5213,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.13.0: + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -4770,10 +5250,22 @@ snapshots: ansis@4.2.0: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} array-ify@1.0.0: {} + assert@2.1.0: + dependencies: + call-bind: 1.0.9 + is-nan: 1.3.2 + object-is: 1.1.6 + object.assign: 4.1.7 + util: 0.12.5 + assertion-error@2.0.1: {} ast-kit@3.0.0-beta.1: @@ -4788,6 +5280,12 @@ snapshots: estree-walker: 3.0.3 js-tokens: 10.0.0 + async@3.2.6: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + balanced-match@1.0.2: {} balanced-match@4.0.4: {} @@ -4827,6 +5325,23 @@ snapshots: cac@7.0.0: {} + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} chai@6.2.2: {} @@ -4863,6 +5378,12 @@ snapshots: cli-spinners@3.4.0: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + cli-truncate@5.2.0: dependencies: slice-ansi: 8.0.0 @@ -4870,12 +5391,18 @@ snapshots: cli-width@4.1.0: {} + client-only@0.0.1: {} + cliui@9.0.1: dependencies: string-width: 7.2.0 strip-ansi: 7.2.0 wrap-ansi: 9.0.2 + clsx@1.2.1: {} + + clsx@2.1.1: {} + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4884,6 +5411,8 @@ snapshots: colorette@2.0.20: {} + commander@10.0.1: {} + commander@14.0.3: {} compare-func@2.0.0: @@ -4955,14 +5484,28 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.1 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + defu@6.1.7: {} destr@2.0.5: {} detect-libc@2.1.2: {} + diff@8.0.4: {} + domexception@1.0.1: dependencies: webidl-conversions: 4.0.2 @@ -4976,6 +5519,16 @@ snapshots: dts-resolver@2.1.3: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + ejs@3.1.10: + dependencies: + jake: 10.9.4 + emoji-regex@10.6.0: {} emoji-regex@8.0.0: {} @@ -4984,8 +5537,6 @@ snapshots: empathic@2.0.0: {} - entities@4.5.0: {} - env-paths@2.2.1: {} environment@1.1.0: {} @@ -4994,8 +5545,16 @@ snapshots: dependencies: is-arrayish: 0.2.1 + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + es-module-lexer@2.1.0: {} + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + es-toolkit@1.46.1: {} escalade@3.2.0: {} @@ -5172,6 +5731,10 @@ snapshots: dependencies: flat-cache: 4.0.1 + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -5184,13 +5747,45 @@ snapshots: flatted@3.4.2: {} + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + fs-extra@11.3.5: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + + generator-function@2.0.1: {} + get-caller-file@2.0.5: {} get-east-asian-width@1.5.0: {} + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -5247,10 +5842,28 @@ snapshots: globals@17.6.0: {} + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + has-flag@4.0.0: {} has-flag@5.0.1: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + hookable@6.1.1: {} html-escaper@2.0.2: {} @@ -5279,16 +5892,33 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-lazy@4.0.0: {} + import-without-cache@0.3.3: {} imurmurhash@0.1.4: {} + inherits@2.0.4: {} + ini@6.0.0: {} irregular-plurals@3.5.0: {} + is-absolute-url@4.0.1: {} + + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-arrayish@0.2.1: {} + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.3 + is-docker@3.0.0: {} is-extglob@2.1.1: {} @@ -5299,6 +5929,14 @@ snapshots: dependencies: get-east-asian-width: 1.5.0 + is-generator-function@1.1.2: + dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 + has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -5311,12 +5949,28 @@ snapshots: is-interactive@2.0.0: {} + is-nan@1.3.2: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + is-obj@2.0.0: {} is-plain-obj@4.1.0: {} + is-regex@1.2.1: + dependencies: + call-bound: 1.0.4 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + is-stream@4.0.1: {} + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.20 + is-unicode-supported@2.1.0: {} is-wsl@3.1.1: @@ -5338,10 +5992,18 @@ snapshots: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + javascript-natural-sort@0.7.1: {} jiti@2.6.1: {} + jju@1.4.0: {} + js-tokens@10.0.0: {} js-tokens@4.0.0: {} @@ -5366,6 +6028,12 @@ snapshots: jsonc-parser@3.3.1: {} + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -5430,10 +6098,6 @@ snapshots: lines-and-columns@1.2.4: {} - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - lint-staged@17.0.4: dependencies: listr2: 10.2.1 @@ -5443,6 +6107,10 @@ snapshots: optionalDependencies: yaml: 2.8.4 + liquidjs@10.25.7: + dependencies: + commander: 10.0.1 + listr2@10.2.1: dependencies: cli-truncate: 5.2.0 @@ -5457,6 +6125,8 @@ snapshots: lodash-es@4.18.1: {} + lodash.set@4.3.2: {} + log-symbols@7.0.1: dependencies: is-unicode-supported: 2.1.0 @@ -5470,7 +6140,13 @@ snapshots: strip-ansi: 7.2.0 wrap-ansi: 9.0.2 - lunr@2.3.9: {} + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 magic-string@0.30.21: dependencies: @@ -5486,25 +6162,24 @@ snapshots: dependencies: semver: 7.7.4 - markdown-it@14.1.1: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - - mdurl@2.0.0: {} + math-intrinsics@1.1.0: {} meow@13.2.0: {} mimic-function@5.0.1: {} + minimatch@10.2.3: + dependencies: + brace-expansion: 5.0.5 + minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.0 + minimatch@9.0.9: dependencies: brace-expansion: 2.1.0 @@ -5515,6 +6190,37 @@ snapshots: dependencies: minipass: 7.1.3 + mint-tsdocs@0.0.8(@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@types/node@25.6.0)(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(react-dom@18.3.1(react@18.3.1))(typescript@6.0.3): + dependencies: + '@clack/prompts': 0.11.0 + '@microsoft/api-extractor': 7.58.7(@types/node@25.6.0) + '@microsoft/api-extractor-model': 7.33.8(@types/node@25.6.0) + '@microsoft/tsdoc': 0.16.0 + '@mintlify/components': 0.3.15(@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rushstack/node-core-library': 5.23.1(@types/node@25.6.0) + '@rushstack/terminal': 0.19.5(@types/node@25.6.0) + '@rushstack/ts-command-line': 5.3.9(@types/node@25.6.0) + chalk: 5.6.2 + cli-table3: 0.6.5 + clsx: 2.1.1 + cosmiconfig: 9.0.1(typescript@6.0.3) + debug: 4.4.3 + ejs: 3.1.10 + is-unicode-supported: 2.1.0 + liquidjs: 10.25.7 + minimatch: 10.2.5 + react: 18.3.1 + resolve: 1.22.12 + optionalDependencies: + '@typescript-eslint/parser': 8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) + eslint: 10.3.0(jiti@2.6.1) + transitivePeerDependencies: + - '@headlessui/react' + - '@types/node' + - react-dom + - supports-color + - typescript + ms@2.1.3: {} mute-stream@2.0.0: {} @@ -5545,6 +6251,22 @@ snapshots: path-key: 4.0.0 unicorn-magic: 0.3.0 + object-is@1.1.6: + dependencies: + call-bind: 1.0.9 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object.assign@4.1.7: + dependencies: + call-bind: 1.0.9 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 + object-keys: 1.1.1 + obug@2.1.1: {} ohash@2.0.11: {} @@ -5650,6 +6372,8 @@ snapshots: path-key@4.0.0: {} + path-parse@1.0.7: {} + pathe@2.0.3: {} picocolors@1.1.1: {} @@ -5660,6 +6384,8 @@ snapshots: dependencies: irregular-plurals: 3.5.0 + possible-typed-array-names@1.1.0: {} + postcss@8.5.14: dependencies: nanoid: 3.3.12 @@ -5680,8 +6406,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - punycode.js@2.3.1: {} - punycode@2.3.1: {} quansync@1.0.0: {} @@ -5691,6 +6415,16 @@ snapshots: defu: 6.1.7 destr: 2.0.5 + react-dom@18.3.1(react@18.3.1): + dependencies: + loose-envify: 1.4.0 + react: 18.3.1 + scheduler: 0.23.2 + + react@18.3.1: + dependencies: + loose-envify: 1.4.0 + readdirp@5.0.0: {} reflect-metadata@0.2.2: {} @@ -5703,6 +6437,13 @@ snapshots: resolve-pkg-maps@1.0.0: {} + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -5755,10 +6496,33 @@ snapshots: dependencies: tslib: 2.8.1 + safe-regex-test@1.1.0: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 + safer-buffer@2.1.2: {} + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + semver@7.7.4: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -5769,6 +6533,8 @@ snapshots: signal-exit@4.1.0: {} + sisteransi@1.0.5: {} + skin-tone@2.0.0: dependencies: unicode-emoji-modifier-base: 1.0.0 @@ -5787,8 +6553,12 @@ snapshots: source-map-js@1.2.1: {} + source-map@0.6.1: {} + source-map@0.7.6: {} + sprintf-js@1.0.3: {} + stackback@0.0.2: {} std-env@4.1.0: {} @@ -5830,11 +6600,17 @@ snapshots: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-hyperlinks@4.4.0: dependencies: has-flag: 5.0.1 supports-color: 10.2.2 + supports-preserve-symlinks-flag@1.0.0: {} + synckit@0.11.12: dependencies: '@pkgr/core': 0.2.9 @@ -5912,19 +6688,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typedoc-plugin-markdown@4.11.0(typedoc@0.28.19(typescript@6.0.3)): - dependencies: - typedoc: 0.28.19(typescript@6.0.3) - - typedoc@0.28.19(typescript@6.0.3): - dependencies: - '@gerrit0/mini-shiki': 3.23.0 - lunr: 2.3.9 - markdown-it: 14.1.1 - minimatch: 10.2.5 - typescript: 6.0.3 - yaml: 2.8.4 - typescript-eslint@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3): dependencies: '@typescript-eslint/eslint-plugin': 8.59.3(@typescript-eslint/parser@8.59.3(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3))(eslint@10.3.0(jiti@2.6.1))(typescript@6.0.3) @@ -5936,9 +6699,9 @@ snapshots: transitivePeerDependencies: - supports-color - typescript@6.0.3: {} + typescript@5.9.3: {} - uc.micro@2.1.0: {} + typescript@6.0.3: {} unconfig-core@7.5.0: dependencies: @@ -5955,6 +6718,8 @@ snapshots: universal-user-agent@7.0.3: {} + universalify@2.0.1: {} + unrun@0.2.37(synckit@0.11.12): dependencies: rolldown: 1.0.0-rc.17 @@ -5965,6 +6730,14 @@ snapshots: dependencies: punycode: 2.3.1 + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.2.0 + is-generator-function: 1.1.2 + is-typed-array: 1.1.15 + which-typed-array: 1.1.20 + validator@13.15.35: {} vite@8.0.10(@types/node@25.6.0)(jiti@2.6.1)(yaml@2.8.4): @@ -6018,6 +6791,16 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + which-typed-array@1.1.20: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -6060,9 +6843,12 @@ snapshots: y18n@5.0.8: {} + yallist@4.0.0: {} + yallist@5.0.0: {} - yaml@2.8.4: {} + yaml@2.8.4: + optional: true yargs-parser@22.0.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1705016f..5de4e595 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -24,6 +24,7 @@ catalogs: docs: typedoc: ^0.28.19 typedoc-plugin-markdown: ^4.11.0 + mint-tsdocs: ^0.0.8 graphics: konva: ^10.2.3 lint: diff --git a/scripts/build_docs.sh b/scripts/build_docs.sh deleted file mode 100755 index 15272d58..00000000 --- a/scripts/build_docs.sh +++ /dev/null @@ -1,54 +0,0 @@ -#! /bin/sh - -if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then - echo "Usage: $0" - echo "Build the documentation using Sphinx." - echo "--build Build the documentation." - exit 0 -fi - -PNPM=$(which pnpm) -SPHINX=$(which sphinx-build) - -if [ -z "$PNPM" ]; then - echo "pnpm is not installed. Please install pnpm to proceed." - exit 1 -fi - -run_typedoc() { - $PNPM typedoc --options typedoc.json -} - -clean_typedoc() { - rm -rf docs_markdown -} - -run_sphinx() { - $SPHINX docs docs_build -} - -setup_api_docs() { - for dir in packages/*; do - mkdir -p docs/$(basename $dir)/api - cp -r docs_markdown/@nanoforge-dev/$(basename $dir).md docs/$(basename $dir)/api/index.md - done -} - -doxygen_doc() { - doxygen packages/ecs-lib/docs/Doxyfile - - cp -r xml docs/ecs-lib/api/xml - cp -r packages/ecs-lib/docs/index.rst docs/ecs-lib/index.rst - cp -r packages/ecs-lib/docs/wasm.rst docs/ecs-lib/wasm.rst - mv docs/ecs-lib/api/index.md docs/ecs-lib/api/typescript.md -} - -clean_typedoc -run_typedoc -setup_api_docs -doxygen_doc - -if [ "$1" = "--build" ]; then - run_sphinx - echo "Documentation built successfully." -fi \ No newline at end of file diff --git a/turbo.json b/turbo.json index 517d5b16..d843d343 100644 --- a/turbo.json +++ b/turbo.json @@ -42,6 +42,19 @@ ], "outputs": [], "outputLogs": "errors-only" + }, + "mint-tsdocs": { + "dependsOn": ["^mint-tsdocs"], + "inputs": [ + "src/**", + "wasm/**", + "test/**", + "package.json", + "tsconfig.json", + "mint-tsdocs.config.ts" + ], + "outputs": ["../../docs"], + "outputLogs": "errors-only" } } } diff --git a/typedoc.base.json b/typedoc.base.json deleted file mode 100644 index 07033b3e..00000000 --- a/typedoc.base.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "https://typedoc.org/schema.json", - "readme": "none", - "includeVersion": true -} diff --git a/typedoc.json b/typedoc.json deleted file mode 100644 index a9bde30e..00000000 --- a/typedoc.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "$schema": "https://typedoc.org/schema.json", - "plugin": ["typedoc-plugin-markdown"], - "entryPoints": ["packages/*"], - "entryPointStrategy": "packages", - "skipErrorChecking": true, - "router": "module", - "includeVersion": false, - "readme": "none", - "entryFileName": "index", - "hidePageHeader": true, - "hideBreadcrumbs": true, - "useCodeBlocks": true, - "cleanOutputDir": true, - "excludePrivate": true, - "outputs": [ - { - "name": "markdown", - "path": "./docs_markdown" - } - ] -}