{"_id":"@aguspe/tiler-server","_rev":"6-4a1a4dd6616b5dcace3695e37cbce389","name":"@aguspe/tiler-server","dist-tags":{"latest":"1.1.1"},"versions":{"1.0.0":{"name":"@aguspe/tiler-server","version":"1.0.0","license":"MIT","_id":"@aguspe/tiler-server@1.0.0","maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"dist":{"shasum":"58037c59911b42fc2cf7b83cd9bd58f6a46341ff","tarball":"https://registry.npmjs.org/@aguspe/tiler-server/-/tiler-server-1.0.0.tgz","fileCount":15,"integrity":"sha512-FtlBDeb+g9sHz5KP8He5qw1ICap6Y9jUqpE4D8Q1sq6CaP/gbvACcWQjvEtYLVNK3y25JD9Pi2Ai9EBujUWkww==","signatures":[{"sig":"MEUCIQDvhNA2xfRlhah48c031yfu1qFh/i3CU97nu4Ow3Ajz/gIga6ExhBOBtcgyw7RnOCo0PEdrbFjRz4mxTjiuYEjCGuk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277625},"main":"./dist/index.cjs","type":"module","_from":"file:aguspe-tiler-server-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sqlite":{"types":"./dist/store/sqlite.d.ts","import":"./dist/store/sqlite.js","require":"./dist/store/sqlite.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aguspe","email":"agustin.pe94@gmail.com"},"_resolved":"/tmp/ccd1730073db50c5e37ac69b636ddfe2/aguspe-tiler-server-1.0.0.tgz","_integrity":"sha512-FtlBDeb+g9sHz5KP8He5qw1ICap6Y9jUqpE4D8Q1sq6CaP/gbvACcWQjvEtYLVNK3y25JD9Pi2Ai9EBujUWkww==","repository":{"url":"git+https://github.com/aguspe/tiler-ts.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","react":"^18.3.0","fastify":"^5.0.0","bcryptjs":"^2.4.3","papaparse":"^5.5.3","react-dom":"^18.3.0","better-sqlite3":"^12.9.0","@fastify/cookie":"^11.0.0","@fastify/static":"^8.0.0","fastify-raw-body":"^5.0.0","@aguspe/tiler-core":"1.0.0","@fastify/websocket":"^11.0.0","@aguspe/tiler-editor":"^1.0.0","@aguspe/tiler-viewer":"1.0.0","@aguspe/tiler-widgets":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^22.7.0","@types/papaparse":"^5.5.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/tiler-server_1.0.0_1777730317195_0.11209540132935758","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aguspe/tiler-server","version":"1.0.1","license":"MIT","_id":"@aguspe/tiler-server@1.0.1","maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"dist":{"shasum":"9f10f04a9760c318e7c5b2143c92538c74046082","tarball":"https://registry.npmjs.org/@aguspe/tiler-server/-/tiler-server-1.0.1.tgz","fileCount":15,"integrity":"sha512-hTDcdhKHp4crJrfhPoP97cI1eE6WL+r/0wCG1TmSrxIGS1lo0f3yBIrutLr4GkBKEmtg3gbHi9n2QL3cmtkeuw==","signatures":[{"sig":"MEQCIB/hue9pOax/xL1ovDxaocsvPNQSWzOW0xao+lzSitQWAiByeIlXZeLEp2ZeIChxg7U6ATV38/ymqqT+dopYVeqIlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277625},"main":"./dist/index.cjs","type":"module","_from":"file:aguspe-tiler-server-1.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sqlite":{"types":"./dist/store/sqlite.d.ts","import":"./dist/store/sqlite.js","require":"./dist/store/sqlite.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aguspe","email":"agustin.pe94@gmail.com"},"_resolved":"/tmp/cef6ddd8d7915b5a353b48e93be1aae3/aguspe-tiler-server-1.0.1.tgz","_integrity":"sha512-hTDcdhKHp4crJrfhPoP97cI1eE6WL+r/0wCG1TmSrxIGS1lo0f3yBIrutLr4GkBKEmtg3gbHi9n2QL3cmtkeuw==","repository":{"url":"git+https://github.com/aguspe/tiler-ts.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","react":"^18.3.0","fastify":"^5.0.0","bcryptjs":"^2.4.3","papaparse":"^5.5.3","react-dom":"^18.3.0","better-sqlite3":"^12.9.0","@fastify/cookie":"^11.0.0","@fastify/static":"^8.0.0","fastify-raw-body":"^5.0.0","@aguspe/tiler-core":"1.0.0","@fastify/websocket":"^11.0.0","@aguspe/tiler-editor":"^1.0.1","@aguspe/tiler-viewer":"1.0.1","@aguspe/tiler-widgets":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^22.7.0","@types/papaparse":"^5.5.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/tiler-server_1.0.1_1777731922039_0.6958893567961","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aguspe/tiler-server","version":"1.0.2","license":"MIT","_id":"@aguspe/tiler-server@1.0.2","maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"dist":{"shasum":"75ab91fb258661591437df4218e162e8fa0326e6","tarball":"https://registry.npmjs.org/@aguspe/tiler-server/-/tiler-server-1.0.2.tgz","fileCount":15,"integrity":"sha512-mTTBZ59yodX92/ZeA2J8iDnDqy+5x/QPxS2MVqUDDJsBQvAxluLd5KVTdEmKsi46zo7DmOGhPP8FXQSb3sG9Iw==","signatures":[{"sig":"MEQCICo9kZF39vtoHg42wOM/dPEoWXO5O9n3MqB7w563cLiVAiA4C+n+GoB3NTmdI0YYjT+beCLWoSjDhpiyb+EnyzOWsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277625},"main":"./dist/index.cjs","type":"module","_from":"file:aguspe-tiler-server-1.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sqlite":{"types":"./dist/store/sqlite.d.ts","import":"./dist/store/sqlite.js","require":"./dist/store/sqlite.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aguspe","email":"agustin.pe94@gmail.com"},"_resolved":"/tmp/a387d87f72c2cb1855b3578f6d017b6b/aguspe-tiler-server-1.0.2.tgz","_integrity":"sha512-mTTBZ59yodX92/ZeA2J8iDnDqy+5x/QPxS2MVqUDDJsBQvAxluLd5KVTdEmKsi46zo7DmOGhPP8FXQSb3sG9Iw==","repository":{"url":"git+https://github.com/aguspe/tiler-ts.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","react":"^18.3.0","fastify":"^5.0.0","bcryptjs":"^2.4.3","papaparse":"^5.5.3","react-dom":"^18.3.0","better-sqlite3":"^12.9.0","@fastify/cookie":"^11.0.0","@fastify/static":"^8.0.0","fastify-raw-body":"^5.0.0","@aguspe/tiler-core":"1.0.0","@fastify/websocket":"^11.0.0","@aguspe/tiler-editor":"^1.0.2","@aguspe/tiler-viewer":"1.0.2","@aguspe/tiler-widgets":"1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^22.7.0","@types/papaparse":"^5.5.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/tiler-server_1.0.2_1777733196891_0.13790053059628193","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aguspe/tiler-server","version":"1.0.3","license":"MIT","_id":"@aguspe/tiler-server@1.0.3","maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"dist":{"shasum":"1769969763369f3910dab4419eb0f91dbcd1cdee","tarball":"https://registry.npmjs.org/@aguspe/tiler-server/-/tiler-server-1.0.3.tgz","fileCount":15,"integrity":"sha512-HJHVh7x+8x+SczgZbLaht2UHXzd8IRrJ3Cuv+F0BZb/Sy9o0fUH6TWX6DIH/YYupylxwRmxLGy3Uw7ruwqkuZQ==","signatures":[{"sig":"MEUCIEgVtz9ZvamKUE+FoPuMgP6p/igkqNehGtr7hERdYernAiEAv/RB3KCsTr+Zp6zj/iO9JLBZc04lPApZzlv099JddEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277625},"main":"./dist/index.cjs","type":"module","_from":"file:aguspe-tiler-server-1.0.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sqlite":{"types":"./dist/store/sqlite.d.ts","import":"./dist/store/sqlite.js","require":"./dist/store/sqlite.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aguspe","email":"agustin.pe94@gmail.com"},"_resolved":"/tmp/6706f59abaff90a02d74dfd925e18a27/aguspe-tiler-server-1.0.3.tgz","_integrity":"sha512-HJHVh7x+8x+SczgZbLaht2UHXzd8IRrJ3Cuv+F0BZb/Sy9o0fUH6TWX6DIH/YYupylxwRmxLGy3Uw7ruwqkuZQ==","repository":{"url":"git+https://github.com/aguspe/tiler-ts.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","react":"^18.3.0","fastify":"^5.0.0","bcryptjs":"^2.4.3","papaparse":"^5.5.3","react-dom":"^18.3.0","better-sqlite3":"^12.9.0","@fastify/cookie":"^11.0.0","@fastify/static":"^8.0.0","fastify-raw-body":"^5.0.0","@aguspe/tiler-core":"1.0.0","@fastify/websocket":"^11.0.0","@aguspe/tiler-editor":"^1.0.3","@aguspe/tiler-viewer":"1.0.3","@aguspe/tiler-widgets":"1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^22.7.0","@types/papaparse":"^5.5.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/tiler-server_1.0.3_1777765768181_0.26977857114687986","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aguspe/tiler-server","version":"1.1.0","license":"MIT","_id":"@aguspe/tiler-server@1.1.0","maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"dist":{"shasum":"c69d2101d9bb88908ed03cfdd1da9d355dade912","tarball":"https://registry.npmjs.org/@aguspe/tiler-server/-/tiler-server-1.1.0.tgz","fileCount":15,"integrity":"sha512-4cs9f+yTwjiYPyFF0I9RKIpUoO//YEJPPRYaNiEmx42y5XZUpZE/z6j7poa1eZg+2WIBt1Wf2qx1v/SRXwBbSw==","signatures":[{"sig":"MEUCIAWERsEY8cS018EH3+6PLucJnms0Pm1e2L76l8277jaFAiEA/BEfgtQlNZegNqfJbKoJH6cTX0VQ401T4g1nMbyjiw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":290545},"main":"./dist/index.cjs","type":"module","_from":"file:aguspe-tiler-server-1.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sqlite":{"types":"./dist/store/sqlite.d.ts","import":"./dist/store/sqlite.js","require":"./dist/store/sqlite.cjs"}},"scripts":{"test":"vitest run","build":"tsup","typecheck":"tsc --noEmit"},"_npmUser":{"name":"aguspe","email":"agustin.pe94@gmail.com"},"_resolved":"/tmp/39f0f430df841c96e6e5fe01f2c5f21a/aguspe-tiler-server-1.1.0.tgz","_integrity":"sha512-4cs9f+yTwjiYPyFF0I9RKIpUoO//YEJPPRYaNiEmx42y5XZUpZE/z6j7poa1eZg+2WIBt1Wf2qx1v/SRXwBbSw==","repository":{"url":"git+https://github.com/aguspe/tiler-ts.git","type":"git","directory":"packages/server"},"_npmVersion":"10.8.2","description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.23.0","react":"^18.3.0","fastify":"^5.0.0","bcryptjs":"^2.4.3","papaparse":"^5.5.3","react-dom":"^18.3.0","better-sqlite3":"^12.9.0","@fastify/cookie":"^11.0.0","@fastify/static":"^8.0.0","fastify-raw-body":"^5.0.0","@aguspe/tiler-core":"1.3.0","@fastify/websocket":"^11.0.0","@aguspe/tiler-editor":"^1.0.3","@aguspe/tiler-viewer":"1.1.13","@aguspe/tiler-widgets":"1.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.3.0","vitest":"^2.1.0","typescript":"^5.6.0","@types/node":"^22.7.0","@types/papaparse":"^5.5.2","@types/better-sqlite3":"^7.6.11"},"_npmOperationalInternal":{"tmp":"tmp/tiler-server_1.1.0_1777964136210_0.5409958236884955","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@aguspe/tiler-server","version":"1.1.1","description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","license":"MIT","repository":{"type":"git","url":"git+https://github.com/aguspe/tiler-ts.git","directory":"packages/server"},"homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","publishConfig":{"access":"public"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./sqlite":{"types":"./dist/store/sqlite.d.ts","import":"./dist/store/sqlite.js","require":"./dist/store/sqlite.cjs"}},"dependencies":{"@fastify/cookie":"^11.0.0","@fastify/static":"^8.0.0","@fastify/websocket":"^11.0.0","bcryptjs":"^2.4.3","better-sqlite3":"^12.9.0","fastify":"^5.0.0","fastify-raw-body":"^5.0.0","papaparse":"^5.5.3","react":"^18.3.0","react-dom":"^18.3.0","zod":"^3.23.0","@aguspe/tiler-core":"1.3.0","@aguspe/tiler-editor":"^1.1.0","@aguspe/tiler-viewer":"1.1.13","@aguspe/tiler-widgets":"1.2.2"},"devDependencies":{"@types/better-sqlite3":"^7.6.11","@types/node":"^22.7.0","@types/papaparse":"^5.5.2","tsup":"^8.3.0","typescript":"^5.6.0","vitest":"^2.1.0"},"scripts":{"build":"tsup","test":"vitest run","typecheck":"tsc --noEmit"},"_id":"@aguspe/tiler-server@1.1.1","bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"_integrity":"sha512-GRMsHBlytU7ljcBH1LF5GjuiqPn7QJVJljBlKGHVylJ7pehGUU6up0QupCgUouRyq7ARF89M9uHR8l2h0SzHhQ==","_resolved":"/tmp/5fead748a3e4ed689285530592c62a49/aguspe-tiler-server-1.1.1.tgz","_from":"file:aguspe-tiler-server-1.1.1.tgz","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-GRMsHBlytU7ljcBH1LF5GjuiqPn7QJVJljBlKGHVylJ7pehGUU6up0QupCgUouRyq7ARF89M9uHR8l2h0SzHhQ==","shasum":"1137988e62940aee58447c394db93055d1e31a43","tarball":"https://registry.npmjs.org/@aguspe/tiler-server/-/tiler-server-1.1.1.tgz","fileCount":15,"unpackedSize":290545,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDCoUO2mTigvkaoM2r3QJBUbCTrz1P/3Wh9yeFbDoBq6wIgUVu8Nn5C/7DPCiEN6B+yrg7ICJjiFDEFN5XZ6yBebwM="}]},"_npmUser":{"name":"aguspe","email":"agustin.pe94@gmail.com"},"directories":{},"maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tiler-server_1.1.1_1777969161934_0.08482894312310951"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-02T13:58:37.082Z","modified":"2026-05-05T08:19:22.191Z","1.0.0":"2026-05-02T13:58:37.354Z","1.0.1":"2026-05-02T14:25:22.181Z","1.0.2":"2026-05-02T14:46:37.030Z","1.0.3":"2026-05-02T23:49:28.331Z","1.1.0":"2026-05-05T06:55:36.358Z","1.1.1":"2026-05-05T08:19:22.082Z"},"bugs":{"url":"https://github.com/aguspe/tiler-ts/issues"},"license":"MIT","homepage":"https://github.com/aguspe/tiler-ts/tree/main/packages/server","repository":{"type":"git","url":"git+https://github.com/aguspe/tiler-ts.git","directory":"packages/server"},"description":"Fastify server for tiler-ts. SQLite-backed, HMAC ingestion, WebSocket live updates.","maintainers":[{"name":"aguspe","email":"agustin.pe94@gmail.com"}],"readme":"# `@aguspe/tiler-server`\n\nFastify 5 server that hosts your tiler dashboards live: SSR'd editor at `/dashboards/:slug`, REST API under `/api/*`, HMAC-signed webhook ingestion at `/ingest/:slug`, and WebSocket live updates at `/ws`. Sqlite-backed via `better-sqlite3` (or any `TilerStore`).\n\n## Install\n\n```bash\nnpm i @aguspe/tiler-server @aguspe/tiler-core @aguspe/tiler-widgets\n```\n\nIf you want the friendlier `tiler` binary, add **[`@aguspe/tiler-cli`](../cli/README.md)** too.\n\n## Usage\n\n```ts\n// tiler.config.ts\nimport { defineConfig } from \"@aguspe/tiler-core\";\nimport { BetterSqliteStore } from \"@aguspe/tiler-server/sqlite\";\n\nexport default defineConfig({\n  store: new BetterSqliteStore({ path: \"./tiler.db\" }),\n  port: 4567,\n  auth: {\n    webhookSecret: process.env.TILER_WEBHOOK_SECRET,\n  },\n  widgets: [\"@aguspe/tiler-widgets\"],\n  presets: [\"test_automation\"],\n});\n```\n\n```ts\n// start.ts\nimport \"@aguspe/tiler-widgets\";\nimport { createServer } from \"@aguspe/tiler-server\";\nimport config from \"./tiler.config\";\n\nconst app = await createServer(config);\nawait app.listen({ host: config.host, port: config.port });\n```\n\nOr skip `start.ts` entirely and run `npx tiler serve`.\n\n## Routes\n\n| Method | Path | Purpose |\n|---|---|---|\n| `GET` | `/dashboards` | Card grid of dashboards |\n| `GET` | `/dashboards/:slug` | SSR'd editor |\n| `GET` | `/data-sources` | Registered sources |\n| `GET` | `/settings` | Live diagnostics |\n| `GET / POST / PATCH / DELETE` | `/api/dashboards`, `/api/panels`, `/api/data_sources` | CRUD |\n| `POST` | `/ingest/:source_slug` | HMAC webhook ingestion |\n| `WS`   | `/ws` | Live WidgetData diffs |\n| `GET`  | `/healthz` | Liveness probe |\n\n## Seeded dashboards\n\nThe server can seed dashboards into its store on first boot from\n`presets: [\"...\"]` (built-in by name) or `dashboards: [...]`\n(user-defined `definePlaywrightConfig({...})` exports). Idempotent by\nslug — editor edits are never overwritten. See the [Seeded dashboards\nguide](https://aguspe.github.io/tiler-ts/server/seeding) for the full\nworkflow.\n\n## License\n\nMIT — see [`LICENSE`](../../LICENSE).\n","readmeFilename":"README.md"}