# Suido 水道 — Pipe-connecting puzzle > Suido 水道 — Pipe-connecting puzzle: 3,520 fixed levels, a seeded generator and solver, walls, locked pieces, big pieces and an SVG board. TypeScript, zero dependencies. Install with `npm install @johnmorrisdotca/suido`. Every page below is also an HTML page at the same address ending in .html; the documentation's home is https://johnmorrisdotca.github.io/suido/docs/. The examples on the reference pages are run when the site is built, and what they print is shown under them. ## Guides - [Getting started](https://johnmorrisdotca.github.io/suido/docs/guides/getting-started.md): Read a fixed level, turn a piece and validate its answer. - [Load fixed and daily levels](https://johnmorrisdotca.github.io/suido/docs/guides/levels.md): Load only one size and select the shared UTC daily puzzle. - [Keep and restore progress](https://johnmorrisdotca.github.io/suido/docs/guides/progress.md): Store native progress with the original puzzle code. - [Draw boards and pipe pieces](https://johnmorrisdotca.github.io/suido/docs/guides/drawing.md): Render SVG without mounting a game. - [Generate and verify a puzzle](https://johnmorrisdotca.github.io/suido/docs/guides/generation.md): Use reproducible seeds and distinguish a proof from an exhausted search. - [Embed a native board](https://johnmorrisdotca.github.io/suido/docs/guides/embeds.md): Mount or register the board and handle its native events. - [Plain HTML and CDNs](https://johnmorrisdotca.github.io/suido/docs/guides/html-and-cdn.md): Put a Suido board on a plain page with one script tag from jsDelivr or unpkg. - [Embed in an iframe](https://johnmorrisdotca.github.io/suido/docs/guides/embed-in-an-iframe.md): Show a Suido board on a page that cannot run script, with one iframe of the embed page. - [Vite and webpack](https://johnmorrisdotca.github.io/suido/docs/guides/bundlers.md): Install the package and import the board element in a Vite or webpack project. - [React, Vue, Svelte and Angular](https://johnmorrisdotca.github.io/suido/docs/guides/frameworks.md): Use the board element in React, Vue, Svelte and Angular, with the import that keeps a server render working. - [TypeScript and Node](https://johnmorrisdotca.github.io/suido/docs/guides/typescript-and-node.md): Use the package's types, and run the rules on a server with no DOM. - [Pipe masks and water rules](https://johnmorrisdotca.github.io/suido/docs/guides/rules.md): Understand cell indices, masks, spare pipes and block rotations. - [Architecture and difficulty](https://johnmorrisdotca.github.io/suido/docs/guides/architecture.md): Keep pure rules separate from rendering and interpret difficulty scores. - [Troubleshooting and FAQ](https://johnmorrisdotca.github.io/suido/docs/guides/troubleshooting.md): Explain null returns, loading order and invalid saved states. - [Upgrading and moving a host](https://johnmorrisdotca.github.io/suido/docs/guides/upgrading.md): Preserve fixed board identities and old element size aliases. ## Reference - [@johnmorrisdotca/suido/draw](https://johnmorrisdotca.github.io/suido/docs/api/draw/index.md): Suido's drawing: SVG text for a board and a piece, the style that turns the drawing into flowing water, and the function that paints a board in play. - [@johnmorrisdotca/suido/play](https://johnmorrisdotca.github.io/suido/docs/api/play/index.md): Suido, played in a page: `mountSuido` draws a board into any element and plays it by tap, mouse and keyboard, with the water flowing as pipes join, a hint, Start over, and the words in English and Japanese. - [@johnmorrisdotca/suido/element](https://johnmorrisdotca.github.io/suido/docs/api/element/index.md): Board element - [@johnmorrisdotca/suido/element/define](https://johnmorrisdotca.github.io/suido/docs/api/element-define/index.md): Defines the `` element on the page. - [@johnmorrisdotca/suido/levels](https://johnmorrisdotca.github.io/suido/docs/api/levels/index.md): Load fixed levels - [@johnmorrisdotca/suido/levels-info](https://johnmorrisdotca.github.io/suido/docs/api/levels-info/index.md): EVERYTHING ABOUT SUIDO'S LEVELS BUT THE LEVELS: `@johnmorrisdotca/suido/levels-info`. - [@johnmorrisdotca/suido/levels-5x5](https://johnmorrisdotca.github.io/suido/docs/api/levels-5x5/index.md): 5 × 5 levels - [@johnmorrisdotca/suido/levels-6x6](https://johnmorrisdotca.github.io/suido/docs/api/levels-6x6/index.md): 6 × 6 levels - [@johnmorrisdotca/suido/levels-7x7](https://johnmorrisdotca.github.io/suido/docs/api/levels-7x7/index.md): 7 × 7 levels - [@johnmorrisdotca/suido/levels-8x8](https://johnmorrisdotca.github.io/suido/docs/api/levels-8x8/index.md): 8 × 8 levels - [@johnmorrisdotca/suido/levels-9x9](https://johnmorrisdotca.github.io/suido/docs/api/levels-9x9/index.md): 9 × 9 levels - [@johnmorrisdotca/suido/levels-10x10](https://johnmorrisdotca.github.io/suido/docs/api/levels-10x10/index.md): 10 × 10 levels - [@johnmorrisdotca/suido/levels-11x11](https://johnmorrisdotca.github.io/suido/docs/api/levels-11x11/index.md): 11 × 11 levels - [@johnmorrisdotca/suido/levels-12x12](https://johnmorrisdotca.github.io/suido/docs/api/levels-12x12/index.md): 12 × 12 levels - [@johnmorrisdotca/suido/levels-13x13](https://johnmorrisdotca.github.io/suido/docs/api/levels-13x13/index.md): 13 × 13 levels - [@johnmorrisdotca/suido/levels-14x14](https://johnmorrisdotca.github.io/suido/docs/api/levels-14x14/index.md): 14 × 14 levels - [@johnmorrisdotca/suido/levels-5x7](https://johnmorrisdotca.github.io/suido/docs/api/levels-5x7/index.md): 5 × 7 levels - [@johnmorrisdotca/suido/levels-6x10](https://johnmorrisdotca.github.io/suido/docs/api/levels-6x10/index.md): 6 × 10 levels - [@johnmorrisdotca/suido/levels-8x14](https://johnmorrisdotca.github.io/suido/docs/api/levels-8x14/index.md): 8 × 14 levels - [@johnmorrisdotca/suido/levels-20x20](https://johnmorrisdotca.github.io/suido/docs/api/levels-20x20/index.md): 20 × 20 levels - [@johnmorrisdotca/suido/levels-28x28](https://johnmorrisdotca.github.io/suido/docs/api/levels-28x28/index.md): 28 × 28 levels - [@johnmorrisdotca/suido/levels-20x50](https://johnmorrisdotca.github.io/suido/docs/api/levels-20x50/index.md): 20 × 50 levels - [@johnmorrisdotca/suido/levels-big](https://johnmorrisdotca.github.io/suido/docs/api/levels-big/index.md): Big-piece levels - [@johnmorrisdotca/suido/marks](https://johnmorrisdotca.github.io/suido/docs/api/marks/index.md): EVERY SUIDO LEVEL'S DIFFICULTY, 1 TO 5: one digit a level, level 1 first, from its measured score (`difficulty.ts`, 1 to 100 among boards of its size) in steps of twenty: the marks a level shows. - [@johnmorrisdotca/suido](https://johnmorrisdotca.github.io/suido/docs/api/main/index.md): Pipe masks, board codes, water flow, game state, bounded solvers and seeded puzzle generation. ## Optional - [Changelog](https://johnmorrisdotca.github.io/suido/docs/changelog.md): every release - [Every export, in full](https://johnmorrisdotca.github.io/suido/llms-full.txt) - [Source](https://github.com/johnmorrisdotca/suido)