unjwt 0.5.39 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +156 -13
  2. package/dist/_chunks/_crypto.mjs +1014 -0
  3. package/dist/_chunks/error.d.mts +67 -0
  4. package/dist/_chunks/index.d.mts +631 -219
  5. package/dist/_chunks/jwk.d.mts +220 -87
  6. package/dist/_chunks/jws.mjs +729 -682
  7. package/dist/_chunks/utils.mjs +74 -69
  8. package/dist/adapters/h3v1/index.d.mts +282 -0
  9. package/dist/{_chunks/h3v1.mjs → adapters/h3v1/index.mjs} +204 -91
  10. package/dist/adapters/h3v2/index.d.mts +213 -0
  11. package/dist/adapters/{h3v2.mjs → h3v2/index.mjs} +215 -113
  12. package/dist/core/_crypto/index.d.mts +71 -0
  13. package/dist/core/_crypto/index.mjs +2 -0
  14. package/dist/core/jwe.d.mts +40 -0
  15. package/dist/{_chunks → core}/jwe.mjs +61 -32
  16. package/dist/core/jwk.d.mts +231 -0
  17. package/dist/core/jwk.mjs +686 -0
  18. package/dist/core/jws.d.mts +31 -0
  19. package/dist/core/jws.mjs +104 -0
  20. package/dist/{_chunks/index2.d.mts → core/utils/index.d.mts} +13 -12
  21. package/dist/core/utils/index.mjs +2 -0
  22. package/dist/index.d.mts +7 -6
  23. package/dist/index.mjs +5 -5
  24. package/package.json +50 -41
  25. package/dist/_chunks/chunk.mjs +0 -13
  26. package/dist/_chunks/jwe.d.mts +0 -43
  27. package/dist/_chunks/jwk.mjs +0 -1592
  28. package/dist/_chunks/jws.d.mts +0 -46
  29. package/dist/adapters/h3.d.mts +0 -3
  30. package/dist/adapters/h3.mjs +0 -3
  31. package/dist/adapters/h3v1.d.mts +0 -3
  32. package/dist/adapters/h3v1.mjs +0 -3
  33. package/dist/adapters/h3v2.d.mts +0 -184
  34. package/dist/jwe.d.mts +0 -3
  35. package/dist/jwe.mjs +0 -4
  36. package/dist/jwk.d.mts +0 -3
  37. package/dist/jwk.mjs +0 -3
  38. package/dist/jws.d.mts +0 -3
  39. package/dist/jws.mjs +0 -4
  40. package/dist/utils.d.mts +0 -3
  41. package/dist/utils.mjs +0 -2
