A simple library for adding clear functionality to Cloudflare Durable Objects. Supports clearing storage and alarms with optional authentication.
npm i clearable-objectimport { Clearable } from "clearable-object";
@Clearable({ secret: "user:pass", isPublic: false })
export class MyDurableObject extends DurableObject {
// Automatically adds GET /clear endpoint
}import { Clear } from "clearable-object";
export class MyDurableObject extends DurableObject {
clear = new Clear(this, { secret: "user:pass" });
async fetch(request: Request) {
const url = new URL(request.url);
if (url.pathname === "/clear") {
const result = await this.clear.clear();
return new Response(JSON.stringify(result));
}
// ... your logic
}
}GET /clear- Clear all data (storage and alarm)GET /clear?storage=false- Skip clearing storageGET /clear?alarm=false- Skip clearing alarm
await clear.clear({
clearStorage: true, // Clear Durable Object storage
clearAlarm: true, // Clear scheduled alarm
});const isAuthorized = clear.checkAuth(request);return clear.unauthorizedResponse();interface ClearResult {
success: boolean;
storageCleared: boolean; // Whether storage was cleared
alarmCleared: boolean; // Whether alarm was cleared
errors?: string[]; // Any errors encountered
warnings?: string[]; // Any warnings
}interface ClearOptions {
secret?: string; // Authentication secret
isPublic?: boolean; // Allow unauthenticated access
}Configure with secret option. Supports Basic Auth and API key query parameter.
curl -u user:pass https://your-worker.com/clearcurl https://your-worker.com/clear?apiKey=user:pass// Require authentication
@Clearable({ secret: "myuser:mypass" })
// Public access (no auth required)
@Clearable({ isPublic: true })
// No auth, not public (will reject all requests)
@Clearable()- Graceful Error Handling: Storage and alarm clearing failures are handled independently
- Detailed Reporting: Know exactly what was cleared and what failed
- Flexible Options: Choose what to clear via query parameters
- Authentication: Protect destructive operations with Basic Auth or API keys
- Development: Quick reset during testing
- Maintenance: Clean up corrupted data
- Migration: Prepare for fresh data import
- Debugging: Clear state to isolate issues
{
"success": true,
"storageCleared": true,
"alarmCleared": true
}{
"success": true,
"storageCleared": true,
"alarmCleared": false,
"warnings": ["No alarm was set to clear"]
}{
"error": "Unauthorized",
"message": "Valid authentication required"
}Full TypeScript support with proper type definitions for all methods and responses.
import { Clear, ClearResult, ClearOptions } from "clearable-object";
const clear = new Clear(durableObject, options);
const result: ClearResult = await clear.clear();