diff options
| author | Fuwn <[email protected]> | 2026-03-03 09:04:44 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-03-03 09:08:43 -0800 |
| commit | 6a44eac70c41bb1343a20ddf3ce775e416214d75 (patch) | |
| tree | c5128228834222a1a6f0cc93869215a806bd9a0a /src/lib/Effect/requestBody.ts | |
| parent | refactor(effect): migrate api auth cookie decoding (diff) | |
| download | due.moe-6a44eac70c41bb1343a20ddf3ce775e416214d75.tar.xz due.moe-6a44eac70c41bb1343a20ddf3ce775e416214d75.zip | |
refactor(effect): add request body schema decoders to api routes
Diffstat (limited to 'src/lib/Effect/requestBody.ts')
| -rw-r--r-- | src/lib/Effect/requestBody.ts | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/lib/Effect/requestBody.ts b/src/lib/Effect/requestBody.ts new file mode 100644 index 00000000..c43c30b2 --- /dev/null +++ b/src/lib/Effect/requestBody.ts @@ -0,0 +1,15 @@ +import { Schema } from "effect"; + +type SyncDecodingSchema = Schema.Top & { + readonly DecodingServices: never; +}; + +export const decodeUnknownOrThrow = <S extends SyncDecodingSchema>( + schema: S, + input: unknown, +): S["Type"] => Schema.decodeUnknownSync(schema)(input); + +export const decodeRequestJsonOrThrow = async <S extends SyncDecodingSchema>( + request: Request, + schema: S, +): Promise<S["Type"]> => decodeUnknownOrThrow(schema, await request.json()); |