@@ -0,0 +1,213 @@
1
+ import { $ as JWK_HMAC, A as GenerateJWKReturn, B as JWKParameters, C as JWTClaims, D as DeriveKeyOptions, E as ContentEncryptionAlgorithm, F as JWKAlgorithm, G as JWK_AES_KW, H as JWK_AES_CBC_HMAC, I as JWKCacheAdapter, J as JWK_EC, K as JWK_Asymmetric, L as JWKLookupFunction, M as GenerateKeyOptions, N as GenerateKeyReturn, O as DeriveKeyReturn, P as JWK, Q as JWK_EC_Public, R as JWKLookupFunctionHeader, S as JWTClaimValidationOptions, T as CompositeKey, U as JWK_AES_GCM, V as JWKSet, W as JWK_AES_GCM_KW, X as JWK_ECDSA, Y as JWK_ECDH_ES, Z as JWK_EC_Private, _ as JWSSignOptions, _t as KeyManagementAlgorithm, a as ExpiresIn, at as JWK_Pair, b as JOSEPayload, bt as WrapKeyResult, c as JWEDecryptResult, ct as JWK_RSA, d as JWEKeyManagementHeaderParameters, dt as JWK_RSA_Private, et as JWK_OKP, f as JWEProtectedHeader, ft as JWK_RSA_Public, g as JWSProtectedHeader, gt as JWK_oct, h as JWSHeaderParameters, ht as JWK_Symmetric_Algorithm, i as importFromPEM, it as JWK_PBES2, j as GenerateKeyAlgorithm, k as GenerateJWKOptions, l as JWEEncryptOptions, lt as JWK_RSA_ENC, m as JWSAlgorithm, mt as JWK_Symmetric, n as exportToPEM, nt as JWK_OKP_Public, o as MaxTokenAge, ot as JWK_Private, p as StrictOmit, pt as JWK_RSA_SIGN, q as JWK_Asymmetric_Algorithm, r as generateJWK, rt as JWK_OKP_SIGN, s as JWEDecryptOptions, st as JWK_Public, t as deriveJWKFromPassword, tt as JWK_OKP_Private, u as JWEHeaderParameters, ut as JWK_RSA_PSS, v as JWSVerifyOptions, vt as UnwrapKeyOptions, w as JoseHeaderParameters, x as JWT, y as JWSVerifyResult, yt as WrapKeyOptions, z as JWKPEMAlgorithm } from "../../_chunks/jwk.mjs";
2
+ import { H3Event, HTTPEvent } from "h3";
3
+ import { CookieSerializeOptions } from "cookie-es";
4
+
5
+ //#region src/adapters/h3v2/session/types.d.ts
6
+ interface SessionClaims extends Required<Pick<JWTClaims, "jti" | "iat">>, StrictOmit<JWTClaims, "jti" | "iat"> {}
7
+ type SessionData<T extends Record<string, any> = SessionClaims> = StrictOmit<T, "jti" | "iat" | "exp">;
8
+ type SessionUpdate<T extends Record<string, any> = SessionClaims> = Partial<SessionData<T>> | ((oldData: SessionData<T>) => Partial<SessionData<T>> | undefined);
9
+ interface SessionManager<T extends Record<string, any> = SessionClaims, ConfigMaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
10
+ readonly id: string | undefined;
11
+ readonly createdAt: number;
12
+ readonly expiresAt: ConfigMaxAge extends ExpiresIn ? number : "exp" extends keyof T ? T["exp"] : number | undefined;
13
+ readonly data: SessionData<T>;
14
+ readonly token: string | undefined;
15
+ update: (update?: SessionUpdate<T>) => Promise<SessionManager<T, ConfigMaxAge>>;
16
+ clear: () => Promise<SessionManager<T, ConfigMaxAge>>;
17
+ }
18
+ //#endregion
19
+ //#region src/adapters/h3v2/session/jwe.d.ts
20
+ declare const kGetSessionPromise$1: unique symbol;
21
+ interface SessionJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
22
+ id: string | undefined;
23
+ createdAt: number;
24
+ expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
25
+ data: SessionData<T>;
26
+ token: string | undefined;
27
+ [kGetSessionPromise$1]?: Promise<SessionJWE<T, MaxAge>>;
28
+ }
29
+ interface SessionHooksJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent | H3Event = HTTPEvent | H3Event> {
30
+ onRead?: (args: {
31
+ session: SessionJWE<T, MaxAge> & {
32
+ id: string;
33
+ token: string;
34
+ };
35
+ event: TEvent;
36
+ config: SessionConfigJWE<T, MaxAge, TEvent>;
37
+ }) => void | Promise<void>;
38
+ onUpdate?: (args: {
39
+ /** Session after it has been updated.. */session: SessionJWE<T, MaxAge> & {
40
+ id: string;
41
+ token: string;
42
+ }; /** Snapshot of the session before was updated. */
43
+ oldSession: SessionJWE<T, MaxAge>;
44
+ event: TEvent;
45
+ config: SessionConfigJWE<T, MaxAge, TEvent>;
46
+ }) => void | Promise<void>;
47
+ onClear?: (args: {
48
+ oldSession: SessionJWE<T, MaxAge> | undefined;
49
+ event: TEvent;
50
+ config: SessionConfigJWE<T, MaxAge, TEvent>;
51
+ }) => void | Promise<void>;
52
+ onExpire?: (args: {
53
+ session: {
54
+ id: string | undefined;
55
+ createdAt: number | undefined;
56
+ expiresAt: number | undefined;
57
+ token: string;
58
+ };
59
+ event: TEvent;
60
+ error: Error;
61
+ config: SessionConfigJWE<T, MaxAge, TEvent>;
62
+ }) => void | Promise<void>;
63
+ onError?: (args: {
64
+ /**
65
+ * The session involved in the error.
66
+ */
67
+ session: SessionJWE<T, MaxAge>;
68
+ event: TEvent;
69
+ error: any;
70
+ config: SessionConfigJWE<T, MaxAge, TEvent>;
71
+ }) => void | Promise<void>;
72
+ onUnsealKeyLookup?: (args: {
73
+ header: JWEHeaderParameters;
74
+ event: TEvent;
75
+ config: SessionConfigJWE<T, MaxAge, TEvent>;
76
+ }) => JWK_Symmetric | JWK_Private | Promise<JWK_Symmetric | JWK_Private>;
77
+ }
78
+ interface SessionConfigJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent | H3Event = HTTPEvent | H3Event> {
79
+ /** Shared secret used, string for PBES2 or Json Web Key (JWK) */
80
+ key: string | JWK_Symmetric | {
81
+ privateKey: JWK_Private | JWK_Symmetric;
82
+ publicKey?: JWK_Public;
83
+ };
84
+ /** Session lifetime in seconds (used to derive exp from iat) */
85
+ maxAge?: MaxAge;
86
+ /** Default is "h3" */
87
+ name?: string;
88
+ /** Default is secure, httpOnly, path="/" */
89
+ cookie?: false | (CookieSerializeOptions & {
90
+ chunkMaxLength?: number;
91
+ });
92
+ /** Default is x-h3-session / x-{name}-session */
93
+ sessionHeader?: false | string;
94
+ /** Default is crypto.randomUUID */
95
+ generateId?: () => string;
96
+ /** JWE configuration overrides */
97
+ jwe?: {
98
+ encryptOptions?: Omit<JWEEncryptOptions, "expiresIn">;
99
+ decryptOptions?: JWTClaimValidationOptions;
100
+ };
101
+ hooks?: SessionHooksJWE<T, MaxAge, TEvent>;
102
+ }
103
+ /**
104
+ * Create a session manager for the current request.
105
+ */
106
+ declare function useJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>): Promise<SessionManager<T, MaxAge>>;
107
+ /**
108
+ * Get the session for the current request.
109
+ */
110
+ declare function getJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>): Promise<SessionJWE<T, MaxAge>>;
111
+ declare function getJWESessionToken<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>): string | undefined;
112
+ /**
113
+ * Update the session data for the current request.
114
+ */
115
+ declare function updateJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>, update?: SessionUpdate<T>): Promise<SessionJWE<T, MaxAge>>;
116
+ /**
117
+ * Produce a JWE for the current session.
118
+ */
119
+ declare function sealJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>): Promise<string>;
120
+ /**
121
+ * Decrypt the JWE and return a Session-compatible object.
122
+ */
123
+ declare function unsealJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>, sealed: string): Promise<Partial<SessionJWE<T, MaxAge>>>;
124
+ /**
125
+ * Clear the session (delete from context and drop cookie).
126
+ */
127
+ declare function clearJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWE<T, MaxAge, TEvent>): Promise<void>;
128
+ //#endregion
129
+ //#region src/adapters/h3v2/session/jws.d.ts
130
+ declare const kGetSessionPromise: unique symbol;
131
+ interface SessionJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
132
+ id: string | undefined;
133
+ createdAt: number;
134
+ expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
135
+ data: SessionData<T>;
136
+ token: string | undefined;
137
+ [kGetSessionPromise]?: Promise<SessionJWS<T, MaxAge>>;
138
+ }
139
+ interface SessionHooksJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent> {
140
+ onRead?: (args: {
141
+ session: SessionJWS<T, MaxAge> & {
142
+ id: string;
143
+ token: string;
144
+ };
145
+ event: TEvent;
146
+ config: SessionConfigJWS<T, MaxAge, TEvent>;
147
+ }) => void | Promise<void>;
148
+ onUpdate?: (args: {
149
+ /** Session after it has been updated.. */session: SessionJWS<T, MaxAge> & {
150
+ id: string;
151
+ token: string;
152
+ }; /** Snapshot of the session before was updated. */
153
+ oldSession: SessionJWS<T, MaxAge>;
154
+ event: TEvent;
155
+ config: SessionConfigJWS<T, MaxAge, TEvent>;
156
+ }) => void | Promise<void>;
157
+ onClear?: (args: {
158
+ oldSession: SessionJWS<T, MaxAge> | undefined;
159
+ event: TEvent;
160
+ config: SessionConfigJWS<T, MaxAge, TEvent>;
161
+ }) => void | Promise<void>;
162
+ onExpire?: (args: {
163
+ session: {
164
+ id: string | undefined;
165
+ createdAt: number | undefined;
166
+ expiresAt: number | undefined;
167
+ token: string;
168
+ };
169
+ event: TEvent;
170
+ error: Error;
171
+ config: SessionConfigJWS<T, MaxAge, TEvent>;
172
+ }) => void | Promise<void>;
173
+ onError?: (args: {
174
+ /**
175
+ * The session involved in the error.
176
+ */
177
+ session: SessionJWS<T, MaxAge>;
178
+ event: TEvent;
179
+ error: any;
180
+ config: SessionConfigJWS<T, MaxAge, TEvent>;
181
+ }) => void | Promise<void>;
182
+ onVerifyKeyLookup?: (args: {
183
+ header: JWKLookupFunctionHeader;
184
+ event: TEvent;
185
+ config: SessionConfigJWS<T, MaxAge, TEvent>;
186
+ }) => JWKSet | JWK_Symmetric | JWK_Public | Promise<JWKSet | JWK_Symmetric | JWK_Public>;
187
+ }
188
+ interface SessionConfigJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent> {
189
+ key: JWK_Symmetric | {
190
+ privateKey: JWK_Private;
191
+ publicKey: JWK_Public | JWK_Public[] | JWKSet;
192
+ };
193
+ maxAge?: MaxAge;
194
+ name?: string;
195
+ cookie?: false | (CookieSerializeOptions & {
196
+ chunkMaxLength?: number;
197
+ });
198
+ sessionHeader?: false | string;
199
+ generateId?: () => string;
200
+ jws?: {
201
+ signOptions?: Omit<JWSSignOptions, "expiresIn">;
202
+ verifyOptions?: JWTClaimValidationOptions;
203
+ };
204
+ hooks?: SessionHooksJWS<T, MaxAge, TEvent>;
205
+ }
206
+ declare function useJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWS<T, MaxAge, TEvent>): Promise<SessionManager<T, MaxAge>>;
207
+ declare function getJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWS<T, MaxAge, TEvent>): Promise<SessionJWS<T, MaxAge>>;
208
+ declare function updateJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWS<T, MaxAge, TEvent>, update?: SessionUpdate<T>): Promise<SessionJWS<T, MaxAge>>;
209
+ declare function signJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWS<T, MaxAge, TEvent>): Promise<string>;
210
+ declare function verifyJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWS<T, MaxAge, TEvent>, token: string): Promise<Partial<SessionJWS<T, MaxAge>>>;
211
+ declare function clearJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined, TEvent extends HTTPEvent = HTTPEvent>(event: TEvent, config: SessionConfigJWS<T, MaxAge, TEvent>): Promise<void>;
212
+ //#endregion
213
+ export { CompositeKey, ContentEncryptionAlgorithm, DeriveKeyOptions, DeriveKeyReturn, ExpiresIn, GenerateJWKOptions, GenerateJWKReturn, GenerateKeyAlgorithm, GenerateKeyOptions, GenerateKeyReturn, JOSEPayload, JWEDecryptOptions, JWEDecryptResult, JWEEncryptOptions, JWEHeaderParameters, JWEKeyManagementHeaderParameters, JWEProtectedHeader, JWK, JWKAlgorithm, JWKCacheAdapter, JWKLookupFunction, JWKLookupFunctionHeader, JWKPEMAlgorithm, JWKParameters, JWKSet, JWK_AES_CBC_HMAC, JWK_AES_GCM, JWK_AES_GCM_KW, JWK_AES_KW, JWK_Asymmetric, JWK_Asymmetric_Algorithm, JWK_EC, JWK_ECDH_ES, JWK_ECDSA, JWK_EC_Private, JWK_EC_Public, JWK_HMAC, JWK_OKP, JWK_OKP_Private, JWK_OKP_Public, JWK_OKP_SIGN, JWK_PBES2, JWK_Pair, JWK_Private, JWK_Public, JWK_RSA, JWK_RSA_ENC, JWK_RSA_PSS, JWK_RSA_Private, JWK_RSA_Public, JWK_RSA_SIGN, JWK_Symmetric, JWK_Symmetric_Algorithm, JWK_oct, JWSAlgorithm, JWSHeaderParameters, JWSProtectedHeader, JWSSignOptions, JWSVerifyOptions, JWSVerifyResult, JWT, JWTClaimValidationOptions, JWTClaims, JoseHeaderParameters, KeyManagementAlgorithm, MaxTokenAge, type SessionClaims, type SessionConfigJWE, type SessionConfigJWS, type SessionData, type SessionHooksJWE, type SessionHooksJWS, type SessionJWE, type SessionJWS, type SessionManager, type SessionUpdate, UnwrapKeyOptions, WrapKeyOptions, WrapKeyResult, clearJWESession, clearJWSSession, deriveJWKFromPassword, exportToPEM, generateJWK, getJWESession, getJWESessionToken, getJWSSession, importFromPEM, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };