{"id":34605172,"url":"https://github.com/neverinfamous/do-manager-admin-hooks","last_synced_at":"2026-04-06T19:00:52.935Z","repository":{"id":326604577,"uuid":"1106303045","full_name":"neverinfamous/do-manager-admin-hooks","owner":"neverinfamous","description":"Admin hooks for Cloudflare Durable Objects - enables integration with DO Manager: https://github.com/neverinfamous/do-manager","archived":false,"fork":false,"pushed_at":"2026-04-06T17:17:54.000Z","size":136,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-06T18:29:08.356Z","etag":null,"topics":["cloudflare","cloudflare-workers","developer-tools","development-tools","durable-objects","node-js","npm-package","typescript"],"latest_commit_sha":null,"homepage":"https://do.adamic.tech","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neverinfamous.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-29T01:33:54.000Z","updated_at":"2026-04-06T17:17:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/neverinfamous/do-manager-admin-hooks","commit_stats":null,"previous_names":["neverinfamous/do-manager-admin-hooks"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/neverinfamous/do-manager-admin-hooks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neverinfamous%2Fdo-manager-admin-hooks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neverinfamous%2Fdo-manager-admin-hooks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neverinfamous%2Fdo-manager-admin-hooks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neverinfamous%2Fdo-manager-admin-hooks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neverinfamous","download_url":"https://codeload.github.com/neverinfamous/do-manager-admin-hooks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neverinfamous%2Fdo-manager-admin-hooks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31485516,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-06T17:22:55.647Z","status":"ssl_error","status_checked_at":"2026-04-06T17:22:54.741Z","response_time":112,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudflare","cloudflare-workers","developer-tools","development-tools","durable-objects","node-js","npm-package","typescript"],"created_at":"2025-12-24T13:17:17.524Z","updated_at":"2026-04-06T19:00:52.908Z","avatar_url":"https://github.com/neverinfamous.png","language":"TypeScript","readme":"# do-manager-admin-hooks\n\n[![npm](https://img.shields.io/npm/v/do-manager-admin-hooks)](https://www.npmjs.com/package/do-manager-admin-hooks)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nAdmin hooks for Cloudflare Durable Objects that enable integration with [DO Manager](https://do.adamic.tech).\n\n## Installation\n\n```bash\nnpm install do-manager-admin-hooks\n```\n\n## Quick Start\n\n```typescript\nimport { withAdminHooks } from \"do-manager-admin-hooks\";\n\nexport class MyDurableObject extends withAdminHooks() {\n  async fetch(request: Request): Promise\u003cResponse\u003e {\n    // Handle admin requests first (required for DO Manager)\n    const adminResponse = await this.handleAdminRequest(request);\n    if (adminResponse) return adminResponse;\n\n    // Your custom logic here\n    return new Response(\"Hello from my Durable Object!\");\n  }\n}\n```\n\n## Configuration Options\n\n```typescript\nexport class SecureDO extends withAdminHooks({\n  // Change the base path for admin endpoints (default: '/admin')\n  basePath: \"/admin\",\n\n  // Require authentication for admin endpoints (recommended for production)\n  requireAuth: true,\n  adminKey: \"your-secret-key\",\n}) {\n  // ...\n}\n```\n\n## Admin Endpoints\n\nOnce you extend `withAdminHooks()`, your Durable Object exposes these endpoints:\n\n| Endpoint              | Method | Description                               |\n| --------------------- | ------ | ----------------------------------------- |\n| `/admin/list`         | GET    | List storage keys (KV) or tables (SQLite) |\n| `/admin/get?key=X`    | GET    | Get value for a key                       |\n| `/admin/put`          | POST   | Set key-value pair (`{ key, value }`)     |\n| `/admin/delete`       | POST   | Delete a key (`{ key }`)                  |\n| `/admin/sql`          | POST   | Execute SQL (`{ query }`) - SQLite only   |\n| `/admin/alarm`        | GET    | Get current alarm                         |\n| `/admin/alarm`        | PUT    | Set alarm (`{ timestamp }`)               |\n| `/admin/alarm`        | DELETE | Delete alarm                              |\n| `/admin/export`       | GET    | Export all storage as JSON                |\n| `/admin/import`       | POST   | Import data (`{ data: {...} }`)           |\n| `/admin/:name/freeze` | PUT    | Freeze instance (block writes)            |\n| `/admin/:name/freeze` | DELETE | Unfreeze instance (allow writes)          |\n| `/admin/:name/freeze` | GET    | Get freeze status                         |\n\n### Freeze Operations\n\nFreeze functionality is used for instance migration cutover modes. When an instance is frozen:\n\n- `PUT`, `DELETE`, and `IMPORT` operations return `423 Locked`\n- Read operations (`GET`, `LIST`, `EXPORT`) continue to work\n\n## DO Manager Setup\n\n1. Install this package and deploy your Worker\n2. In [DO Manager](https://do.adamic.tech), add your namespace\n3. Enter your **Admin Hook Endpoint URL** (e.g., `https://my-worker.workers.dev`)\n4. Admin hooks are automatically enabled when you save\n5. View/edit storage, set alarms, and backup your DOs!\n\n## Security\n\nFor production, enable authentication:\n\n```typescript\nexport class SecureDO extends withAdminHooks({\n  requireAuth: true,\n  adminKey: process.env.ADMIN_KEY,\n}) {\n  // ...\n}\n```\n\nFeatures timing-safe key comparison to prevent timing attacks.\n\n## TypeScript Support\n\nFull TypeScript support with exported types:\n\n```typescript\nimport {\n  withAdminHooks,\n  AdminHooksOptions,\n  AdminListResponse,\n  AdminExportResponse,\n} from \"do-manager-admin-hooks\";\n```\n\n## Links\n\n- [DO Manager Demo Site](https://do.adamic.tech) - Web UI for managing Durable Objects\n- [DO Manager GitHub](https://github.com/neverinfamous?tab=repositories) - Do Manager GitHub repository\n- [NPM](https://www.npmjs.com/package/do-manager-admin-hooks) - Package\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneverinfamous%2Fdo-manager-admin-hooks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneverinfamous%2Fdo-manager-admin-hooks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneverinfamous%2Fdo-manager-admin-hooks/lists"}