UNPKG

next-safe-fetch

Version:

Type-safe server actions with middleware support

32 lines (31 loc) 1.18 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createSafeAction = exports.SafeActionBuilder = void 0; class SafeActionBuilder { setMiddleware(middleware) { const builder = new SafeActionBuilder(); builder.middleware = middleware; return builder; } create(schemaOrHandler, handler) { if (!this.middleware) { throw new Error("Middleware not configured. Call setMiddleware() before creating actions."); } if (typeof schemaOrHandler === "function") { return async () => { const context = await this.middleware(); return schemaOrHandler(context); }; } return async (data) => { const validated = schemaOrHandler.safeParse(data); if (!validated.success) { throw new Error("Validation failed: " + JSON.stringify(validated.error)); } const context = await this.middleware(); return handler(validated.data, context); }; } } exports.SafeActionBuilder = SafeActionBuilder; exports.createSafeAction = new SafeActionBuilder();