unjwt 0.5.29 → 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 +31 -26
- package/dist/adapters/h3.mjs +97 -29
- package/dist/adapters/h3v1.d.mts +3 -2
- package/dist/adapters/h3v1.mjs +1 -1
- package/dist/adapters/h3v2.d.mts +32 -26
- package/dist/adapters/h3v2.mjs +61 -23
- 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,19 +1,23 @@
|
|
|
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>;
|
|
20
|
+
readonly token: string | undefined;
|
|
17
21
|
update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
|
|
18
22
|
clear: () => Promise<SessionManager<T>>;
|
|
19
23
|
}
|
|
@@ -25,14 +29,14 @@ interface SessionManager<T extends JWTClaims = JWTClaims, ConfigMaxAge extends E
|
|
|
25
29
|
*/
|
|
26
30
|
|
|
27
31
|
declare const kGetSessionPromise$1: unique symbol;
|
|
28
|
-
interface SessionJWE<T extends
|
|
32
|
+
interface SessionJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
29
33
|
id: string;
|
|
30
34
|
createdAt: number;
|
|
31
35
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
32
36
|
data: SessionData<T>;
|
|
33
37
|
[kGetSessionPromise$1]?: Promise<SessionJWE<T, MaxAge>>;
|
|
34
38
|
}
|
|
35
|
-
interface SessionHooksJWE<T extends
|
|
39
|
+
interface SessionHooksJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
36
40
|
onRead?: (args: {
|
|
37
41
|
session: SessionJWE<T, MaxAge>;
|
|
38
42
|
event: H3Event;
|
|
@@ -58,7 +62,7 @@ interface SessionHooksJWE<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
58
62
|
config: SessionConfigJWE<T, MaxAge>;
|
|
59
63
|
}) => void | Promise<void>;
|
|
60
64
|
}
|
|
61
|
-
interface SessionConfigJWE<T extends
|
|
65
|
+
interface SessionConfigJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
62
66
|
/** @deprecated use `key` instead */
|
|
63
67
|
secret?: string | JWK_Symmetric | {
|
|
64
68
|
privateKey: JWK_Private | JWK_Symmetric;
|
|
@@ -102,15 +106,16 @@ type CompatEvent$1 = {
|
|
|
102
106
|
/**
|
|
103
107
|
* Create a session manager for the current request.
|
|
104
108
|
*/
|
|
105
|
-
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>>;
|
|
106
110
|
/**
|
|
107
111
|
* Get (and lazily initialize) the session for the current request.
|
|
108
112
|
*/
|
|
109
|
-
declare function getJWESession<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;
|
|
110
115
|
/**
|
|
111
116
|
* Update the session (optionally mutating the session data) and re-issue the JWE token.
|
|
112
117
|
*/
|
|
113
|
-
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>>;
|
|
114
119
|
/**
|
|
115
120
|
* Produce a JWE for the current session.
|
|
116
121
|
* Payload structure:
|
|
@@ -121,15 +126,15 @@ declare function updateJWESession<T extends JWTClaims = JWTClaims, MaxAge extend
|
|
|
121
126
|
* data: Record<string, any>;
|
|
122
127
|
* }
|
|
123
128
|
*/
|
|
124
|
-
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>;
|
|
125
130
|
/**
|
|
126
131
|
* Decrypt the JWE and return a Session-compatible object.
|
|
127
132
|
*/
|
|
128
|
-
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>>>;
|
|
129
134
|
/**
|
|
130
135
|
* Clear the session (delete from context and drop cookie).
|
|
131
136
|
*/
|
|
132
|
-
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>;
|
|
133
138
|
|
|
134
139
|
/**
|
|
135
140
|
* This is a fork of h3 library's session utility functions.
|
|
@@ -138,14 +143,14 @@ declare function clearJWESession<T extends JWTClaims = JWTClaims, MaxAge extends
|
|
|
138
143
|
*/
|
|
139
144
|
|
|
140
145
|
declare const kGetSessionPromise: unique symbol;
|
|
141
|
-
interface SessionJWS<T extends
|
|
146
|
+
interface SessionJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
142
147
|
id: string;
|
|
143
148
|
createdAt: number;
|
|
144
149
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
145
150
|
data: SessionData<T>;
|
|
146
151
|
[kGetSessionPromise]?: Promise<SessionJWS<T, MaxAge>>;
|
|
147
152
|
}
|
|
148
|
-
interface SessionHooksJWS<T extends
|
|
153
|
+
interface SessionHooksJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
149
154
|
onRead?: (args: {
|
|
150
155
|
session: SessionJWS<T, MaxAge>;
|
|
151
156
|
event: H3Event;
|
|
@@ -171,7 +176,7 @@ interface SessionHooksJWS<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
171
176
|
config: SessionConfigJWS<T, MaxAge>;
|
|
172
177
|
}) => void | Promise<void>;
|
|
173
178
|
}
|
|
174
|
-
interface SessionConfigJWS<T extends
|
|
179
|
+
interface SessionConfigJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
175
180
|
/**
|
|
176
181
|
* JWK (private for signing with RS/ES/PS, or symmetric oct) used for signing.
|
|
177
182
|
*/
|
|
@@ -213,21 +218,21 @@ type CompatEvent = {
|
|
|
213
218
|
* Create a session manager for the current request using JWS (signed only, not encrypted).
|
|
214
219
|
* NOTE: Contents are visible to clients (Base64URL-decoded JSON). Do not store secrets in session data.
|
|
215
220
|
*/
|
|
216
|
-
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>>;
|
|
217
222
|
/**
|
|
218
223
|
* Retrieve (and lazily initialize) the session.
|
|
219
224
|
*/
|
|
220
|
-
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>>;
|
|
221
226
|
/**
|
|
222
227
|
* Update session data (if provided) and reissue JWS.
|
|
223
228
|
*/
|
|
224
|
-
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>>;
|
|
225
230
|
/**
|
|
226
231
|
* Sign current session as a compact JWS.
|
|
227
232
|
* Payload claims:
|
|
228
233
|
* jti, iat, exp?, data, plus optional extraClaims (cannot override reserved)
|
|
229
234
|
*/
|
|
230
|
-
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>;
|
|
231
236
|
/**
|
|
232
237
|
* Verify and parse a compact JWS into a Session structure.
|
|
233
238
|
* Performs:
|
|
@@ -236,11 +241,11 @@ declare function signJWSSession<T extends JWTClaims = JWTClaims, MaxAge extends
|
|
|
236
241
|
* - ensures jti & iat presence
|
|
237
242
|
* - enforces maxAge if provided
|
|
238
243
|
*/
|
|
239
|
-
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>>>;
|
|
240
245
|
/**
|
|
241
246
|
* Destroy the session (context + cookie).
|
|
242
247
|
*/
|
|
243
|
-
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>;
|
|
244
249
|
|
|
245
|
-
export { JWEEncryptOptions, JWKSet, JWK_Private, JWK_Public, JWK_Symmetric, JWTClaimValidationOptions, JWTClaims, clearJWESession, clearJWSSession, getJWESession, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
|
246
|
-
export type { SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWEConfig, SessionJWS, SessionJWSConfig, SessionManager, SessionUpdate };
|
|
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 };
|
|
251
|
+
export type { SessionClaims, SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWEConfig, SessionJWS, SessionJWSConfig, SessionManager, SessionUpdate };
|
package/dist/adapters/h3.mjs
CHANGED
|
@@ -33,6 +33,9 @@ async function useJWESession(event, config) {
|
|
|
33
33
|
get data() {
|
|
34
34
|
return event.context.sessions?.[sessionName]?.data || {};
|
|
35
35
|
},
|
|
36
|
+
get token() {
|
|
37
|
+
return getJWESessionToken(event, config);
|
|
38
|
+
},
|
|
36
39
|
update: async (update) => {
|
|
37
40
|
if (!isEvent(event)) {
|
|
38
41
|
throw new Error("[h3] Cannot update read-only session.");
|
|
@@ -84,20 +87,7 @@ async function getJWESession(event, config) {
|
|
|
84
87
|
data: /* @__PURE__ */ Object.create(null)
|
|
85
88
|
};
|
|
86
89
|
event.context.sessions[sessionName] = session;
|
|
87
|
-
|
|
88
|
-
if (config.sessionHeader !== false) {
|
|
89
|
-
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
90
|
-
const headerValue = _getReqHeader$1(event, headerName);
|
|
91
|
-
if (typeof headerValue === "string") {
|
|
92
|
-
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
if (!token) {
|
|
96
|
-
const cookieHeader = _getReqHeader$1(event, "cookie");
|
|
97
|
-
if (cookieHeader) {
|
|
98
|
-
token = parse(String(cookieHeader))[sessionName];
|
|
99
|
-
}
|
|
100
|
-
}
|
|
90
|
+
const token = getJWESessionToken(event, config);
|
|
101
91
|
if (token) {
|
|
102
92
|
const promise = unsealJWESession(event, config, token).catch(async (error_) => {
|
|
103
93
|
if (error_ instanceof Error && (error_.message.includes("Token has expired") || error_.message.includes("Token is too old"))) {
|
|
@@ -142,6 +132,37 @@ async function getJWESession(event, config) {
|
|
|
142
132
|
});
|
|
143
133
|
return session;
|
|
144
134
|
}
|
|
135
|
+
function getJWESessionToken(event, config) {
|
|
136
|
+
const sessionName = config.name || DEFAULT_NAME$1;
|
|
137
|
+
let token;
|
|
138
|
+
if (config.sessionHeader !== false) {
|
|
139
|
+
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
140
|
+
const headerValue = _getReqHeader$1(event, headerName);
|
|
141
|
+
if (typeof headerValue === "string") {
|
|
142
|
+
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (!token) {
|
|
146
|
+
const cookieHeader = _getReqHeader$1(event, "cookie");
|
|
147
|
+
if (cookieHeader) {
|
|
148
|
+
token = parse(String(cookieHeader))[sessionName];
|
|
149
|
+
}
|
|
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
|
+
}
|
|
164
|
+
return token;
|
|
165
|
+
}
|
|
145
166
|
function _getReqHeader$1(event, name) {
|
|
146
167
|
if (event.node) {
|
|
147
168
|
return event.node?.req.headers[name];
|
|
@@ -153,6 +174,14 @@ function _getReqHeader$1(event, name) {
|
|
|
153
174
|
return event.headers.get(name);
|
|
154
175
|
}
|
|
155
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
|
+
}
|
|
156
185
|
async function updateJWESession(event, config, update) {
|
|
157
186
|
const sessionName = config.name || DEFAULT_NAME$1;
|
|
158
187
|
const session = event.context.sessions?.[sessionName] || await getJWESession(event, config);
|
|
@@ -308,6 +337,11 @@ function getDecryptKey(key) {
|
|
|
308
337
|
}
|
|
309
338
|
return _key;
|
|
310
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
|
+
}
|
|
311
345
|
|
|
312
346
|
/**
|
|
313
347
|
* This is a fork of h3 library's session utility functions.
|
|
@@ -337,6 +371,9 @@ async function useJWSSession(event, config) {
|
|
|
337
371
|
get data() {
|
|
338
372
|
return event.context.sessions?.[sessionName]?.data || {};
|
|
339
373
|
},
|
|
374
|
+
get token() {
|
|
375
|
+
return getJWSSessionToken(event, config);
|
|
376
|
+
},
|
|
340
377
|
update: async (update) => {
|
|
341
378
|
if (!isEvent(event)) {
|
|
342
379
|
throw new Error("[h3] Cannot update read-only session.");
|
|
@@ -388,20 +425,7 @@ async function getJWSSession(event, config) {
|
|
|
388
425
|
data: /* @__PURE__ */ Object.create(null)
|
|
389
426
|
};
|
|
390
427
|
event.context.sessions[sessionName] = session;
|
|
391
|
-
|
|
392
|
-
if (config.sessionHeader !== false) {
|
|
393
|
-
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
394
|
-
const headerValue = _getReqHeader(event, headerName);
|
|
395
|
-
if (typeof headerValue === "string") {
|
|
396
|
-
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
if (!token) {
|
|
400
|
-
const cookieHeader = _getReqHeader(event, "cookie");
|
|
401
|
-
if (cookieHeader) {
|
|
402
|
-
token = parse(String(cookieHeader))[sessionName];
|
|
403
|
-
}
|
|
404
|
-
}
|
|
428
|
+
const token = getJWSSessionToken(event, config);
|
|
405
429
|
if (token) {
|
|
406
430
|
const promise = verifyJWSSession(event, config, token).catch(async (error_) => {
|
|
407
431
|
if (error_ instanceof Error && (error_.message.includes("Token has expired") || error_.message.includes("Token is too old"))) {
|
|
@@ -446,6 +470,37 @@ async function getJWSSession(event, config) {
|
|
|
446
470
|
});
|
|
447
471
|
return session;
|
|
448
472
|
}
|
|
473
|
+
function getJWSSessionToken(event, config) {
|
|
474
|
+
const sessionName = config.name || DEFAULT_NAME;
|
|
475
|
+
let token;
|
|
476
|
+
if (config.sessionHeader !== false) {
|
|
477
|
+
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
478
|
+
const headerValue = _getReqHeader(event, headerName);
|
|
479
|
+
if (typeof headerValue === "string") {
|
|
480
|
+
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
if (!token) {
|
|
484
|
+
const cookieHeader = _getReqHeader(event, "cookie");
|
|
485
|
+
if (cookieHeader) {
|
|
486
|
+
token = parse(String(cookieHeader))[sessionName];
|
|
487
|
+
}
|
|
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
|
+
}
|
|
502
|
+
return token;
|
|
503
|
+
}
|
|
449
504
|
function _getReqHeader(event, name) {
|
|
450
505
|
if (event.node) {
|
|
451
506
|
return event.node.req.headers[name];
|
|
@@ -457,6 +512,14 @@ function _getReqHeader(event, name) {
|
|
|
457
512
|
return event.headers.get(name);
|
|
458
513
|
}
|
|
459
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
|
+
}
|
|
460
523
|
async function updateJWSSession(event, config, update) {
|
|
461
524
|
const sessionName = config.name || DEFAULT_NAME;
|
|
462
525
|
const session = event.context.sessions?.[sessionName] || await getJWSSession(event, config);
|
|
@@ -604,5 +667,10 @@ function getVerifyKey(key) {
|
|
|
604
667
|
}
|
|
605
668
|
return _key;
|
|
606
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
|
+
}
|
|
607
675
|
|
|
608
|
-
export { clearJWESession, clearJWSSession, getJWESession, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
|
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, 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/h3v1.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { k as deriveJWKFromPassword, h as exportJWKToPEM, c as generateJWK, f as importJWKFromPEM } from '../shared/unjwt.DyouTtLD.mjs';
|
|
2
|
-
export { clearJWESession, clearJWSSession, getJWESession, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession } from './h3.mjs';
|
|
2
|
+
export { clearJWESession, clearJWSSession, getJWESession, getJWESessionToken, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession } from './h3.mjs';
|
|
3
3
|
import '../shared/unjwt.Be8NxwFK.mjs';
|
|
4
4
|
import 'h3';
|
|
5
5
|
import 'cookie-es';
|
package/dist/adapters/h3v2.d.mts
CHANGED
|
@@ -1,32 +1,36 @@
|
|
|
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>;
|
|
20
|
+
readonly token: string | undefined;
|
|
17
21
|
update: (update: SessionUpdate<T>) => Promise<SessionManager<T>>;
|
|
18
22
|
clear: () => Promise<SessionManager<T>>;
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
declare const kGetSessionPromise$1: unique symbol;
|
|
22
|
-
interface SessionJWE<T extends
|
|
26
|
+
interface SessionJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
23
27
|
id: string;
|
|
24
28
|
createdAt: number;
|
|
25
29
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
26
30
|
data: SessionData<T>;
|
|
27
31
|
[kGetSessionPromise$1]?: Promise<SessionJWE<T, MaxAge>>;
|
|
28
32
|
}
|
|
29
|
-
interface SessionHooksJWE<T extends
|
|
33
|
+
interface SessionHooksJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
30
34
|
onRead?: (args: {
|
|
31
35
|
session: SessionJWE<T, MaxAge>;
|
|
32
36
|
event: HTTPEvent;
|
|
@@ -52,7 +56,7 @@ interface SessionHooksJWE<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
52
56
|
config: SessionConfigJWE<T, MaxAge>;
|
|
53
57
|
}) => void | Promise<void>;
|
|
54
58
|
}
|
|
55
|
-
interface SessionConfigJWE<T extends
|
|
59
|
+
interface SessionConfigJWE<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
56
60
|
/** Shared secret used, string for PBES2 or Json Web Key (JWK) */
|
|
57
61
|
key: string | JWK_Symmetric | {
|
|
58
62
|
privateKey: JWK_Private | JWK_Symmetric;
|
|
@@ -80,37 +84,38 @@ interface SessionConfigJWE<T extends JWTClaims = JWTClaims, MaxAge extends Expir
|
|
|
80
84
|
/**
|
|
81
85
|
* Create a session manager for the current request.
|
|
82
86
|
*/
|
|
83
|
-
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>>;
|
|
84
88
|
/**
|
|
85
89
|
* Get the session for the current request.
|
|
86
90
|
*/
|
|
87
|
-
declare function getJWESession<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;
|
|
88
93
|
/**
|
|
89
94
|
* Update the session data for the current request.
|
|
90
95
|
*/
|
|
91
|
-
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>>;
|
|
92
97
|
/**
|
|
93
98
|
* Produce a JWE for the current session.
|
|
94
99
|
*/
|
|
95
|
-
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>;
|
|
96
101
|
/**
|
|
97
102
|
* Decrypt the JWE and return a Session-compatible object.
|
|
98
103
|
*/
|
|
99
|
-
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>>>;
|
|
100
105
|
/**
|
|
101
106
|
* Clear the session (delete from context and drop cookie).
|
|
102
107
|
*/
|
|
103
|
-
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>;
|
|
104
109
|
|
|
105
110
|
declare const kGetSessionPromise: unique symbol;
|
|
106
|
-
interface SessionJWS<T extends
|
|
111
|
+
interface SessionJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
107
112
|
id: string;
|
|
108
113
|
createdAt: number;
|
|
109
114
|
expiresAt: MaxAge extends ExpiresIn ? number : T["exp"];
|
|
110
115
|
data: SessionData<T>;
|
|
111
116
|
[kGetSessionPromise]?: Promise<SessionJWS<T, MaxAge>>;
|
|
112
117
|
}
|
|
113
|
-
interface SessionHooksJWS<T extends
|
|
118
|
+
interface SessionHooksJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
114
119
|
onRead?: (args: {
|
|
115
120
|
session: SessionJWS<T, MaxAge>;
|
|
116
121
|
event: HTTPEvent;
|
|
@@ -136,7 +141,7 @@ interface SessionHooksJWS<T extends JWTClaims = JWTClaims, MaxAge extends Expire
|
|
|
136
141
|
config: SessionConfigJWS<T, MaxAge>;
|
|
137
142
|
}) => void | Promise<void>;
|
|
138
143
|
}
|
|
139
|
-
interface SessionConfigJWS<T extends
|
|
144
|
+
interface SessionConfigJWS<T extends Record<string, any> = SessionClaims, MaxAge extends ExpiresIn | undefined = ExpiresIn | undefined> {
|
|
140
145
|
key: JWK_Symmetric | {
|
|
141
146
|
privateKey: JWK_Private;
|
|
142
147
|
publicKey: JWK_Public | JWK_Public[] | JWKSet;
|
|
@@ -154,12 +159,13 @@ interface SessionConfigJWS<T extends JWTClaims = JWTClaims, MaxAge extends Expir
|
|
|
154
159
|
};
|
|
155
160
|
hooks?: SessionHooksJWS<T, MaxAge>;
|
|
156
161
|
}
|
|
157
|
-
declare function useJWSSession<T extends
|
|
158
|
-
declare function getJWSSession<T extends
|
|
159
|
-
declare function
|
|
160
|
-
declare function
|
|
161
|
-
declare function
|
|
162
|
-
declare function
|
|
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>;
|
|
163
169
|
|
|
164
|
-
export { JWEEncryptOptions, JWKSet, JWK_Private, JWK_Public, JWK_Symmetric, JWTClaimValidationOptions, JWTClaims, clearJWESession, clearJWSSession, getJWESession, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
|
165
|
-
export type { SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWS, SessionManager, SessionUpdate };
|
|
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 };
|
|
171
|
+
export type { SessionClaims, SessionConfigJWE, SessionConfigJWS, SessionData, SessionHooksJWE, SessionHooksJWS, SessionJWE, SessionJWS, SessionManager, SessionUpdate };
|
package/dist/adapters/h3v2.mjs
CHANGED
|
@@ -28,6 +28,9 @@ async function useJWESession(event, config) {
|
|
|
28
28
|
get data() {
|
|
29
29
|
return getSessionFromContext$1(event, sessionName)?.data || {};
|
|
30
30
|
},
|
|
31
|
+
get token() {
|
|
32
|
+
return getJWESessionToken(event, config);
|
|
33
|
+
},
|
|
31
34
|
update: async (update) => {
|
|
32
35
|
await updateJWESession(event, config, update);
|
|
33
36
|
return sessionManager;
|
|
@@ -74,17 +77,7 @@ async function getJWESession(event, config) {
|
|
|
74
77
|
data: new NullProtoObj()
|
|
75
78
|
};
|
|
76
79
|
context.sessions[sessionName] = session;
|
|
77
|
-
|
|
78
|
-
if (config.sessionHeader !== false) {
|
|
79
|
-
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
80
|
-
const headerValue = event.req.headers.get(headerName);
|
|
81
|
-
if (typeof headerValue === "string") {
|
|
82
|
-
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
if (!token) {
|
|
86
|
-
token = getChunkedCookie(event, sessionName);
|
|
87
|
-
}
|
|
80
|
+
const token = getJWESessionToken(event, config);
|
|
88
81
|
if (token) {
|
|
89
82
|
const promise = unsealJWESession(event, config, token).catch(async (error_) => {
|
|
90
83
|
if (error_ instanceof Error) {
|
|
@@ -127,6 +120,27 @@ async function getJWESession(event, config) {
|
|
|
127
120
|
});
|
|
128
121
|
return session;
|
|
129
122
|
}
|
|
123
|
+
function getJWESessionToken(event, config) {
|
|
124
|
+
const sessionName = config.name || DEFAULT_NAME$1;
|
|
125
|
+
let token;
|
|
126
|
+
if (config.sessionHeader !== false) {
|
|
127
|
+
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
128
|
+
const headerValue = event.req.headers.get(headerName);
|
|
129
|
+
if (typeof headerValue === "string") {
|
|
130
|
+
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (!token) {
|
|
134
|
+
token = getChunkedCookie(event, sessionName);
|
|
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
|
+
}
|
|
142
|
+
return token;
|
|
143
|
+
}
|
|
130
144
|
async function updateJWESession(event, config, update) {
|
|
131
145
|
const sessionName = config.name || DEFAULT_NAME$1;
|
|
132
146
|
const context = getEventContext(event);
|
|
@@ -290,6 +304,11 @@ function getDecryptKey(key) {
|
|
|
290
304
|
}
|
|
291
305
|
return _key;
|
|
292
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
|
+
}
|
|
293
312
|
|
|
294
313
|
const kGetSessionPromise = Symbol("h3_jws_getSession");
|
|
295
314
|
const DEFAULT_NAME = "h3-jws";
|
|
@@ -314,6 +333,9 @@ async function useJWSSession(event, config) {
|
|
|
314
333
|
get data() {
|
|
315
334
|
return getSessionFromContext(event, sessionName)?.data || {};
|
|
316
335
|
},
|
|
336
|
+
get token() {
|
|
337
|
+
return getJWSSessionToken(event, config);
|
|
338
|
+
},
|
|
317
339
|
update: async (update) => {
|
|
318
340
|
await updateJWSSession(event, config, update);
|
|
319
341
|
return sessionManager;
|
|
@@ -360,17 +382,7 @@ async function getJWSSession(event, config) {
|
|
|
360
382
|
data: new NullProtoObj()
|
|
361
383
|
};
|
|
362
384
|
context.sessions[sessionName] = session;
|
|
363
|
-
|
|
364
|
-
if (config.sessionHeader !== false) {
|
|
365
|
-
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
366
|
-
const headerValue = event.req.headers.get(headerName);
|
|
367
|
-
if (typeof headerValue === "string") {
|
|
368
|
-
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
if (!token) {
|
|
372
|
-
token = getChunkedCookie(event, sessionName);
|
|
373
|
-
}
|
|
385
|
+
const token = getJWSSessionToken(event, config);
|
|
374
386
|
if (token) {
|
|
375
387
|
const promise = verifyJWSSession(event, config, token).catch(async (error_) => {
|
|
376
388
|
if (error_ instanceof Error && (error_.message.includes("Token has expired") || error_.message.includes("Token is too old"))) {
|
|
@@ -410,6 +422,27 @@ async function getJWSSession(event, config) {
|
|
|
410
422
|
});
|
|
411
423
|
return session;
|
|
412
424
|
}
|
|
425
|
+
function getJWSSessionToken(event, config) {
|
|
426
|
+
const sessionName = config.name || DEFAULT_NAME;
|
|
427
|
+
let token;
|
|
428
|
+
if (config.sessionHeader !== false) {
|
|
429
|
+
const headerName = typeof config.sessionHeader === "string" ? config.sessionHeader.toLowerCase() : `x-${sessionName.toLowerCase()}-session`;
|
|
430
|
+
const headerValue = event.req.headers.get(headerName);
|
|
431
|
+
if (typeof headerValue === "string") {
|
|
432
|
+
token = headerValue.startsWith("Bearer ") ? headerValue.slice(7).trim() : headerValue;
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
if (!token) {
|
|
436
|
+
token = getChunkedCookie(event, sessionName);
|
|
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
|
+
}
|
|
444
|
+
return token;
|
|
445
|
+
}
|
|
413
446
|
async function updateJWSSession(event, config, update) {
|
|
414
447
|
const sessionName = config.name || DEFAULT_NAME;
|
|
415
448
|
const context = getEventContext(event);
|
|
@@ -580,5 +613,10 @@ function getVerifyKey(key) {
|
|
|
580
613
|
}
|
|
581
614
|
return _key;
|
|
582
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
|
+
}
|
|
583
621
|
|
|
584
|
-
export { clearJWESession, clearJWSSession, getJWESession, getJWSSession, sealJWESession, signJWSSession, unsealJWESession, updateJWESession, updateJWSSession, useJWESession, useJWSSession, verifyJWSSession };
|
|
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",
|