@geekmidas/auth 10.0.0-alpha.2 → 10.0.0-alpha.20
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/dist/{cacheTokenStorage-DaqxdNxI.d.mts → cacheTokenStorage-B3u8Sf-6.d.cts} +2 -5
- package/dist/cacheTokenStorage-B3u8Sf-6.d.cts.map +1 -0
- package/dist/{cacheTokenStorage-B7sOoysu.d.cts → cacheTokenStorage-B3u8Sf-6.d.mts} +2 -5
- package/dist/cacheTokenStorage-B3u8Sf-6.d.mts.map +1 -0
- package/dist/cacheTokenStorage.cjs +30 -2
- package/dist/cacheTokenStorage.cjs.map +1 -0
- package/dist/cacheTokenStorage.d.cts +1 -1
- package/dist/cacheTokenStorage.d.mts +1 -1
- package/dist/cacheTokenStorage.mjs +29 -2
- package/dist/cacheTokenStorage.mjs.map +1 -0
- package/dist/client.cjs +144 -6
- package/dist/client.cjs.map +1 -0
- package/dist/client.d.cts +1 -1
- package/dist/client.d.mts +1 -1
- package/dist/client.mjs +140 -3
- package/dist/client.mjs.map +1 -0
- package/dist/cookies.cjs +24 -2
- package/dist/cookies.cjs.map +1 -0
- package/dist/cookies.d.cts +1 -3
- package/dist/cookies.d.cts.map +1 -1
- package/dist/cookies.d.mts +1 -3
- package/dist/cookies.d.mts.map +1 -1
- package/dist/cookies.mjs +23 -2
- package/dist/cookies.mjs.map +1 -0
- package/dist/hono/jwt.cjs +5 -5
- package/dist/hono/jwt.cjs.map +1 -1
- package/dist/hono/jwt.d.cts +4 -6
- package/dist/hono/jwt.d.cts.map +1 -1
- package/dist/hono/jwt.d.mts +4 -6
- package/dist/hono/jwt.d.mts.map +1 -1
- package/dist/hono/jwt.mjs +4 -5
- package/dist/hono/jwt.mjs.map +1 -1
- package/dist/hono/oidc.cjs +5 -5
- package/dist/hono/oidc.cjs.map +1 -1
- package/dist/hono/oidc.d.cts +5 -7
- package/dist/hono/oidc.d.cts.map +1 -1
- package/dist/hono/oidc.d.mts +5 -7
- package/dist/hono/oidc.d.mts.map +1 -1
- package/dist/hono/oidc.mjs +4 -5
- package/dist/hono/oidc.mjs.map +1 -1
- package/dist/index.cjs +5 -5
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +4 -5
- package/dist/{jwt-kejix7rd.d.mts → jwt-CoKrpeMB.d.cts} +2 -3
- package/dist/jwt-CoKrpeMB.d.cts.map +1 -0
- package/dist/{jwt-3eIuY2dg.d.cts → jwt-CoKrpeMB.d.mts} +2 -3
- package/dist/jwt-CoKrpeMB.d.mts.map +1 -0
- package/dist/jwt.cjs +56 -4
- package/dist/jwt.cjs.map +1 -0
- package/dist/jwt.d.cts +1 -1
- package/dist/jwt.d.mts +1 -1
- package/dist/jwt.mjs +51 -2
- package/dist/jwt.mjs.map +1 -0
- package/dist/lambda/jwt.cjs +14 -17
- package/dist/lambda/jwt.cjs.map +1 -1
- package/dist/lambda/jwt.d.cts +4 -6
- package/dist/lambda/jwt.d.cts.map +1 -1
- package/dist/lambda/jwt.d.mts +4 -6
- package/dist/lambda/jwt.d.mts.map +1 -1
- package/dist/lambda/jwt.mjs +13 -17
- package/dist/lambda/jwt.mjs.map +1 -1
- package/dist/lambda/oidc.cjs +14 -17
- package/dist/lambda/oidc.cjs.map +1 -1
- package/dist/lambda/oidc.d.cts +5 -7
- package/dist/lambda/oidc.d.cts.map +1 -1
- package/dist/lambda/oidc.d.mts +5 -7
- package/dist/lambda/oidc.d.mts.map +1 -1
- package/dist/lambda/oidc.mjs +13 -17
- package/dist/lambda/oidc.mjs.map +1 -1
- package/dist/oidc.cjs +64 -2
- package/dist/oidc.cjs.map +1 -0
- package/dist/oidc.d.cts +84 -3
- package/dist/oidc.d.cts.map +1 -0
- package/dist/oidc.d.mts +84 -3
- package/dist/oidc.d.mts.map +1 -0
- package/dist/oidc.mjs +61 -2
- package/dist/oidc.mjs.map +1 -0
- package/dist/{chunk-CUT6urMc.cjs → rolldown-runtime-VH7oDXx4.cjs} +8 -10
- package/dist/server.cjs +4 -4
- package/dist/server.d.cts +3 -3
- package/dist/server.d.mts +3 -3
- package/dist/server.mjs +3 -4
- package/dist/tokenManager.cjs +64 -2
- package/dist/tokenManager.cjs.map +1 -0
- package/dist/tokenManager.d.cts +37 -2
- package/dist/tokenManager.d.cts.map +1 -0
- package/dist/tokenManager.d.mts +37 -2
- package/dist/tokenManager.d.mts.map +1 -0
- package/dist/tokenManager.mjs +61 -2
- package/dist/tokenManager.mjs.map +1 -0
- package/package.json +8 -8
- package/dist/cacheTokenStorage-16NE8Cd9.mjs +0 -32
- package/dist/cacheTokenStorage-16NE8Cd9.mjs.map +0 -1
- package/dist/cacheTokenStorage-B7sOoysu.d.cts.map +0 -1
- package/dist/cacheTokenStorage-CEpMniTi.cjs +0 -38
- package/dist/cacheTokenStorage-CEpMniTi.cjs.map +0 -1
- package/dist/cacheTokenStorage-DaqxdNxI.d.mts.map +0 -1
- package/dist/client-BPl_mMvb.cjs +0 -162
- package/dist/client-BPl_mMvb.cjs.map +0 -1
- package/dist/client-eidYNJSH.mjs +0 -144
- package/dist/client-eidYNJSH.mjs.map +0 -1
- package/dist/cookies-Bc6gUjb6.cjs +0 -30
- package/dist/cookies-Bc6gUjb6.cjs.map +0 -1
- package/dist/cookies-C80f8JtE.mjs +0 -24
- package/dist/cookies-C80f8JtE.mjs.map +0 -1
- package/dist/jwt-3eIuY2dg.d.cts.map +0 -1
- package/dist/jwt-bZR2_t8F.mjs +0 -52
- package/dist/jwt-bZR2_t8F.mjs.map +0 -1
- package/dist/jwt-clq6I6vG.cjs +0 -70
- package/dist/jwt-clq6I6vG.cjs.map +0 -1
- package/dist/jwt-kejix7rd.d.mts.map +0 -1
- package/dist/oidc-BYHREHir.mjs +0 -62
- package/dist/oidc-BYHREHir.mjs.map +0 -1
- package/dist/oidc-Ca7GYwmM.d.mts +0 -87
- package/dist/oidc-Ca7GYwmM.d.mts.map +0 -1
- package/dist/oidc-ChA17wLB.d.cts +0 -87
- package/dist/oidc-ChA17wLB.d.cts.map +0 -1
- package/dist/oidc-jdMfVyyC.cjs +0 -68
- package/dist/oidc-jdMfVyyC.cjs.map +0 -1
- package/dist/tokenManager-BbylTW7F.mjs +0 -66
- package/dist/tokenManager-BbylTW7F.mjs.map +0 -1
- package/dist/tokenManager-CL3yE06D.d.cts +0 -40
- package/dist/tokenManager-CL3yE06D.d.cts.map +0 -1
- package/dist/tokenManager-CosB7J0i.d.mts +0 -40
- package/dist/tokenManager-CosB7J0i.d.mts.map +0 -1
- package/dist/tokenManager-PQ-OI_NU.cjs +0 -72
- package/dist/tokenManager-PQ-OI_NU.cjs.map +0 -1
package/dist/jwt-clq6I6vG.cjs
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const jose = require_chunk.__toESM(require("jose"));
|
|
3
|
-
|
|
4
|
-
//#region src/jwt.ts
|
|
5
|
-
function isJwksConfig(config) {
|
|
6
|
-
return "jwksUri" in config;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* JWT Verifier with JWKS caching
|
|
10
|
-
*/
|
|
11
|
-
var JwtVerifier = class {
|
|
12
|
-
jwks = null;
|
|
13
|
-
verifyOptions;
|
|
14
|
-
constructor(config) {
|
|
15
|
-
this.config = config;
|
|
16
|
-
this.verifyOptions = {
|
|
17
|
-
issuer: config.issuer,
|
|
18
|
-
audience: config.audience,
|
|
19
|
-
algorithms: config.algorithms ?? (isJwksConfig(config) ? void 0 : ["HS256"])
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
async verify(token) {
|
|
23
|
-
if (isJwksConfig(this.config)) {
|
|
24
|
-
if (!this.jwks) this.jwks = jose.createRemoteJWKSet(new URL(this.config.jwksUri));
|
|
25
|
-
const { payload: payload$1 } = await jose.jwtVerify(token, this.jwks, this.verifyOptions);
|
|
26
|
-
return payload$1;
|
|
27
|
-
}
|
|
28
|
-
const secret = new TextEncoder().encode(this.config.secret);
|
|
29
|
-
const { payload } = await jose.jwtVerify(token, secret, this.verifyOptions);
|
|
30
|
-
return payload;
|
|
31
|
-
}
|
|
32
|
-
async verifyOrNull(token) {
|
|
33
|
-
try {
|
|
34
|
-
return await this.verify(token);
|
|
35
|
-
} catch {
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
clearCache() {
|
|
40
|
-
this.jwks = null;
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Decode a JWT without verification
|
|
45
|
-
* WARNING: This does NOT verify the token signature!
|
|
46
|
-
*/
|
|
47
|
-
function decodeJwt(token) {
|
|
48
|
-
return jose.decodeJwt(token);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
//#endregion
|
|
52
|
-
Object.defineProperty(exports, 'JwtVerifier', {
|
|
53
|
-
enumerable: true,
|
|
54
|
-
get: function () {
|
|
55
|
-
return JwtVerifier;
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
Object.defineProperty(exports, 'decodeJwt', {
|
|
59
|
-
enumerable: true,
|
|
60
|
-
get: function () {
|
|
61
|
-
return decodeJwt;
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
Object.defineProperty(exports, 'isJwksConfig', {
|
|
65
|
-
enumerable: true,
|
|
66
|
-
get: function () {
|
|
67
|
-
return isJwksConfig;
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=jwt-clq6I6vG.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-clq6I6vG.cjs","names":["config: JwtConfig","token: string","payload"],"sources":["../src/jwt.ts"],"sourcesContent":["import * as jose from 'jose';\n\n/**\n * Standard JWT claims\n */\nexport interface JwtClaims {\n\tsub?: string;\n\tiss?: string;\n\taud?: string | string[];\n\texp?: number;\n\tiat?: number;\n\tnbf?: number;\n\tjti?: string;\n}\n\n/**\n * Configuration for JWT verification with a symmetric secret\n */\nexport interface JwtSecretConfig {\n\tsecret: string;\n\tissuer?: string;\n\taudience?: string | string[];\n\talgorithms?: string[];\n}\n\n/**\n * Configuration for JWT verification with JWKS\n */\nexport interface JwtJwksConfig {\n\tjwksUri: string;\n\tissuer?: string;\n\taudience?: string | string[];\n\talgorithms?: string[];\n}\n\nexport type JwtConfig = JwtSecretConfig | JwtJwksConfig;\n\n/**\n * Options for token extraction from requests\n */\nexport interface TokenExtractionOptions {\n\theaderName?: string;\n\tcookieName?: string;\n\ttokenPrefix?: string;\n}\n\nexport function isJwksConfig(config: JwtConfig): config is JwtJwksConfig {\n\treturn 'jwksUri' in config;\n}\n\n/**\n * JWT Verifier with JWKS caching\n */\nexport class JwtVerifier<TClaims extends JwtClaims = JwtClaims> {\n\tprivate jwks: jose.JWTVerifyGetKey | null = null;\n\tprivate readonly verifyOptions: jose.JWTVerifyOptions;\n\n\tconstructor(private readonly config: JwtConfig) {\n\t\tthis.verifyOptions = {\n\t\t\tissuer: config.issuer,\n\t\t\taudience: config.audience,\n\t\t\talgorithms:\n\t\t\t\tconfig.algorithms ?? (isJwksConfig(config) ? undefined : ['HS256']),\n\t\t};\n\t}\n\n\tasync verify(token: string): Promise<TClaims> {\n\t\tif (isJwksConfig(this.config)) {\n\t\t\tif (!this.jwks) {\n\t\t\t\tthis.jwks = jose.createRemoteJWKSet(new URL(this.config.jwksUri));\n\t\t\t}\n\t\t\tconst { payload } = await jose.jwtVerify(\n\t\t\t\ttoken,\n\t\t\t\tthis.jwks,\n\t\t\t\tthis.verifyOptions,\n\t\t\t);\n\t\t\treturn payload as unknown as TClaims;\n\t\t}\n\n\t\tconst secret = new TextEncoder().encode(this.config.secret);\n\t\tconst { payload } = await jose.jwtVerify(token, secret, this.verifyOptions);\n\t\treturn payload as unknown as TClaims;\n\t}\n\n\tasync verifyOrNull(token: string): Promise<TClaims | null> {\n\t\ttry {\n\t\t\treturn await this.verify(token);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclearCache(): void {\n\t\tthis.jwks = null;\n\t}\n}\n\n/**\n * Decode a JWT without verification\n * WARNING: This does NOT verify the token signature!\n */\nexport function decodeJwt<TClaims extends JwtClaims = JwtClaims>(\n\ttoken: string,\n): TClaims {\n\treturn jose.decodeJwt(token) as unknown as TClaims;\n}\n"],"mappings":";;;;AA8CA,SAAgB,aAAaA,QAA4C;AACxE,QAAO,aAAa;AACpB;;;;AAKD,IAAa,cAAb,MAAgE;CAC/D,AAAQ,OAAoC;CAC5C,AAAiB;CAEjB,YAA6BA,QAAmB;EAAnB;AAC5B,OAAK,gBAAgB;GACpB,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,YACC,OAAO,eAAe,aAAa,OAAO,YAAe,CAAC,OAAQ;EACnE;CACD;CAED,MAAM,OAAOC,OAAiC;AAC7C,MAAI,aAAa,KAAK,OAAO,EAAE;AAC9B,QAAK,KAAK,KACT,MAAK,OAAO,KAAK,mBAAmB,IAAI,IAAI,KAAK,OAAO,SAAS;GAElE,MAAM,EAAE,oBAAS,GAAG,MAAM,KAAK,UAC9B,OACA,KAAK,MACL,KAAK,cACL;AACD,UAAOC;EACP;EAED,MAAM,SAAS,IAAI,cAAc,OAAO,KAAK,OAAO,OAAO;EAC3D,MAAM,EAAE,SAAS,GAAG,MAAM,KAAK,UAAU,OAAO,QAAQ,KAAK,cAAc;AAC3E,SAAO;CACP;CAED,MAAM,aAAaD,OAAwC;AAC1D,MAAI;AACH,UAAO,MAAM,KAAK,OAAO,MAAM;EAC/B,QAAO;AACP,UAAO;EACP;CACD;CAED,aAAmB;AAClB,OAAK,OAAO;CACZ;AACD;;;;;AAMD,SAAgB,UACfA,OACU;AACV,QAAO,KAAK,UAAU,MAAM;AAC5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-kejix7rd.d.mts","names":[],"sources":["../src/jwt.ts"],"sourcesContent":[],"mappings":";;AAKA;AAaA;AAUiB,UAvBA,SAAA,CAuBa;EAOlB,GAAA,CAAA,EAAA,MAAS;EAAA,GAAA,CAAA,EAAA,MAAA;EAAA,GAAG,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA;EAAe,GAAG,CAAA,EAAA,MAAA;EAAa,GAAA,CAAA,EAAA,MAAA;EAKtC,GAAA,CAAA,EAAA,MAAA;EAMD,GAAA,CAAA,EAAA,MAAA;;;;AAAwD;AAO3D,UAnCI,eAAA,CAmCO;EAAA,MAAA,EAAA,MAAA;EAAA,MAAiB,CAAA,EAAA,MAAA;EAAS,QAAG,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA;EAAS,UAIxB,CAAA,EAAA,MAAA,EAAA;;;;;AA2BK,UAxD1B,aAAA,CAwD0B;EAiB3B,OAAA,EAAA,MAAS;EAAA,MAAA,CAAA,EAAA,MAAA;EAAA,QAAiB,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA;EAAS,UAAG,CAAA,EAAA,MAAA,EAAA;;AAE5C,KApEE,SAAA,GAAY,eAoEd,GApEgC,aAoEhC;;;;UA/DO,sBAAA;;;;;iBAMD,YAAA,SAAqB,sBAAsB;;;;cAO9C,4BAA4B,YAAY;;;;sBAIf;yBASR,QAAQ;+BAkBF,QAAQ;;;;;;;iBAiB5B,0BAA0B,YAAY,2BAEnD"}
|
package/dist/oidc-BYHREHir.mjs
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import * as jose from "jose";
|
|
2
|
-
|
|
3
|
-
//#region src/oidc.ts
|
|
4
|
-
/**
|
|
5
|
-
* OIDC Verifier with auto-discovery and caching
|
|
6
|
-
*/
|
|
7
|
-
var OidcVerifier = class {
|
|
8
|
-
discovery = null;
|
|
9
|
-
jwks = null;
|
|
10
|
-
discoveryUrl;
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = config;
|
|
13
|
-
this.discoveryUrl = config.issuer.endsWith("/") ? `${config.issuer}.well-known/openid-configuration` : `${config.issuer}/.well-known/openid-configuration`;
|
|
14
|
-
}
|
|
15
|
-
async getDiscovery() {
|
|
16
|
-
if (this.discovery && this.config.cacheDiscovery !== false) return this.discovery;
|
|
17
|
-
const response = await fetch(this.discoveryUrl);
|
|
18
|
-
if (!response.ok) throw new Error(`Failed to fetch OIDC discovery: ${response.statusText}`);
|
|
19
|
-
this.discovery = await response.json();
|
|
20
|
-
return this.discovery;
|
|
21
|
-
}
|
|
22
|
-
async getJwks() {
|
|
23
|
-
if (this.jwks && this.config.cacheDiscovery !== false) return this.jwks;
|
|
24
|
-
const disc = await this.getDiscovery();
|
|
25
|
-
this.jwks = jose.createRemoteJWKSet(new URL(disc.jwks_uri));
|
|
26
|
-
return this.jwks;
|
|
27
|
-
}
|
|
28
|
-
async verify(token) {
|
|
29
|
-
const key = await this.getJwks();
|
|
30
|
-
const { payload } = await jose.jwtVerify(token, key, {
|
|
31
|
-
issuer: this.config.issuer,
|
|
32
|
-
audience: this.config.audience
|
|
33
|
-
});
|
|
34
|
-
return payload;
|
|
35
|
-
}
|
|
36
|
-
async verifyOrNull(token) {
|
|
37
|
-
try {
|
|
38
|
-
return await this.verify(token);
|
|
39
|
-
} catch {
|
|
40
|
-
return null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
async fetchUserInfo(token) {
|
|
44
|
-
try {
|
|
45
|
-
const disc = await this.getDiscovery();
|
|
46
|
-
if (!disc.userinfo_endpoint) return null;
|
|
47
|
-
const response = await fetch(disc.userinfo_endpoint, { headers: { Authorization: `Bearer ${token}` } });
|
|
48
|
-
if (!response.ok) return null;
|
|
49
|
-
return await response.json();
|
|
50
|
-
} catch {
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
clearCache() {
|
|
55
|
-
this.discovery = null;
|
|
56
|
-
this.jwks = null;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
//#endregion
|
|
61
|
-
export { OidcVerifier };
|
|
62
|
-
//# sourceMappingURL=oidc-BYHREHir.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-BYHREHir.mjs","names":["config: OidcConfig","token: string"],"sources":["../src/oidc.ts"],"sourcesContent":["import * as jose from 'jose';\nimport type { JwtClaims, TokenExtractionOptions } from './jwt';\n\nexport type { TokenExtractionOptions };\n\n/**\n * Standard OIDC claims (extends JWT claims)\n */\nexport interface OidcClaims extends JwtClaims {\n\tnonce?: string;\n\tauth_time?: number;\n\tat_hash?: string;\n\tc_hash?: string;\n\tazp?: string;\n}\n\n/**\n * Standard OIDC user info claims\n */\nexport interface OidcUserInfo {\n\tsub: string;\n\tname?: string;\n\tgiven_name?: string;\n\tfamily_name?: string;\n\tmiddle_name?: string;\n\tnickname?: string;\n\tpreferred_username?: string;\n\tprofile?: string;\n\tpicture?: string;\n\twebsite?: string;\n\temail?: string;\n\temail_verified?: boolean;\n\tgender?: string;\n\tbirthdate?: string;\n\tzoneinfo?: string;\n\tlocale?: string;\n\tphone_number?: string;\n\tphone_number_verified?: boolean;\n\taddress?: {\n\t\tformatted?: string;\n\t\tstreet_address?: string;\n\t\tlocality?: string;\n\t\tregion?: string;\n\t\tpostal_code?: string;\n\t\tcountry?: string;\n\t};\n\tupdated_at?: number;\n}\n\n/**\n * OIDC Discovery document\n */\nexport interface OidcDiscovery {\n\tissuer: string;\n\tauthorization_endpoint: string;\n\ttoken_endpoint: string;\n\tuserinfo_endpoint?: string;\n\tjwks_uri: string;\n\tscopes_supported?: string[];\n\tresponse_types_supported: string[];\n\tclaims_supported?: string[];\n}\n\n/**\n * Configuration for OIDC verification\n */\nexport interface OidcConfig {\n\tissuer: string;\n\taudience: string | string[];\n\tcacheDiscovery?: boolean;\n}\n\n/**\n * OIDC Verifier with auto-discovery and caching\n */\nexport class OidcVerifier<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tprivate discovery: OidcDiscovery | null = null;\n\tprivate jwks: jose.JWTVerifyGetKey | null = null;\n\tprivate readonly discoveryUrl: string;\n\n\tconstructor(private readonly config: OidcConfig) {\n\t\tthis.discoveryUrl = config.issuer.endsWith('/')\n\t\t\t? `${config.issuer}.well-known/openid-configuration`\n\t\t\t: `${config.issuer}/.well-known/openid-configuration`;\n\t}\n\n\tasync getDiscovery(): Promise<OidcDiscovery> {\n\t\tif (this.discovery && this.config.cacheDiscovery !== false) {\n\t\t\treturn this.discovery;\n\t\t}\n\n\t\tconst response = await fetch(this.discoveryUrl);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to fetch OIDC discovery: ${response.statusText}`);\n\t\t}\n\n\t\tthis.discovery = (await response.json()) as OidcDiscovery;\n\t\treturn this.discovery;\n\t}\n\n\tprivate async getJwks(): Promise<jose.JWTVerifyGetKey> {\n\t\tif (this.jwks && this.config.cacheDiscovery !== false) {\n\t\t\treturn this.jwks;\n\t\t}\n\n\t\tconst disc = await this.getDiscovery();\n\t\tthis.jwks = jose.createRemoteJWKSet(new URL(disc.jwks_uri));\n\t\treturn this.jwks;\n\t}\n\n\tasync verify(token: string): Promise<TClaims> {\n\t\tconst key = await this.getJwks();\n\t\tconst { payload } = await jose.jwtVerify(token, key, {\n\t\t\tissuer: this.config.issuer,\n\t\t\taudience: this.config.audience,\n\t\t});\n\t\treturn payload as unknown as TClaims;\n\t}\n\n\tasync verifyOrNull(token: string): Promise<TClaims | null> {\n\t\ttry {\n\t\t\treturn await this.verify(token);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync fetchUserInfo(token: string): Promise<TUserInfo | null> {\n\t\ttry {\n\t\t\tconst disc = await this.getDiscovery();\n\t\t\tif (!disc.userinfo_endpoint) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst response = await fetch(disc.userinfo_endpoint, {\n\t\t\t\theaders: { Authorization: `Bearer ${token}` },\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn (await response.json()) as TUserInfo;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclearCache(): void {\n\t\tthis.discovery = null;\n\t\tthis.jwks = null;\n\t}\n}\n"],"mappings":";;;;;;AA2EA,IAAa,eAAb,MAGE;CACD,AAAQ,YAAkC;CAC1C,AAAQ,OAAoC;CAC5C,AAAiB;CAEjB,YAA6BA,QAAoB;EAApB;AAC5B,OAAK,eAAe,OAAO,OAAO,SAAS,IAAI,IAC3C,EAAE,OAAO,OAAO,qCAChB,EAAE,OAAO,OAAO;CACpB;CAED,MAAM,eAAuC;AAC5C,MAAI,KAAK,aAAa,KAAK,OAAO,mBAAmB,MACpD,QAAO,KAAK;EAGb,MAAM,WAAW,MAAM,MAAM,KAAK,aAAa;AAC/C,OAAK,SAAS,GACb,OAAM,IAAI,OAAO,kCAAkC,SAAS,WAAW;AAGxE,OAAK,YAAa,MAAM,SAAS,MAAM;AACvC,SAAO,KAAK;CACZ;CAED,MAAc,UAAyC;AACtD,MAAI,KAAK,QAAQ,KAAK,OAAO,mBAAmB,MAC/C,QAAO,KAAK;EAGb,MAAM,OAAO,MAAM,KAAK,cAAc;AACtC,OAAK,OAAO,KAAK,mBAAmB,IAAI,IAAI,KAAK,UAAU;AAC3D,SAAO,KAAK;CACZ;CAED,MAAM,OAAOC,OAAiC;EAC7C,MAAM,MAAM,MAAM,KAAK,SAAS;EAChC,MAAM,EAAE,SAAS,GAAG,MAAM,KAAK,UAAU,OAAO,KAAK;GACpD,QAAQ,KAAK,OAAO;GACpB,UAAU,KAAK,OAAO;EACtB,EAAC;AACF,SAAO;CACP;CAED,MAAM,aAAaA,OAAwC;AAC1D,MAAI;AACH,UAAO,MAAM,KAAK,OAAO,MAAM;EAC/B,QAAO;AACP,UAAO;EACP;CACD;CAED,MAAM,cAAcA,OAA0C;AAC7D,MAAI;GACH,MAAM,OAAO,MAAM,KAAK,cAAc;AACtC,QAAK,KAAK,kBACT,QAAO;GAGR,MAAM,WAAW,MAAM,MAAM,KAAK,mBAAmB,EACpD,SAAS,EAAE,gBAAgB,SAAS,MAAM,EAAG,EAC7C,EAAC;AAEF,QAAK,SAAS,GACb,QAAO;AAGR,UAAQ,MAAM,SAAS,MAAM;EAC7B,QAAO;AACP,UAAO;EACP;CACD;CAED,aAAmB;AAClB,OAAK,YAAY;AACjB,OAAK,OAAO;CACZ;AACD"}
|
package/dist/oidc-Ca7GYwmM.d.mts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { JwtClaims } from "./jwt-kejix7rd.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/oidc.d.ts
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Standard OIDC claims (extends JWT claims)
|
|
7
|
-
*/
|
|
8
|
-
interface OidcClaims extends JwtClaims {
|
|
9
|
-
nonce?: string;
|
|
10
|
-
auth_time?: number;
|
|
11
|
-
at_hash?: string;
|
|
12
|
-
c_hash?: string;
|
|
13
|
-
azp?: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Standard OIDC user info claims
|
|
17
|
-
*/
|
|
18
|
-
interface OidcUserInfo {
|
|
19
|
-
sub: string;
|
|
20
|
-
name?: string;
|
|
21
|
-
given_name?: string;
|
|
22
|
-
family_name?: string;
|
|
23
|
-
middle_name?: string;
|
|
24
|
-
nickname?: string;
|
|
25
|
-
preferred_username?: string;
|
|
26
|
-
profile?: string;
|
|
27
|
-
picture?: string;
|
|
28
|
-
website?: string;
|
|
29
|
-
email?: string;
|
|
30
|
-
email_verified?: boolean;
|
|
31
|
-
gender?: string;
|
|
32
|
-
birthdate?: string;
|
|
33
|
-
zoneinfo?: string;
|
|
34
|
-
locale?: string;
|
|
35
|
-
phone_number?: string;
|
|
36
|
-
phone_number_verified?: boolean;
|
|
37
|
-
address?: {
|
|
38
|
-
formatted?: string;
|
|
39
|
-
street_address?: string;
|
|
40
|
-
locality?: string;
|
|
41
|
-
region?: string;
|
|
42
|
-
postal_code?: string;
|
|
43
|
-
country?: string;
|
|
44
|
-
};
|
|
45
|
-
updated_at?: number;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* OIDC Discovery document
|
|
49
|
-
*/
|
|
50
|
-
interface OidcDiscovery {
|
|
51
|
-
issuer: string;
|
|
52
|
-
authorization_endpoint: string;
|
|
53
|
-
token_endpoint: string;
|
|
54
|
-
userinfo_endpoint?: string;
|
|
55
|
-
jwks_uri: string;
|
|
56
|
-
scopes_supported?: string[];
|
|
57
|
-
response_types_supported: string[];
|
|
58
|
-
claims_supported?: string[];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Configuration for OIDC verification
|
|
62
|
-
*/
|
|
63
|
-
interface OidcConfig {
|
|
64
|
-
issuer: string;
|
|
65
|
-
audience: string | string[];
|
|
66
|
-
cacheDiscovery?: boolean;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* OIDC Verifier with auto-discovery and caching
|
|
70
|
-
*/
|
|
71
|
-
declare class OidcVerifier<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
|
|
72
|
-
private readonly config;
|
|
73
|
-
private discovery;
|
|
74
|
-
private jwks;
|
|
75
|
-
private readonly discoveryUrl;
|
|
76
|
-
constructor(config: OidcConfig);
|
|
77
|
-
getDiscovery(): Promise<OidcDiscovery>;
|
|
78
|
-
private getJwks;
|
|
79
|
-
verify(token: string): Promise<TClaims>;
|
|
80
|
-
verifyOrNull(token: string): Promise<TClaims | null>;
|
|
81
|
-
fetchUserInfo(token: string): Promise<TUserInfo | null>;
|
|
82
|
-
clearCache(): void;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=oidc.d.ts.map
|
|
85
|
-
//#endregion
|
|
86
|
-
export { OidcClaims, OidcConfig, OidcDiscovery, OidcUserInfo, OidcVerifier };
|
|
87
|
-
//# sourceMappingURL=oidc-Ca7GYwmM.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-Ca7GYwmM.d.mts","names":[],"sources":["../src/oidc.ts"],"sourcesContent":[],"mappings":";;;;;AAQA;AAWA;AAiCiB,UA5CA,UAAA,SAAmB,SA4CN,CAAA;EAcb,KAAA,CAAA,EAAA,MAAU;EASd,SAAA,CAAA,EAAA,MAAY;EAAA,OAAA,CAAA,EAAA,MAAA;EAAA,MACR,CAAA,EAAA,MAAA;EAAU,GAAG,CAAA,EAAA,MAAA;;;;;AAaP,UAtEN,YAAA,CAsEM;EAAO,GAwBQ,EAAA,MAAA;EAAO,IAAf,CAAA,EAAA,MAAA;EAAO,UASO,CAAA,EAAA,MAAA;EAAO,WAAf,CAAA,EAAA,MAAA;EAAO,WAQE,CAAA,EAAA,MAAA;EAAS,QAAjB,CAAA,EAAA,MAAA;EAAO,kBAAA,CAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;UA9E3B,aAAA;;;;;;;;;;;;;UAcA,UAAA;;;;;;;;cASJ,6BACI,aAAa,8BACX,eAAe;;;;;sBAMI;kBAMf,QAAQ;;yBAwBD,QAAQ;+BASF,QAAQ;gCAQP,QAAQ"}
|
package/dist/oidc-ChA17wLB.d.cts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { JwtClaims } from "./jwt-3eIuY2dg.cjs";
|
|
2
|
-
|
|
3
|
-
//#region src/oidc.d.ts
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Standard OIDC claims (extends JWT claims)
|
|
7
|
-
*/
|
|
8
|
-
interface OidcClaims extends JwtClaims {
|
|
9
|
-
nonce?: string;
|
|
10
|
-
auth_time?: number;
|
|
11
|
-
at_hash?: string;
|
|
12
|
-
c_hash?: string;
|
|
13
|
-
azp?: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Standard OIDC user info claims
|
|
17
|
-
*/
|
|
18
|
-
interface OidcUserInfo {
|
|
19
|
-
sub: string;
|
|
20
|
-
name?: string;
|
|
21
|
-
given_name?: string;
|
|
22
|
-
family_name?: string;
|
|
23
|
-
middle_name?: string;
|
|
24
|
-
nickname?: string;
|
|
25
|
-
preferred_username?: string;
|
|
26
|
-
profile?: string;
|
|
27
|
-
picture?: string;
|
|
28
|
-
website?: string;
|
|
29
|
-
email?: string;
|
|
30
|
-
email_verified?: boolean;
|
|
31
|
-
gender?: string;
|
|
32
|
-
birthdate?: string;
|
|
33
|
-
zoneinfo?: string;
|
|
34
|
-
locale?: string;
|
|
35
|
-
phone_number?: string;
|
|
36
|
-
phone_number_verified?: boolean;
|
|
37
|
-
address?: {
|
|
38
|
-
formatted?: string;
|
|
39
|
-
street_address?: string;
|
|
40
|
-
locality?: string;
|
|
41
|
-
region?: string;
|
|
42
|
-
postal_code?: string;
|
|
43
|
-
country?: string;
|
|
44
|
-
};
|
|
45
|
-
updated_at?: number;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* OIDC Discovery document
|
|
49
|
-
*/
|
|
50
|
-
interface OidcDiscovery {
|
|
51
|
-
issuer: string;
|
|
52
|
-
authorization_endpoint: string;
|
|
53
|
-
token_endpoint: string;
|
|
54
|
-
userinfo_endpoint?: string;
|
|
55
|
-
jwks_uri: string;
|
|
56
|
-
scopes_supported?: string[];
|
|
57
|
-
response_types_supported: string[];
|
|
58
|
-
claims_supported?: string[];
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Configuration for OIDC verification
|
|
62
|
-
*/
|
|
63
|
-
interface OidcConfig {
|
|
64
|
-
issuer: string;
|
|
65
|
-
audience: string | string[];
|
|
66
|
-
cacheDiscovery?: boolean;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* OIDC Verifier with auto-discovery and caching
|
|
70
|
-
*/
|
|
71
|
-
declare class OidcVerifier<TClaims extends OidcClaims = OidcClaims, TUserInfo extends OidcUserInfo = OidcUserInfo> {
|
|
72
|
-
private readonly config;
|
|
73
|
-
private discovery;
|
|
74
|
-
private jwks;
|
|
75
|
-
private readonly discoveryUrl;
|
|
76
|
-
constructor(config: OidcConfig);
|
|
77
|
-
getDiscovery(): Promise<OidcDiscovery>;
|
|
78
|
-
private getJwks;
|
|
79
|
-
verify(token: string): Promise<TClaims>;
|
|
80
|
-
verifyOrNull(token: string): Promise<TClaims | null>;
|
|
81
|
-
fetchUserInfo(token: string): Promise<TUserInfo | null>;
|
|
82
|
-
clearCache(): void;
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=oidc.d.ts.map
|
|
85
|
-
//#endregion
|
|
86
|
-
export { OidcClaims, OidcConfig, OidcDiscovery, OidcUserInfo, OidcVerifier };
|
|
87
|
-
//# sourceMappingURL=oidc-ChA17wLB.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-ChA17wLB.d.cts","names":[],"sources":["../src/oidc.ts"],"sourcesContent":[],"mappings":";;;;;AAQA;AAWA;AAiCiB,UA5CA,UAAA,SAAmB,SA4CN,CAAA;EAcb,KAAA,CAAA,EAAA,MAAU;EASd,SAAA,CAAA,EAAA,MAAY;EAAA,OAAA,CAAA,EAAA,MAAA;EAAA,MACR,CAAA,EAAA,MAAA;EAAU,GAAG,CAAA,EAAA,MAAA;;;;;AAaP,UAtEN,YAAA,CAsEM;EAAO,GAwBQ,EAAA,MAAA;EAAO,IAAf,CAAA,EAAA,MAAA;EAAO,UASO,CAAA,EAAA,MAAA;EAAO,WAAf,CAAA,EAAA,MAAA;EAAO,WAQE,CAAA,EAAA,MAAA;EAAS,QAAjB,CAAA,EAAA,MAAA;EAAO,kBAAA,CAAA,EAAA,MAAA;;;;;;;;;;;;;;;;;;;;;;;;;UA9E3B,aAAA;;;;;;;;;;;;;UAcA,UAAA;;;;;;;;cASJ,6BACI,aAAa,8BACX,eAAe;;;;;sBAMI;kBAMf,QAAQ;;yBAwBD,QAAQ;+BASF,QAAQ;gCAQP,QAAQ"}
|
package/dist/oidc-jdMfVyyC.cjs
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const jose = require_chunk.__toESM(require("jose"));
|
|
3
|
-
|
|
4
|
-
//#region src/oidc.ts
|
|
5
|
-
/**
|
|
6
|
-
* OIDC Verifier with auto-discovery and caching
|
|
7
|
-
*/
|
|
8
|
-
var OidcVerifier = class {
|
|
9
|
-
discovery = null;
|
|
10
|
-
jwks = null;
|
|
11
|
-
discoveryUrl;
|
|
12
|
-
constructor(config) {
|
|
13
|
-
this.config = config;
|
|
14
|
-
this.discoveryUrl = config.issuer.endsWith("/") ? `${config.issuer}.well-known/openid-configuration` : `${config.issuer}/.well-known/openid-configuration`;
|
|
15
|
-
}
|
|
16
|
-
async getDiscovery() {
|
|
17
|
-
if (this.discovery && this.config.cacheDiscovery !== false) return this.discovery;
|
|
18
|
-
const response = await fetch(this.discoveryUrl);
|
|
19
|
-
if (!response.ok) throw new Error(`Failed to fetch OIDC discovery: ${response.statusText}`);
|
|
20
|
-
this.discovery = await response.json();
|
|
21
|
-
return this.discovery;
|
|
22
|
-
}
|
|
23
|
-
async getJwks() {
|
|
24
|
-
if (this.jwks && this.config.cacheDiscovery !== false) return this.jwks;
|
|
25
|
-
const disc = await this.getDiscovery();
|
|
26
|
-
this.jwks = jose.createRemoteJWKSet(new URL(disc.jwks_uri));
|
|
27
|
-
return this.jwks;
|
|
28
|
-
}
|
|
29
|
-
async verify(token) {
|
|
30
|
-
const key = await this.getJwks();
|
|
31
|
-
const { payload } = await jose.jwtVerify(token, key, {
|
|
32
|
-
issuer: this.config.issuer,
|
|
33
|
-
audience: this.config.audience
|
|
34
|
-
});
|
|
35
|
-
return payload;
|
|
36
|
-
}
|
|
37
|
-
async verifyOrNull(token) {
|
|
38
|
-
try {
|
|
39
|
-
return await this.verify(token);
|
|
40
|
-
} catch {
|
|
41
|
-
return null;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
async fetchUserInfo(token) {
|
|
45
|
-
try {
|
|
46
|
-
const disc = await this.getDiscovery();
|
|
47
|
-
if (!disc.userinfo_endpoint) return null;
|
|
48
|
-
const response = await fetch(disc.userinfo_endpoint, { headers: { Authorization: `Bearer ${token}` } });
|
|
49
|
-
if (!response.ok) return null;
|
|
50
|
-
return await response.json();
|
|
51
|
-
} catch {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
clearCache() {
|
|
56
|
-
this.discovery = null;
|
|
57
|
-
this.jwks = null;
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
//#endregion
|
|
62
|
-
Object.defineProperty(exports, 'OidcVerifier', {
|
|
63
|
-
enumerable: true,
|
|
64
|
-
get: function () {
|
|
65
|
-
return OidcVerifier;
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
//# sourceMappingURL=oidc-jdMfVyyC.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oidc-jdMfVyyC.cjs","names":["config: OidcConfig","token: string"],"sources":["../src/oidc.ts"],"sourcesContent":["import * as jose from 'jose';\nimport type { JwtClaims, TokenExtractionOptions } from './jwt';\n\nexport type { TokenExtractionOptions };\n\n/**\n * Standard OIDC claims (extends JWT claims)\n */\nexport interface OidcClaims extends JwtClaims {\n\tnonce?: string;\n\tauth_time?: number;\n\tat_hash?: string;\n\tc_hash?: string;\n\tazp?: string;\n}\n\n/**\n * Standard OIDC user info claims\n */\nexport interface OidcUserInfo {\n\tsub: string;\n\tname?: string;\n\tgiven_name?: string;\n\tfamily_name?: string;\n\tmiddle_name?: string;\n\tnickname?: string;\n\tpreferred_username?: string;\n\tprofile?: string;\n\tpicture?: string;\n\twebsite?: string;\n\temail?: string;\n\temail_verified?: boolean;\n\tgender?: string;\n\tbirthdate?: string;\n\tzoneinfo?: string;\n\tlocale?: string;\n\tphone_number?: string;\n\tphone_number_verified?: boolean;\n\taddress?: {\n\t\tformatted?: string;\n\t\tstreet_address?: string;\n\t\tlocality?: string;\n\t\tregion?: string;\n\t\tpostal_code?: string;\n\t\tcountry?: string;\n\t};\n\tupdated_at?: number;\n}\n\n/**\n * OIDC Discovery document\n */\nexport interface OidcDiscovery {\n\tissuer: string;\n\tauthorization_endpoint: string;\n\ttoken_endpoint: string;\n\tuserinfo_endpoint?: string;\n\tjwks_uri: string;\n\tscopes_supported?: string[];\n\tresponse_types_supported: string[];\n\tclaims_supported?: string[];\n}\n\n/**\n * Configuration for OIDC verification\n */\nexport interface OidcConfig {\n\tissuer: string;\n\taudience: string | string[];\n\tcacheDiscovery?: boolean;\n}\n\n/**\n * OIDC Verifier with auto-discovery and caching\n */\nexport class OidcVerifier<\n\tTClaims extends OidcClaims = OidcClaims,\n\tTUserInfo extends OidcUserInfo = OidcUserInfo,\n> {\n\tprivate discovery: OidcDiscovery | null = null;\n\tprivate jwks: jose.JWTVerifyGetKey | null = null;\n\tprivate readonly discoveryUrl: string;\n\n\tconstructor(private readonly config: OidcConfig) {\n\t\tthis.discoveryUrl = config.issuer.endsWith('/')\n\t\t\t? `${config.issuer}.well-known/openid-configuration`\n\t\t\t: `${config.issuer}/.well-known/openid-configuration`;\n\t}\n\n\tasync getDiscovery(): Promise<OidcDiscovery> {\n\t\tif (this.discovery && this.config.cacheDiscovery !== false) {\n\t\t\treturn this.discovery;\n\t\t}\n\n\t\tconst response = await fetch(this.discoveryUrl);\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to fetch OIDC discovery: ${response.statusText}`);\n\t\t}\n\n\t\tthis.discovery = (await response.json()) as OidcDiscovery;\n\t\treturn this.discovery;\n\t}\n\n\tprivate async getJwks(): Promise<jose.JWTVerifyGetKey> {\n\t\tif (this.jwks && this.config.cacheDiscovery !== false) {\n\t\t\treturn this.jwks;\n\t\t}\n\n\t\tconst disc = await this.getDiscovery();\n\t\tthis.jwks = jose.createRemoteJWKSet(new URL(disc.jwks_uri));\n\t\treturn this.jwks;\n\t}\n\n\tasync verify(token: string): Promise<TClaims> {\n\t\tconst key = await this.getJwks();\n\t\tconst { payload } = await jose.jwtVerify(token, key, {\n\t\t\tissuer: this.config.issuer,\n\t\t\taudience: this.config.audience,\n\t\t});\n\t\treturn payload as unknown as TClaims;\n\t}\n\n\tasync verifyOrNull(token: string): Promise<TClaims | null> {\n\t\ttry {\n\t\t\treturn await this.verify(token);\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tasync fetchUserInfo(token: string): Promise<TUserInfo | null> {\n\t\ttry {\n\t\t\tconst disc = await this.getDiscovery();\n\t\t\tif (!disc.userinfo_endpoint) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst response = await fetch(disc.userinfo_endpoint, {\n\t\t\t\theaders: { Authorization: `Bearer ${token}` },\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn (await response.json()) as TUserInfo;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tclearCache(): void {\n\t\tthis.discovery = null;\n\t\tthis.jwks = null;\n\t}\n}\n"],"mappings":";;;;;;;AA2EA,IAAa,eAAb,MAGE;CACD,AAAQ,YAAkC;CAC1C,AAAQ,OAAoC;CAC5C,AAAiB;CAEjB,YAA6BA,QAAoB;EAApB;AAC5B,OAAK,eAAe,OAAO,OAAO,SAAS,IAAI,IAC3C,EAAE,OAAO,OAAO,qCAChB,EAAE,OAAO,OAAO;CACpB;CAED,MAAM,eAAuC;AAC5C,MAAI,KAAK,aAAa,KAAK,OAAO,mBAAmB,MACpD,QAAO,KAAK;EAGb,MAAM,WAAW,MAAM,MAAM,KAAK,aAAa;AAC/C,OAAK,SAAS,GACb,OAAM,IAAI,OAAO,kCAAkC,SAAS,WAAW;AAGxE,OAAK,YAAa,MAAM,SAAS,MAAM;AACvC,SAAO,KAAK;CACZ;CAED,MAAc,UAAyC;AACtD,MAAI,KAAK,QAAQ,KAAK,OAAO,mBAAmB,MAC/C,QAAO,KAAK;EAGb,MAAM,OAAO,MAAM,KAAK,cAAc;AACtC,OAAK,OAAO,KAAK,mBAAmB,IAAI,IAAI,KAAK,UAAU;AAC3D,SAAO,KAAK;CACZ;CAED,MAAM,OAAOC,OAAiC;EAC7C,MAAM,MAAM,MAAM,KAAK,SAAS;EAChC,MAAM,EAAE,SAAS,GAAG,MAAM,KAAK,UAAU,OAAO,KAAK;GACpD,QAAQ,KAAK,OAAO;GACpB,UAAU,KAAK,OAAO;EACtB,EAAC;AACF,SAAO;CACP;CAED,MAAM,aAAaA,OAAwC;AAC1D,MAAI;AACH,UAAO,MAAM,KAAK,OAAO,MAAM;EAC/B,QAAO;AACP,UAAO;EACP;CACD;CAED,MAAM,cAAcA,OAA0C;AAC7D,MAAI;GACH,MAAM,OAAO,MAAM,KAAK,cAAc;AACtC,QAAK,KAAK,kBACT,QAAO;GAGR,MAAM,WAAW,MAAM,MAAM,KAAK,mBAAmB,EACpD,SAAS,EAAE,gBAAgB,SAAS,MAAM,EAAG,EAC7C,EAAC;AAEF,QAAK,SAAS,GACb,QAAO;AAGR,UAAQ,MAAM,SAAS,MAAM;EAC7B,QAAO;AACP,UAAO;EACP;CACD;CAED,aAAmB;AAClB,OAAK,YAAY;AACjB,OAAK,OAAO;CACZ;AACD"}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import jwt from "jsonwebtoken";
|
|
2
|
-
|
|
3
|
-
//#region src/tokenManager.ts
|
|
4
|
-
var TokenManager = class {
|
|
5
|
-
accessTokenSecret;
|
|
6
|
-
refreshTokenSecret;
|
|
7
|
-
accessTokenExpiresIn;
|
|
8
|
-
refreshTokenExpiresIn;
|
|
9
|
-
constructor(options) {
|
|
10
|
-
this.accessTokenSecret = options.accessTokenSecret;
|
|
11
|
-
this.refreshTokenSecret = options.refreshTokenSecret;
|
|
12
|
-
this.accessTokenExpiresIn = options.accessTokenExpiresIn || "15m";
|
|
13
|
-
this.refreshTokenExpiresIn = options.refreshTokenExpiresIn || "7d";
|
|
14
|
-
}
|
|
15
|
-
generateTokenPair(payload) {
|
|
16
|
-
const accessToken = jwt.sign(payload, this.accessTokenSecret, { expiresIn: this.accessTokenExpiresIn });
|
|
17
|
-
const refreshToken = jwt.sign(payload, this.refreshTokenSecret, { expiresIn: this.refreshTokenExpiresIn });
|
|
18
|
-
return {
|
|
19
|
-
accessToken,
|
|
20
|
-
refreshToken
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
verifyAccessToken(token) {
|
|
24
|
-
try {
|
|
25
|
-
return jwt.verify(token, this.accessTokenSecret);
|
|
26
|
-
} catch (error) {
|
|
27
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
28
|
-
throw new Error(`Invalid access token: ${message}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
verifyRefreshToken(token) {
|
|
32
|
-
try {
|
|
33
|
-
return jwt.verify(token, this.refreshTokenSecret);
|
|
34
|
-
} catch (error) {
|
|
35
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
36
|
-
throw new Error(`Invalid refresh token: ${message}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
refreshAccessToken(refreshToken) {
|
|
40
|
-
const decoded = this.verifyRefreshToken(refreshToken);
|
|
41
|
-
const { iat, exp,...payload } = decoded;
|
|
42
|
-
return jwt.sign(payload, this.accessTokenSecret, { expiresIn: this.accessTokenExpiresIn });
|
|
43
|
-
}
|
|
44
|
-
decodeToken(token) {
|
|
45
|
-
try {
|
|
46
|
-
return jwt.decode(token);
|
|
47
|
-
} catch {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
isTokenExpired(token) {
|
|
52
|
-
const decoded = this.decodeToken(token);
|
|
53
|
-
if (!decoded) return true;
|
|
54
|
-
const now = Math.floor(Date.now() / 1e3);
|
|
55
|
-
return decoded.exp < now;
|
|
56
|
-
}
|
|
57
|
-
getTokenExpiration(token) {
|
|
58
|
-
const decoded = this.decodeToken(token);
|
|
59
|
-
if (!decoded) return null;
|
|
60
|
-
return new Date(decoded.exp * 1e3);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
//#endregion
|
|
65
|
-
export { TokenManager };
|
|
66
|
-
//# sourceMappingURL=tokenManager-BbylTW7F.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenManager-BbylTW7F.mjs","names":["options: TokenManagerOptions","payload: TokenPayload","token: string","refreshToken: string"],"sources":["../src/tokenManager.ts"],"sourcesContent":["import jwt from 'jsonwebtoken';\nimport type ms from 'ms';\n\nexport interface TokenPayload {\n\tuserId: string;\n\temail?: string;\n\t[key: string]: any;\n}\n\nexport interface TokenPair {\n\taccessToken: string;\n\trefreshToken: string;\n}\n\nexport interface TokenManagerOptions {\n\taccessTokenSecret: string;\n\trefreshTokenSecret: string;\n\taccessTokenExpiresIn?: ms.StringValue;\n\trefreshTokenExpiresIn?: ms.StringValue;\n}\n\nexport interface DecodedToken extends TokenPayload {\n\tiat: number;\n\texp: number;\n}\n\nexport class TokenManager {\n\tprivate accessTokenSecret: string;\n\tprivate refreshTokenSecret: string;\n\tprivate accessTokenExpiresIn: ms.StringValue;\n\tprivate refreshTokenExpiresIn: ms.StringValue;\n\n\tconstructor(options: TokenManagerOptions) {\n\t\tthis.accessTokenSecret = options.accessTokenSecret;\n\t\tthis.refreshTokenSecret = options.refreshTokenSecret;\n\t\tthis.accessTokenExpiresIn = options.accessTokenExpiresIn || '15m';\n\t\tthis.refreshTokenExpiresIn = options.refreshTokenExpiresIn || '7d';\n\t}\n\n\tgenerateTokenPair(payload: TokenPayload): TokenPair {\n\t\tconst accessToken = jwt.sign(payload, this.accessTokenSecret, {\n\t\t\texpiresIn: this.accessTokenExpiresIn,\n\t\t});\n\n\t\tconst refreshToken = jwt.sign(payload, this.refreshTokenSecret, {\n\t\t\texpiresIn: this.refreshTokenExpiresIn,\n\t\t});\n\n\t\treturn {\n\t\t\taccessToken,\n\t\t\trefreshToken,\n\t\t};\n\t}\n\n\tverifyAccessToken(token: string): DecodedToken {\n\t\ttry {\n\t\t\treturn jwt.verify(token, this.accessTokenSecret) as DecodedToken;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Invalid access token: ${message}`);\n\t\t}\n\t}\n\n\tverifyRefreshToken(token: string): DecodedToken {\n\t\ttry {\n\t\t\treturn jwt.verify(token, this.refreshTokenSecret) as DecodedToken;\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tthrow new Error(`Invalid refresh token: ${message}`);\n\t\t}\n\t}\n\n\trefreshAccessToken(refreshToken: string): string {\n\t\tconst decoded = this.verifyRefreshToken(refreshToken);\n\n\t\t// Remove JWT specific fields before creating new token\n\t\tconst { iat, exp, ...payload } = decoded;\n\n\t\treturn jwt.sign(payload, this.accessTokenSecret, {\n\t\t\texpiresIn: this.accessTokenExpiresIn,\n\t\t});\n\t}\n\n\tdecodeToken(token: string): DecodedToken | null {\n\t\ttry {\n\t\t\treturn jwt.decode(token) as DecodedToken;\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tisTokenExpired(token: string): boolean {\n\t\tconst decoded = this.decodeToken(token);\n\t\tif (!decoded) return true;\n\n\t\tconst now = Math.floor(Date.now() / 1000);\n\t\treturn decoded.exp < now;\n\t}\n\n\tgetTokenExpiration(token: string): Date | null {\n\t\tconst decoded = this.decodeToken(token);\n\t\tif (!decoded) return null;\n\n\t\treturn new Date(decoded.exp * 1000);\n\t}\n}\n"],"mappings":";;;AA0BA,IAAa,eAAb,MAA0B;CACzB,AAAQ;CACR,AAAQ;CACR,AAAQ;CACR,AAAQ;CAER,YAAYA,SAA8B;AACzC,OAAK,oBAAoB,QAAQ;AACjC,OAAK,qBAAqB,QAAQ;AAClC,OAAK,uBAAuB,QAAQ,wBAAwB;AAC5D,OAAK,wBAAwB,QAAQ,yBAAyB;CAC9D;CAED,kBAAkBC,SAAkC;EACnD,MAAM,cAAc,IAAI,KAAK,SAAS,KAAK,mBAAmB,EAC7D,WAAW,KAAK,qBAChB,EAAC;EAEF,MAAM,eAAe,IAAI,KAAK,SAAS,KAAK,oBAAoB,EAC/D,WAAW,KAAK,sBAChB,EAAC;AAEF,SAAO;GACN;GACA;EACA;CACD;CAED,kBAAkBC,OAA6B;AAC9C,MAAI;AACH,UAAO,IAAI,OAAO,OAAO,KAAK,kBAAkB;EAChD,SAAQ,OAAO;GACf,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACtE,SAAM,IAAI,OAAO,wBAAwB,QAAQ;EACjD;CACD;CAED,mBAAmBA,OAA6B;AAC/C,MAAI;AACH,UAAO,IAAI,OAAO,OAAO,KAAK,mBAAmB;EACjD,SAAQ,OAAO;GACf,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACtE,SAAM,IAAI,OAAO,yBAAyB,QAAQ;EAClD;CACD;CAED,mBAAmBC,cAA8B;EAChD,MAAM,UAAU,KAAK,mBAAmB,aAAa;EAGrD,MAAM,EAAE,KAAK,IAAK,GAAG,SAAS,GAAG;AAEjC,SAAO,IAAI,KAAK,SAAS,KAAK,mBAAmB,EAChD,WAAW,KAAK,qBAChB,EAAC;CACF;CAED,YAAYD,OAAoC;AAC/C,MAAI;AACH,UAAO,IAAI,OAAO,MAAM;EACxB,QAAO;AACP,UAAO;EACP;CACD;CAED,eAAeA,OAAwB;EACtC,MAAM,UAAU,KAAK,YAAY,MAAM;AACvC,OAAK,QAAS,QAAO;EAErB,MAAM,MAAM,KAAK,MAAM,KAAK,KAAK,GAAG,IAAK;AACzC,SAAO,QAAQ,MAAM;CACrB;CAED,mBAAmBA,OAA4B;EAC9C,MAAM,UAAU,KAAK,YAAY,MAAM;AACvC,OAAK,QAAS,QAAO;AAErB,SAAO,IAAI,KAAK,QAAQ,MAAM;CAC9B;AACD"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import ms from "ms";
|
|
2
|
-
|
|
3
|
-
//#region src/tokenManager.d.ts
|
|
4
|
-
interface TokenPayload {
|
|
5
|
-
userId: string;
|
|
6
|
-
email?: string;
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
}
|
|
9
|
-
interface TokenPair {
|
|
10
|
-
accessToken: string;
|
|
11
|
-
refreshToken: string;
|
|
12
|
-
}
|
|
13
|
-
interface TokenManagerOptions {
|
|
14
|
-
accessTokenSecret: string;
|
|
15
|
-
refreshTokenSecret: string;
|
|
16
|
-
accessTokenExpiresIn?: ms.StringValue;
|
|
17
|
-
refreshTokenExpiresIn?: ms.StringValue;
|
|
18
|
-
}
|
|
19
|
-
interface DecodedToken extends TokenPayload {
|
|
20
|
-
iat: number;
|
|
21
|
-
exp: number;
|
|
22
|
-
}
|
|
23
|
-
declare class TokenManager {
|
|
24
|
-
private accessTokenSecret;
|
|
25
|
-
private refreshTokenSecret;
|
|
26
|
-
private accessTokenExpiresIn;
|
|
27
|
-
private refreshTokenExpiresIn;
|
|
28
|
-
constructor(options: TokenManagerOptions);
|
|
29
|
-
generateTokenPair(payload: TokenPayload): TokenPair;
|
|
30
|
-
verifyAccessToken(token: string): DecodedToken;
|
|
31
|
-
verifyRefreshToken(token: string): DecodedToken;
|
|
32
|
-
refreshAccessToken(refreshToken: string): string;
|
|
33
|
-
decodeToken(token: string): DecodedToken | null;
|
|
34
|
-
isTokenExpired(token: string): boolean;
|
|
35
|
-
getTokenExpiration(token: string): Date | null;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=tokenManager.d.ts.map
|
|
38
|
-
//#endregion
|
|
39
|
-
export { DecodedToken, TokenManager, TokenManagerOptions, TokenPair, TokenPayload };
|
|
40
|
-
//# sourceMappingURL=tokenManager-CL3yE06D.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenManager-CL3yE06D.d.cts","names":[],"sources":["../src/tokenManager.ts"],"sourcesContent":[],"mappings":";;;UAGiB,YAAA;;EAAA,KAAA,CAAA,EAAA,MAAA;EAMA,CAAA,GAAA,EAAA,MAAS,CAAA,EAAA,GAAA;AAK1B;AAAoC,UALnB,SAAA,CAKmB;EAAA,WAGT,EAAA,MAAA;EAAW,YACV,EAAA,MAAA;AAAW;AAGtB,UAPA,mBAAA,CAOqB;EAKzB,iBAAY,EAAA,MAAA;EAAA,kBAAA,EAAA,MAAA;EAAA,oBAMH,CAAA,EAfE,EAAA,CAAG,WAeL;EAAmB,qBAOb,CAAA,EArBH,EAAA,CAAG,WAqBA;;AAeO,UAjClB,YAAA,SAAqB,YAiCH,CAAA;EAAY,GASX,EAAA,MAAA;EAAY,GAoBnB,EAAA,MAAA;;AAgBW,cAzE3B,YAAA,CAyE2B;;;;;uBAnElB;6BAOM,eAAe;oCAeR;qCASC;;8BAoBP;;qCAgBO"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import ms from "ms";
|
|
2
|
-
|
|
3
|
-
//#region src/tokenManager.d.ts
|
|
4
|
-
interface TokenPayload {
|
|
5
|
-
userId: string;
|
|
6
|
-
email?: string;
|
|
7
|
-
[key: string]: any;
|
|
8
|
-
}
|
|
9
|
-
interface TokenPair {
|
|
10
|
-
accessToken: string;
|
|
11
|
-
refreshToken: string;
|
|
12
|
-
}
|
|
13
|
-
interface TokenManagerOptions {
|
|
14
|
-
accessTokenSecret: string;
|
|
15
|
-
refreshTokenSecret: string;
|
|
16
|
-
accessTokenExpiresIn?: ms.StringValue;
|
|
17
|
-
refreshTokenExpiresIn?: ms.StringValue;
|
|
18
|
-
}
|
|
19
|
-
interface DecodedToken extends TokenPayload {
|
|
20
|
-
iat: number;
|
|
21
|
-
exp: number;
|
|
22
|
-
}
|
|
23
|
-
declare class TokenManager {
|
|
24
|
-
private accessTokenSecret;
|
|
25
|
-
private refreshTokenSecret;
|
|
26
|
-
private accessTokenExpiresIn;
|
|
27
|
-
private refreshTokenExpiresIn;
|
|
28
|
-
constructor(options: TokenManagerOptions);
|
|
29
|
-
generateTokenPair(payload: TokenPayload): TokenPair;
|
|
30
|
-
verifyAccessToken(token: string): DecodedToken;
|
|
31
|
-
verifyRefreshToken(token: string): DecodedToken;
|
|
32
|
-
refreshAccessToken(refreshToken: string): string;
|
|
33
|
-
decodeToken(token: string): DecodedToken | null;
|
|
34
|
-
isTokenExpired(token: string): boolean;
|
|
35
|
-
getTokenExpiration(token: string): Date | null;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=tokenManager.d.ts.map
|
|
38
|
-
//#endregion
|
|
39
|
-
export { DecodedToken, TokenManager, TokenManagerOptions, TokenPair, TokenPayload };
|
|
40
|
-
//# sourceMappingURL=tokenManager-CosB7J0i.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenManager-CosB7J0i.d.mts","names":[],"sources":["../src/tokenManager.ts"],"sourcesContent":[],"mappings":";;;UAGiB,YAAA;;EAAA,KAAA,CAAA,EAAA,MAAA;EAMA,CAAA,GAAA,EAAA,MAAS,CAAA,EAAA,GAAA;AAK1B;AAAoC,UALnB,SAAA,CAKmB;EAAA,WAGT,EAAA,MAAA;EAAW,YACV,EAAA,MAAA;AAAW;AAGtB,UAPA,mBAAA,CAOqB;EAKzB,iBAAY,EAAA,MAAA;EAAA,kBAAA,EAAA,MAAA;EAAA,oBAMH,CAAA,EAfE,EAAA,CAAG,WAeL;EAAmB,qBAOb,CAAA,EArBH,EAAA,CAAG,WAqBA;;AAeO,UAjClB,YAAA,SAAqB,YAiCH,CAAA;EAAY,GASX,EAAA,MAAA;EAAY,GAoBnB,EAAA,MAAA;;AAgBW,cAzE3B,YAAA,CAyE2B;;;;;uBAnElB;6BAOM,eAAe;oCAeR;qCASC;;8BAoBP;;qCAgBO"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const jsonwebtoken = require_chunk.__toESM(require("jsonwebtoken"));
|
|
3
|
-
|
|
4
|
-
//#region src/tokenManager.ts
|
|
5
|
-
var TokenManager = class {
|
|
6
|
-
accessTokenSecret;
|
|
7
|
-
refreshTokenSecret;
|
|
8
|
-
accessTokenExpiresIn;
|
|
9
|
-
refreshTokenExpiresIn;
|
|
10
|
-
constructor(options) {
|
|
11
|
-
this.accessTokenSecret = options.accessTokenSecret;
|
|
12
|
-
this.refreshTokenSecret = options.refreshTokenSecret;
|
|
13
|
-
this.accessTokenExpiresIn = options.accessTokenExpiresIn || "15m";
|
|
14
|
-
this.refreshTokenExpiresIn = options.refreshTokenExpiresIn || "7d";
|
|
15
|
-
}
|
|
16
|
-
generateTokenPair(payload) {
|
|
17
|
-
const accessToken = jsonwebtoken.default.sign(payload, this.accessTokenSecret, { expiresIn: this.accessTokenExpiresIn });
|
|
18
|
-
const refreshToken = jsonwebtoken.default.sign(payload, this.refreshTokenSecret, { expiresIn: this.refreshTokenExpiresIn });
|
|
19
|
-
return {
|
|
20
|
-
accessToken,
|
|
21
|
-
refreshToken
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
verifyAccessToken(token) {
|
|
25
|
-
try {
|
|
26
|
-
return jsonwebtoken.default.verify(token, this.accessTokenSecret);
|
|
27
|
-
} catch (error) {
|
|
28
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
29
|
-
throw new Error(`Invalid access token: ${message}`);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
verifyRefreshToken(token) {
|
|
33
|
-
try {
|
|
34
|
-
return jsonwebtoken.default.verify(token, this.refreshTokenSecret);
|
|
35
|
-
} catch (error) {
|
|
36
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
37
|
-
throw new Error(`Invalid refresh token: ${message}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
refreshAccessToken(refreshToken) {
|
|
41
|
-
const decoded = this.verifyRefreshToken(refreshToken);
|
|
42
|
-
const { iat, exp,...payload } = decoded;
|
|
43
|
-
return jsonwebtoken.default.sign(payload, this.accessTokenSecret, { expiresIn: this.accessTokenExpiresIn });
|
|
44
|
-
}
|
|
45
|
-
decodeToken(token) {
|
|
46
|
-
try {
|
|
47
|
-
return jsonwebtoken.default.decode(token);
|
|
48
|
-
} catch {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
isTokenExpired(token) {
|
|
53
|
-
const decoded = this.decodeToken(token);
|
|
54
|
-
if (!decoded) return true;
|
|
55
|
-
const now = Math.floor(Date.now() / 1e3);
|
|
56
|
-
return decoded.exp < now;
|
|
57
|
-
}
|
|
58
|
-
getTokenExpiration(token) {
|
|
59
|
-
const decoded = this.decodeToken(token);
|
|
60
|
-
if (!decoded) return null;
|
|
61
|
-
return new Date(decoded.exp * 1e3);
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
//#endregion
|
|
66
|
-
Object.defineProperty(exports, 'TokenManager', {
|
|
67
|
-
enumerable: true,
|
|
68
|
-
get: function () {
|
|
69
|
-
return TokenManager;
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
//# sourceMappingURL=tokenManager-PQ-OI_NU.cjs.map
|