unjwt 0.5.30 → 0.5.31
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.
- package/LICENSE +21 -21
- package/dist/adapters/h3.d.mts +29 -26
- package/dist/adapters/h3.mjs +52 -0
- package/dist/adapters/h3v1.d.mts +3 -2
- package/dist/adapters/h3v2.d.mts +30 -27
- package/dist/adapters/h3v2.mjs +22 -0
- package/dist/index.d.mts +4 -3
- package/dist/jwe.d.mts +3 -2
- package/dist/shared/{unjwt.VUfJDcCJ.d.mts → unjwt.B9nv94SS.d.mts} +1 -1
- package/dist/shared/{unjwt.9mL1vSFP.d.mts → unjwt.BU3IrsCv.d.mts} +2 -1
- package/dist/shared/{unjwt.BrNGm4On.d.mts → unjwt.CkkdXjZD.d.mts} +3 -0
- package/dist/shared/unjwt.JdKqVANs.d.mts +5 -0
- package/dist/utils.d.mts +2 -1
- package/package.json +2 -2
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Sandro Circi
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Sandro Circi
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/adapters/h3.d.mts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { b as JWEEncryptOptions } from '../shared/unjwt.
|
|
2
|
-
export { d as JWEDecryptOptions, e as JWEDecryptResult, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from '../shared/unjwt.
|
|
1
|
+
import { b as JWEEncryptOptions } from '../shared/unjwt.BU3IrsCv.mjs';
|
|
2
|
+
export { d as JWEDecryptOptions, e as JWEDecryptResult, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from '../shared/unjwt.BU3IrsCv.mjs';
|
|
3
3
|
import { X as JWTClaims, E as ExpiresIn, r as JWK_Symmetric, u as JWK_Private, t as JWK_Public, Z as JWTClaimValidationOptions, w as JWKSet } from '../shared/unjwt.CtHrClHc.mjs';
|
|
4
4
|
export { C as CompositeKey, f as ContentEncryptionAlgorithm, D as DeriveKeyOptions, e as DeriveKeyReturn, c as GenerateJWKOptions, d as GenerateJWKReturn, G as GenerateKeyAlgorithm, a as GenerateKeyOptions, b as GenerateKeyReturn, v as JWK, S as JWKAlgorithm, T as JWKPEMAlgorithm, J as JWKParameters, I as JWK_AES_CBC_HMAC, L as JWK_AES_GCM, H as JWK_AES_GCM_KW, F as JWK_AES_KW, s as JWK_Asymmetric, R as JWK_Asymmetric_Algorithm, j as JWK_EC, O as JWK_ECDH_ES, A as JWK_ECDSA, i as JWK_EC_Private, h as JWK_EC_Public, x as JWK_HMAC, p as JWK_OKP, o as JWK_OKP_Private, n as JWK_OKP_Public, P as JWK_OKP_SIGN, N as JWK_PBES2, m as JWK_RSA, B as JWK_RSA_ENC, z as JWK_RSA_PSS, l as JWK_RSA_Private, k as JWK_RSA_Public, y as JWK_RSA_SIGN, Q as JWK_Symmetric_Algorithm, q as JWK_oct, Y as JWT, V as JoseHeaderParameters, K as KeyManagementAlgorithm, U as UnwrapKeyOptions, W as WrapKeyOptions, g as WrapKeyResult } from '../shared/unjwt.CtHrClHc.mjs';
|
|
5
|
+
import { S as StrictOmit } from '../shared/unjwt.JdKqVANs.mjs';
|
|
5
6
|
import { CookieSerializeOptions } from 'cookie-es';
|
|
6
7
|
import { H3Event } from 'h3';
|
|
7
8
|
import { c as JWSSignOptions } from '../shared/unjwt.BsLgL0DQ.mjs';
|
|
8
9
|
export { d as deriveJWKFromPassword, e as exportJWKToPEM, g as generateJWK, i as importJWKFromPEM } from '../shared/unjwt.BjP_dGnX.mjs';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
interface SessionClaims extends Required<Pick<JWTClaims, "jti" | "iat">>, Pick<JWTClaims, "exp"> {
|
|
12
|
+
}
|
|
13
|
+
type SessionData<T extends Record<string, any> = SessionClaims> = StrictOmit<T, "jti" | "iat" | "exp">;
|
|
14
|
+
type SessionUpdate<T extends Record<string, any> = SessionClaims> = Partial<SessionData<T>> | ((oldData: SessionData<T>) => Partial<SessionData<T>> | undefined);
|
|
15
|
+
interface SessionManager<T extends Record<string, any> = SessionClaims, ConfigMaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
13
16
|
readonly id: string | undefined;
|
|
14
17
|
readonly createdAt: number;
|
|
15
|
-
readonly expiresAt: ConfigMaxAge extends ExpiresIn ? number : T["exp"];
|
|
18
|
+
readonly expiresAt: ConfigMaxAge extends ExpiresIn ? number : "exp" extends keyof T ? T["exp"] : number | undefined;
|
|
16
19
|
readonly data: SessionData<T>;
|
|
17
20
|
readonly token: string | undefined;
|
|
18
21
|
update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
|
|
@@ -26,14 +29,14 @@ interface SessionManager<T extends JWTClaims = JWTClaims, ConfigMaxAge extends E
|
|
|
26
29
|
*/
|
|
27
30
|
|
|
28
31
|
declare const kGetSessionPromise$1: unique symbol;
|
|
29
|
-
interface SessionJWE<T extends
|
|
32
|
+
interface SessionJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
30
33
|
id: string;
|
|
31
34
|
createdAt: number;
|
|
32
35
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
33
36
|
data: SessionData<T>;
|
|
34
37
|
[kGetSessionPromise$1]?: Promise<SessionJWE<T, MaxAge>>;
|
|
35
38
|
}
|
|
36
|
-
interface SessionHooksJWE<T extends
|
|
39
|
+
interface SessionHooksJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
37
40
|
onRead?: (args: {
|
|
38
41
|
session: SessionJWE<T, MaxAge>;
|
|
39
42
|
event: H3Event;
|
|
@@ -59,7 +62,7 @@ interface SessionHooksJWE<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
59
62
|
config: SessionConfigJWE<T, MaxAge>;
|
|
60
63
|
}) => void | Promise<void>;
|
|
61
64
|
}
|
|
62
|
-
interface SessionConfigJWE<T extends
|
|
65
|
+
interface SessionConfigJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
63
66
|
/** @deprecated use `key` instead */
|
|
64
67
|
secret?: string | JWK_Symmetric | {
|
|
65
68
|
privateKey: JWK_Private | JWK_Symmetric;
|
|
@@ -103,16 +106,16 @@ type CompatEvent$1 = {
|
|
|
103
106
|
/**
|
|
104
107
|
* Create a session manager for the current request.
|
|
105
108
|
*/
|
|
106
|
-
declare function useJWESession<T extends
|
|
109
|
+
declare function useJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent$1, config: SessionConfigJWE<T, MaxAge>): Promise<SessionManager<T, MaxAge>>;
|
|
107
110
|
/**
|
|
108
111
|
* Get (and lazily initialize) the session for the current request.
|
|
109
112
|
*/
|
|
110
|
-
declare function getJWESession<T extends
|
|
111
|
-
declare function getJWESessionToken<T extends
|
|
113
|
+
declare function getJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent$1, config: SessionConfigJWE<T, MaxAge>): Promise<SessionJWE<T, MaxAge>>;
|
|
114
|
+
declare function getJWESessionToken<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent$1, config: SessionConfigJWE<T, MaxAge>): string | undefined;
|
|
112
115
|
/**
|
|
113
116
|
* Update the session (optionally mutating the session data) and re-issue the JWE token.
|
|
114
117
|
*/
|
|
115
|
-
declare function updateJWESession<T extends
|
|
118
|
+
declare function updateJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event, config: SessionConfigJWE<T, MaxAge>, update?: SessionUpdate<T>): Promise<SessionJWE<T, MaxAge>>;
|
|
116
119
|
/**
|
|
117
120
|
* Produce a JWE for the current session.
|
|
118
121
|
* Payload structure:
|
|
@@ -123,15 +126,15 @@ declare function updateJWESession<T extends JWTClaims = JWTClaims, MaxAge extend
|
|
|
123
126
|
* data: Record<string, any>;
|
|
124
127
|
* }
|
|
125
128
|
*/
|
|
126
|
-
declare function sealJWESession<T extends
|
|
129
|
+
declare function sealJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent$1, config: SessionConfigJWE<T, MaxAge>): Promise<string>;
|
|
127
130
|
/**
|
|
128
131
|
* Decrypt the JWE and return a Session-compatible object.
|
|
129
132
|
*/
|
|
130
|
-
declare function unsealJWESession<T extends
|
|
133
|
+
declare function unsealJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(_event: H3Event | CompatEvent$1, config: SessionConfigJWE<T, MaxAge>, sealed: string): Promise<Partial<SessionJWE<T, MaxAge>>>;
|
|
131
134
|
/**
|
|
132
135
|
* Clear the session (delete from context and drop cookie).
|
|
133
136
|
*/
|
|
134
|
-
declare function clearJWESession<T extends
|
|
137
|
+
declare function clearJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event, config: Partial<SessionConfigJWE<T, MaxAge>>): Promise<void>;
|
|
135
138
|
|
|
136
139
|
/**
|
|
137
140
|
* This is a fork of h3 library's session utility functions.
|
|
@@ -140,14 +143,14 @@ declare function clearJWESession<T extends JWTClaims = JWTClaims, MaxAge extends
|
|
|
140
143
|
*/
|
|
141
144
|
|
|
142
145
|
declare const kGetSessionPromise: unique symbol;
|
|
143
|
-
interface SessionJWS<T extends
|
|
146
|
+
interface SessionJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
144
147
|
id: string;
|
|
145
148
|
createdAt: number;
|
|
146
149
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
147
150
|
data: SessionData<T>;
|
|
148
151
|
[kGetSessionPromise]?: Promise<SessionJWS<T, MaxAge>>;
|
|
149
152
|
}
|
|
150
|
-
interface SessionHooksJWS<T extends
|
|
153
|
+
interface SessionHooksJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
151
154
|
onRead?: (args: {
|
|
152
155
|
session: SessionJWS<T, MaxAge>;
|
|
153
156
|
event: H3Event;
|
|
@@ -173,7 +176,7 @@ interface SessionHooksJWS<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
173
176
|
config: SessionConfigJWS<T, MaxAge>;
|
|
174
177
|
}) => void | Promise<void>;
|
|
175
178
|
}
|
|
176
|
-
interface SessionConfigJWS<T extends
|
|
179
|
+
interface SessionConfigJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
177
180
|
/**
|
|
178
181
|
* JWK (private for signing with RS/ES/PS, or symmetric oct) used for signing.
|
|
179
182
|
*/
|
|
@@ -215,21 +218,21 @@ type CompatEvent = {
|
|
|
215
218
|
* Create a session manager for the current request using JWS (signed only, not encrypted).
|
|
216
219
|
* NOTE: Contents are visible to clients (Base64URL-decoded JSON). Do not store secrets in session data.
|
|
217
220
|
*/
|
|
218
|
-
declare function useJWSSession<T extends
|
|
221
|
+
declare function useJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent, config: SessionConfigJWS<T, MaxAge>): Promise<SessionManager<T, MaxAge>>;
|
|
219
222
|
/**
|
|
220
223
|
* Retrieve (and lazily initialize) the session.
|
|
221
224
|
*/
|
|
222
|
-
declare function getJWSSession<T extends
|
|
225
|
+
declare function getJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent, config: SessionConfigJWS<T, MaxAge>): Promise<SessionJWS<T, MaxAge>>;
|
|
223
226
|
/**
|
|
224
227
|
* Update session data (if provided) and reissue JWS.
|
|
225
228
|
*/
|
|
226
|
-
declare function updateJWSSession<T extends
|
|
229
|
+
declare function updateJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event, config: SessionConfigJWS<T, MaxAge>, update?: SessionUpdate<T>): Promise<SessionJWS<T, MaxAge>>;
|
|
227
230
|
/**
|
|
228
231
|
* Sign current session as a compact JWS.
|
|
229
232
|
* Payload claims:
|
|
230
233
|
* jti, iat, exp?, data, plus optional extraClaims (cannot override reserved)
|
|
231
234
|
*/
|
|
232
|
-
declare function signJWSSession<T extends
|
|
235
|
+
declare function signJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event | CompatEvent, config: SessionConfigJWS<T, MaxAge>): Promise<string>;
|
|
233
236
|
/**
|
|
234
237
|
* Verify and parse a compact JWS into a Session structure.
|
|
235
238
|
* Performs:
|
|
@@ -238,11 +241,11 @@ declare function signJWSSession<T extends JWTClaims = JWTClaims, MaxAge extends
|
|
|
238
241
|
* - ensures jti & iat presence
|
|
239
242
|
* - enforces maxAge if provided
|
|
240
243
|
*/
|
|
241
|
-
declare function verifyJWSSession<T extends
|
|
244
|
+
declare function verifyJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(_event: H3Event | CompatEvent, config: SessionConfigJWS<T, MaxAge>, token: string): Promise<Partial<SessionJWS<T, MaxAge>>>;
|
|
242
245
|
/**
|
|
243
246
|
* Destroy the session (context + cookie).
|
|
244
247
|
*/
|
|
245
|
-
declare function clearJWSSession<T extends
|
|
248
|
+
declare function clearJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: H3Event, config: Partial<SessionConfigJWS<T, MaxAge>>): Promise<void>;
|
|
246
249
|
|
|
247
250
|
export { JWEEncryptOptions, JWKSet, JWK_Private, JWK_Public, JWK_Symmetric, JWTClaimValidationOptions, JWTClaims, clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
|
248
|
-
export type { SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWEConfig, SessionJWS, SessionJWSConfig, SessionManager, SessionUpdate };
|
|
251
|
+
export type { SessionClaims, SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWEConfig, SessionJWS, SessionJWSConfig, SessionManager, SessionUpdate };
|
package/dist/adapters/h3.mjs
CHANGED
|
@@ -148,6 +148,19 @@ function getJWESessionToken(event, config) {
|
|
|
148
148
|
token = parse(String(cookieHeader))[sessionName];
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
+
if (!token) {
|
|
152
|
+
const setCookie2 = _getResHeader$1(event, "set-cookie");
|
|
153
|
+
if (typeof setCookie2 === "string") {
|
|
154
|
+
token = findSetCookie$1(setCookie2, sessionName);
|
|
155
|
+
} else if (Array.isArray(setCookie2)) {
|
|
156
|
+
for (const sc of setCookie2) {
|
|
157
|
+
token = findSetCookie$1(sc, sessionName);
|
|
158
|
+
if (token) {
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
151
164
|
return token;
|
|
152
165
|
}
|
|
153
166
|
function _getReqHeader$1(event, name) {
|
|
@@ -161,6 +174,14 @@ function _getReqHeader$1(event, name) {
|
|
|
161
174
|
return event.headers.get(name);
|
|
162
175
|
}
|
|
163
176
|
}
|
|
177
|
+
function _getResHeader$1(event, name) {
|
|
178
|
+
if (event.node) {
|
|
179
|
+
return event.node?.res.getHeader(name);
|
|
180
|
+
}
|
|
181
|
+
if (event.response) {
|
|
182
|
+
return event.response.headers?.get(name);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
164
185
|
async function updateJWESession(event, config, update) {
|
|
165
186
|
const sessionName = config.name || DEFAULT_NAME$1;
|
|
166
187
|
const session = event.context.sessions?.[sessionName] || await getJWESession(event, config);
|
|
@@ -316,6 +337,11 @@ function getDecryptKey(key) {
|
|
|
316
337
|
}
|
|
317
338
|
return _key;
|
|
318
339
|
}
|
|
340
|
+
function findSetCookie$1(setCookie2, name) {
|
|
341
|
+
const regex = new RegExp(`(?:^|,\\s*)${name}=([^;]+)`);
|
|
342
|
+
const match = setCookie2.match(regex);
|
|
343
|
+
return match ? match[1] : void 0;
|
|
344
|
+
}
|
|
319
345
|
|
|
320
346
|
/**
|
|
321
347
|
* This is a fork of h3 library's session utility functions.
|
|
@@ -460,6 +486,19 @@ function getJWSSessionToken(event, config) {
|
|
|
460
486
|
token = parse(String(cookieHeader))[sessionName];
|
|
461
487
|
}
|
|
462
488
|
}
|
|
489
|
+
if (!token) {
|
|
490
|
+
const setCookie2 = _getResHeader(event, "set-cookie");
|
|
491
|
+
if (typeof setCookie2 === "string") {
|
|
492
|
+
token = findSetCookie(setCookie2, sessionName);
|
|
493
|
+
} else if (Array.isArray(setCookie2)) {
|
|
494
|
+
for (const sc of setCookie2) {
|
|
495
|
+
token = findSetCookie(sc, sessionName);
|
|
496
|
+
if (token) {
|
|
497
|
+
break;
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
463
502
|
return token;
|
|
464
503
|
}
|
|
465
504
|
function _getReqHeader(event, name) {
|
|
@@ -473,6 +512,14 @@ function _getReqHeader(event, name) {
|
|
|
473
512
|
return event.headers.get(name);
|
|
474
513
|
}
|
|
475
514
|
}
|
|
515
|
+
function _getResHeader(event, name) {
|
|
516
|
+
if (event.node) {
|
|
517
|
+
return event.node?.res.getHeader(name);
|
|
518
|
+
}
|
|
519
|
+
if (event.response) {
|
|
520
|
+
return event.response.headers?.get(name);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
476
523
|
async function updateJWSSession(event, config, update) {
|
|
477
524
|
const sessionName = config.name || DEFAULT_NAME;
|
|
478
525
|
const session = event.context.sessions?.[sessionName] || await getJWSSession(event, config);
|
|
@@ -620,5 +667,10 @@ function getVerifyKey(key) {
|
|
|
620
667
|
}
|
|
621
668
|
return _key;
|
|
622
669
|
}
|
|
670
|
+
function findSetCookie(setCookie2, name) {
|
|
671
|
+
const regex = new RegExp(`(?:^|,\\s*)${name}=([^;]+)`);
|
|
672
|
+
const match = setCookie2.match(regex);
|
|
673
|
+
return match ? match[1] : void 0;
|
|
674
|
+
}
|
|
623
675
|
|
|
624
676
|
export { clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
package/dist/adapters/h3v1.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
export { d as JWEDecryptOptions, e as JWEDecryptResult, b as JWEEncryptOptions, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from '../shared/unjwt.
|
|
1
|
+
export { d as JWEDecryptOptions, e as JWEDecryptResult, b as JWEEncryptOptions, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from '../shared/unjwt.BU3IrsCv.mjs';
|
|
2
2
|
export { C as CompositeKey, f as ContentEncryptionAlgorithm, D as DeriveKeyOptions, e as DeriveKeyReturn, c as GenerateJWKOptions, d as GenerateJWKReturn, G as GenerateKeyAlgorithm, a as GenerateKeyOptions, b as GenerateKeyReturn, v as JWK, S as JWKAlgorithm, T as JWKPEMAlgorithm, J as JWKParameters, w as JWKSet, I as JWK_AES_CBC_HMAC, L as JWK_AES_GCM, H as JWK_AES_GCM_KW, F as JWK_AES_KW, s as JWK_Asymmetric, R as JWK_Asymmetric_Algorithm, j as JWK_EC, O as JWK_ECDH_ES, A as JWK_ECDSA, i as JWK_EC_Private, h as JWK_EC_Public, x as JWK_HMAC, p as JWK_OKP, o as JWK_OKP_Private, n as JWK_OKP_Public, P as JWK_OKP_SIGN, N as JWK_PBES2, u as JWK_Private, t as JWK_Public, m as JWK_RSA, B as JWK_RSA_ENC, z as JWK_RSA_PSS, l as JWK_RSA_Private, k as JWK_RSA_Public, y as JWK_RSA_SIGN, r as JWK_Symmetric, Q as JWK_Symmetric_Algorithm, q as JWK_oct, Y as JWT, Z as JWTClaimValidationOptions, X as JWTClaims, V as JoseHeaderParameters, K as KeyManagementAlgorithm, U as UnwrapKeyOptions, W as WrapKeyOptions, g as WrapKeyResult } from '../shared/unjwt.CtHrClHc.mjs';
|
|
3
|
-
export { SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWEConfig, SessionJWS, SessionJWSConfig, SessionManager, SessionUpdate, clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession } from './h3.mjs';
|
|
3
|
+
export { SessionClaims, SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWEConfig, SessionJWS, SessionJWSConfig, SessionManager, SessionUpdate, clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession } from './h3.mjs';
|
|
4
4
|
export { d as deriveJWKFromPassword, e as exportJWKToPEM, g as generateJWK, i as importJWKFromPEM } from '../shared/unjwt.BjP_dGnX.mjs';
|
|
5
|
+
import '../shared/unjwt.JdKqVANs.mjs';
|
|
5
6
|
import 'cookie-es';
|
|
6
7
|
import 'h3';
|
|
7
8
|
import '../shared/unjwt.BsLgL0DQ.mjs';
|
package/dist/adapters/h3v2.d.mts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { b as JWEEncryptOptions } from '../shared/unjwt.
|
|
2
|
-
export { d as JWEDecryptOptions, e as JWEDecryptResult, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from '../shared/unjwt.
|
|
1
|
+
import { b as JWEEncryptOptions } from '../shared/unjwt.BU3IrsCv.mjs';
|
|
2
|
+
export { d as JWEDecryptOptions, e as JWEDecryptResult, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from '../shared/unjwt.BU3IrsCv.mjs';
|
|
3
3
|
import { X as JWTClaims, E as ExpiresIn, r as JWK_Symmetric, u as JWK_Private, t as JWK_Public, Z as JWTClaimValidationOptions, w as JWKSet } from '../shared/unjwt.CtHrClHc.mjs';
|
|
4
4
|
export { C as CompositeKey, f as ContentEncryptionAlgorithm, D as DeriveKeyOptions, e as DeriveKeyReturn, c as GenerateJWKOptions, d as GenerateJWKReturn, G as GenerateKeyAlgorithm, a as GenerateKeyOptions, b as GenerateKeyReturn, v as JWK, S as JWKAlgorithm, T as JWKPEMAlgorithm, J as JWKParameters, I as JWK_AES_CBC_HMAC, L as JWK_AES_GCM, H as JWK_AES_GCM_KW, F as JWK_AES_KW, s as JWK_Asymmetric, R as JWK_Asymmetric_Algorithm, j as JWK_EC, O as JWK_ECDH_ES, A as JWK_ECDSA, i as JWK_EC_Private, h as JWK_EC_Public, x as JWK_HMAC, p as JWK_OKP, o as JWK_OKP_Private, n as JWK_OKP_Public, P as JWK_OKP_SIGN, N as JWK_PBES2, m as JWK_RSA, B as JWK_RSA_ENC, z as JWK_RSA_PSS, l as JWK_RSA_Private, k as JWK_RSA_Public, y as JWK_RSA_SIGN, Q as JWK_Symmetric_Algorithm, q as JWK_oct, Y as JWT, V as JoseHeaderParameters, K as KeyManagementAlgorithm, U as UnwrapKeyOptions, W as WrapKeyOptions, g as WrapKeyResult } from '../shared/unjwt.CtHrClHc.mjs';
|
|
5
|
+
import { S as StrictOmit } from '../shared/unjwt.JdKqVANs.mjs';
|
|
5
6
|
import { HTTPEvent } from 'h3';
|
|
6
7
|
import { CookieSerializeOptions } from 'cookie-es';
|
|
7
8
|
import { c as JWSSignOptions } from '../shared/unjwt.BsLgL0DQ.mjs';
|
|
8
9
|
export { d as deriveJWKFromPassword, e as exportJWKToPEM, g as generateJWK, i as importJWKFromPEM } from '../shared/unjwt.BjP_dGnX.mjs';
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
interface SessionClaims extends Required<Pick<JWTClaims, "jti" | "iat">>, Pick<JWTClaims, "exp"> {
|
|
12
|
+
}
|
|
13
|
+
type SessionData<T extends Record<string, any> = SessionClaims> = StrictOmit<T, "jti" | "iat" | "exp">;
|
|
14
|
+
type SessionUpdate<T extends Record<string, any> = SessionClaims> = Partial<SessionData<T>> | ((oldData: SessionData<T>) => Partial<SessionData<T>> | undefined);
|
|
15
|
+
interface SessionManager<T extends Record<string, any> = SessionClaims, ConfigMaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
13
16
|
readonly id: string | undefined;
|
|
14
17
|
readonly createdAt: number;
|
|
15
|
-
readonly expiresAt: ConfigMaxAge extends ExpiresIn ? number : T["exp"];
|
|
18
|
+
readonly expiresAt: ConfigMaxAge extends ExpiresIn ? number : "exp" extends keyof T ? T["exp"] : number | undefined;
|
|
16
19
|
readonly data: SessionData<T>;
|
|
17
20
|
readonly token: string | undefined;
|
|
18
21
|
update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
|
|
@@ -20,14 +23,14 @@ interface SessionManager<T extends JWTClaims = JWTClaims, ConfigMaxAge extends E
|
|
|
20
23
|
}
|
|
21
24
|
|
|
22
25
|
declare const kGetSessionPromise$1: unique symbol;
|
|
23
|
-
interface SessionJWE<T extends
|
|
26
|
+
interface SessionJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
24
27
|
id: string;
|
|
25
28
|
createdAt: number;
|
|
26
29
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
27
30
|
data: SessionData<T>;
|
|
28
31
|
[kGetSessionPromise$1]?: Promise<SessionJWE<T, MaxAge>>;
|
|
29
32
|
}
|
|
30
|
-
interface SessionHooksJWE<T extends
|
|
33
|
+
interface SessionHooksJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
31
34
|
onRead?: (args: {
|
|
32
35
|
session: SessionJWE<T, MaxAge>;
|
|
33
36
|
event: HTTPEvent;
|
|
@@ -53,7 +56,7 @@ interface SessionHooksJWE<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
53
56
|
config: SessionConfigJWE<T, MaxAge>;
|
|
54
57
|
}) => void | Promise<void>;
|
|
55
58
|
}
|
|
56
|
-
interface SessionConfigJWE<T extends
|
|
59
|
+
interface SessionConfigJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
57
60
|
/** Shared secret used, string for PBES2 or Json Web Key (JWK) */
|
|
58
61
|
key: string | JWK_Symmetric | {
|
|
59
62
|
privateKey: JWK_Private | JWK_Symmetric;
|
|
@@ -81,38 +84,38 @@ interface SessionConfigJWE<T extends JWTClaims = JWTClaims, MaxAge extends Expir
|
|
|
81
84
|
/**
|
|
82
85
|
* Create a session manager for the current request.
|
|
83
86
|
*/
|
|
84
|
-
declare function useJWESession<T extends
|
|
87
|
+
declare function useJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWE<T, MaxAge>): Promise<SessionManager<T, MaxAge>>;
|
|
85
88
|
/**
|
|
86
89
|
* Get the session for the current request.
|
|
87
90
|
*/
|
|
88
|
-
declare function getJWESession<T extends
|
|
89
|
-
declare function getJWESessionToken<T extends
|
|
91
|
+
declare function getJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWE<T, MaxAge>): Promise<SessionJWE<T, MaxAge>>;
|
|
92
|
+
declare function getJWESessionToken<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWE<T, MaxAge>): string | undefined;
|
|
90
93
|
/**
|
|
91
94
|
* Update the session data for the current request.
|
|
92
95
|
*/
|
|
93
|
-
declare function updateJWESession<T extends
|
|
96
|
+
declare function updateJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWE<T, MaxAge>, update?: SessionUpdate<T>): Promise<SessionJWE<T, MaxAge>>;
|
|
94
97
|
/**
|
|
95
98
|
* Produce a JWE for the current session.
|
|
96
99
|
*/
|
|
97
|
-
declare function sealJWESession<T extends
|
|
100
|
+
declare function sealJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWE<T, MaxAge>): Promise<string>;
|
|
98
101
|
/**
|
|
99
102
|
* Decrypt the JWE and return a Session-compatible object.
|
|
100
103
|
*/
|
|
101
|
-
declare function unsealJWESession<T extends
|
|
104
|
+
declare function unsealJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(_event: HTTPEvent, config: SessionConfigJWE<T, MaxAge>, sealed: string): Promise<Partial<SessionJWE<T, MaxAge>>>;
|
|
102
105
|
/**
|
|
103
106
|
* Clear the session (delete from context and drop cookie).
|
|
104
107
|
*/
|
|
105
|
-
declare function clearJWESession<T extends
|
|
108
|
+
declare function clearJWESession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: Partial<SessionConfigJWE<T, MaxAge>>): Promise<void>;
|
|
106
109
|
|
|
107
110
|
declare const kGetSessionPromise: unique symbol;
|
|
108
|
-
interface SessionJWS<T extends
|
|
111
|
+
interface SessionJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
109
112
|
id: string;
|
|
110
113
|
createdAt: number;
|
|
111
114
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
112
115
|
data: SessionData<T>;
|
|
113
116
|
[kGetSessionPromise]?: Promise<SessionJWS<T, MaxAge>>;
|
|
114
117
|
}
|
|
115
|
-
interface SessionHooksJWS<T extends
|
|
118
|
+
interface SessionHooksJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
116
119
|
onRead?: (args: {
|
|
117
120
|
session: SessionJWS<T, MaxAge>;
|
|
118
121
|
event: HTTPEvent;
|
|
@@ -138,7 +141,7 @@ interface SessionHooksJWS<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
138
141
|
config: SessionConfigJWS<T, MaxAge>;
|
|
139
142
|
}) => void | Promise<void>;
|
|
140
143
|
}
|
|
141
|
-
interface SessionConfigJWS<T extends
|
|
144
|
+
interface SessionConfigJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
142
145
|
key: JWK_Symmetric | {
|
|
143
146
|
privateKey: JWK_Private;
|
|
144
147
|
publicKey: JWK_Public | JWK_Public[] | JWKSet;
|
|
@@ -156,13 +159,13 @@ interface SessionConfigJWS<T extends JWTClaims = JWTClaims, MaxAge extends Expir
|
|
|
156
159
|
};
|
|
157
160
|
hooks?: SessionHooksJWS<T, MaxAge>;
|
|
158
161
|
}
|
|
159
|
-
declare function useJWSSession<T extends
|
|
160
|
-
declare function getJWSSession<T extends
|
|
161
|
-
declare function getJWSSessionToken<T extends
|
|
162
|
-
declare function updateJWSSession<T extends
|
|
163
|
-
declare function signJWSSession<T extends
|
|
164
|
-
declare function verifyJWSSession<T extends
|
|
165
|
-
declare function clearJWSSession<T extends
|
|
162
|
+
declare function useJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWS<T, MaxAge>): Promise<SessionManager<T, MaxAge>>;
|
|
163
|
+
declare function getJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWS<T, MaxAge>): Promise<SessionJWS<T, MaxAge>>;
|
|
164
|
+
declare function getJWSSessionToken<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWS<T, MaxAge>): string | undefined;
|
|
165
|
+
declare function updateJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWS<T, MaxAge>, update?: SessionUpdate<T>): Promise<SessionJWS<T, MaxAge>>;
|
|
166
|
+
declare function signJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: SessionConfigJWS<T, MaxAge>): Promise<string>;
|
|
167
|
+
declare function verifyJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(_event: HTTPEvent, config: SessionConfigJWS<T, MaxAge>, token: string): Promise<Partial<SessionJWS<T, MaxAge>>>;
|
|
168
|
+
declare function clearJWSSession<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined>(event: HTTPEvent, config: Partial<SessionConfigJWS<T, MaxAge>>): Promise<void>;
|
|
166
169
|
|
|
167
170
|
export { JWEEncryptOptions, JWKSet, JWK_Private, JWK_Public, JWK_Symmetric, JWTClaimValidationOptions, JWTClaims, clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, getJWSSessionToken, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
|
168
|
-
export type { SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWS, SessionManager, SessionUpdate };
|
|
171
|
+
export type { SessionClaims, SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWS, SessionManager, SessionUpdate };
|
package/dist/adapters/h3v2.mjs
CHANGED
|
@@ -133,6 +133,12 @@ function getJWESessionToken(event, config) {
|
|
|
133
133
|
if (!token) {
|
|
134
134
|
token = getChunkedCookie(event, sessionName);
|
|
135
135
|
}
|
|
136
|
+
if (!token && hasWritableResponse$1(event)) {
|
|
137
|
+
const setCookie = event.res.headers.get("set-cookie");
|
|
138
|
+
if (typeof setCookie === "string") {
|
|
139
|
+
token = findSetCookie$1(setCookie, sessionName);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
136
142
|
return token;
|
|
137
143
|
}
|
|
138
144
|
async function updateJWESession(event, config, update) {
|
|
@@ -298,6 +304,11 @@ function getDecryptKey(key) {
|
|
|
298
304
|
}
|
|
299
305
|
return _key;
|
|
300
306
|
}
|
|
307
|
+
function findSetCookie$1(setCookie, name) {
|
|
308
|
+
const regex = new RegExp(`(?:^|,\\s*)${name}=([^;]+)`);
|
|
309
|
+
const match = setCookie.match(regex);
|
|
310
|
+
return match ? match[1] : void 0;
|
|
311
|
+
}
|
|
301
312
|
|
|
302
313
|
const kGetSessionPromise = Symbol("h3_jws_getSession");
|
|
303
314
|
const DEFAULT_NAME = "h3-jws";
|
|
@@ -424,6 +435,12 @@ function getJWSSessionToken(event, config) {
|
|
|
424
435
|
if (!token) {
|
|
425
436
|
token = getChunkedCookie(event, sessionName);
|
|
426
437
|
}
|
|
438
|
+
if (!token && hasWritableResponse(event)) {
|
|
439
|
+
const setCookie = event.res.headers.get("set-cookie");
|
|
440
|
+
if (typeof setCookie === "string") {
|
|
441
|
+
token = findSetCookie(setCookie, sessionName);
|
|
442
|
+
}
|
|
443
|
+
}
|
|
427
444
|
return token;
|
|
428
445
|
}
|
|
429
446
|
async function updateJWSSession(event, config, update) {
|
|
@@ -596,5 +613,10 @@ function getVerifyKey(key) {
|
|
|
596
613
|
}
|
|
597
614
|
return _key;
|
|
598
615
|
}
|
|
616
|
+
function findSetCookie(setCookie, name) {
|
|
617
|
+
const regex = new RegExp(`(?:^|,\\s*)${name}=([^;]+)`);
|
|
618
|
+
const match = setCookie.match(regex);
|
|
619
|
+
return match ? match[1] : void 0;
|
|
620
|
+
}
|
|
599
621
|
|
|
600
622
|
export { clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, getJWSSessionToken, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { C as CompositeKey, f as ContentEncryptionAlgorithm, D as DeriveKeyOptions, e as DeriveKeyReturn, E as ExpiresIn, c as GenerateJWKOptions, d as GenerateJWKReturn, G as GenerateKeyAlgorithm, a as GenerateKeyOptions, b as GenerateKeyReturn, v as JWK, S as JWKAlgorithm, T as JWKPEMAlgorithm, J as JWKParameters, w as JWKSet, I as JWK_AES_CBC_HMAC, L as JWK_AES_GCM, H as JWK_AES_GCM_KW, F as JWK_AES_KW, s as JWK_Asymmetric, R as JWK_Asymmetric_Algorithm, j as JWK_EC, O as JWK_ECDH_ES, A as JWK_ECDSA, i as JWK_EC_Private, h as JWK_EC_Public, x as JWK_HMAC, p as JWK_OKP, o as JWK_OKP_Private, n as JWK_OKP_Public, P as JWK_OKP_SIGN, N as JWK_PBES2, u as JWK_Private, t as JWK_Public, m as JWK_RSA, B as JWK_RSA_ENC, z as JWK_RSA_PSS, l as JWK_RSA_Private, k as JWK_RSA_Public, y as JWK_RSA_SIGN, r as JWK_Symmetric, Q as JWK_Symmetric_Algorithm, q as JWK_oct, Y as JWT, Z as JWTClaimValidationOptions, X as JWTClaims, V as JoseHeaderParameters, K as KeyManagementAlgorithm, M as MaxTokenAge, U as UnwrapKeyOptions, W as WrapKeyOptions, g as WrapKeyResult } from './shared/unjwt.CtHrClHc.mjs';
|
|
2
|
-
export { i as utils } from './shared/unjwt.
|
|
3
|
-
export { j as jwe } from './shared/unjwt.
|
|
2
|
+
export { i as utils } from './shared/unjwt.CkkdXjZD.mjs';
|
|
3
|
+
export { j as jwe } from './shared/unjwt.B9nv94SS.mjs';
|
|
4
4
|
export { j as jwk } from './shared/unjwt.BjP_dGnX.mjs';
|
|
5
5
|
export { j as jws } from './shared/unjwt.C5jNR_1K.mjs';
|
|
6
6
|
export { J as JWSAlgorithm, a as JWSHeaderParameters, f as JWSKeyLookupFunction, b as JWSProtectedHeader, c as JWSSignOptions, e as JWSVerifyOptions, d as JWSVerifyResult } from './shared/unjwt.BsLgL0DQ.mjs';
|
|
7
|
-
export { d as JWEDecryptOptions, e as JWEDecryptResult, b as JWEEncryptOptions, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from './shared/unjwt.
|
|
7
|
+
export { d as JWEDecryptOptions, e as JWEDecryptResult, b as JWEEncryptOptions, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from './shared/unjwt.BU3IrsCv.mjs';
|
|
8
|
+
import './shared/unjwt.JdKqVANs.mjs';
|
package/dist/jwe.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { C as CompositeKey, f as ContentEncryptionAlgorithm, D as DeriveKeyOptions, e as DeriveKeyReturn, c as GenerateJWKOptions, d as GenerateJWKReturn, G as GenerateKeyAlgorithm, a as GenerateKeyOptions, b as GenerateKeyReturn, v as JWK, S as JWKAlgorithm, T as JWKPEMAlgorithm, J as JWKParameters, w as JWKSet, I as JWK_AES_CBC_HMAC, L as JWK_AES_GCM, H as JWK_AES_GCM_KW, F as JWK_AES_KW, s as JWK_Asymmetric, R as JWK_Asymmetric_Algorithm, j as JWK_EC, O as JWK_ECDH_ES, A as JWK_ECDSA, i as JWK_EC_Private, h as JWK_EC_Public, x as JWK_HMAC, p as JWK_OKP, o as JWK_OKP_Private, n as JWK_OKP_Public, P as JWK_OKP_SIGN, N as JWK_PBES2, u as JWK_Private, t as JWK_Public, m as JWK_RSA, B as JWK_RSA_ENC, z as JWK_RSA_PSS, l as JWK_RSA_Private, k as JWK_RSA_Public, y as JWK_RSA_SIGN, r as JWK_Symmetric, Q as JWK_Symmetric_Algorithm, q as JWK_oct, Y as JWT, Z as JWTClaimValidationOptions, X as JWTClaims, V as JoseHeaderParameters, K as KeyManagementAlgorithm, U as UnwrapKeyOptions, W as WrapKeyOptions, g as WrapKeyResult } from './shared/unjwt.CtHrClHc.mjs';
|
|
2
|
-
export { d as JWEDecryptOptions, e as JWEDecryptResult, b as JWEEncryptOptions, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from './shared/unjwt.
|
|
3
|
-
export { d as decrypt, e as encrypt } from './shared/unjwt.
|
|
2
|
+
export { d as JWEDecryptOptions, e as JWEDecryptResult, b as JWEEncryptOptions, J as JWEHeaderParameters, c as JWEKeyLookupFunction, a as JWEKeyManagementHeaderParameters } from './shared/unjwt.BU3IrsCv.mjs';
|
|
3
|
+
export { d as decrypt, e as encrypt } from './shared/unjwt.B9nv94SS.mjs';
|
|
4
|
+
import './shared/unjwt.JdKqVANs.mjs';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { X as JWTClaims, v as JWK, K as KeyManagementAlgorithm, f as ContentEncryptionAlgorithm, r as JWK_Symmetric, u as JWK_Private, C as CompositeKey, D as DeriveKeyOptions, e as DeriveKeyReturn, c as GenerateJWKOptions, d as GenerateJWKReturn, G as GenerateKeyAlgorithm, a as GenerateKeyOptions, b as GenerateKeyReturn, S as JWKAlgorithm, T as JWKPEMAlgorithm, J as JWKParameters, w as JWKSet, I as JWK_AES_CBC_HMAC, L as JWK_AES_GCM, H as JWK_AES_GCM_KW, F as JWK_AES_KW, s as JWK_Asymmetric, R as JWK_Asymmetric_Algorithm, j as JWK_EC, O as JWK_ECDH_ES, A as JWK_ECDSA, i as JWK_EC_Private, h as JWK_EC_Public, x as JWK_HMAC, p as JWK_OKP, o as JWK_OKP_Private, n as JWK_OKP_Public, P as JWK_OKP_SIGN, N as JWK_PBES2, t as JWK_Public, m as JWK_RSA, B as JWK_RSA_ENC, z as JWK_RSA_PSS, l as JWK_RSA_Private, k as JWK_RSA_Public, y as JWK_RSA_SIGN, Q as JWK_Symmetric_Algorithm, q as JWK_oct, Y as JWT, Z as JWTClaimValidationOptions, V as JoseHeaderParameters, U as UnwrapKeyOptions, W as WrapKeyOptions, g as WrapKeyResult } from './unjwt.CtHrClHc.mjs';
|
|
2
|
-
import { b as JWEEncryptOptions, c as JWEKeyLookupFunction, d as JWEDecryptOptions, e as JWEDecryptResult, J as JWEHeaderParameters, a as JWEKeyManagementHeaderParameters } from './unjwt.
|
|
2
|
+
import { b as JWEEncryptOptions, c as JWEKeyLookupFunction, d as JWEDecryptOptions, e as JWEDecryptResult, J as JWEHeaderParameters, a as JWEKeyManagementHeaderParameters } from './unjwt.BU3IrsCv.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Encrypts a payload to produce a JWE Compact Serialization string.
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { K as KeyManagementAlgorithm, f as ContentEncryptionAlgorithm, E as ExpiresIn, V as JoseHeaderParameters, h as JWK_EC_Public, i as JWK_EC_Private, v as JWK, Z as JWTClaimValidationOptions, X as JWTClaims } from './unjwt.CtHrClHc.mjs';
|
|
2
|
+
import { S as StrictOmit } from './unjwt.JdKqVANs.mjs';
|
|
2
3
|
|
|
3
4
|
/** Recognized JWE Header Parameters, any other Header Members may also be present. */
|
|
4
5
|
interface JWEHeaderParameters extends JoseHeaderParameters {
|
|
@@ -79,7 +80,7 @@ interface JWEEncryptOptions {
|
|
|
79
80
|
/** Time at which the JWT should expire, if no `exp` was already provided (only when typ is "JWT" or explicitly parsing JWT). */
|
|
80
81
|
expiresIn?: ExpiresIn;
|
|
81
82
|
/** Additional JWE Protected Header parameters. */
|
|
82
|
-
protectedHeader?:
|
|
83
|
+
protectedHeader?: StrictOmit<JWEHeaderParameters, "alg" | "enc" | "iv" | "tag" | "p2s" | "p2c" | "epk" | "apu" | "apv">;
|
|
83
84
|
/** Initialization Vector for AES-GCMKW key wrapping. Generated if not provided. */
|
|
84
85
|
keyManagementIV?: Uint8Array<ArrayBuffer>;
|
|
85
86
|
/** PBES2 Salt value (p2s). Required for PBES2 algorithms. */
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { E as ExpiresIn, X as JWTClaims, Z as JWTClaimValidationOptions, v as JWK, w as JWKSet, q as JWK_oct, u as JWK_Private, t as JWK_Public } from './unjwt.CtHrClHc.mjs';
|
|
2
|
+
import { S as StrictOmit } from './unjwt.JdKqVANs.mjs';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* Apply default typ/cty semantics shared by JWS & JWE.
|
|
@@ -101,6 +102,7 @@ declare function isPrivateJWK(key: unknown): key is JWK_Private;
|
|
|
101
102
|
*/
|
|
102
103
|
declare function isPublicJWK(key: unknown): key is JWK_Public;
|
|
103
104
|
|
|
105
|
+
declare const index_StrictOmit: typeof StrictOmit;
|
|
104
106
|
declare const index_applyTypCtyDefaults: typeof applyTypCtyDefaults;
|
|
105
107
|
declare const index_assertCryptoKey: typeof assertCryptoKey;
|
|
106
108
|
declare const index_base64Decode: typeof base64Decode;
|
|
@@ -134,6 +136,7 @@ declare const index_validateCriticalHeadersJWS: typeof validateCriticalHeadersJW
|
|
|
134
136
|
declare const index_validateJwtClaims: typeof validateJwtClaims;
|
|
135
137
|
declare namespace index {
|
|
136
138
|
export {
|
|
139
|
+
index_StrictOmit as StrictOmit,
|
|
137
140
|
index_applyTypCtyDefaults as applyTypCtyDefaults,
|
|
138
141
|
index_assertCryptoKey as assertCryptoKey,
|
|
139
142
|
index_base64Decode as base64Decode,
|
package/dist/utils.d.mts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import './shared/unjwt.CtHrClHc.mjs';
|
|
2
|
-
export {
|
|
2
|
+
export { S as StrictOmit } from './shared/unjwt.JdKqVANs.mjs';
|
|
3
|
+
export { s as applyTypCtyDefaults, j as assertCryptoKey, d as base64Decode, b as base64Encode, e as base64UrlDecode, c as base64UrlEncode, z as computeExpiresInSeconds, B as computeJwtTimeClaims, A as computeMaxTokenAgeSeconds, f as concatUint8Arrays, v as decodeMaybeJWTString, x as decodePayloadFromB64UrlSegment, w as decodePayloadFromBytes, y as getPlaintextBytes, o as isAsymmetricJWK, k as isCryptoKey, l as isCryptoKeyPair, g as isJWK, h as isJWKSet, u as isJWTContent, p as isPrivateJWK, q as isPublicJWK, n as isSymmetricJWK, m as maybeArray, r as randomBytes, F as sanitizeObject, a as textDecoder, t as textEncoder, E as validateCriticalHeadersJWE, D as validateCriticalHeadersJWS, C as validateJwtClaims } from './shared/unjwt.CkkdXjZD.mjs';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unjwt",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.31",
|
|
4
4
|
"description": "Low-level JWT utilities",
|
|
5
5
|
"repository": "sandros94/unjwt",
|
|
6
6
|
"license": "MIT",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"lint": "eslint . && prettier -c .",
|
|
57
57
|
"lint:fix": "automd && eslint . --fix && prettier -w .",
|
|
58
58
|
"prepack": "pnpm build",
|
|
59
|
-
"release": "pnpm test && pnpm prepack && changelogen --release --push
|
|
59
|
+
"release": "pnpm test && pnpm prepack && changelogen --release --push",
|
|
60
60
|
"test": "pnpm lint && pnpm test:types && vitest run --slowTestThreshold=1000",
|
|
61
61
|
"test:coverage": "pnpm lint && pnpm test:types && vitest run --coverage --slowTestThreshold=1000",
|
|
62
62
|
"test:types": "tsc --noEmit --skipLibCheck",
|