@take-out/better-auth-utils 0.0.66 → 0.0.68
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/README.md +74 -104
- package/dist/cjs/createAuthClient.cjs +38 -27
- package/dist/cjs/createAuthClient.js +32 -37
- package/dist/cjs/createAuthClient.js.map +2 -2
- package/dist/cjs/createAuthClient.native.js +57 -33
- package/dist/cjs/createAuthClient.native.js.map +1 -1
- package/dist/cjs/server.cjs +94 -0
- package/dist/cjs/server.js +87 -0
- package/dist/cjs/server.js.map +6 -0
- package/dist/cjs/server.native.js +196 -0
- package/dist/cjs/server.native.js.map +1 -0
- package/dist/esm/createAuthClient.js +32 -37
- package/dist/esm/createAuthClient.js.map +2 -2
- package/dist/esm/createAuthClient.mjs +38 -27
- package/dist/esm/createAuthClient.mjs.map +1 -1
- package/dist/esm/createAuthClient.native.js +57 -33
- package/dist/esm/createAuthClient.native.js.map +1 -1
- package/dist/esm/server.js +71 -0
- package/dist/esm/server.js.map +6 -0
- package/dist/esm/server.mjs +67 -0
- package/dist/esm/server.mjs.map +1 -0
- package/dist/esm/server.native.js +166 -0
- package/dist/esm/server.native.js.map +1 -0
- package/package.json +11 -4
- package/src/createAuthClient.ts +74 -70
- package/src/server.ts +149 -0
- package/types/createAuthClient.d.ts +13 -6
- package/types/createAuthClient.d.ts.map +2 -2
- package/types/server.d.ts +45 -0
- package/types/server.d.ts.map +19 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createAuthClient_exports","__export","createBetterAuthClient","module","exports","import_helpers","require","import_client","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","createAuthClient_exports","__export","createBetterAuthClient","module","exports","import_helpers","require","import_client","options","onAuthStateChange","onAuthError","createUser","storagePrefix","retryDelay","useJWT","authCookieNames","authClientOptions","empty","state","session","user","token","keysStorage","createStorageValue","stateStorage","createAuthClientWithSession","createAuthClient","fetchOptions","credentials","headers","Authorization","authClient","_keysStorage_get","existingSession","get","authState","createEmitter","comparator","isEqualDeepLite","authClientVersion","setState","update","current","next","set","emit","setAuthClientToken","props","updateAuthClient","Math","random","subscribeToAuthEffect","dispose","retryTimer","useSession","subscribe","_authState_value","data","dataGeneric","isPending","error","scheduleAuthRetry","hasPersistedSession","nextState","_data_session","sessionUpdate","previousSession","isNewSession","id","userId","getValidToken","then","delayMs","clearTimeout","setTimeout","_res_data","res","$fetch","console","statusText","clearAuthClientToken","remove","clearAuthCookies","document","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","cookieName","cookie","domain","window","location","hostname","startsWith","slice","err","return","clearAllAuth","clearState","getAuth","loggedIn","useAuth","useEmitterValue","addEventListener"],"sources":["../../src/createAuthClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all) __defProp(target, name, {
|
|
7
|
+
get: all[name],
|
|
8
|
+
enumerable: !0
|
|
9
|
+
});
|
|
10
|
+
},
|
|
11
|
+
__copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
13
|
+
get: () => from[key],
|
|
14
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
19
|
+
value: !0
|
|
20
|
+
}), mod);
|
|
21
|
+
var server_exports = {};
|
|
22
|
+
__export(server_exports, {
|
|
23
|
+
InvalidTokenError: () => InvalidTokenError,
|
|
24
|
+
NotAuthenticatedError: () => NotAuthenticatedError,
|
|
25
|
+
getAuthDataFromRequest: () => getAuthDataFromRequest,
|
|
26
|
+
isValidJWT: () => isValidJWT,
|
|
27
|
+
validateToken: () => validateToken
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(server_exports);
|
|
30
|
+
var import_jose = require("jose");
|
|
31
|
+
class NotAuthenticatedError extends Error {}
|
|
32
|
+
class InvalidTokenError extends Error {}
|
|
33
|
+
async function getAuthDataFromRequest(authServer, req, tokenOptions) {
|
|
34
|
+
const authHeader = req.headers.get("authorization"),
|
|
35
|
+
cookie = authHeader?.split("Bearer ")[1],
|
|
36
|
+
newHeaders = new Headers(req.headers);
|
|
37
|
+
cookie && newHeaders.set("Cookie", cookie);
|
|
38
|
+
try {
|
|
39
|
+
const session = await authServer.api.getSession({
|
|
40
|
+
headers: newHeaders
|
|
41
|
+
});
|
|
42
|
+
if (session?.user) return {
|
|
43
|
+
id: session.user.id,
|
|
44
|
+
email: session.user.email || void 0,
|
|
45
|
+
role: session.user.role === "admin" ? "admin" : void 0
|
|
46
|
+
};
|
|
47
|
+
} catch {}
|
|
48
|
+
const jwtToken = authHeader?.replace("Bearer ", "");
|
|
49
|
+
if (jwtToken) try {
|
|
50
|
+
const payload = await validateToken(jwtToken, tokenOptions),
|
|
51
|
+
userId = payload?.id || payload?.sub;
|
|
52
|
+
if (userId) return {
|
|
53
|
+
id: userId,
|
|
54
|
+
email: payload.email,
|
|
55
|
+
role: payload.role === "admin" ? "admin" : void 0
|
|
56
|
+
};
|
|
57
|
+
} catch (err) {
|
|
58
|
+
if (!(err instanceof InvalidTokenError)) throw err;
|
|
59
|
+
}
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
async function validateToken(token, options) {
|
|
63
|
+
const {
|
|
64
|
+
baseUrl = process.env.ONE_SERVER_URL,
|
|
65
|
+
forceIssuer = process.env.FORCE_ISSUER || "",
|
|
66
|
+
jwksPath = "/api/auth/jwks"
|
|
67
|
+
} = options || {};
|
|
68
|
+
if (!baseUrl) throw new Error("No baseURL!");
|
|
69
|
+
const normalizedBaseUrl = removeTrailingSlash(baseUrl),
|
|
70
|
+
url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`,
|
|
71
|
+
JWKS = (0, import_jose.createRemoteJWKSet)(new URL(url));
|
|
72
|
+
try {
|
|
73
|
+
const verifyOptions = forceIssuer ? {} : {
|
|
74
|
+
issuer: normalizedBaseUrl,
|
|
75
|
+
audience: normalizedBaseUrl
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
payload
|
|
79
|
+
} = await (0, import_jose.jwtVerify)(token, JWKS, verifyOptions);
|
|
80
|
+
return payload;
|
|
81
|
+
} catch (error) {
|
|
82
|
+
throw new InvalidTokenError(`${error}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
async function isValidJWT(token, options) {
|
|
86
|
+
try {
|
|
87
|
+
return await validateToken(token, options), !0;
|
|
88
|
+
} catch {
|
|
89
|
+
return !1;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function removeTrailingSlash(str) {
|
|
93
|
+
return str.replace(/\/$/, "");
|
|
94
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: !0 });
|
|
8
|
+
}, __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
!__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
|
+
var server_exports = {};
|
|
16
|
+
__export(server_exports, {
|
|
17
|
+
InvalidTokenError: () => InvalidTokenError,
|
|
18
|
+
NotAuthenticatedError: () => NotAuthenticatedError,
|
|
19
|
+
getAuthDataFromRequest: () => getAuthDataFromRequest,
|
|
20
|
+
isValidJWT: () => isValidJWT,
|
|
21
|
+
validateToken: () => validateToken
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(server_exports);
|
|
24
|
+
var import_jose = require("jose");
|
|
25
|
+
class NotAuthenticatedError extends Error {
|
|
26
|
+
}
|
|
27
|
+
class InvalidTokenError extends Error {
|
|
28
|
+
}
|
|
29
|
+
async function getAuthDataFromRequest(authServer, req, tokenOptions) {
|
|
30
|
+
const authHeader = req.headers.get("authorization"), cookie = authHeader?.split("Bearer ")[1], newHeaders = new Headers(req.headers);
|
|
31
|
+
cookie && newHeaders.set("Cookie", cookie);
|
|
32
|
+
try {
|
|
33
|
+
const session = await authServer.api.getSession({ headers: newHeaders });
|
|
34
|
+
if (session?.user)
|
|
35
|
+
return {
|
|
36
|
+
id: session.user.id,
|
|
37
|
+
email: session.user.email || void 0,
|
|
38
|
+
role: session.user.role === "admin" ? "admin" : void 0
|
|
39
|
+
};
|
|
40
|
+
} catch {
|
|
41
|
+
}
|
|
42
|
+
const jwtToken = authHeader?.replace("Bearer ", "");
|
|
43
|
+
if (jwtToken)
|
|
44
|
+
try {
|
|
45
|
+
const payload = await validateToken(jwtToken, tokenOptions), userId = payload?.id || payload?.sub;
|
|
46
|
+
if (userId)
|
|
47
|
+
return {
|
|
48
|
+
id: userId,
|
|
49
|
+
email: payload.email,
|
|
50
|
+
role: payload.role === "admin" ? "admin" : void 0
|
|
51
|
+
};
|
|
52
|
+
} catch (err) {
|
|
53
|
+
if (!(err instanceof InvalidTokenError))
|
|
54
|
+
throw err;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
async function validateToken(token, options) {
|
|
59
|
+
const {
|
|
60
|
+
baseUrl = process.env.ONE_SERVER_URL,
|
|
61
|
+
forceIssuer = process.env.FORCE_ISSUER || "",
|
|
62
|
+
jwksPath = "/api/auth/jwks"
|
|
63
|
+
} = options || {};
|
|
64
|
+
if (!baseUrl)
|
|
65
|
+
throw new Error("No baseURL!");
|
|
66
|
+
const normalizedBaseUrl = removeTrailingSlash(baseUrl), url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`, JWKS = (0, import_jose.createRemoteJWKSet)(new URL(url));
|
|
67
|
+
try {
|
|
68
|
+
const verifyOptions = forceIssuer ? {} : {
|
|
69
|
+
issuer: normalizedBaseUrl,
|
|
70
|
+
audience: normalizedBaseUrl
|
|
71
|
+
}, { payload } = await (0, import_jose.jwtVerify)(token, JWKS, verifyOptions);
|
|
72
|
+
return payload;
|
|
73
|
+
} catch (error) {
|
|
74
|
+
throw new InvalidTokenError(`${error}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function isValidJWT(token, options) {
|
|
78
|
+
try {
|
|
79
|
+
return await validateToken(token, options), !0;
|
|
80
|
+
} catch {
|
|
81
|
+
return !1;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function removeTrailingSlash(str) {
|
|
85
|
+
return str.replace(/\/$/, "");
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/server.ts"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,kBAA+D;AAiBxD,MAAM,8BAA8B,MAAM;AAAC;AAC3C,MAAM,0BAA0B,MAAM;AAAC;AAiB9C,eAAsB,uBACpB,YACA,KACA,cAC0B;AAI1B,QAAM,aAAa,IAAI,QAAQ,IAAI,eAAe,GAC5C,SAAS,YAAY,MAAM,SAAS,EAAE,CAAC,GAEvC,aAAa,IAAI,QAAQ,IAAI,OAAO;AAC1C,EAAI,UACF,WAAW,IAAI,UAAU,MAAM;AAIjC,MAAI;AACF,UAAM,UAAU,MAAM,WAAW,IAAI,WAAW,EAAE,SAAS,WAAW,CAAC;AACvE,QAAI,SAAS;AACX,aAAO;AAAA,QACL,IAAI,QAAQ,KAAK;AAAA,QACjB,OAAO,QAAQ,KAAK,SAAS;AAAA,QAC7B,MAAM,QAAQ,KAAK,SAAS,UAAU,UAAU;AAAA,MAClD;AAAA,EAEJ,QAAQ;AAAA,EAER;AAIA,QAAM,WAAW,YAAY,QAAQ,WAAW,EAAE;AAElD,MAAI;AACF,QAAI;AACF,YAAM,UAAU,MAAM,cAAc,UAAU,YAAY,GACpD,SAAU,SAAiB,MAAM,SAAS;AAChD,UAAI;AACF,eAAO;AAAA,UACL,IAAI;AAAA,UACJ,OAAQ,QAAgB;AAAA,UACxB,MAAO,QAAgB,SAAS,UAAU,UAAU;AAAA,QACtD;AAAA,IAEJ,SAAS,KAAK;AACZ,UAAI,EAAE,eAAe;AACnB,cAAM;AAAA,IAEV;AAGF,SAAO;AACT;AAIA,eAAsB,cACpB,OACA,SACqB;AACrB,QAAM;AAAA,IACJ,UAAU,QAAQ,IAAI;AAAA,IACtB,cAAc,QAAQ,IAAI,gBAAgB;AAAA,IAC1C,WAAW;AAAA,EACb,IAAI,WAAW,CAAC;AAEhB,MAAI,CAAC;AACH,UAAM,IAAI,MAAM,aAAa;AAG/B,QAAM,oBAAoB,oBAAoB,OAAO,GAC/C,MAAM,GAAG,eAAe,iBAAiB,GAAG,QAAQ,IAGpD,WAAO,gCAAmB,IAAI,IAAI,GAAG,CAAC;AAE5C,MAAI;AACF,UAAM,gBAAgB,cAClB,CAAC,IACD;AAAA,MACE,QAAQ;AAAA,MACR,UAAU;AAAA,IACZ,GAEE,EAAE,QAAQ,IAAI,UAAM,uBAAU,OAAO,MAAM,aAAa;AAE9D,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,IAAI,kBAAkB,GAAG,KAAK,EAAE;AAAA,EACxC;AACF;AAEA,eAAsB,WACpB,OACA,SACkB;AAClB,MAAI;AACF,iBAAM,cAAc,OAAO,OAAO,GAC3B;AAAA,EACT,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEA,SAAS,oBAAoB,KAAa;AACxC,SAAO,IAAI,QAAQ,OAAO,EAAE;AAC9B;",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all) __defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: !0
|
|
11
|
+
});
|
|
12
|
+
},
|
|
13
|
+
__copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
15
|
+
get: () => from[key],
|
|
16
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
17
|
+
});
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
21
|
+
value: !0
|
|
22
|
+
}), mod);
|
|
23
|
+
var server_exports = {};
|
|
24
|
+
__export(server_exports, {
|
|
25
|
+
InvalidTokenError: () => InvalidTokenError,
|
|
26
|
+
NotAuthenticatedError: () => NotAuthenticatedError,
|
|
27
|
+
getAuthDataFromRequest: () => getAuthDataFromRequest,
|
|
28
|
+
isValidJWT: () => isValidJWT,
|
|
29
|
+
validateToken: () => validateToken
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(server_exports);
|
|
32
|
+
var import_jose = require("jose");
|
|
33
|
+
function _assert_this_initialized(self) {
|
|
34
|
+
if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
35
|
+
return self;
|
|
36
|
+
}
|
|
37
|
+
function _call_super(_this, derived, args) {
|
|
38
|
+
return derived = _get_prototype_of(derived), _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
|
|
39
|
+
}
|
|
40
|
+
function _class_call_check(instance, Constructor) {
|
|
41
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
42
|
+
}
|
|
43
|
+
function _construct(Parent, args, Class) {
|
|
44
|
+
return _is_native_reflect_construct() ? _construct = Reflect.construct : _construct = function (Parent2, args2, Class2) {
|
|
45
|
+
var a = [null];
|
|
46
|
+
a.push.apply(a, args2);
|
|
47
|
+
var Constructor = Function.bind.apply(Parent2, a),
|
|
48
|
+
instance = new Constructor();
|
|
49
|
+
return Class2 && _set_prototype_of(instance, Class2.prototype), instance;
|
|
50
|
+
}, _construct.apply(null, arguments);
|
|
51
|
+
}
|
|
52
|
+
function _get_prototype_of(o) {
|
|
53
|
+
return _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function (o2) {
|
|
54
|
+
return o2.__proto__ || Object.getPrototypeOf(o2);
|
|
55
|
+
}, _get_prototype_of(o);
|
|
56
|
+
}
|
|
57
|
+
function _inherits(subClass, superClass) {
|
|
58
|
+
if (typeof superClass != "function" && superClass !== null) throw new TypeError("Super expression must either be null or a function");
|
|
59
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
60
|
+
constructor: {
|
|
61
|
+
value: subClass,
|
|
62
|
+
writable: !0,
|
|
63
|
+
configurable: !0
|
|
64
|
+
}
|
|
65
|
+
}), superClass && _set_prototype_of(subClass, superClass);
|
|
66
|
+
}
|
|
67
|
+
function _instanceof(left, right) {
|
|
68
|
+
return right != null && typeof Symbol < "u" && right[Symbol.hasInstance] ? !!right[Symbol.hasInstance](left) : left instanceof right;
|
|
69
|
+
}
|
|
70
|
+
function _is_native_function(fn) {
|
|
71
|
+
return Function.toString.call(fn).indexOf("[native code]") !== -1;
|
|
72
|
+
}
|
|
73
|
+
function _possible_constructor_return(self, call) {
|
|
74
|
+
return call && (_type_of(call) === "object" || typeof call == "function") ? call : _assert_this_initialized(self);
|
|
75
|
+
}
|
|
76
|
+
function _set_prototype_of(o, p) {
|
|
77
|
+
return _set_prototype_of = Object.setPrototypeOf || function (o2, p2) {
|
|
78
|
+
return o2.__proto__ = p2, o2;
|
|
79
|
+
}, _set_prototype_of(o, p);
|
|
80
|
+
}
|
|
81
|
+
function _type_of(obj) {
|
|
82
|
+
"@swc/helpers - typeof";
|
|
83
|
+
|
|
84
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
85
|
+
}
|
|
86
|
+
function _wrap_native_super(Class) {
|
|
87
|
+
var _cache = typeof Map == "function" ? /* @__PURE__ */new Map() : void 0;
|
|
88
|
+
return _wrap_native_super = function (Class2) {
|
|
89
|
+
if (Class2 === null || !_is_native_function(Class2)) return Class2;
|
|
90
|
+
if (typeof Class2 != "function") throw new TypeError("Super expression must either be null or a function");
|
|
91
|
+
if (typeof _cache < "u") {
|
|
92
|
+
if (_cache.has(Class2)) return _cache.get(Class2);
|
|
93
|
+
_cache.set(Class2, Wrapper);
|
|
94
|
+
}
|
|
95
|
+
function Wrapper() {
|
|
96
|
+
return _construct(Class2, arguments, _get_prototype_of(this).constructor);
|
|
97
|
+
}
|
|
98
|
+
return Wrapper.prototype = Object.create(Class2.prototype, {
|
|
99
|
+
constructor: {
|
|
100
|
+
value: Wrapper,
|
|
101
|
+
enumerable: !1,
|
|
102
|
+
writable: !0,
|
|
103
|
+
configurable: !0
|
|
104
|
+
}
|
|
105
|
+
}), _set_prototype_of(Wrapper, Class2);
|
|
106
|
+
}, _wrap_native_super(Class);
|
|
107
|
+
}
|
|
108
|
+
function _is_native_reflect_construct() {
|
|
109
|
+
try {
|
|
110
|
+
var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
|
|
111
|
+
} catch {}
|
|
112
|
+
return (_is_native_reflect_construct = function () {
|
|
113
|
+
return !!result;
|
|
114
|
+
})();
|
|
115
|
+
}
|
|
116
|
+
var NotAuthenticatedError = /* @__PURE__ */function (Error1) {
|
|
117
|
+
"use strict";
|
|
118
|
+
|
|
119
|
+
_inherits(NotAuthenticatedError2, Error1);
|
|
120
|
+
function NotAuthenticatedError2() {
|
|
121
|
+
return _class_call_check(this, NotAuthenticatedError2), _call_super(this, NotAuthenticatedError2, arguments);
|
|
122
|
+
}
|
|
123
|
+
return NotAuthenticatedError2;
|
|
124
|
+
}(_wrap_native_super(Error)),
|
|
125
|
+
InvalidTokenError = /* @__PURE__ */function (Error1) {
|
|
126
|
+
"use strict";
|
|
127
|
+
|
|
128
|
+
_inherits(InvalidTokenError2, Error1);
|
|
129
|
+
function InvalidTokenError2() {
|
|
130
|
+
return _class_call_check(this, InvalidTokenError2), _call_super(this, InvalidTokenError2, arguments);
|
|
131
|
+
}
|
|
132
|
+
return InvalidTokenError2;
|
|
133
|
+
}(_wrap_native_super(Error));
|
|
134
|
+
async function getAuthDataFromRequest(authServer, req, tokenOptions) {
|
|
135
|
+
var authHeader = req.headers.get("authorization"),
|
|
136
|
+
cookie = authHeader?.split("Bearer ")[1],
|
|
137
|
+
newHeaders = new Headers(req.headers);
|
|
138
|
+
cookie && newHeaders.set("Cookie", cookie);
|
|
139
|
+
try {
|
|
140
|
+
var session = await authServer.api.getSession({
|
|
141
|
+
headers: newHeaders
|
|
142
|
+
});
|
|
143
|
+
if (session?.user) return {
|
|
144
|
+
id: session.user.id,
|
|
145
|
+
email: session.user.email || void 0,
|
|
146
|
+
role: session.user.role === "admin" ? "admin" : void 0
|
|
147
|
+
};
|
|
148
|
+
} catch {}
|
|
149
|
+
var jwtToken = authHeader?.replace("Bearer ", "");
|
|
150
|
+
if (jwtToken) try {
|
|
151
|
+
var payload = await validateToken(jwtToken, tokenOptions),
|
|
152
|
+
userId = payload?.id || payload?.sub;
|
|
153
|
+
if (userId) return {
|
|
154
|
+
id: userId,
|
|
155
|
+
email: payload.email,
|
|
156
|
+
role: payload.role === "admin" ? "admin" : void 0
|
|
157
|
+
};
|
|
158
|
+
} catch (err) {
|
|
159
|
+
if (!_instanceof(err, InvalidTokenError)) throw err;
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
async function validateToken(token, options) {
|
|
164
|
+
var {
|
|
165
|
+
baseUrl = process.env.ONE_SERVER_URL,
|
|
166
|
+
forceIssuer = process.env.FORCE_ISSUER || "",
|
|
167
|
+
jwksPath = "/api/auth/jwks"
|
|
168
|
+
} = options || {};
|
|
169
|
+
if (!baseUrl) throw new Error("No baseURL!");
|
|
170
|
+
var normalizedBaseUrl = removeTrailingSlash(baseUrl),
|
|
171
|
+
url = `${forceIssuer || normalizedBaseUrl}${jwksPath}`,
|
|
172
|
+
JWKS = (0, import_jose.createRemoteJWKSet)(new URL(url));
|
|
173
|
+
try {
|
|
174
|
+
var verifyOptions = forceIssuer ? {} : {
|
|
175
|
+
issuer: normalizedBaseUrl,
|
|
176
|
+
audience: normalizedBaseUrl
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
payload
|
|
180
|
+
} = await (0, import_jose.jwtVerify)(token, JWKS, verifyOptions);
|
|
181
|
+
return payload;
|
|
182
|
+
} catch (error) {
|
|
183
|
+
throw new InvalidTokenError(`${error}`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function isValidJWT(token, options) {
|
|
187
|
+
try {
|
|
188
|
+
return await validateToken(token, options), !0;
|
|
189
|
+
} catch {
|
|
190
|
+
return !1;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function removeTrailingSlash(str) {
|
|
194
|
+
return str.replace(/\/$/, "");
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=server.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","server_exports","__export","InvalidTokenError","NotAuthenticatedError","getAuthDataFromRequest","isValidJWT","validateToken","module","exports","import_jose","require","_assert_this_initialized","self","ReferenceError","_call_super","_this","derived","args","_get_prototype_of","_possible_constructor_return","_is_native_reflect_construct","Reflect","construct","constructor","apply","_class_call_check","instance","Constructor","TypeError","_construct","Parent","Class","Parent2","args2","Class2","a","push","Function","bind","_set_prototype_of","prototype","arguments","o","Object","setPrototypeOf","getPrototypeOf","o2","__proto__","_inherits","subClass","superClass","create","writable","configurable","_instanceof","left","right","Symbol","hasInstance","_is_native_function","fn","toString","call","indexOf","_type_of","p","p2","obj","_wrap_native_super","_cache","Map"],"sources":["../../src/server.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -12,40 +12,41 @@ function createBetterAuthClient(options) {
|
|
|
12
12
|
createUser,
|
|
13
13
|
storagePrefix = "auth",
|
|
14
14
|
retryDelay = 4e3,
|
|
15
|
-
|
|
15
|
+
useJWT = !1,
|
|
16
|
+
authCookieNames = ["better-auth.jwt", "better-auth.session_token"],
|
|
16
17
|
...authClientOptions
|
|
17
18
|
} = options, empty = {
|
|
18
19
|
state: "logged-out",
|
|
19
20
|
session: null,
|
|
20
21
|
user: null,
|
|
21
22
|
token: null
|
|
22
|
-
}, createAuthClientWithSession = (session) => createAuthClient({
|
|
23
|
+
}, keysStorage = createStorageValue(`${storagePrefix}-keys`), stateStorage = createStorageValue(`${storagePrefix}-state`), createAuthClientWithSession = (session) => createAuthClient({
|
|
23
24
|
...authClientOptions,
|
|
24
25
|
fetchOptions: {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
26
|
+
credentials: "include",
|
|
27
|
+
headers: useJWT ? { Authorization: `Bearer ${session}` } : void 0
|
|
28
28
|
}
|
|
29
|
-
})
|
|
29
|
+
});
|
|
30
30
|
let authClient = (() => {
|
|
31
31
|
const existingSession = keysStorage.get()?.session;
|
|
32
|
-
return existingSession ? createAuthClientWithSession(existingSession) : createAuthClient(
|
|
32
|
+
return existingSession ? createAuthClientWithSession(existingSession) : createAuthClient({
|
|
33
|
+
...authClientOptions,
|
|
34
|
+
fetchOptions: { credentials: "include" }
|
|
35
|
+
});
|
|
33
36
|
})();
|
|
34
37
|
const authState = createEmitter(
|
|
35
38
|
"authState",
|
|
36
39
|
stateStorage.get() || empty,
|
|
37
|
-
{
|
|
38
|
-
comparator: isEqualDeepLite
|
|
39
|
-
}
|
|
40
|
+
{ comparator: isEqualDeepLite }
|
|
40
41
|
), authClientVersion = createEmitter("authClientVersion", 0), setState = (update) => {
|
|
41
42
|
const next = { ...authState.value, ...update };
|
|
42
43
|
stateStorage.set(next), authState.emit(next), next.token && next.session ? keysStorage.set({
|
|
43
44
|
token: next.token,
|
|
44
45
|
session: next.session.token
|
|
45
|
-
}) : keysStorage.set({
|
|
46
|
+
}) : next.session ? keysStorage.set({
|
|
46
47
|
token: "",
|
|
47
|
-
session:
|
|
48
|
-
}), onAuthStateChange?.(next);
|
|
48
|
+
session: next.session.token
|
|
49
|
+
}) : keysStorage.set({ token: "", session: "" }), onAuthStateChange?.(next);
|
|
49
50
|
}, setAuthClientToken = async (props) => {
|
|
50
51
|
keysStorage.set(props), updateAuthClient(props.session);
|
|
51
52
|
};
|
|
@@ -63,13 +64,13 @@ function createBetterAuthClient(options) {
|
|
|
63
64
|
const data = dataGeneric, hasPersistedSession = !!keysStorage.get()?.session, nextState = isPending ? "loading" : data?.session ? "logged-in" : hasPersistedSession && data === void 0 ? "loading" : "logged-out", sessionUpdate = nextState === "loading" ? {} : {
|
|
64
65
|
session: data?.session ?? null,
|
|
65
66
|
user: data?.user ? createUser ? createUser(data.user) : data.user : null
|
|
66
|
-
};
|
|
67
|
+
}, previousSession = authState.value?.session, isNewSession = data?.session && (!previousSession || previousSession.id !== data.session.id || previousSession.userId !== data.session.userId);
|
|
67
68
|
setState({
|
|
68
69
|
state: nextState,
|
|
69
70
|
...sessionUpdate
|
|
70
|
-
}), data?.session && !authState.value.token && getValidToken().then((token) => {
|
|
71
|
+
}), useJWT && data?.session && (isNewSession || !authState.value.token) && (isNewSession && authState.value.token && setState({ token: null }), getValidToken().then((token) => {
|
|
71
72
|
token && setState({ token });
|
|
72
|
-
});
|
|
73
|
+
}));
|
|
73
74
|
});
|
|
74
75
|
}
|
|
75
76
|
function scheduleAuthRetry(delayMs) {
|
|
@@ -78,22 +79,6 @@ function createBetterAuthClient(options) {
|
|
|
78
79
|
}, delayMs);
|
|
79
80
|
}
|
|
80
81
|
async function getValidToken() {
|
|
81
|
-
const existing = keysStorage.get()?.token;
|
|
82
|
-
if (existing)
|
|
83
|
-
try {
|
|
84
|
-
if ((await fetch(tokenValidationEndpoint, {
|
|
85
|
-
method: "POST",
|
|
86
|
-
headers: {
|
|
87
|
-
"Content-Type": "application/json"
|
|
88
|
-
},
|
|
89
|
-
body: JSON.stringify({
|
|
90
|
-
token: existing
|
|
91
|
-
})
|
|
92
|
-
}).then((res2) => res2.json()))?.valid)
|
|
93
|
-
return existing;
|
|
94
|
-
} catch (error) {
|
|
95
|
-
console.error("Error validating token:", error);
|
|
96
|
-
}
|
|
97
82
|
const res = await authClient.$fetch("/token");
|
|
98
83
|
if (res.error) {
|
|
99
84
|
console.error(`Error fetching token: ${res.error.statusText}`);
|
|
@@ -103,12 +88,21 @@ function createBetterAuthClient(options) {
|
|
|
103
88
|
}
|
|
104
89
|
const clearAuthClientToken = () => {
|
|
105
90
|
keysStorage.remove();
|
|
106
|
-
}
|
|
91
|
+
};
|
|
92
|
+
function clearAuthCookies() {
|
|
93
|
+
if (!(typeof document > "u"))
|
|
94
|
+
for (const cookieName of authCookieNames) {
|
|
95
|
+
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
|
|
96
|
+
const domain = window.location.hostname;
|
|
97
|
+
document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain}`, domain.startsWith(".") && (document.cookie = `${cookieName}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=${domain.slice(1)}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function clearAllAuth() {
|
|
101
|
+
clearAuthCookies(), clearState();
|
|
102
|
+
}
|
|
103
|
+
const getAuth = () => {
|
|
107
104
|
const state = authState?.value || empty;
|
|
108
|
-
return {
|
|
109
|
-
...state,
|
|
110
|
-
loggedIn: !!state.session
|
|
111
|
-
};
|
|
105
|
+
return { ...state, loggedIn: !!state.session };
|
|
112
106
|
}, useAuth = () => useEmitterValue(authState) || empty;
|
|
113
107
|
function clearState() {
|
|
114
108
|
keysStorage.remove(), stateStorage.remove(), setState(empty);
|
|
@@ -133,6 +127,7 @@ function createBetterAuthClient(options) {
|
|
|
133
127
|
authClient: proxiedAuthClient,
|
|
134
128
|
setAuthClientToken,
|
|
135
129
|
clearAuthClientToken,
|
|
130
|
+
clearAllAuth,
|
|
136
131
|
useAuth,
|
|
137
132
|
getAuth,
|
|
138
133
|
getValidToken,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/createAuthClient.ts"],
|
|
4
|
-
"mappings": "
|
|
5
|
-
"names": [
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
6
|
}
|