From 43b20e6778f84cc3561b71b21f774496488603f1 Mon Sep 17 00:00:00 2001 From: sdairs Date: Sun, 4 Oct 2026 18:22:56 +0100 Subject: [PATCH 1/2] Add Service atlas graph editor with Elysia and Postgres --- .github/workflows/service-topology.yml | 25 ++ applications/service-topology/.env.example | 7 + applications/service-topology/.gitignore | 7 + applications/service-topology/README.md | 298 +++++++++++++ applications/service-topology/bun.lock | 262 ++++++++++++ .../docs/service-topology.png | Bin 0 -> 114755 bytes applications/service-topology/index.html | 1 + applications/service-topology/package.json | 35 ++ .../service-topology/playwright.config.ts | 10 + .../service-topology/sql/001_roles.sql | 10 + .../service-topology/sql/002_schema.sql | 28 ++ .../service-topology/sql/003_seed.sql | 24 ++ .../service-topology/src/client/api.ts | 3 + .../service-topology/src/client/main.tsx | 366 ++++++++++++++++ .../service-topology/src/client/store.ts | 161 +++++++ .../service-topology/src/client/style.css | 392 ++++++++++++++++++ .../service-topology/src/server/app.ts | 55 +++ .../service-topology/src/server/database.ts | 39 ++ .../service-topology/src/server/graph.ts | 62 +++ .../service-topology/src/server/index.ts | 24 ++ .../service-topology/src/server/origin.ts | 18 + .../service-topology/src/server/repository.ts | 36 ++ .../service-topology/src/server/schema.ts | 44 ++ .../service-topology/src/shared/types.ts | 17 + .../tests/browser/editor.spec.ts | 92 ++++ .../service-topology/tests/database.test.ts | 191 +++++++++ .../service-topology/tests/graph.test.ts | 54 +++ applications/service-topology/tsconfig.json | 14 + applications/service-topology/vite.config.ts | 6 + 29 files changed, 2281 insertions(+) create mode 100644 .github/workflows/service-topology.yml create mode 100644 applications/service-topology/.env.example create mode 100644 applications/service-topology/.gitignore create mode 100644 applications/service-topology/README.md create mode 100644 applications/service-topology/bun.lock create mode 100644 applications/service-topology/docs/service-topology.png create mode 100644 applications/service-topology/index.html create mode 100644 applications/service-topology/package.json create mode 100644 applications/service-topology/playwright.config.ts create mode 100644 applications/service-topology/sql/001_roles.sql create mode 100644 applications/service-topology/sql/002_schema.sql create mode 100644 applications/service-topology/sql/003_seed.sql create mode 100644 applications/service-topology/src/client/api.ts create mode 100644 applications/service-topology/src/client/main.tsx create mode 100644 applications/service-topology/src/client/store.ts create mode 100644 applications/service-topology/src/client/style.css create mode 100644 applications/service-topology/src/server/app.ts create mode 100644 applications/service-topology/src/server/database.ts create mode 100644 applications/service-topology/src/server/graph.ts create mode 100644 applications/service-topology/src/server/index.ts create mode 100644 applications/service-topology/src/server/origin.ts create mode 100644 applications/service-topology/src/server/repository.ts create mode 100644 applications/service-topology/src/server/schema.ts create mode 100644 applications/service-topology/src/shared/types.ts create mode 100644 applications/service-topology/tests/browser/editor.spec.ts create mode 100644 applications/service-topology/tests/database.test.ts create mode 100644 applications/service-topology/tests/graph.test.ts create mode 100644 applications/service-topology/tsconfig.json create mode 100644 applications/service-topology/vite.config.ts diff --git a/.github/workflows/service-topology.yml b/.github/workflows/service-topology.yml new file mode 100644 index 00000000..2b4f15b9 --- /dev/null +++ b/.github/workflows/service-topology.yml @@ -0,0 +1,25 @@ +name: Service topology +on: + pull_request: + paths: + - 'applications/service-topology/**' + - '.github/workflows/service-topology.yml' + push: + paths: + - 'applications/service-topology/**' + - '.github/workflows/service-topology.yml' +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: applications/service-topology + steps: + - uses: actions/checkout@v4 + - uses: oven-sh/setup-bun@v2 + with: + bun-version: '1.4.2' + - run: bun install --frozen-lockfile --ignore-scripts + - run: bun run typecheck + - run: bun test tests/graph.test.ts + - run: bun run build diff --git a/applications/service-topology/.env.example b/applications/service-topology/.env.example new file mode 100644 index 00000000..b50d4182 --- /dev/null +++ b/applications/service-topology/.env.example @@ -0,0 +1,7 @@ +# Runtime login only. Cloud requires the downloaded CA file. +DATABASE_URL=postgres://topology_app:YOUR_PASSWORD@YOUR_HOST:5432/postgres +PG_CA_CERT_PATH=.deployment/postgres-ca.pem +# Enable only for a loopback development database without TLS: +# DATABASE_LOCAL=true +PORT=3000 +APP_ORIGIN=http://127.0.0.1:3000 diff --git a/applications/service-topology/.gitignore b/applications/service-topology/.gitignore new file mode 100644 index 00000000..1b5df4e8 --- /dev/null +++ b/applications/service-topology/.gitignore @@ -0,0 +1,7 @@ +.env +.deployment/ +.clickhouse/ +node_modules/ +dist/ +test-results/ +playwright-report/ diff --git a/applications/service-topology/README.md b/applications/service-topology/README.md new file mode 100644 index 00000000..6fcd716f --- /dev/null +++ b/applications/service-topology/README.md @@ -0,0 +1,298 @@ +# Service atlas + +Build and save a small service architecture map with React Flow, Zustand, ELK, +Elysia, Eden Treaty, and Drizzle's Bun SQL driver, backed by +[ClickHouse Managed Postgres](https://clickhouse.com/cloud/postgres). + +Add services, connect them, drag them into place, or let ELK arrange the graph. +Every save commits the current document and a revision snapshot together. If two +tabs edit the same revision, one saves and the other gets a visible conflict. + +![A saved storefront service map with six services and directed connections](docs/service-topology.png) + +This is a trusted local demo using synthetic architecture metadata. It listens +on loopback and checks the configured Host and write Origin. There are no user +accounts, network discovery, automatic service execution, or live collaboration. + +## How the pieces fit + +| Library | Actual use | +| ----------------- | ---------------------------------------------------------------------- | +| React Flow | Draggable service cards, connection handles, edges, zoom and selection | +| Zustand | Draft nodes/edges, unsaved state, revision and conflict state | +| ELK.js | Layered automatic layout using the actual graph's nodes and edges | +| Elysia | Typed routes, structural validation and explicit error responses | +| Eden Treaty | Typed reads and saves using a type-only backend import | +| Drizzle + Bun SQL | Conditional updates, JSONB documents and atomic snapshot inserts | + +`service_topology.graphs` stores a header, revision and current JSONB document. +`service_topology.revisions` has a primary key on `(graph_id, revision)` and +stores each committed snapshot. The runtime login can read both tables, update +the current document/revision, and insert snapshots. It cannot update or delete +snapshots or change the schema. + +Maps allow up to 100 services and 200 directed connections. Service names are +1–60 characters, IDs are UUIDs, coordinates are bounded finite numbers, and +connections must reference existing services. Self connections and repeated +connections in the same direction are rejected. Reverse connections are allowed. + +[repository.ts](src/server/repository.ts) updates with both ID and base revision +in its predicate. It inserts the snapshot in the same transaction. A zero-row +update returns `409`. If insertion fails, the current document also rolls back. +Reads return the document and revision from one row. + +## Get the source and tools + +Run application dependencies inside Linux. On macOS, an isolated +[OrbStack machine](https://docs.orbstack.dev/machines/isolated) keeps dependencies +off the host: + +```sh +orbctl create ubuntu:noble topology-dev --isolated --arch arm64 --memory 4G --cpus 2 +orbctl run -m topology-dev -w /home/$USER bash +``` + +Inside Linux: + +```sh +sudo apt-get update +sudo apt-get install -y ca-certificates curl git unzip jq openssl postgresql-client docker.io +sudo systemctl start docker +sudo usermod -aG docker "$USER" +# Reopen your Linux shell so the Docker group applies. +curl -fsSL https://bun.sh/install -o /tmp/bun-install.sh +bash /tmp/bun-install.sh bun-v1.4.2 +export PATH="$HOME/.bun/bin:$HOME/.local/bin:$PATH" +curl -fsSL https://clickhouse.com/cli | sh +git clone https://github.com/ClickHouse/examples.git +cd examples/applications/service-topology +bun install --frozen-lockfile --ignore-scripts +``` + +The checked-in lockfile pins the library versions. Bun must report `1.4.2`. +No third-party application service is required. Cloud lifecycle commands may +instead run with an existing host `clickhousectl`; copy only the database CA and +step-specific credentials into the VM, keeping Cloud API keys on the host. + +## Choose a database + +### Local Postgres with clickhousectl + +```sh +umask 077 +mkdir -p .deployment +clickhousectl local postgres start --name topology --version 18 --json \ + > .deployment/local-create.json +export PGHOST=127.0.0.1 +export PGPORT="$(jq -er '.port' .deployment/local-create.json)" +export PGDATABASE="$(jq -er '.database' .deployment/local-create.json)" +export PGADMIN="$(jq -er '.user' .deployment/local-create.json)" +export PGPASSWORD="$(jq -er '.password' .deployment/local-create.json)" +export PGSSLMODE=disable +``` + +Use the actual returned port. This receipt contains a password and belongs in +the ignored private directory. + +### ClickHouse Managed Postgres with clickhousectl + +Create an Admin API key following the +[Cloud API guide](https://clickhouse.com/docs/cloud/manage/openapi), then enter +it interactively: + +```sh +clickhousectl cloud auth login --interactive +clickhousectl cloud auth status +clickhousectl cloud org list +umask 077 +mkdir -p .deployment +``` + +Create `.deployment/resources.env` in an editor with your organization, an +available AWS region and Postgres size: + +```dotenv +CH_ORG_ID=YOUR_ORGANIZATION_UUID +CLOUD_REGION=YOUR_AVAILABLE_REGION +PG_SIZE=YOUR_AVAILABLE_SIZE +``` + +One non-HA Postgres 18 service is enough for this example. Review +[pricing](https://clickhouse.com/pricing) before creating it. Compute, storage, +backups and network usage can incur charges; stopping the application or VM +does not stop the managed service's billing. + +```sh +source .deployment/resources.env +clickhousectl cloud postgres create --org-id "$CH_ORG_ID" \ + --name service-topology-example --provider aws --region "$CLOUD_REGION" \ + --size "$PG_SIZE" --pg-version 18 --ha-type none \ + --tag project=service-topology --json > .deployment/postgres-create.json +PG_SERVICE_ID="$(jq -er '.id' .deployment/postgres-create.json)" +``` + +Save the service ID in `.deployment/resources.env`. Preserve the create receipt: +its initial password is returned once. If creation is interrupted, inspect +`clickhousectl cloud postgres list --org-id "$CH_ORG_ID" --json` before retrying. + +Repeat inspection until `state` is `running`: + +```sh +clickhousectl cloud postgres get "$PG_SERVICE_ID" --org-id "$CH_ORG_ID" --json \ + > .deployment/postgres-status.json +jq '{id,state,hostname,username,postgresVersion,size}' .deployment/postgres-status.json +clickhousectl cloud postgres certs get "$PG_SERVICE_ID" --org-id "$CH_ORG_ID" \ + --output .deployment/postgres-ca.pem +``` + +Use the service's actual direct hostname, port, database and administrator. +For a direct service connection, use port 5432 and database `postgres`; check the service response for the actual connection details: + +```sh +export PGHOST="$(jq -er '.hostname' .deployment/postgres-status.json)" +export PGPORT=5432 PGDATABASE=postgres +export PGADMIN="$(jq -er '.username' .deployment/postgres-status.json)" +export PGPASSWORD="$(jq -er '.password' .deployment/postgres-create.json)" +export PGSSLMODE=verify-full +export PGSSLROOTCERT="$PWD/.deployment/postgres-ca.pem" +``` + +## Apply roles, schema and seed + +Run once on your dedicated fresh database. Passwords are read by psql from +environment variables and do not become command arguments. + +```sh +cat > .deployment/passwords.env < .env <=1.4.19" } }, "sha512-3CKVD4ycVjB8nCNssfmhnUuq3SzSHkUES3v5PNCFr9LxIrx39/HVRAZ8z2sLxrFqzUs48dCBZaxoZzJ5UUVHDA=="], + + "@oxc-project/types": ["@oxc-project/types@0.152.0", "", {}, "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw=="], + + "@playwright/test": ["@playwright/test@1.63.0", "", { "dependencies": { "playwright": "1.63.0" }, "bin": { "playwright": "cli.js" } }, "sha512-oxMK4vllB9RK5NQ2l1pq1IfOf2AvnEuj/vYGDj0H2nMtmtZpKtCwt/l00GEO6xjGfpBNAvjovvYdCm50dRQkpQ=="], + + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.12", "", { "os": "android", "cpu": "arm" }, "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A=="], + + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.12", "", { "os": "android", "cpu": "arm64" }, "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.12", "", { "os": "linux", "cpu": "arm" }, "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw=="], + + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ=="], + + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.12", "", { "os": "linux", "cpu": "x64" }, "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.12", "", { "os": "linux", "cpu": "x64" }, "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.12", "", { "os": "win32", "cpu": "x64" }, "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], + + "@sinclair/typebox": ["@sinclair/typebox@0.34.52", "", {}, "sha512-XiMQh7qqVlxZzcVD+kkGMNGMzcTrDMLWI7S4x7z1MkCkbDPrekpZXEUK0eZqZFMuHQg2a2DZOcDIh9o5v3Gonw=="], + + "@tokenizer/inflate": ["@tokenizer/inflate@0.4.1", "", { "dependencies": { "debug": "^4.4.3", "token-types": "^6.1.1" } }, "sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA=="], + + "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="], + + "@types/bun": ["@types/bun@1.4.2", "", { "dependencies": { "bun-types": "1.4.2" } }, "sha512-GimotNn7+ZV0uVArItBbriZsR1oNf0+WTzPkdcFrzShI7k2norL0uzEaJT8T33dWr7O/c9ZDuAFQrctKCi72oQ=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-selection": ["@types/d3-selection@3.0.12", "", {}, "sha512-Qe/KWYhEiIIxGs7HrAAjMfShxKldx19SJtr5zu53f3afPsdZNz7HHtdTLXo/kqeiWNXVycI24kSnfzBYkTzpgw=="], + + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], + + "@types/d3-zoom": ["@types/d3-zoom@3.0.9", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-0sE1406XBYJGiqD3AusTl9ZqC//2mIXix51tbom25gDCA8ri4xnSZg28CaSE8Srl6FClqABUKfsn0qghgdepMA=="], + + "@types/node": ["@types/node@26.6.4", "", { "dependencies": { "undici-types": "~8.9.0" } }, "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg=="], + + "@types/react": ["@types/react@19.3.0", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-N0rFCuH9YoxG9/m61l9MfpJKfmLOVU0em7ipIz6TRgSSkvReLB9vL85GB+yr8Bs5leqpvg96JSwF4ZS1s4viQg=="], + + "@types/react-dom": ["@types/react-dom@19.3.0", "", { "peerDependencies": { "@types/react": "^19.3.0" } }, "sha512-ZI7bU42mZXXKHn/qNLEw2IrbiINU7X5+vfgdixBHkCNpYWXjKgfQ/P+uyGb5CjOLB9UcnTeg3rylQtV2hym44Q=="], + + "@typescript/typescript-aix-ppc64": ["@typescript/typescript-aix-ppc64@7.0.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ=="], + + "@typescript/typescript-darwin-arm64": ["@typescript/typescript-darwin-arm64@7.0.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA=="], + + "@typescript/typescript-darwin-x64": ["@typescript/typescript-darwin-x64@7.0.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA=="], + + "@typescript/typescript-freebsd-arm64": ["@typescript/typescript-freebsd-arm64@7.0.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ=="], + + "@typescript/typescript-freebsd-x64": ["@typescript/typescript-freebsd-x64@7.0.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw=="], + + "@typescript/typescript-linux-arm": ["@typescript/typescript-linux-arm@7.0.2", "", { "os": "linux", "cpu": "arm" }, "sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ=="], + + "@typescript/typescript-linux-arm64": ["@typescript/typescript-linux-arm64@7.0.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ=="], + + "@typescript/typescript-linux-loong64": ["@typescript/typescript-linux-loong64@7.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ=="], + + "@typescript/typescript-linux-mips64el": ["@typescript/typescript-linux-mips64el@7.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA=="], + + "@typescript/typescript-linux-ppc64": ["@typescript/typescript-linux-ppc64@7.0.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA=="], + + "@typescript/typescript-linux-riscv64": ["@typescript/typescript-linux-riscv64@7.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ=="], + + "@typescript/typescript-linux-s390x": ["@typescript/typescript-linux-s390x@7.0.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw=="], + + "@typescript/typescript-linux-x64": ["@typescript/typescript-linux-x64@7.0.2", "", { "os": "linux", "cpu": "x64" }, "sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A=="], + + "@typescript/typescript-netbsd-arm64": ["@typescript/typescript-netbsd-arm64@7.0.2", "", { "os": "none", "cpu": "arm64" }, "sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA=="], + + "@typescript/typescript-netbsd-x64": ["@typescript/typescript-netbsd-x64@7.0.2", "", { "os": "none", "cpu": "x64" }, "sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA=="], + + "@typescript/typescript-openbsd-arm64": ["@typescript/typescript-openbsd-arm64@7.0.2", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ=="], + + "@typescript/typescript-openbsd-x64": ["@typescript/typescript-openbsd-x64@7.0.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg=="], + + "@typescript/typescript-sunos-x64": ["@typescript/typescript-sunos-x64@7.0.2", "", { "os": "sunos", "cpu": "x64" }, "sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g=="], + + "@typescript/typescript-win32-arm64": ["@typescript/typescript-win32-arm64@7.0.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ=="], + + "@typescript/typescript-win32-x64": ["@typescript/typescript-win32-x64@7.0.2", "", { "os": "win32", "cpu": "x64" }, "sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g=="], + + "@vitejs/plugin-react": ["@vitejs/plugin-react@6.1.1", "", { "dependencies": { "@rolldown/pluginutils": "^1.0.1" }, "peerDependencies": { "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", "babel-plugin-react-compiler": "^1.0.0", "oxc-transform-react": "^0.145.0", "vite": "^8.0.0" }, "optionalPeers": ["@rolldown/plugin-babel", "babel-plugin-react-compiler", "oxc-transform-react"] }, "sha512-yxLaQV9gkhS8ezJqCM6+ndU7mDY6gqAg75NQ+0IjwEI8IYOmQCgkRwHKVSfWXW076DsqMo0Dk+0FK1U+M5RgFw=="], + + "@xyflow/react": ["@xyflow/react@12.12.0", "", { "dependencies": { "@xyflow/system": "0.0.83", "classcat": "^5.0.3", "zustand": "^4.4.0" }, "peerDependencies": { "@types/react": ">=17", "@types/react-dom": ">=17", "react": ">=17", "react-dom": ">=17" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-74oXI0Rgm1Eu33cHQAd74J6oVgCH9mbFyTVQbsGgp2kmWwh0HdtBr2VP04z8mbPD+M/xO69nqG5dDEt7/EN2rQ=="], + + "@xyflow/system": ["@xyflow/system@0.0.83", "", { "dependencies": { "@types/d3-drag": "^3.0.7", "@types/d3-interpolate": "^3.0.4", "@types/d3-selection": "^3.0.10", "@types/d3-transition": "^3.0.8", "@types/d3-zoom": "^3.0.8", "d3-drag": "^3.0.0", "d3-interpolate": "^3.0.1", "d3-selection": "^3.0.0", "d3-zoom": "^3.0.0" } }, "sha512-a//eDjez3WZF47aaPTfVUDD0OINOq+WVwBZCRTqG+m0a5euX8EwlJ4jMY1Wxz0Ocj4xOeekJ70V22Pq0ll8RJw=="], + + "bun-types": ["bun-types@1.4.2", "", { "dependencies": { "@types/node": "*" } }, "sha512-bxV1FgK7yBIzjRe5zBozIM4Bem11ZJcCXSrjWRG3YWLt8yFDePu4cLjpebO8OvPeIE9trbyPF4fuj3Cia4Fj3w=="], + + "classcat": ["classcat@5.0.5", "", {}, "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w=="], + + "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], + + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], + + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], + + "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], + + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], + + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "drizzle-orm": ["drizzle-orm@0.45.3", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@netlify/db": ">=0.4.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "prisma": "*", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@netlify/db", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "prisma", "sql.js", "sqlite3"] }, "sha512-CAloER21cDdcgZ1OmjrZX82EeRNsdP+y0onX/eyoYDaYzki/adrAa91lzM5jWh7zZPK4qUbw/6LGv9J+A+uizA=="], + + "elkjs": ["elkjs@0.12.0", "", {}, "sha512-YZcKynxVxYoKIOEpywEPwCFdg+BTbxQRNf3pbwdDCvc8O3kQD8bmIwSxKU1eOTVc4Xo+VG9Te+575mlfvOrhEQ=="], + + "elysia": ["elysia@1.4.30", "", { "dependencies": { "cookie": "^1.1.1", "exact-mirror": "^0.2.7", "fast-decode-uri-component": "^1.0.1", "memoirist": "^0.4.0" }, "peerDependencies": { "@sinclair/typebox": ">= 0.34.0 < 1", "@types/bun": ">= 1.2.0", "file-type": ">= 20.0.0", "openapi-types": ">= 12.0.0", "typescript": ">= 5.0.0" }, "optionalPeers": ["@types/bun", "typescript"] }, "sha512-S2qqV0CbM4faB1hQQ5IYoeYnAUinjHlzRduxaBc4OoNqh0GjOc8k6tt3hv5ozWcG6Svr6hugw6JL4zNke4jwfA=="], + + "exact-mirror": ["exact-mirror@0.2.7", "", { "peerDependencies": { "@sinclair/typebox": "^0.34.15" }, "optionalPeers": ["@sinclair/typebox"] }, "sha512-+MeEmDcLA4o/vjK2zujgk+1VTxPR4hdp23qLqkWfStbECtAq9gmsvQa3LW6z/0GXZyHJobrCnmy1cdeE7BjsYg=="], + + "fast-decode-uri-component": ["fast-decode-uri-component@1.0.1", "", {}, "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="], + + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "file-type": ["file-type@22.1.1", "", { "dependencies": { "@tokenizer/inflate": "^0.4.1", "strtok3": "^10.3.5", "token-types": "^6.1.2", "uint8array-extras": "^1.5.0" } }, "sha512-sEB0oStmeLGtpmSAD88RDNuLsvhv4iC3u0lE25CUvfCULvj49xoQ3l3K525Vn+ZzsZ6DOLajQCV6RmhwwhqiJg=="], + + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + + "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="], + + "memoirist": ["memoirist@0.4.0", "", {}, "sha512-zxTgA0mSYELa66DimuNQDvyLq36AwDlTuVRbnQtB+VuTcKWm5Qc4z3WkSpgsFWHNhexqkIooqpv4hdcqrX5Nmg=="], + + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + + "nanoid": ["nanoid@3.3.19", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug=="], + + "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], + + "playwright": ["playwright@1.63.0", "", { "dependencies": { "playwright-core": "1.63.0" }, "bin": { "playwright": "cli.js" } }, "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg=="], + + "playwright-core": ["playwright-core@1.63.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg=="], + + "postcss": ["postcss@8.5.28", "", { "dependencies": { "nanoid": "^3.3.18", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A=="], + + "react": ["react@19.3.0", "", {}, "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog=="], + + "react-dom": ["react-dom@19.3.0", "", { "dependencies": { "scheduler": "^0.28.0" }, "peerDependencies": { "react": "^19.3.0" } }, "sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q=="], + + "rolldown": ["rolldown@1.2.12", "", { "dependencies": { "@oxc-project/types": "=0.152.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.12", "@rolldown/binding-android-arm64": "1.2.12", "@rolldown/binding-darwin-arm64": "1.2.12", "@rolldown/binding-darwin-x64": "1.2.12", "@rolldown/binding-freebsd-x64": "1.2.12", "@rolldown/binding-linux-arm-gnueabihf": "1.2.12", "@rolldown/binding-linux-arm64-gnu": "1.2.12", "@rolldown/binding-linux-arm64-musl": "1.2.12", "@rolldown/binding-linux-ppc64-gnu": "1.2.12", "@rolldown/binding-linux-s390x-gnu": "1.2.12", "@rolldown/binding-linux-x64-gnu": "1.2.12", "@rolldown/binding-linux-x64-musl": "1.2.12", "@rolldown/binding-openharmony-arm64": "1.2.12", "@rolldown/binding-win32-arm64-msvc": "1.2.12", "@rolldown/binding-win32-x64-msvc": "1.2.12" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ=="], + + "scheduler": ["scheduler@0.28.0", "", {}, "sha512-juorfCmIkIw8tT+p5BXSm6PJjQF/ycEYmKyzURCIt/RaZIhL+PulbQ9Yu2z1HdOJDdqDTlxA1+xKBmHXJsczAw=="], + + "source-map-js": ["source-map-js@1.2.2", "", {}, "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw=="], + + "strtok3": ["strtok3@10.3.5", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA=="], + + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], + + "token-types": ["token-types@6.1.2", "", { "dependencies": { "@borewit/text-codec": "^0.2.1", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-dRXchy+C0IgK8WPC6xvCHFRIWYUbqqdEIKPaKo/AcTUNzwLTK6AH7RjdLWsEZcAN/TBdtfUw3PYEgPr5VPr6ww=="], + + "typescript": ["typescript@7.0.2", "", { "optionalDependencies": { "@typescript/typescript-aix-ppc64": "7.0.2", "@typescript/typescript-darwin-arm64": "7.0.2", "@typescript/typescript-darwin-x64": "7.0.2", "@typescript/typescript-freebsd-arm64": "7.0.2", "@typescript/typescript-freebsd-x64": "7.0.2", "@typescript/typescript-linux-arm": "7.0.2", "@typescript/typescript-linux-arm64": "7.0.2", "@typescript/typescript-linux-loong64": "7.0.2", "@typescript/typescript-linux-mips64el": "7.0.2", "@typescript/typescript-linux-ppc64": "7.0.2", "@typescript/typescript-linux-riscv64": "7.0.2", "@typescript/typescript-linux-s390x": "7.0.2", "@typescript/typescript-linux-x64": "7.0.2", "@typescript/typescript-netbsd-arm64": "7.0.2", "@typescript/typescript-netbsd-x64": "7.0.2", "@typescript/typescript-openbsd-arm64": "7.0.2", "@typescript/typescript-openbsd-x64": "7.0.2", "@typescript/typescript-sunos-x64": "7.0.2", "@typescript/typescript-win32-arm64": "7.0.2", "@typescript/typescript-win32-x64": "7.0.2" }, "bin": { "tsc": "bin/tsc" } }, "sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA=="], + + "uint8array-extras": ["uint8array-extras@1.6.0", "", {}, "sha512-8iAasVS4wUx0gPLjH8Xtz2PeDzTSiy8QiLGu2DT3X5GU+egFEQhpnbtkehbAwjvDcxIERmCYcysiODFmE3Ud0Q=="], + + "undici-types": ["undici-types@8.9.0", "", {}, "sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg=="], + + "use-sync-external-store": ["use-sync-external-store@1.7.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-6L+EeigHMQhdaIPNIFUKwfWJSwWFQ8gJbJ2DLOs5sDIegTwR9fRxvnM3uciHKjIZhFz+KAv2emhWMRvDmMcY8A=="], + + "vite": ["vite@8.3.2", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.7", "postcss": "^8.5.28", "rolldown": "~1.2.11", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.7.1", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w=="], + + "zustand": ["zustand@5.0.15", "", { "peerDependencies": { "@types/react": ">=18.0.0", "immer": ">=9.0.6", "react": ">=18.0.0", "use-sync-external-store": ">=1.2.0" }, "optionalPeers": ["@types/react", "immer", "react", "use-sync-external-store"] }, "sha512-MpSEjRiBkA9crSYeOUH32rJC7SVqAbm0Fqcqge/bUi2PPoLcBWKOsG+C8mevmpr8TwXHBVkChbbJiyvkE+i/3A=="], + + "@xyflow/react/zustand": ["zustand@4.5.7", "", { "dependencies": { "use-sync-external-store": "^1.2.2" }, "peerDependencies": { "@types/react": ">=16.8", "immer": ">=9.0.6", "react": ">=16.8" }, "optionalPeers": ["@types/react", "immer", "react"] }, "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw=="], + } +} diff --git a/applications/service-topology/docs/service-topology.png b/applications/service-topology/docs/service-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..047b4232ec58806edfdd4fb4a778a438af2870b3 GIT binary patch literal 114755 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

