@aura-stack/auth 0.1.0-rc.8 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/index.cjs +15 -15
- package/dist/@types/index.d.ts +7 -31
- package/dist/@types/index.js +1 -1
- package/dist/@types/router.d.cjs +1 -1
- package/dist/@types/router.d.d.ts +7 -7
- package/dist/@types/utility.cjs +15 -15
- package/dist/@types/utility.d.ts +6 -6
- package/dist/@types/utility.js +1 -1
- package/dist/actions/callback/access-token.cjs +143 -143
- package/dist/actions/callback/access-token.d.ts +15 -20
- package/dist/actions/callback/access-token.js +8 -4
- package/dist/actions/callback/callback.cjs +437 -455
- package/dist/actions/callback/callback.d.ts +10 -12
- package/dist/actions/callback/callback.js +16 -12
- package/dist/actions/callback/userinfo.cjs +131 -134
- package/dist/actions/callback/userinfo.d.ts +9 -9
- package/dist/actions/callback/userinfo.js +10 -6
- package/dist/actions/csrfToken/csrfToken.cjs +162 -171
- package/dist/actions/csrfToken/csrfToken.d.ts +3 -3
- package/dist/actions/csrfToken/csrfToken.js +12 -8
- package/dist/actions/index.cjs +746 -773
- package/dist/actions/index.d.ts +13 -13
- package/dist/actions/index.js +34 -18
- package/dist/actions/session/session.cjs +149 -155
- package/dist/actions/session/session.d.ts +3 -3
- package/dist/actions/session/session.js +11 -7
- package/dist/actions/signIn/authorization.cjs +231 -249
- package/dist/actions/signIn/authorization.d.ts +12 -18
- package/dist/actions/signIn/authorization.js +16 -6
- package/dist/actions/signIn/signIn.cjs +396 -423
- package/dist/actions/signIn/signIn.d.ts +10 -10
- package/dist/actions/signIn/signIn.js +14 -10
- package/dist/actions/signOut/signOut.cjs +417 -440
- package/dist/actions/signOut/signOut.d.ts +3 -3
- package/dist/actions/signOut/signOut.js +15 -11
- package/dist/assert.cjs +35 -36
- package/dist/assert.d.ts +4 -4
- package/dist/assert.js +10 -2
- package/dist/chunk-256KIVJL.js +85 -96
- package/dist/chunk-42XB3YCW.js +19 -17
- package/dist/chunk-6SM22VVJ.js +13 -10
- package/dist/chunk-CAKJT3KS.js +84 -69
- package/dist/chunk-E3OXBRYF.js +19 -17
- package/dist/chunk-EBPE35JT.js +28 -26
- package/dist/chunk-FIPU4MLT.js +18 -16
- package/dist/chunk-FJUDBLCP.js +50 -43
- package/dist/chunk-FKRDCWBF.js +19 -17
- package/dist/chunk-GZU3RBTB.js +51 -40
- package/dist/chunk-HGJ4TXY4.js +132 -100
- package/dist/chunk-HMRKN75I.js +63 -63
- package/dist/chunk-IKHPGFCW.js +11 -9
- package/dist/chunk-JAPMIE6S.js +7 -5
- package/dist/chunk-KRNOMBXQ.js +19 -17
- package/dist/chunk-LLR722CL.js +91 -70
- package/dist/chunk-RLT4RFKV.js +39 -30
- package/dist/chunk-SJPDVKUS.js +107 -88
- package/dist/chunk-SMQO5WD7.js +26 -16
- package/dist/chunk-STHEPPUZ.js +8 -6
- package/dist/chunk-UJJ7R56J.js +47 -37
- package/dist/chunk-UTDLUEEG.js +27 -21
- package/dist/chunk-VFTYH33W.js +54 -37
- package/dist/chunk-XXJKNKGQ.js +33 -23
- package/dist/chunk-ZV4BH47P.js +132 -134
- package/dist/cookie.cjs +169 -175
- package/dist/cookie.d.ts +23 -51
- package/dist/cookie.js +34 -34
- package/dist/error.cjs +75 -75
- package/dist/error.d.ts +30 -30
- package/dist/error.js +15 -8
- package/dist/headers.cjs +28 -28
- package/dist/headers.d.ts +2 -2
- package/dist/headers.js +6 -2
- package/dist/index-DpfbvTZ_.d.ts +249 -298
- package/dist/index.cjs +936 -969
- package/dist/index.d.ts +10 -31
- package/dist/index.js +70 -50
- package/dist/jose.cjs +61 -64
- package/dist/jose.d.ts +8 -8
- package/dist/jose.js +9 -5
- package/dist/oauth/bitbucket.cjs +38 -38
- package/dist/oauth/bitbucket.d.ts +7 -7
- package/dist/oauth/bitbucket.js +6 -2
- package/dist/oauth/discord.cjs +48 -48
- package/dist/oauth/discord.d.ts +7 -7
- package/dist/oauth/discord.js +6 -2
- package/dist/oauth/figma.cjs +39 -39
- package/dist/oauth/figma.d.ts +7 -7
- package/dist/oauth/figma.js +6 -2
- package/dist/oauth/github.cjs +31 -31
- package/dist/oauth/github.d.ts +7 -7
- package/dist/oauth/github.js +6 -2
- package/dist/oauth/gitlab.cjs +39 -39
- package/dist/oauth/gitlab.d.ts +7 -7
- package/dist/oauth/gitlab.js +6 -2
- package/dist/oauth/index.cjs +180 -180
- package/dist/oauth/index.d.ts +7 -26
- package/dist/oauth/index.js +36 -9
- package/dist/oauth/spotify.cjs +39 -39
- package/dist/oauth/spotify.d.ts +7 -7
- package/dist/oauth/spotify.js +6 -2
- package/dist/oauth/x.cjs +39 -39
- package/dist/oauth/x.d.ts +7 -7
- package/dist/oauth/x.js +6 -2
- package/dist/response.cjs +27 -27
- package/dist/response.d.ts +2 -2
- package/dist/response.js +6 -2
- package/dist/schemas.cjs +91 -91
- package/dist/schemas.d.ts +93 -126
- package/dist/schemas.js +18 -18
- package/dist/secure.cjs +95 -98
- package/dist/secure.d.ts +17 -17
- package/dist/secure.js +18 -4
- package/dist/utils.cjs +119 -132
- package/dist/utils.d.ts +11 -26
- package/dist/utils.js +21 -21
- package/package.json +2 -2
package/dist/chunk-ZV4BH47P.js
CHANGED
|
@@ -1,156 +1,154 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
isRequest
|
|
3
|
+
} from "./chunk-6SM22VVJ.js";
|
|
4
|
+
import {
|
|
5
|
+
AuthError
|
|
6
|
+
} from "./chunk-FJUDBLCP.js";
|
|
3
7
|
|
|
4
8
|
// src/cookie.ts
|
|
5
|
-
import { parse, serialize } from "cookie"
|
|
6
|
-
import { parse as parse2 } from "cookie"
|
|
7
|
-
var COOKIE_NAME = "aura-auth"
|
|
9
|
+
import { parse, serialize } from "cookie";
|
|
10
|
+
import { parse as parse2 } from "cookie";
|
|
11
|
+
var COOKIE_NAME = "aura-auth";
|
|
8
12
|
var defaultCookieOptions = {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
13
|
+
httpOnly: true,
|
|
14
|
+
sameSite: "lax",
|
|
15
|
+
path: "/",
|
|
16
|
+
maxAge: 60 * 60 * 24 * 15
|
|
17
|
+
};
|
|
14
18
|
var defaultCookieConfig = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
}
|
|
19
|
+
strategy: "standard",
|
|
20
|
+
name: COOKIE_NAME,
|
|
21
|
+
options: defaultCookieOptions
|
|
22
|
+
};
|
|
19
23
|
var defaultStandardCookieConfig = {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
+
secure: false,
|
|
25
|
+
httpOnly: true,
|
|
26
|
+
prefix: ""
|
|
27
|
+
};
|
|
24
28
|
var defaultSecureCookieConfig = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
29
|
+
secure: true,
|
|
30
|
+
prefix: "__Secure-"
|
|
31
|
+
};
|
|
28
32
|
var defaultHostCookieConfig = {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
33
|
+
secure: true,
|
|
34
|
+
prefix: "__Host-",
|
|
35
|
+
path: "/",
|
|
36
|
+
domain: void 0
|
|
37
|
+
};
|
|
34
38
|
var expiredCookieOptions = {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
+
...defaultCookieOptions,
|
|
40
|
+
expires: /* @__PURE__ */ new Date(0),
|
|
41
|
+
maxAge: 0
|
|
42
|
+
};
|
|
39
43
|
var defineDefaultCookieOptions = (options) => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
44
|
+
return {
|
|
45
|
+
name: options?.name ?? COOKIE_NAME,
|
|
46
|
+
prefix: options?.prefix ?? (options?.secure ? "__Secure-" : ""),
|
|
47
|
+
...defaultCookieOptions,
|
|
48
|
+
...options
|
|
49
|
+
};
|
|
50
|
+
};
|
|
47
51
|
var setCookie = (cookieName, value, options) => {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
52
|
+
const { prefix, name } = defineDefaultCookieOptions(options);
|
|
53
|
+
const cookieNameWithPrefix = `${prefix}${name}.${cookieName}`;
|
|
54
|
+
return serialize(cookieNameWithPrefix, value, {
|
|
55
|
+
...defaultCookieOptions,
|
|
56
|
+
...options
|
|
57
|
+
});
|
|
58
|
+
};
|
|
55
59
|
var getCookie = (petition, cookie, options, optional = false) => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
throw new AuthError("invalid_request", "No cookies found. There is no active session")
|
|
60
|
+
const cookies = isRequest(petition) ? petition.headers.get("Cookie") : petition.headers.getSetCookie().join("; ");
|
|
61
|
+
if (!cookies) {
|
|
62
|
+
if (optional) {
|
|
63
|
+
return "";
|
|
62
64
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
65
|
+
throw new AuthError("invalid_request", "No cookies found. There is no active session");
|
|
66
|
+
}
|
|
67
|
+
const { name, prefix } = defineDefaultCookieOptions(options);
|
|
68
|
+
const parsedCookies = parse(cookies);
|
|
69
|
+
const value = parsedCookies[`${prefix}${name}.${cookie}`];
|
|
70
|
+
if (value === void 0) {
|
|
71
|
+
if (optional) {
|
|
72
|
+
return "";
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
+
throw new AuthError("invalid_request", `Cookie "${cookie}" not found. There is no active session`);
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
};
|
|
74
78
|
var createSessionCookie = async (session, cookieOptions, jose) => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
79
|
+
try {
|
|
80
|
+
const encoded = await jose.encodeJWT(session);
|
|
81
|
+
return setCookie("sessionToken", encoded, cookieOptions);
|
|
82
|
+
} catch (error) {
|
|
83
|
+
throw new AuthError("server_error", "Failed to create session cookie", { cause: error });
|
|
84
|
+
}
|
|
85
|
+
};
|
|
82
86
|
var secureCookieOptions = (request, cookieOptions, trustedProxyHeaders) => {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
const name = cookieOptions.name ?? COOKIE_NAME;
|
|
88
|
+
const isSecure = trustedProxyHeaders ? request.url.startsWith("https://") || request.headers.get("X-Forwarded-Proto") === "https" || request.headers.get("Forwarded")?.includes("proto=https") : request.url.startsWith("https://");
|
|
89
|
+
if (!cookieOptions.options?.httpOnly) {
|
|
90
|
+
console.warn(
|
|
91
|
+
"[WARNING]: Cookie is configured without HttpOnly. This allows JavaScript access via document.cookie and increases XSS risk."
|
|
92
|
+
);
|
|
93
|
+
}
|
|
94
|
+
if (cookieOptions.options?.domain === "*") {
|
|
95
|
+
console.warn("[WARNING]: Cookie 'Domain' is set to '*', which is insecure. Avoid wildcard domains.");
|
|
96
|
+
}
|
|
97
|
+
if (!isSecure) {
|
|
98
|
+
const options = cookieOptions.options;
|
|
99
|
+
if (options?.secure) {
|
|
100
|
+
console.warn(
|
|
101
|
+
"[WARNING]: The 'Secure' attribute will be disabled for this cookie. Serve over HTTPS to enforce Secure cookies."
|
|
102
|
+
);
|
|
93
103
|
}
|
|
94
|
-
if (
|
|
95
|
-
|
|
104
|
+
if (options?.sameSite == "none") {
|
|
105
|
+
console.warn("[WARNING]: SameSite=None without a secure connection can be blocked by browsers.");
|
|
96
106
|
}
|
|
97
|
-
if (
|
|
98
|
-
|
|
99
|
-
if (options?.secure) {
|
|
100
|
-
console.warn(
|
|
101
|
-
"[WARNING]: The 'Secure' attribute will be disabled for this cookie. Serve over HTTPS to enforce Secure cookies."
|
|
102
|
-
)
|
|
103
|
-
}
|
|
104
|
-
if (options?.sameSite == "none") {
|
|
105
|
-
console.warn("[WARNING]: SameSite=None without a secure connection can be blocked by browsers.")
|
|
106
|
-
}
|
|
107
|
-
if (process.env.NODE_ENV === "production") {
|
|
108
|
-
console.warn("[WARNING]: In production, ensure cookies are served over HTTPS to maintain security.")
|
|
109
|
-
}
|
|
110
|
-
return {
|
|
111
|
-
...defaultCookieOptions,
|
|
112
|
-
...cookieOptions.options,
|
|
113
|
-
sameSite: options?.sameSite === "none" ? "lax" : (options?.sameSite ?? "lax"),
|
|
114
|
-
...defaultStandardCookieConfig,
|
|
115
|
-
name,
|
|
116
|
-
}
|
|
107
|
+
if (process.env.NODE_ENV === "production") {
|
|
108
|
+
console.warn("[WARNING]: In production, ensure cookies are served over HTTPS to maintain security.");
|
|
117
109
|
}
|
|
118
|
-
return
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
110
|
+
return {
|
|
111
|
+
...defaultCookieOptions,
|
|
112
|
+
...cookieOptions.options,
|
|
113
|
+
sameSite: options?.sameSite === "none" ? "lax" : options?.sameSite ?? "lax",
|
|
114
|
+
...defaultStandardCookieConfig,
|
|
115
|
+
name
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return cookieOptions.strategy === "host" ? {
|
|
119
|
+
...defaultCookieOptions,
|
|
120
|
+
...cookieOptions.options,
|
|
121
|
+
...defaultHostCookieConfig,
|
|
122
|
+
name
|
|
123
|
+
} : { ...defaultCookieOptions, ...cookieOptions.options, ...defaultSecureCookieConfig, name };
|
|
124
|
+
};
|
|
127
125
|
var expireCookie = (name, options) => {
|
|
128
|
-
|
|
129
|
-
}
|
|
126
|
+
return setCookie(name, "", { ...options, ...expiredCookieOptions });
|
|
127
|
+
};
|
|
130
128
|
var oauthCookie = (options) => {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
}
|
|
129
|
+
return {
|
|
130
|
+
...options,
|
|
131
|
+
secure: options.secure,
|
|
132
|
+
httpOnly: options.httpOnly,
|
|
133
|
+
maxAge: 5 * 60,
|
|
134
|
+
expires: new Date(Date.now() + 5 * 60 * 1e3)
|
|
135
|
+
};
|
|
136
|
+
};
|
|
139
137
|
|
|
140
138
|
export {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
139
|
+
COOKIE_NAME,
|
|
140
|
+
defaultCookieOptions,
|
|
141
|
+
defaultCookieConfig,
|
|
142
|
+
defaultStandardCookieConfig,
|
|
143
|
+
defaultSecureCookieConfig,
|
|
144
|
+
defaultHostCookieConfig,
|
|
145
|
+
expiredCookieOptions,
|
|
146
|
+
defineDefaultCookieOptions,
|
|
147
|
+
setCookie,
|
|
148
|
+
getCookie,
|
|
149
|
+
createSessionCookie,
|
|
150
|
+
secureCookieOptions,
|
|
151
|
+
expireCookie,
|
|
152
|
+
oauthCookie,
|
|
153
|
+
parse2 as parse
|
|
154
|
+
};
|