0.1.9 #10

Merged
Thilawyn merged 7 commits from next into master 2024-08-20 02:19:32 +02:00
5 changed files with 50 additions and 0 deletions
Showing only changes of commit 9d81c27532 - Show all commits

BIN
bun.lockb

Binary file not shown.

View File

@@ -69,7 +69,9 @@
}, },
"optionalDependencies": { "optionalDependencies": {
"@effect/schema": "*", "@effect/schema": "*",
"@types/jsonwebtoken": "*",
"effect": "*", "effect": "*",
"jsonwebtoken": "*",
"mobx": "*" "mobx": "*"
} }
} }

View File

@@ -0,0 +1,46 @@
import { Context, Effect, Layer } from "effect"
import jwt from "jsonwebtoken"
export class JSONWebToken extends Context.Tag("JSONWebToken")<JSONWebToken, {
sign: (
payload: string | object | Buffer,
secretOrPrivateKey: jwt.Secret,
options: jwt.SignOptions,
) => Effect.Effect<
string,
Error,
never
>,
verify: (
token: string,
secretOrPublicKey: jwt.Secret,
options: jwt.VerifyOptions,
) => Effect.Effect<
string | jwt.Jwt | jwt.JwtPayload,
jwt.VerifyErrors | Error,
never
>,
}>() {}
export const JSONWebTokenLive = Layer.succeed(JSONWebToken, {
sign: (payload, secretOrPrivateKey, options) => Effect.async(resume =>
jwt.sign(payload, secretOrPrivateKey, options, (err, token) => {
resume(token
? Effect.succeed(token)
: Effect.fail(err || new Error("Unknown error"))
)
})
),
verify: (token, secretOrPublicKey, options) => Effect.async(resume =>
jwt.verify(token, secretOrPublicKey, options, (err, decoded) => {
resume(decoded
? Effect.succeed(decoded)
: Effect.fail(err || new Error("Unknown error"))
)
})
),
})

1
src/Layers/index.ts Normal file
View File

@@ -0,0 +1 @@
export * as JSONWebToken from "./JSONWebToken"

View File

@@ -1,2 +1,3 @@
export * as Layers from "./Layers"
export * as Schema from "./Schema" export * as Schema from "./Schema"
export * as Types from "./Types" export * as Types from "./Types"