x7k}t}fI~}6fY^3p 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 tOhBbCK)NtLH<7;MsIXz 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 rSf=)YRl@#$4lykuMMD!Fhu!Yb%v1SOotUjJ_W^ literal 0 HcmV?d00001 diff --git a/applications/service-topology/index.html b/applications/service-topology/index.html new file mode 100644 index 00000000..2552bdf6 --- /dev/null +++ b/applications/service-topology/index.html @@ -0,0 +1 @@ +Service atlas

diff --git a/applications/service-topology/package.json b/applications/service-topology/package.json new file mode 100644 index 00000000..34469e84 --- /dev/null +++ b/applications/service-topology/package.json @@ -0,0 +1,35 @@ +{ + "name": "service-topology", + "private": true, + "type": "module", + "scripts": { + "dev": "bun --watch src/server/index.ts", + "dev:web": "vite --host 127.0.0.1", + "build": "vite build", + "start": "bun src/server/index.ts", + "typecheck": "tsc --noEmit", + "test": "bun test tests/graph.test.ts", + "test:integration": "bun test tests/database.test.ts", + "test:browser": "playwright test" + }, + "dependencies": { + "@elysiajs/eden": "1.4.9", + "@sinclair/typebox": "0.34.52", + "@xyflow/react": "12.12.0", + "drizzle-orm": "0.45.3", + "elysia": "1.4.30", + "elkjs": "0.12.0", + "react": "19.3.0", + "react-dom": "19.3.0", + "zustand": "5.0.15" + }, + "devDependencies": { + "@playwright/test": "1.63.0", + "@types/bun": "1.4.2", + "@types/react": "19.3.0", + "@types/react-dom": "19.3.0", + "@vitejs/plugin-react": "6.1.1", + "typescript": "7.0.2", + "vite": "8.3.2" + } +} diff --git a/applications/service-topology/playwright.config.ts b/applications/service-topology/playwright.config.ts new file mode 100644 index 00000000..18552ef1 --- /dev/null +++ b/applications/service-topology/playwright.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "@playwright/test"; +export default defineConfig({ + testDir: "./tests/browser", + use: { + baseURL: process.env.BROWSER_BASE_URL || "http://127.0.0.1:3000", + viewport: { width: 1440, height: 1000 }, + }, + workers: 1, + reporter: "list", +}); diff --git a/applications/service-topology/sql/001_roles.sql b/applications/service-topology/sql/001_roles.sql new file mode 100644 index 00000000..7aa487c6 --- /dev/null +++ b/applications/service-topology/sql/001_roles.sql @@ -0,0 +1,10 @@ +\set ON_ERROR_STOP on +\getenv migration_password PG_MIGRATION_PASSWORD +\getenv app_password PG_APP_PASSWORD +CREATE ROLE topology_owner NOLOGIN; +CREATE ROLE topology_migration LOGIN PASSWORD :'migration_password'; +CREATE ROLE topology_app LOGIN PASSWORD :'app_password'; +GRANT topology_owner TO topology_migration; +CREATE SCHEMA service_topology AUTHORIZATION topology_owner; +REVOKE ALL ON SCHEMA service_topology FROM PUBLIC; +GRANT USAGE ON SCHEMA service_topology TO topology_app; diff --git a/applications/service-topology/sql/002_schema.sql b/applications/service-topology/sql/002_schema.sql new file mode 100644 index 00000000..c1da665b --- /dev/null +++ b/applications/service-topology/sql/002_schema.sql @@ -0,0 +1,28 @@ +\set ON_ERROR_STOP on +BEGIN; +SET LOCAL ROLE topology_owner; +CREATE TABLE service_topology.graphs ( + id UUID PRIMARY KEY, + title TEXT NOT NULL CHECK (length(title) BETWEEN 1 AND 80), + revision INTEGER NOT NULL CHECK (revision > 0), + document JSONB NOT NULL CHECK ( + document ? 'nodes' AND document ? 'edges' AND + jsonb_typeof(document) = 'object' AND + jsonb_typeof(document->'nodes') = 'array' AND + jsonb_typeof(document->'edges') = 'array' AND + jsonb_array_length(document->'nodes') <= 100 AND + jsonb_array_length(document->'edges') <= 200 + ), + updated_at TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp() +); +CREATE TABLE service_topology.revisions ( + graph_id UUID NOT NULL REFERENCES service_topology.graphs(id) ON DELETE CASCADE, + revision INTEGER NOT NULL CHECK (revision > 0), + document JSONB NOT NULL, + saved_at TIMESTAMPTZ NOT NULL DEFAULT clock_timestamp(), + PRIMARY KEY (graph_id, revision) +); +GRANT SELECT ON service_topology.graphs, service_topology.revisions TO topology_app; +GRANT UPDATE (revision, document, updated_at) ON service_topology.graphs TO topology_app; +GRANT INSERT ON service_topology.revisions TO topology_app; +COMMIT; diff --git a/applications/service-topology/sql/003_seed.sql b/applications/service-topology/sql/003_seed.sql new file mode 100644 index 00000000..b56cf032 --- /dev/null +++ b/applications/service-topology/sql/003_seed.sql @@ -0,0 +1,24 @@ +\set ON_ERROR_STOP on +BEGIN; +SET LOCAL ROLE topology_owner; +INSERT INTO service_topology.graphs (id, title, revision, document) VALUES +('67bc2cf0-5b0f-45c8-bf6a-7b4bb5155a50', 'Storefront architecture', 1, '{ + "nodes": [ + {"id":"11111111-1111-4111-8111-111111111111","type":"service","position":{"x":80,"y":100},"data":{"label":"Storefront","kind":"web"}}, + {"id":"22222222-2222-4222-8222-222222222222","type":"service","position":{"x":350,"y":100},"data":{"label":"Checkout API","kind":"api"}}, + {"id":"33333333-3333-4333-8333-333333333333","type":"service","position":{"x":620,"y":20},"data":{"label":"Orders Postgres","kind":"database"}}, + {"id":"44444444-4444-4444-8444-444444444444","type":"service","position":{"x":620,"y":180},"data":{"label":"Fulfilment worker","kind":"worker"}}, + {"id":"55555555-5555-4555-8555-555555555555","type":"service","position":{"x":890,"y":180},"data":{"label":"Warehouse API","kind":"api"}} + ], + "edges": [ + {"id":"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa","source":"11111111-1111-4111-8111-111111111111","target":"22222222-2222-4222-8222-222222222222"}, + {"id":"bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb","source":"22222222-2222-4222-8222-222222222222","target":"33333333-3333-4333-8333-333333333333"}, + {"id":"cccccccc-cccc-4ccc-8ccc-cccccccccccc","source":"22222222-2222-4222-8222-222222222222","target":"44444444-4444-4444-8444-444444444444"}, + {"id":"dddddddd-dddd-4ddd-8ddd-dddddddddddd","source":"44444444-4444-4444-8444-444444444444","target":"55555555-5555-4555-8555-555555555555"} + ] +}'::jsonb) ON CONFLICT (id) DO NOTHING; +INSERT INTO service_topology.revisions (graph_id, revision, document) +SELECT id, revision, document FROM service_topology.graphs +WHERE id = '67bc2cf0-5b0f-45c8-bf6a-7b4bb5155a50' +ON CONFLICT DO NOTHING; +COMMIT; diff --git a/applications/service-topology/src/client/api.ts b/applications/service-topology/src/client/api.ts new file mode 100644 index 00000000..41ed3323 --- /dev/null +++ b/applications/service-topology/src/client/api.ts @@ -0,0 +1,3 @@ +import { treaty } from "@elysiajs/eden"; +import type { App } from "../server/app"; +export const api = treaty(window.location.origin); diff --git a/applications/service-topology/src/client/main.tsx b/applications/service-topology/src/client/main.tsx new file mode 100644 index 00000000..8b0e5826 --- /dev/null +++ b/applications/service-topology/src/client/main.tsx @@ -0,0 +1,366 @@ +import React from "react"; +import { createRoot } from "react-dom/client"; +import { + ReactFlow, + Background, + Controls, + Handle, + Position, + MarkerType, + type NodeProps, + type Node, + type ReactFlowInstance, +} from "@xyflow/react"; +import { api } from "./api"; +import { useGraph, documentFromState } from "./store"; +import { + DEMO_GRAPH_ID, + type ServiceKind, + type ServiceNode, + type ServiceEdge, +} from "../shared/types"; +import "@xyflow/react/dist/style.css"; +import "./style.css"; + +const kinds: ServiceKind[] = ["web", "api", "worker", "database"]; +function ServiceCard({ + id, + data, + selected, +}: NodeProps>) { + return ( +
+ +
{data.kind}
+ {data.label || "Untitled service"} + {id.slice(0, 8)} + +
+ ); +} +const nodeTypes = { service: ServiceCard }; + +function App() { + const state = useGraph(); + const [selected, select] = React.useState(); + const [kind, setKind] = React.useState("api"); + const [flow, setFlow] = + React.useState>(); + const node = state.nodes.find((n) => n.id === selected); + async function reload() { + state.begin(); + const generation = useGraph.getState().generation; + try { + const { data, error } = await api.api.graphs({ id: DEMO_GRAPH_ID }).get(); + if (error || !data || !("document" in data)) + throw new Error("Could not load the map."); + if (useGraph.getState().generation !== generation) + return state.fail( + "The draft changed while loading. Reload again when ready.", + ); + useGraph.getState().load(data); + select(undefined); + } catch { + state.fail( + "Could not load the map. Check the server and database connection.", + ); + } finally { + useGraph.setState({ busy: false }); + } + } + React.useEffect(() => { + void reload(); + }, []); + async function save() { + const { saved, generation } = useGraph.getState(); + if (!saved) return; + const document = documentFromState(); + state.begin(); + try { + const { data, error } = await api.api + .graphs({ id: saved.id }) + .put({ baseRevision: saved.revision, document }); + if (error) { + const message = + typeof error.value === "object" && + error.value && + "message" in error.value + ? String(error.value.message) + : "Save failed."; + return state.fail(message, error.status === 409); + } + if (data && "document" in data) state.finish(data, generation); + } catch { + state.fail("Could not reach the server. Your draft is still here."); + } + } + async function layout() { + state.begin(); + const startGeneration = useGraph.getState().generation; + try { + const { default: ELK } = await import("elkjs/lib/elk.bundled.js"); + const elk = new ELK(); + const graph = await elk.layout({ + id: "root", + layoutOptions: { + "elk.algorithm": "layered", + "elk.direction": "RIGHT", + "elk.spacing.nodeNode": "70", + "elk.layered.spacing.nodeNodeBetweenLayers": "100", + }, + children: state.nodes.map((n) => ({ + id: n.id, + width: 200, + height: 104, + })), + edges: state.edges.map((e) => ({ + id: e.id, + sources: [e.source], + targets: [e.target], + })), + }); + if (useGraph.getState().generation !== startGeneration) + return state.fail("The map changed during layout. Run layout again."); + state.layout( + new Map( + (graph.children ?? []).map((n) => [ + n.id, + { x: n.x ?? 0, y: n.y ?? 0 }, + ]), + ), + ); + requestAnimationFrame(() => { + void flow?.fitView({ padding: 0.25 }); + }); + } catch { + state.fail( + "Automatic layout could not finish. You can still drag services.", + ); + } finally { + useGraph.setState({ busy: false }); + } + } + const status = state.conflict + ? "Save conflict" + : state.dirty + ? "Unsaved changes" + : "Saved"; + return ( +
+
+
+ ↗ +
+ Service atlas + Architecture, kept in view +
+
+
+ + Trusted local demo +
+
+
+
+
+
YOUR SERVICE MAP
+

{state.saved?.title ?? "Storefront architecture"}

+

+ Map the services behind a request. Save a revision your team can + return to. +

+
+
+ COMMITTED REVISION + + {state.saved + ? String(state.saved.revision).padStart(2, "0") + : "—"} + +
+
+
+
+ + +
+
+ + + {status} + + +
+
+ {state.message && ( +
+ {state.message} + {state.conflict && ( + + )} +
+ )} +
+
+ + nodes={state.nodes} + edges={state.edges} + nodeTypes={nodeTypes} + onInit={setFlow} + onNodesChange={state.nodeChanges} + onEdgesChange={state.edgeChanges} + onConnect={state.connect} + onNodeClick={(_, n) => select(n.id)} + onPaneClick={() => select(undefined)} + fitView + minZoom={0.2} + maxZoom={2} + defaultEdgeOptions={{ + type: "smoothstep", + markerEnd: { type: MarkerType.ArrowClosed, color: "#758897" }, + style: { stroke: "#758897", strokeWidth: 2 }, + }} + deleteKeyCode={["Backspace", "Delete"]} + > + + + +
+ Drag to arrange · Connect right handle to left handle +
+
+ +
+
+
+ React Flow · Zustand · ELK · Elysia + Eden · Drizzle + ClickHouse Managed Postgres +
+
+ ); +} +createRoot(document.getElementById("root")!).render(); diff --git a/applications/service-topology/src/client/store.ts b/applications/service-topology/src/client/store.ts new file mode 100644 index 00000000..d9bf8082 --- /dev/null +++ b/applications/service-topology/src/client/store.ts @@ -0,0 +1,161 @@ +import { create } from "zustand"; +import { + applyEdgeChanges, + applyNodeChanges, + type EdgeChange, + type NodeChange, + type Connection, +} from "@xyflow/react"; +import type { + GraphDocument, + SavedGraph, + ServiceNode, + ServiceEdge, + ServiceKind, +} from "../shared/types"; +type State = { + saved?: SavedGraph; + nodes: ServiceNode[]; + edges: ServiceEdge[]; + dirty: boolean; + busy: boolean; + message: string; + conflict: boolean; + generation: number; + load: (graph: SavedGraph) => void; + nodeChanges: (changes: NodeChange[]) => void; + edgeChanges: (changes: EdgeChange[]) => void; + connect: (connection: Connection) => void; + add: (kind: ServiceKind) => void; + rename: (id: string, label: string) => void; + remove: (id: string) => void; + layout: (positions: Map) => void; + begin: () => void; + finish: (graph: SavedGraph, generation: number) => void; + fail: (message: string, conflict?: boolean) => void; +}; +export const useGraph = create((set, get) => ({ + nodes: [], + edges: [], + dirty: false, + busy: false, + message: "", + conflict: false, + generation: 0, + load: (graph) => + set({ + saved: graph, + nodes: graph.document.nodes, + edges: graph.document.edges, + dirty: false, + conflict: false, + message: "", + generation: get().generation + 1, + }), + nodeChanges: (changes) => { + const contentChange = changes.some( + (c) => c.type !== "select" && c.type !== "dimensions", + ); + const nodes = applyNodeChanges(changes, get().nodes); + const ids = new Set(nodes.map((n) => n.id)); + set({ + nodes, + edges: get().edges.filter((e) => ids.has(e.source) && ids.has(e.target)), + ...(contentChange + ? { dirty: true, generation: get().generation + 1 } + : {}), + }); + }, + edgeChanges: (changes) => + set({ + edges: applyEdgeChanges(changes, get().edges), + ...(changes.some((c) => c.type !== "select") + ? { dirty: true, generation: get().generation + 1 } + : {}), + }), + connect: (c) => { + if (!c.source || !c.target) return; + if (c.source === c.target) + return set({ message: "A service cannot connect to itself." }); + if (get().edges.some((e) => e.source === c.source && e.target === c.target)) + return set({ message: "That connection already exists." }); + if (get().edges.length >= 200) + return set({ message: "This map allows up to 200 connections." }); + set({ + edges: [ + ...get().edges, + { id: crypto.randomUUID(), source: c.source, target: c.target }, + ], + dirty: true, + generation: get().generation + 1, + message: "", + }); + }, + add: (kind) => { + if (get().nodes.length >= 100) + return set({ message: "This map allows up to 100 services." }); + set({ + nodes: [ + ...get().nodes, + { + id: crypto.randomUUID(), + type: "service", + position: { x: 120 + get().nodes.length * 30, y: 320 }, + data: { label: "New " + kind, kind }, + }, + ], + dirty: true, + generation: get().generation + 1, + }); + }, + rename: (id, label) => + set({ + nodes: get().nodes.map((n) => + n.id === id ? { ...n, data: { ...n.data, label } } : n, + ), + dirty: true, + generation: get().generation + 1, + }), + remove: (id) => + set({ + nodes: get().nodes.filter((n) => n.id !== id), + edges: get().edges.filter((e) => e.source !== id && e.target !== id), + dirty: true, + generation: get().generation + 1, + }), + layout: (positions) => + set({ + nodes: get().nodes.map((n) => ({ + ...n, + position: positions.get(n.id) ?? n.position, + })), + dirty: true, + generation: get().generation + 1, + }), + begin: () => set({ busy: true, message: "" }), + finish: (graph, generation) => + set({ + saved: graph, + busy: false, + conflict: false, + dirty: get().generation !== generation, + message: + get().generation === generation + ? "All changes saved." + : "Snapshot saved. Your newer edits are still unsaved.", + }), + fail: (message, conflict = false) => set({ message, conflict, busy: false }), +})); +export function documentFromState(): GraphDocument { + const { nodes, edges } = useGraph.getState(); + // React Flow keeps selection and measured dimensions locally; persist only the document. + return { + nodes: nodes.map(({ id, type, position, data }) => ({ + id, + type, + position: { ...position }, + data: { ...data }, + })), + edges: edges.map(({ id, source, target }) => ({ id, source, target })), + }; +} diff --git a/applications/service-topology/src/client/style.css b/applications/service-topology/src/client/style.css new file mode 100644 index 00000000..fd98ca72 --- /dev/null +++ b/applications/service-topology/src/client/style.css @@ -0,0 +1,392 @@ +:root { + font-family: system-ui, sans-serif; + color: #233a3c; + background: #f4f6f2; + font-synthesis: none; +} +* { + box-sizing: border-box; +} +body { + margin: 0; +} +button, +input, +select { + font: inherit; +} +button, +select { + border: 1px solid #cad4d0; + border-radius: 7px; + background: #fff; + color: #284548; + padding: 10px 14px; +} +button { + cursor: pointer; + font-weight: 600; +} +button:hover { + background: #edf3ec; +} +button:disabled { + opacity: 0.5; + cursor: not-allowed; +} +.primary { + background: #294e46; + color: #fff; + border-color: #294e46; +} +.primary:hover { + background: #37665b; +} +.shell { + min-height: 100vh; +} +header { + height: 82px; + display: flex; + justify-content: space-between; + align-items: center; + border-bottom: 1px solid #dde3db; + padding: 0 42px; + background: #fbfcf8; +} +.brand { + display: flex; + gap: 13px; + align-items: center; +} +.brand-mark { + background: #d4e7b6; + display: grid; + place-items: center; + width: 39px; + height: 39px; + border-radius: 10px; + font-size: 29px; +} +.brand strong { + font-family: "Trebuchet MS", sans-serif; + font-size: 20px; + display: block; +} +.brand small { + font-size: 12px; + color: #75857e; +} +.header-meta { + font-size: 12px; + display: flex; + gap: 8px; + align-items: center; +} +.local-dot { + height: 7px; + width: 7px; + border-radius: 50%; + background: #699963; +} +main { + max-width: 1500px; + margin: auto; + padding: 35px 42px 18px; +} +.intro { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 28px; +} +.eyebrow { + font-size: 10px; + letter-spacing: 2px; + font-weight: 700; + color: #73826f; +} +h1 { + font-family: "Trebuchet MS", sans-serif; + font-weight: 500; + font-size: 32px; + letter-spacing: -1px; + margin: 10px 0; +} +p { + color: #74827e; + line-height: 1.65; + font-size: 13px; + margin: 8px 0; +} +.intro p { + font-size: 14px; +} +.revision { + display: flex; + gap: 20px; + align-items: center; + background: #e9eee1; + padding: 15px 20px; + border-radius: 8px; +} +.revision span { + width: 85px; + line-height: 1.7; + font-size: 9px; + letter-spacing: 1px; + color: #6e7e66; +} +.revision strong { + font-family: "Trebuchet MS", sans-serif; + font-size: 35px; + font-weight: 500; +} +.toolbar { + display: flex; + justify-content: space-between; + gap: 10px; + background: #fbfcf8; + padding: 14px 16px; + border: 1px solid #d8e1d7; + border-radius: 12px 12px 0 0; +} +.add-tools, +.actions { + display: flex; + align-items: center; + gap: 10px; +} +.save-state { + font-size: 11px; + padding: 0 8px; + color: #638165; +} +.save-state.dirty { + color: #ac792d; +} +.workspace { + display: grid; + grid-template-columns: minmax(0, 1fr) 275px; + border: 1px solid #d8e1d7; + border-top: 0; + border-radius: 0 0 12px 12px; + overflow: hidden; +} +.canvas { + height: 590px; + position: relative; + background: #f9fbf6; +} +.canvas-caption { + position: absolute; + bottom: 18px; + left: 60px; + font-size: 10px; + color: #889690; + pointer-events: none; + background: #f9fbf6cc; + padding: 4px 8px; +} +aside { + background: #fbfcf8; + border-left: 1px solid #d8e1d7; + padding: 25px 22px; +} +h2 { + font-family: "Trebuchet MS", sans-serif; + font-size: 20px; + font-weight: 500; + line-height: 1.4; + margin: 14px 0; +} +label { + display: block; + font-size: 12px; + margin: 20px 0 7px; +} +input { + width: 100%; + padding: 10px; + border: 1px solid #c9d3ce; + border-radius: 6px; + background: white; +} +.service-card { + width: 200px; + min-height: 104px; + padding: 17px 19px; + border-radius: 9px; + border: 1px solid #cad6c5; + border-top: 4px solid #91ad73; + box-shadow: 0 3px 10px #233a3c07; + background: white; +} +.service-card.api { + border-top-color: #6c9da9; +} +.service-card.worker { + border-top-color: #bda273; +} +.service-card.database { + border-top-color: #a193b6; +} +.service-card.selected { + outline: 2px solid #345b4d; + outline-offset: 3px; +} +.service-kind { + text-transform: uppercase; + font-size: 9px; + letter-spacing: 1.5px; + color: #7a8c81; +} +.service-card strong { + font-size: 13px; + margin: 8px 0; + display: block; +} +.service-ref { + font-size: 9px; + color: #a0aea8; +} +.react-flow__handle { + background: #6b9180; + width: 9px; + height: 9px; + border: 2px solid white; +} +.counts { + display: flex; + gap: 30px; + border-top: 1px solid #e1e7dd; + border-bottom: 1px solid #e1e7dd; + padding: 20px 0; + margin: 20px 0; +} +.counts strong { + display: block; + font-family: "Trebuchet MS", sans-serif; + font-size: 28px; + font-weight: 500; +} +.counts span { + font-size: 11px; + color: #8b958e; +} +.legend { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; + font-size: 11px; + margin: 22px 0; +} +.legend div { + display: flex; + align-items: center; + gap: 7px; +} +.swatch { + width: 8px; + height: 8px; + border-radius: 2px; + background: #91ad73; +} +.swatch.api { + background: #6c9da9; +} +.swatch.worker { + background: #bda273; +} +.swatch.database { + background: #a193b6; +} +.storage-note { + border-top: 1px solid #e1e7dd; + padding-top: 20px; + margin-top: 30px; +} +.storage-note strong { + font-size: 12px; +} +.reload { + width: 100%; + margin-top: 18px; + background: transparent; + font-size: 11px; +} +.detail-kind { + font-size: 11px; + color: #73826f; + padding: 12px 0; +} +.danger { + color: #9c564d; + margin: 10px 0; + font-size: 12px; +} +.notice { + padding: 12px 16px; + font-size: 13px; + background: #e9efe1; + border-left: 3px solid #91ad73; + display: flex; + justify-content: space-between; + align-items: center; +} +.notice.conflict { + background: #fff3df; + border-color: #bda273; +} +.notice button { + font-size: 12px; +} +footer { + max-width: 1500px; + margin: auto; + padding: 18px 42px 30px; + display: flex; + justify-content: space-between; + color: #8e9a92; + font-size: 10px; +} +@media (max-width: 900px) { + main { + padding: 24px 16px; + } + header { + padding: 0 16px; + } + .workspace { + grid-template-columns: 1fr; + } + aside { + border-left: 0; + border-top: 1px solid #d8e1d7; + } + .toolbar { + flex-wrap: wrap; + } + .intro { + gap: 10px; + } + h1 { + font-size: 25px; + } + .revision { + padding: 10px; + } + .canvas { + height: 450px; + } + footer { + padding: 20px 16px; + gap: 15px; + } + .header-meta { + display: none; + } + .actions { + flex-wrap: wrap; + } +} diff --git a/applications/service-topology/src/server/app.ts b/applications/service-topology/src/server/app.ts new file mode 100644 index 00000000..b36be7d6 --- /dev/null +++ b/applications/service-topology/src/server/app.ts @@ -0,0 +1,55 @@ +import { Elysia, t } from "elysia"; +import type { Database } from "./database"; +import { graphProblem, saveSchema } from "./graph"; +import { readGraph, saveGraph, StaleRevision } from "./repository"; +import { allowedRequest } from "./origin"; +export const createApi = (db: Database) => + new Elysia({ prefix: "/api" }) + .onRequest(({ request, status }) => { + if (!allowedRequest(request)) + return status(403, { message: "Use the configured local app origin." }); + }) + .get( + "/graphs/:id", + async ({ params, status }) => { + const graph = await readGraph(db, params.id); + return graph ?? status(404, { message: "Map not found." }); + }, + { params: t.Object({ id: t.String({ format: "uuid" }) }) }, + ) + .put( + "/graphs/:id", + async ({ params, body, status }) => { + const problem = graphProblem(body.document); + if (problem) return status(400, { message: problem }); + try { + return await saveGraph( + db, + params.id, + body.baseRevision, + body.document, + ); + } catch (error) { + if (error instanceof StaleRevision) + return status(409, { message: error.message }); + console.error("Graph save failed."); + return status(500, { + message: "Save failed. Your draft is still available.", + }); + } + }, + { + params: t.Object({ id: t.String({ format: "uuid" }) }), + body: saveSchema, + }, + ) + .onError(({ code, status }) => { + if (code === "VALIDATION") + return status(422, { + message: + "The graph format is invalid. Check names, coordinates and size limits.", + }); + console.error("API request failed."); + return status(500, { message: "The map could not be loaded." }); + }); +export type App = ReturnType; diff --git a/applications/service-topology/src/server/database.ts b/applications/service-topology/src/server/database.ts new file mode 100644 index 00000000..581dc514 --- /dev/null +++ b/applications/service-topology/src/server/database.ts @@ -0,0 +1,39 @@ +import { SQL } from "bun"; +import { drizzle } from "drizzle-orm/bun-sql"; +export async function connectDatabase( + urlText = process.env.DATABASE_URL, + caPath = process.env.PG_CA_CERT_PATH, +) { + if (!urlText) throw new Error("DATABASE_URL is required."); + const url = new URL(urlText); + if ( + !["postgres:", "postgresql:"].includes(url.protocol) || + url.search || + url.hash + ) + throw new Error("Use a plain Postgres URL without query parameters."); + const local = process.env.DATABASE_LOCAL === "true"; + if (local && !["localhost", "127.0.0.1", "[::1]"].includes(url.hostname)) + throw new Error("DATABASE_LOCAL requires a loopback host."); + if (!local && !caPath) + throw new Error("PG_CA_CERT_PATH is required for verified TLS."); + url.searchParams.set("sslmode", local ? "disable" : "verify-full"); + const ca = local ? undefined : await Bun.file(caPath!).text(); + const client = new SQL(url, { + max: 5, + connectionTimeout: 10, + idleTimeout: 30, + maxLifetime: 1800, + ...(local + ? {} + : { tls: { ca, serverName: url.hostname, rejectUnauthorized: true } }), + }); + try { + await client`SELECT 1`; + } catch (error) { + await client.close({ timeout: 0 }); + throw error; + } + return { client, db: drizzle({ client }) }; +} +export type Database = Awaited>["db"]; diff --git a/applications/service-topology/src/server/graph.ts b/applications/service-topology/src/server/graph.ts new file mode 100644 index 00000000..e4155bda --- /dev/null +++ b/applications/service-topology/src/server/graph.ts @@ -0,0 +1,62 @@ +import { t } from "elysia"; +import type { GraphDocument } from "../shared/types"; +export const graphSchema = t.Object({ + nodes: t.Array( + t.Object({ + id: t.String({ format: "uuid" }), + type: t.Literal("service"), + position: t.Object({ + x: t.Number({ minimum: -100000, maximum: 100000 }), + y: t.Number({ minimum: -100000, maximum: 100000 }), + }), + data: t.Object({ + label: t.String({ minLength: 1, maxLength: 60 }), + kind: t.Union([ + t.Literal("web"), + t.Literal("api"), + t.Literal("worker"), + t.Literal("database"), + ]), + }), + }), + { maxItems: 100 }, + ), + edges: t.Array( + t.Object({ + id: t.String({ format: "uuid" }), + source: t.String({ format: "uuid" }), + target: t.String({ format: "uuid" }), + }), + { maxItems: 200 }, + ), +}); +export const saveSchema = t.Object({ + baseRevision: t.Integer({ minimum: 1, maximum: 2147483646 }), + document: graphSchema, +}); +export function graphProblem(document: GraphDocument): string | undefined { + const ids = new Set(document.nodes.map((n) => n.id)); + if (ids.size !== document.nodes.length) return "Service IDs must be unique."; + if (document.nodes.some((n) => !n.data.label.trim())) + return "Service names cannot be blank."; + if ( + document.nodes.some( + (n) => !Number.isFinite(n.position.x) || !Number.isFinite(n.position.y), + ) + ) + return "Coordinates must be finite."; + const edges = new Set(); + const pairs = new Set(); + for (const edge of document.edges) { + if (edges.has(edge.id)) return "Connection IDs must be unique."; + if (!ids.has(edge.source) || !ids.has(edge.target)) + return "Connections must reference existing services."; + if (edge.source === edge.target) + return "A service cannot connect to itself."; + const pair = edge.source + ":" + edge.target; + if (pairs.has(pair)) + return "Only one connection in each direction is allowed."; + pairs.add(pair); + edges.add(edge.id); + } +} diff --git a/applications/service-topology/src/server/index.ts b/applications/service-topology/src/server/index.ts new file mode 100644 index 00000000..9e339cbb --- /dev/null +++ b/applications/service-topology/src/server/index.ts @@ -0,0 +1,24 @@ +import { Elysia } from "elysia"; +import { connectDatabase } from "./database"; +import { createApi } from "./app"; +import { allowedRequest } from "./origin"; +const { db, client } = await connectDatabase(); +const app = new Elysia() + .onRequest(({ request, status }) => { + if (!allowedRequest(request)) return status(403); + }) + .use(createApi(db)) + .get("/", () => Bun.file("dist/index.html")) + .get("/assets/:file", ({ params, status }) => + /^[a-zA-Z0-9_.-]+$/.test(params.file) + ? Bun.file("dist/assets/" + params.file) + : status(404), + ) + .listen({ port: Number(process.env.PORT || 3000), hostname: "127.0.0.1" }); +console.log("Service atlas listening on http://127.0.0.1:" + app.server?.port); +for (const signal of ["SIGTERM", "SIGINT"] as const) + process.on(signal, async () => { + await app.stop(); + await client.close(); + process.exit(0); + }); diff --git a/applications/service-topology/src/server/origin.ts b/applications/service-topology/src/server/origin.ts new file mode 100644 index 00000000..8990fdde --- /dev/null +++ b/applications/service-topology/src/server/origin.ts @@ -0,0 +1,18 @@ +export function allowedRequest( + request: Request, + appOrigin = process.env.APP_ORIGIN || "http://127.0.0.1:3000", +) { + const origin = new URL(appOrigin); + if ( + origin.protocol !== "http:" || + origin.origin !== appOrigin || + !["127.0.0.1", "localhost", "[::1]"].includes(origin.hostname) + ) + throw new Error( + "APP_ORIGIN must be a loopback HTTP origin without a trailing slash.", + ); + if (new URL(request.url).host !== origin.host) return false; + return ( + request.method !== "PUT" || request.headers.get("origin") === appOrigin + ); +} diff --git a/applications/service-topology/src/server/repository.ts b/applications/service-topology/src/server/repository.ts new file mode 100644 index 00000000..2c0d48af --- /dev/null +++ b/applications/service-topology/src/server/repository.ts @@ -0,0 +1,36 @@ +import { and, eq, sql } from "drizzle-orm"; +import type { Database } from "./database"; +import { graphs, revisions } from "./schema"; +import type { GraphDocument, SavedGraph } from "../shared/types"; +export class StaleRevision extends Error {} +function view(row: typeof graphs.$inferSelect): SavedGraph { + return { ...row, updatedAt: row.updatedAt.toISOString() }; +} +export async function readGraph(db: Database, id: string) { + const [row] = await db.select().from(graphs).where(eq(graphs.id, id)); + return row ? view(row) : undefined; +} +export async function saveGraph( + db: Database, + id: string, + baseRevision: number, + document: GraphDocument, +) { + return db.transaction(async (tx) => { + const [saved] = await tx + .update(graphs) + .set({ + revision: baseRevision + 1, + document, + updatedAt: sql`clock_timestamp()`, + }) + .where(and(eq(graphs.id, id), eq(graphs.revision, baseRevision))) + .returning(); + if (!saved) + throw new StaleRevision("The graph changed. Reload before saving."); + await tx + .insert(revisions) + .values({ graphId: id, revision: saved.revision, document }); + return view(saved); + }); +} diff --git a/applications/service-topology/src/server/schema.ts b/applications/service-topology/src/server/schema.ts new file mode 100644 index 00000000..1b9e6389 --- /dev/null +++ b/applications/service-topology/src/server/schema.ts @@ -0,0 +1,44 @@ +import { + pgSchema, + uuid, + text, + integer, + customType, + timestamp, + primaryKey, +} from "drizzle-orm/pg-core"; +import type { GraphDocument } from "../shared/types"; +const topology = pgSchema("service_topology"); +// Bun 1.4 serializes JSONB parameters itself. Drizzle's default JSONB string +// encoder would encode a JSON string a second time, so pass the object through. +const graphJson = customType<{ + data: GraphDocument; + driverData: GraphDocument; +}>({ + dataType: () => "jsonb", + toDriver: (value) => value, + fromDriver: (value) => value, +}); +export const graphs = topology.table("graphs", { + id: uuid("id").primaryKey(), + title: text("title").notNull(), + revision: integer("revision").notNull(), + document: graphJson("document").notNull(), + updatedAt: timestamp("updated_at", { withTimezone: true }) + .notNull() + .defaultNow(), +}); +export const revisions = topology.table( + "revisions", + { + graphId: uuid("graph_id") + .notNull() + .references(() => graphs.id), + revision: integer("revision").notNull(), + document: graphJson("document").notNull(), + savedAt: timestamp("saved_at", { withTimezone: true }) + .notNull() + .defaultNow(), + }, + (table) => [primaryKey({ columns: [table.graphId, table.revision] })], +); diff --git a/applications/service-topology/src/shared/types.ts b/applications/service-topology/src/shared/types.ts new file mode 100644 index 00000000..dea86593 --- /dev/null +++ b/applications/service-topology/src/shared/types.ts @@ -0,0 +1,17 @@ +export type ServiceKind = "web" | "api" | "worker" | "database"; +export type ServiceNode = { + id: string; + type: "service"; + position: { x: number; y: number }; + data: { label: string; kind: ServiceKind }; +}; +export type ServiceEdge = { id: string; source: string; target: string }; +export type GraphDocument = { nodes: ServiceNode[]; edges: ServiceEdge[] }; +export type SavedGraph = { + id: string; + title: string; + revision: number; + document: GraphDocument; + updatedAt: string; +}; +export const DEMO_GRAPH_ID = "67bc2cf0-5b0f-45c8-bf6a-7b4bb5155a50"; diff --git a/applications/service-topology/tests/browser/editor.spec.ts b/applications/service-topology/tests/browser/editor.spec.ts new file mode 100644 index 00000000..7840e8b1 --- /dev/null +++ b/applications/service-topology/tests/browser/editor.spec.ts @@ -0,0 +1,92 @@ +import { expect, test } from "@playwright/test"; +test("edit, connect, layout, save, reload and stale tab conflict", async ({ + page, + context, +}) => { + const other = await context.newPage(); + await page.goto("/"); + await other.goto("/"); + await expect(page.getByTestId("revision")).not.toHaveText("—"); + const originalRevision = Number( + await page.getByTestId("revision").innerText(), + ); + await page.getByRole("button", { name: "+ Add service" }).click(); + await page.getByTestId("service-card").filter({ hasText: "New api" }).click(); + await page + .getByRole("textbox", { name: "Service name" }) + .fill("Inventory API"); + const node = page + .locator(".react-flow__node") + .filter({ hasText: "Inventory API" }); + const prior = await node.boundingBox(); + if (!prior) throw new Error("Node not rendered"); + await page.mouse.move(prior.x + 100, prior.y + 55); + await page.mouse.down(); + await page.mouse.move(prior.x + 160, prior.y + 105, { steps: 8 }); + await page.mouse.up(); + await expect(page.getByTestId("save-state")).toHaveText("Unsaved changes"); + // React Flow's actual source/target handles create an edge. + const edgeCount = await page.locator(".react-flow__edge").count(); + const source = await page + .locator(".react-flow__node") + .filter({ hasText: "Inventory API" }) + .locator(".react-flow__handle.source") + .boundingBox(); + const target = await page + .locator(".react-flow__node") + .filter({ hasText: "Checkout API" }) + .locator(".react-flow__handle.target") + .boundingBox(); + if (!source || !target) throw new Error("Handles not rendered"); + await page.mouse.move( + source.x + source.width / 2, + source.y + source.height / 2, + ); + await page.mouse.down(); + await page.mouse.move( + target.x + target.width / 2, + target.y + target.height / 2, + { steps: 12 }, + ); + await page.mouse.up(); + await expect(page.locator(".react-flow__edge")).toHaveCount(edgeCount + 1); + await page.getByRole("button", { name: "Auto layout" }).click(); + await expect( + page.getByRole("button", { name: "Save revision" }), + ).toBeEnabled(); + await page.getByRole("button", { name: "Save revision" }).click(); + await expect(page.getByTestId("revision")).toHaveText( + String(originalRevision + 1).padStart(2, "0"), + ); + await page.reload(); + await expect( + page.getByTestId("service-card").filter({ hasText: "Inventory API" }), + ).toBeVisible(); + await other.getByRole("button", { name: "+ Add service" }).click(); + await other.getByRole("button", { name: "Save revision" }).click(); + await expect(other.getByTestId("save-state")).toHaveText("Save conflict"); + other.once("dialog", (dialog) => dialog.accept()); + await other.getByRole("button", { name: "Reload saved revision" }).click(); + await expect(other.getByTestId("revision")).toHaveText( + String(originalRevision + 1).padStart(2, "0"), + ); + await page.locator(".react-flow__pane").click({ position: { x: 20, y: 20 } }); + await page.screenshot({ + path: process.env.SCREENSHOT_PATH || "test-results/topology.png", + fullPage: true, + }); + await other.close(); + await page + .getByTestId("service-card") + .filter({ hasText: "Inventory API" }) + .click(); + await page.getByRole("button", { name: "Remove service" }).click(); + await page.getByRole("button", { name: "Save revision" }).click(); + await expect(page.getByTestId("revision")).toHaveText( + String(originalRevision + 2).padStart(2, "0"), + ); + await page.reload(); + await expect( + page.getByTestId("service-card").filter({ hasText: "Inventory API" }), + ).toHaveCount(0); +}); diff --git a/applications/service-topology/tests/database.test.ts b/applications/service-topology/tests/database.test.ts new file mode 100644 index 00000000..c3191471 --- /dev/null +++ b/applications/service-topology/tests/database.test.ts @@ -0,0 +1,191 @@ +import { + afterAll, + afterEach, + beforeAll, + beforeEach, + describe, + expect, + test, +} from "bun:test"; +import { connectDatabase } from "../src/server/database"; +import { createApi } from "../src/server/app"; +import type { GraphDocument } from "../src/shared/types"; +let runtime: Awaited>; +let admin: Awaited>; +let id: string; +const doc: GraphDocument = { + nodes: [ + { + id: "11111111-1111-4111-8111-111111111111", + type: "service", + position: { x: 10, y: 20 }, + data: { label: "Test API", kind: "api" }, + }, + ], + edges: [], +}; +beforeAll(async () => { + if (!process.env.DATABASE_TEST_ADMIN_URL) + throw new Error( + "Set DATABASE_TEST_ADMIN_URL to the migration login for a dedicated test database.", + ); + runtime = await connectDatabase(); + admin = await connectDatabase(process.env.DATABASE_TEST_ADMIN_URL); +}); +beforeEach(async () => { + id = crypto.randomUUID(); + await admin.client.begin(async (tx) => { + await tx`SET LOCAL ROLE topology_owner`; + await tx`INSERT INTO service_topology.graphs(id,title,revision,document) VALUES (${id},'Test',1,${doc}::jsonb)`; + await tx`INSERT INTO service_topology.revisions(graph_id,revision,document) VALUES (${id},1,${doc}::jsonb)`; + }); +}); +afterEach(async () => { + await admin.client.begin(async (tx) => { + await tx`SET LOCAL ROLE topology_owner`; + await tx`DELETE FROM service_topology.graphs WHERE id=${id}`; + }); +}); +afterAll(async () => { + await runtime?.client.close(); + await admin?.client.close(); +}); +function request(body: unknown) { + return createApi(runtime.db).handle( + new Request("http://127.0.0.1:3000/api/graphs/" + id, { + method: "PUT", + headers: { + "content-type": "application/json", + origin: "http://127.0.0.1:3000", + }, + body: JSON.stringify(body), + }), + ); +} +describe("real Postgres saves", () => { + test("sixteen concurrent edits commit one revision", async () => { + const replies = await Promise.all( + Array.from({ length: 16 }, () => + request({ baseRevision: 1, document: doc }), + ), + ); + expect(replies.filter((r) => r.status === 200)).toHaveLength(1); + expect(replies.filter((r) => r.status === 409)).toHaveLength(15); + const row = + await runtime.client`SELECT revision,document,jsonb_typeof(document) AS document_type FROM service_topology.graphs WHERE id=${id}`; + expect(row[0].revision).toBe(2); + expect(row[0].document_type).toBe("object"); + expect(row[0].document).toEqual(doc); + const count = + await runtime.client`SELECT count(*)::int AS total FROM service_topology.revisions WHERE graph_id=${id}`; + expect(count[0].total).toBe(2); + }); + test("snapshot failure rolls current graph back", async () => { + await admin.client.begin(async (tx) => { + await tx`SET LOCAL ROLE topology_owner`; + await tx`INSERT INTO service_topology.revisions(graph_id,revision,document) VALUES(${id},2,${doc}::jsonb)`; + }); + const changed = structuredClone(doc); + changed.nodes[0].data.label = "Should roll back"; + expect((await request({ baseRevision: 1, document: changed })).status).toBe( + 500, + ); + const rows = + await runtime.client`SELECT revision,document,jsonb_typeof(document) AS document_type FROM service_topology.graphs WHERE id=${id}`; + expect(rows[0].revision).toBe(1); + expect(rows[0].document).toEqual(doc); + }); + test("rejects malformed and semantically invalid graph before storage", async () => { + expect( + ( + await request({ + baseRevision: 1, + document: { nodes: [{ bad: "shape" }], edges: [] }, + }) + ).status, + ).toBe(422); + const invalid = structuredClone(doc); + invalid.edges = [ + { + id: crypto.randomUUID(), + source: doc.nodes[0].id, + target: crypto.randomUUID(), + }, + ]; + expect((await request({ baseRevision: 1, document: invalid })).status).toBe( + 400, + ); + const duplicate = structuredClone(doc); + duplicate.nodes.push(duplicate.nodes[0]); + expect( + (await request({ baseRevision: 1, document: duplicate })).status, + ).toBe(400); + const huge = structuredClone(doc); + huge.nodes = Array.from({ length: 101 }, () => ({ + ...doc.nodes[0], + id: crypto.randomUUID(), + })); + expect((await request({ baseRevision: 1, document: huge })).status).toBe( + 422, + ); + const rows = + await runtime.client`SELECT revision FROM service_topology.graphs WHERE id=${id}`; + expect(rows[0].revision).toBe(1); + }); + test("database requires both graph arrays and rejects untrusted requests", async () => { + await expect( + Promise.resolve( + runtime.client`UPDATE service_topology.graphs SET document=${{ nodes: [] }}::jsonb WHERE id=${id}`, + ), + ).rejects.toThrow(); + await expect( + Promise.resolve( + runtime.client`UPDATE service_topology.graphs SET document=${{ nodes: null, edges: [] }}::jsonb WHERE id=${id}`, + ), + ).rejects.toThrow(); + const api = createApi(runtime.db); + expect( + ( + await api.handle( + new Request("http://untrusted.example:3000/api/graphs/" + id), + ) + ).status, + ).toBe(403); + expect( + ( + await api.handle( + new Request("http://127.0.0.1:3000/api/graphs/" + id, { + method: "PUT", + headers: { + origin: "http://untrusted.example", + "content-type": "application/json", + }, + body: JSON.stringify({ baseRevision: 1, document: doc }), + }), + ) + ).status, + ).toBe(403); + }); + test("runtime role cannot change schema or overwrite snapshots", async () => { + await expect( + Promise.resolve( + runtime.client`CREATE TABLE service_topology.forbidden(id int)`, + ), + ).rejects.toThrow(); + await expect( + Promise.resolve( + runtime.client`UPDATE service_topology.revisions SET document='{}' WHERE graph_id=${id}`, + ), + ).rejects.toThrow(); + await expect( + Promise.resolve( + runtime.client`DELETE FROM service_topology.revisions WHERE graph_id=${id}`, + ), + ).rejects.toThrow(); + await expect( + Promise.resolve( + runtime.client`UPDATE service_topology.graphs SET title='Other' WHERE id=${id}`, + ), + ).rejects.toThrow(); + }); +}); diff --git a/applications/service-topology/tests/graph.test.ts b/applications/service-topology/tests/graph.test.ts new file mode 100644 index 00000000..09ab1f1b --- /dev/null +++ b/applications/service-topology/tests/graph.test.ts @@ -0,0 +1,54 @@ +import { describe, expect, test } from "bun:test"; +import { graphProblem } from "../src/server/graph"; +import type { GraphDocument } from "../src/shared/types"; +const first = "11111111-1111-4111-8111-111111111111"; +const second = "22222222-2222-4222-8222-222222222222"; +const document = (): GraphDocument => ({ + nodes: [first, second].map((id) => ({ + id, + type: "service", + position: { x: 1, y: 2 }, + data: { label: "API", kind: "api" }, + })), + edges: [], +}); +describe("graph meaning", () => { + test("allows cycles between distinct services", () => { + const d = document(); + d.edges = [ + { id: crypto.randomUUID(), source: first, target: second }, + { id: crypto.randomUUID(), source: second, target: first }, + ]; + expect(graphProblem(d)).toBeUndefined(); + }); + test("rejects dangling connections", () => { + const d = document(); + d.edges = [ + { id: crypto.randomUUID(), source: first, target: crypto.randomUUID() }, + ]; + expect(graphProblem(d)).toContain("existing"); + }); + test("rejects repeated nodes and blank names", () => { + const d = document(); + d.nodes.push(d.nodes[0]); + expect(graphProblem(d)).toContain("unique"); + d.nodes.pop(); + d.nodes[0].data.label = " "; + expect(graphProblem(d)).toContain("blank"); + }); + test("rejects self connections and duplicates", () => { + const d = document(); + d.edges = [{ id: crypto.randomUUID(), source: first, target: first }]; + expect(graphProblem(d)).toContain("itself"); + d.edges = [ + { id: crypto.randomUUID(), source: first, target: second }, + { id: crypto.randomUUID(), source: first, target: second }, + ]; + expect(graphProblem(d)).toContain("one connection"); + }); + test("rejects non-finite coordinates", () => { + const d = document(); + d.nodes[0].position.x = Infinity; + expect(graphProblem(d)).toContain("finite"); + }); +}); diff --git a/applications/service-topology/tsconfig.json b/applications/service-topology/tsconfig.json new file mode 100644 index 00000000..e10361bc --- /dev/null +++ b/applications/service-topology/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES2022", + "module": "ESNext", + "moduleResolution": "Bundler", + "jsx": "react-jsx", + "strict": true, + "noEmit": true, + "allowImportingTsExtensions": true, + "skipLibCheck": true, + "types": ["bun", "vite/client"] + }, + "include": ["src", "tests", "vite.config.ts", "playwright.config.ts"] +} diff --git a/applications/service-topology/vite.config.ts b/applications/service-topology/vite.config.ts new file mode 100644 index 00000000..1d8d85cc --- /dev/null +++ b/applications/service-topology/vite.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +export default defineConfig({ + plugins: [react()], + server: { proxy: { "/api": "http://127.0.0.1:3000" } }, +}); From dd7c2a7afe609aea7b56986992db0556991ed9e5 Mon Sep 17 00:00:00 2001 From: sdairs Date: Mon, 5 Oct 2026 08:54:43 +0100 Subject: [PATCH 2/2] Verify managed TLS with supplied rotation-bundle anchors --- applications/service-topology/README.md | 4 + .../docs/service-topology.png | Bin 114755 -> 114516 bytes .../service-topology/src/server/database.ts | 78 ++++++++++++++---- 3 files changed, 68 insertions(+), 14 deletions(-) diff --git a/applications/service-topology/README.md b/applications/service-topology/README.md index 6fcd716f..ff9aeb29 100644 --- a/applications/service-topology/README.md +++ b/applications/service-topology/README.md @@ -198,6 +198,10 @@ unset PG_MIGRATION_PASSWORD PG_APP_PASSWORD For VM-local Postgres only, add `DATABASE_LOCAL=true` to `.env`. This bypass is restricted to loopback database hosts. Managed connections use the downloaded CA, certificate/hostname verification, and a bounded five-connection pool. +Bun 1.4.2 can reject CA rotation bundles with duplicate subjects. On that specific +signature failure, the connector retries only certificates from the downloaded +bundle, with certificate and hostname verification still enabled. Restart the app +after updating the CA bundle. Use a plain URL without query parameters; the server configures TLS explicitly. ```sh diff --git a/applications/service-topology/docs/service-topology.png b/applications/service-topology/docs/service-topology.png index 047b4232ec58806edfdd4fb4a778a438af2870b3..a01e836e9dad828bbf150dec1735f3b5ffed6ae3 100644 GIT binary patch literal 114516 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 Fe*wn9ikJWZ literal 114755 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

x7k}t}fI~}6fY^3p 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 tOhBbCK)NtLH<7;MsIXz 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 rSf=)YRl@#$4lykuMMD!Fhu!Yb%v1SOotUjJ_W^ diff --git a/applications/service-topology/src/server/database.ts b/applications/service-topology/src/server/database.ts index 581dc514..ea2bba38 100644 --- a/applications/service-topology/src/server/database.ts +++ b/applications/service-topology/src/server/database.ts @@ -19,21 +19,71 @@ export async function connectDatabase( throw new Error("PG_CA_CERT_PATH is required for verified TLS."); url.searchParams.set("sslmode", local ? "disable" : "verify-full"); const ca = local ? undefined : await Bun.file(caPath!).text(); - const client = new SQL(url, { - max: 5, - connectionTimeout: 10, - idleTimeout: 30, - maxLifetime: 1800, - ...(local - ? {} - : { tls: { ca, serverName: url.hostname, rejectUnauthorized: true } }), - }); + const certificates = + ca?.match( + /-----BEGIN CERTIFICATE-----[\s\S]+?-----END CERTIFICATE-----/g, + ) ?? []; + if (!local && (certificates.length === 0 || certificates.length > 16)) + throw new Error( + "PG_CA_CERT_PATH must contain between 1 and 16 PEM certificates.", + ); + async function connect(trustedCa: string | undefined) { + const client = new SQL(url, { + max: 5, + connectionTimeout: 10, + idleTimeout: 30, + maxLifetime: 1800, + ...(local + ? {} + : { + tls: { + ca: trustedCa, + serverName: url.hostname, + rejectUnauthorized: true, + }, + }), + }); + try { + await client`SELECT 1`; + return { client, db: drizzle({ client }) }; + } catch (error) { + await client.close({ timeout: 0 }); + throw error; + } + } try { - await client`SELECT 1`; - } catch (error) { - await client.close({ timeout: 0 }); - throw error; + return await connect(ca); + } catch (originalError) { + if ( + errorCode(originalError) !== "CERT_SIGNATURE_FAILURE" || + certificates.length < 2 + ) + throw originalError; + // Bun can reject rotation bundles containing roots with the same subject. + // Retry only supplied anchors; certificate and hostname verification stay enabled. + for (const certificate of certificates) { + try { + return await connect(certificate); + } catch (error) { + if (!CA_ERRORS.has(errorCode(error))) throw error; + } + } + throw originalError; } - return { client, db: drizzle({ client }) }; } +function errorCode(error: unknown): string { + return error !== null && typeof error === "object" && "code" in error + ? String(error.code) + : ""; +} +const CA_ERRORS = new Set([ + "CERT_SIGNATURE_FAILURE", + "UNABLE_TO_GET_ISSUER_CERT", + "UNABLE_TO_GET_ISSUER_CERT_LOCALLY", + "UNABLE_TO_VERIFY_LEAF_SIGNATURE", + "SELF_SIGNED_CERT_IN_CHAIN", + "DEPTH_ZERO_SELF_SIGNED_CERT", + "CERT_HAS_EXPIRED", + "CERT_NOT_YET_VALID", +]); export type Database = Awaited>["db"];