From ad6255b5da07b2564ec6f3d6decb063a4002a975 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 01:46:00 +0200 Subject: [PATCH 1/7] DateTime --- bun.lockb | Bin 164302 -> 64741 bytes package.json | 12 +++++----- src/Schema/DateTime.ts | 52 +++++++++++++++++++++++++++++++++++++++++ src/Schema/index.ts | 1 + 4 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 src/Schema/DateTime.ts diff --git a/bun.lockb b/bun.lockb index dc82173e1f713f06e362e76e77376ab14e12b2f9..54b56211964a425a033a283cf61ee6cd346375dc 100755 GIT binary patch delta 17040 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 diff --git a/package.json b/package.json index 777cd5e..f15f662 100644 --- a/package.json +++ b/package.json @@ -56,15 +56,15 @@ "clean:node": "rm -rf node_modules" }, "dependencies": { - "remeda": "^2.6.0", - "type-fest": "^4.23.0" + "remeda": "^2.11.0", + "type-fest": "^4.25.0" }, "devDependencies": { - "bun-types": "^1.1.21", - "npm-check-updates": "^16.14.20", + "bun-types": "^1.1.24", + "npm-check-updates": "^17.0.6", "npm-sort": "^0.0.4", - "tsup": "^8.2.3", - "tsx": "^4.16.2", + "tsup": "^8.2.4", + "tsx": "^4.17.0", "typescript": "^5.5.4" }, "optionalDependencies": { diff --git a/src/Schema/DateTime.ts b/src/Schema/DateTime.ts new file mode 100644 index 0000000..8964f2c --- /dev/null +++ b/src/Schema/DateTime.ts @@ -0,0 +1,52 @@ +import { ParseResult, Schema } from "@effect/schema" +import { DateTime } from "effect" + + +export const DateTimeUtcFromDate = Schema.transformOrFail( + Schema.DateFromSelf, + Schema.DateTimeUtcFromSelf, + + { + strict: true, + + decode: (date, _, ast) => ParseResult.try({ + try: () => DateTime.unsafeMake(date), + + catch: e => new ParseResult.Type( + ast, + date, + e instanceof Error ? e.message : undefined, + ), + }), + + encode: dateTimeUtc => ParseResult.succeed( + DateTime.toDateUtc(dateTimeUtc) + ), + }, +) + +export const DateTimeZonedFromDate = (options: { + readonly timeZone: number | string | DateTime.TimeZone + readonly adjustForTimeZone?: boolean | undefined +}) => Schema.transformOrFail( + Schema.DateFromSelf, + Schema.DateTimeZonedFromSelf, + + { + strict: true, + + decode: (date, _, ast) => ParseResult.try({ + try: () => DateTime.unsafeMakeZoned(date, options), + + catch: e => new ParseResult.Type( + ast, + date, + e instanceof Error ? e.message : undefined, + ), + }), + + encode: dateTime => ParseResult.succeed( + DateTime.toDate(dateTime) + ), + }, +) diff --git a/src/Schema/index.ts b/src/Schema/index.ts index e3fa60a..8e5942f 100644 --- a/src/Schema/index.ts +++ b/src/Schema/index.ts @@ -1,4 +1,5 @@ export * from "./Class" +export * from "./DateTime" export * from "./Jsonifiable" export * from "./Kind" export * as MobX from "./MobX" -- 2.49.1 From 9d81c27532be27297e861db27b184c48200ff3cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 02:04:57 +0200 Subject: [PATCH 2/7] Layers --- bun.lockb | Bin 64741 -> 70373 bytes package.json | 2 ++ src/Layers/JSONWebToken.ts | 46 +++++++++++++++++++++++++++++++++++++ src/Layers/index.ts | 1 + src/index.ts | 1 + 5 files changed, 50 insertions(+) create mode 100644 src/Layers/JSONWebToken.ts create mode 100644 src/Layers/index.ts diff --git a/bun.lockb b/bun.lockb index 54b56211964a425a033a283cf61ee6cd346375dc..183f9cb8a27a218c4a1b46e81f11d7f8e0c7d68a 100755 GIT binary patch delta 12259 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 delta 8730 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 diff --git a/package.json b/package.json index f15f662..630c426 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,9 @@ }, "optionalDependencies": { "@effect/schema": "*", + "@types/jsonwebtoken": "*", "effect": "*", + "jsonwebtoken": "*", "mobx": "*" } } diff --git a/src/Layers/JSONWebToken.ts b/src/Layers/JSONWebToken.ts new file mode 100644 index 0000000..0ee5d14 --- /dev/null +++ b/src/Layers/JSONWebToken.ts @@ -0,0 +1,46 @@ +import { Context, Effect, Layer } from "effect" +import jwt from "jsonwebtoken" + + +export class JSONWebToken extends Context.Tag("JSONWebToken") 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")) + ) + }) + ), +}) diff --git a/src/Layers/index.ts b/src/Layers/index.ts new file mode 100644 index 0000000..37dc85f --- /dev/null +++ b/src/Layers/index.ts @@ -0,0 +1 @@ +export * as JSONWebToken from "./JSONWebToken" diff --git a/src/index.ts b/src/index.ts index 05f2af0..1129b8d 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,2 +1,3 @@ +export * as Layers from "./Layers" export * as Schema from "./Schema" export * as Types from "./Types" -- 2.49.1 From 6f978193020f40997601bea1890b668cab025254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 02:07:02 +0200 Subject: [PATCH 3/7] Layers module --- package.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/package.json b/package.json index 630c426..2e462a3 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,16 @@ "default": "./dist/index.cjs" } }, + "./Layers": { + "import": { + "types": "./dist/Layers/index.d.ts", + "default": "./dist/Layers/index.js" + }, + "require": { + "types": "./dist/Layers/index.d.cts", + "default": "./dist/Layers/index.cjs" + } + }, "./Types": { "import": { "types": "./dist/Types/index.d.ts", -- 2.49.1 From de9c781e206bc92860ca7f91d2abab9a5dfae20c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 02:10:21 +0200 Subject: [PATCH 4/7] Comment --- src/Layers/index.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Layers/index.ts b/src/Layers/index.ts index 37dc85f..0ff0f6f 100644 --- a/src/Layers/index.ts +++ b/src/Layers/index.ts @@ -1 +1,5 @@ +/** + * A wrapper around the jsonwebtoken library for Effect + * Requires `jsonwebtoken` and `@types/jsonwebtoken` to be installed + */ export * as JSONWebToken from "./JSONWebToken" -- 2.49.1 From 9034b23a52a220b3f7514415fdc9bcef937308e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 02:14:57 +0200 Subject: [PATCH 5/7] Dependencies fix --- bun.lockb | Bin 70373 -> 70373 bytes package.json | 12 +++++------- src/Layers/index.ts | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/bun.lockb b/bun.lockb index 183f9cb8a27a218c4a1b46e81f11d7f8e0c7d68a..57dcc98c337d82352cb16ba16080f837a0d65ee8 100755 GIT binary patch delta 1489 zcmd5+ZA@EL7(VCHJA2o5jxkt4jm&@{sCSfp+!9z>Vw_8=2A7!Xq9~ZM*@ZF&jD09= zp?>_)xV;Qb_%R8>7%dy+T45iF_=7n7NMuqr)J%=eu&If0(PS|(KDWJB{O=!c^7J{+ zdEWQEr{~=BUK=r88!=73DMnh`nh!EOb%2$zXh*R1KyW`}D^A8N(97W4!E@k^;P-Vs z3SJLAp!2Kxe5kuaE5~+va`~a|rmX%Rx&ZO>;1Y1Kr6u@$C)>=B$0SS?dvghmU~M7m z!P>l9wWdm>s3l6zSxTp@$qGuk>!gQ~whgXC?RG_AE~@nSM3;*(A59e1O8YU|4%*mmy2^Q1^+*%77b#L1RxKkkk5U^I=@}>= zlt`(&6>(7W=$Fb`;SUep@cN{O6vm#0&9#>cLkfjzd_qQ{ahFdh^U@7a$V-)OpOElU z$n8_dYOHH0S#OT4#a=9Ax9h*LfEr)ubu`WcmH-Z12DInjti>-gwjmqvW!7d)W3E2B zO%eaEYrAXvibBDNpASgj8x=n4h1b520qD z%6t7hLG8T(+7q);25N#f_XWt_YonL@{QL|pKwX4#$NfA-v3P(E_Ss16@pF|P?+H*v z+(v1rH1SA4y%MijM-5~ZZ{pLmso%YFnX4=P7s~Rrjs6I@2+RW?)6m&F=<~CWNZ9i1 zabHr)&)vsG?W7jfC(b{}r6~+kz_2=W!IJk>62k;A4x9qUfRn%|FajJ0-UUtr6Tl>J zMjvZB4XD6-I&0$@AVuP=f3I0P{_InV-vWHOUwd|(9#0%8Uv->twA*;(=iQ&Zw&ACH z%)HSdJLGB?(=Rf6w)C6+*r#*Tt2stXF>ifo_p$jOrr^-f>?Y}-2=%Mk!2-IvSmH6d zNBZXEul?tXeiL}3OLodtj2Zo9kND>a&-JbZ9L&pD+jNM~2q{GEO);py;cdZ5( zE$f|ybNd$7h2O{)t&(wFm!0%t#xATlX&}=g?DWuIC}eb|1NFxa`))Ou1n$6#9Qfl# z?+S0)Qg>_ScaQGC%B30=jFvV0$=iocgf6`x@E))1mK{~hXl_Th?0Ws)^wt_U)u>%9 zdmFu!T(k?tUWzVhq(+wtgu>>o@B^KP_60ja9c|(6U~^~N-e6cAyK=pHdeF*0Fijt| S@U{G{Z!P?`>85-h=YIp8KWs$+ delta 1551 zcmd6n?N1z46vpozb}GX%mGb5WYup+!fI93OJ46BR?@VVWlw6<6&FA{5F8*RkeCZ@(1KWKbrnF)V@U%bgL z&wb80bMMUDnR9d0a&y#@cvp-(!5EVmi`KdsvqEFgY-kNsk2f~g9YqO)O~+e9jjx1W zX6&wKz5Yk&y{Nka&4qCdy7}Fe^93ow}+Ua>~bUJ&ogeHC4g^-(W`TRoMO=XpS;kKK?5W9yaJbtMLTkXUO z61CV=A*+JQD*U3qf-yf$6;?^FVzvuu3nhzG@jP5LH5OD!x!(17203l2v=?r7x~kO1(g|;%vYrbI6s_7$p=+&RL{|!vMPc3=$7i2_W1DVNOOI2 zA?~BF&##SFW^alJcncQ+2VVhw=&Jimy1~#j3oPpf$ThS!Wl zTD50(s^b6o{vO!1rqb)(0X{+t-9Z}fkg1|4z(=XGCrEoEGKn1lK1MYiLCTEEl!7}+ zJQAc?xKJd(U|OGUmT} z!2ZKP=j97C8yPpQ(c4Mpj@KIcFa9*Wkue)f?tv4r;Eep%M#gMO$8R^xznPu;>qD7* zzf*B4E{}F??!!E<*_uW!y?-ngzWSoTJA6uo;&d>xiS?D&o_Hj+qY@dHLvgwkU(8KU zuh@iIH$_)$Ub6|^KQ{bx>`ygc;QQT*OK~w~wyD(biQfj!7T!h1qqr3ZV?!RAT(WI7 z`&wLnyQ}v`usmJhP;k<79=g6{^O}utXyMG^h0RUx7zJnTG<5fn+sW($n zmg|LmD*dx;6BboUEZer44YBFI^6h`k{^1q4Q^CWa+^938)~!WX@`QqLYjab3sIIN~ zrBGAdk*3GnjvWrQYU8WFxMr$zcov`Ov+~a@gRvZb&)|70w+|kYxqW7M3xA6L3#r_A AhX4Qo diff --git a/package.json b/package.json index 2e462a3..13325f3 100644 --- a/package.json +++ b/package.json @@ -70,18 +70,16 @@ "type-fest": "^4.25.0" }, "devDependencies": { + "@effect/schema": "^0.71.0", + "@types/jsonwebtoken": "^9.0.6", "bun-types": "^1.1.24", + "effect": "^3.6.4", + "jsonwebtoken": "^9.0.2", + "mobx": "^6.13.1", "npm-check-updates": "^17.0.6", "npm-sort": "^0.0.4", "tsup": "^8.2.4", "tsx": "^4.17.0", "typescript": "^5.5.4" - }, - "optionalDependencies": { - "@effect/schema": "*", - "@types/jsonwebtoken": "*", - "effect": "*", - "jsonwebtoken": "*", - "mobx": "*" } } diff --git a/src/Layers/index.ts b/src/Layers/index.ts index 0ff0f6f..77d7071 100644 --- a/src/Layers/index.ts +++ b/src/Layers/index.ts @@ -1,5 +1,5 @@ /** * A wrapper around the jsonwebtoken library for Effect - * Requires `jsonwebtoken` and `@types/jsonwebtoken` to be installed + * Requires `effect`, `jsonwebtoken` and `@types/jsonwebtoken` to be installed */ export * as JSONWebToken from "./JSONWebToken" -- 2.49.1 From ac757c579665ac4cb7a23038c1c2259a4b85a586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 02:15:21 +0200 Subject: [PATCH 6/7] Regenerated lockfile --- bun.lockb | Bin 70373 -> 70373 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index 57dcc98c337d82352cb16ba16080f837a0d65ee8..8243ed5b535be505f94702ca99229f7b23c031df 100755 GIT binary patch delta 113 zcmaF5l;!DCmJNXi6dB_T^vn(Q3>Xv`7#M^Z7#i-Fd8}Ktx>}WkG0sxYK+kM)(E(i> z#yDd=Gd&Xq1{xGEcTtNVo;TVGe -- 2.49.1 From ccb6bebdcc34d73acebc293dc8e69453916c75b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Tue, 20 Aug 2024 02:18:14 +0200 Subject: [PATCH 7/7] Version bump --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 13325f3..3609a69 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@thilawyn/thilalib", - "version": "0.1.8", + "version": "0.1.9", "type": "module", "files": [ "./dist" -- 2.49.1