@draftlab/auth 0.15.0 → 0.16.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/esm/allow.js +26 -0
- package/dist/esm/client.js +254 -0
- package/dist/esm/core.js +597 -0
- package/dist/esm/css.d.js +0 -0
- package/dist/esm/error.js +88 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/keys.js +126 -0
- package/dist/esm/mutex.js +53 -0
- package/dist/esm/pkce.js +87 -0
- package/dist/esm/provider/apple.js +15 -0
- package/dist/esm/provider/code.js +62 -0
- package/dist/esm/provider/discord.js +15 -0
- package/dist/esm/provider/facebook.js +15 -0
- package/dist/esm/provider/github.js +15 -0
- package/dist/esm/provider/gitlab.js +15 -0
- package/dist/esm/provider/google.js +16 -0
- package/dist/esm/provider/linkedin.js +15 -0
- package/dist/esm/provider/magiclink.js +83 -0
- package/dist/esm/provider/microsoft.js +15 -0
- package/dist/esm/provider/oauth2.js +130 -0
- package/dist/esm/provider/password.js +331 -0
- package/dist/esm/provider/provider.js +18 -0
- package/dist/esm/provider/reddit.js +15 -0
- package/dist/esm/provider/slack.js +15 -0
- package/dist/esm/provider/spotify.js +15 -0
- package/dist/esm/provider/twitch.js +15 -0
- package/dist/esm/provider/vercel.js +17 -0
- package/dist/esm/random.js +40 -0
- package/dist/esm/revocation.js +27 -0
- package/dist/esm/storage/memory.js +110 -0
- package/dist/esm/storage/storage.js +56 -0
- package/dist/esm/storage/turso.js +93 -0
- package/dist/esm/storage/unstorage.js +78 -0
- package/dist/esm/subject.js +7 -0
- package/dist/esm/themes/theme.js +115 -0
- package/dist/esm/toolkit/client.js +119 -0
- package/dist/esm/toolkit/index.js +25 -0
- package/dist/esm/toolkit/providers/facebook.js +11 -0
- package/dist/esm/toolkit/providers/github.js +11 -0
- package/dist/esm/toolkit/providers/google.js +11 -0
- package/dist/esm/toolkit/providers/strategy.js +0 -0
- package/dist/esm/toolkit/storage.js +81 -0
- package/dist/esm/toolkit/utils.js +18 -0
- package/dist/esm/types.js +0 -0
- package/dist/esm/ui/base.js +478 -0
- package/dist/esm/ui/code.js +186 -0
- package/dist/esm/ui/form.js +46 -0
- package/dist/esm/ui/icon.js +242 -0
- package/dist/esm/ui/magiclink.js +158 -0
- package/dist/esm/ui/password.js +435 -0
- package/dist/esm/ui/select.js +102 -0
- package/dist/esm/util.js +59 -0
- package/dist/{allow.d.mts → types/allow.d.ts} +9 -11
- package/dist/types/allow.d.ts.map +1 -0
- package/dist/types/client.d.ts +462 -0
- package/dist/types/client.d.ts.map +1 -0
- package/dist/types/core.d.ts +113 -0
- package/dist/types/core.d.ts.map +1 -0
- package/dist/{error.d.mts → types/error.d.ts} +95 -97
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{keys.d.mts → types/keys.d.ts} +20 -24
- package/dist/types/keys.d.ts.map +1 -0
- package/dist/types/mutex.d.ts +42 -0
- package/dist/types/mutex.d.ts.map +1 -0
- package/dist/{pkce.d.mts → types/pkce.d.ts} +10 -11
- package/dist/types/pkce.d.ts.map +1 -0
- package/dist/types/provider/apple.d.ts +197 -0
- package/dist/types/provider/apple.d.ts.map +1 -0
- package/dist/types/provider/code.d.ts +288 -0
- package/dist/types/provider/code.d.ts.map +1 -0
- package/dist/types/provider/discord.d.ts +206 -0
- package/dist/types/provider/discord.d.ts.map +1 -0
- package/dist/types/provider/facebook.d.ts +200 -0
- package/dist/types/provider/facebook.d.ts.map +1 -0
- package/dist/types/provider/github.d.ts +220 -0
- package/dist/types/provider/github.d.ts.map +1 -0
- package/dist/types/provider/gitlab.d.ts +180 -0
- package/dist/types/provider/gitlab.d.ts.map +1 -0
- package/dist/types/provider/google.d.ts +158 -0
- package/dist/types/provider/google.d.ts.map +1 -0
- package/dist/types/provider/linkedin.d.ts +190 -0
- package/dist/types/provider/linkedin.d.ts.map +1 -0
- package/dist/types/provider/magiclink.d.ts +141 -0
- package/dist/types/provider/magiclink.d.ts.map +1 -0
- package/dist/types/provider/microsoft.d.ts +247 -0
- package/dist/types/provider/microsoft.d.ts.map +1 -0
- package/dist/types/provider/oauth2.d.ts +229 -0
- package/dist/types/provider/oauth2.d.ts.map +1 -0
- package/dist/types/provider/password.d.ts +408 -0
- package/dist/types/provider/password.d.ts.map +1 -0
- package/dist/types/provider/provider.d.ts +226 -0
- package/dist/types/provider/provider.d.ts.map +1 -0
- package/dist/types/provider/reddit.d.ts +159 -0
- package/dist/types/provider/reddit.d.ts.map +1 -0
- package/dist/types/provider/slack.d.ts +171 -0
- package/dist/types/provider/slack.d.ts.map +1 -0
- package/dist/types/provider/spotify.d.ts +168 -0
- package/dist/types/provider/spotify.d.ts.map +1 -0
- package/dist/types/provider/twitch.d.ts +163 -0
- package/dist/types/provider/twitch.d.ts.map +1 -0
- package/dist/types/provider/vercel.d.ts +294 -0
- package/dist/types/provider/vercel.d.ts.map +1 -0
- package/dist/{random.d.mts → types/random.d.ts} +4 -6
- package/dist/types/random.d.ts.map +1 -0
- package/dist/types/revocation.d.ts +76 -0
- package/dist/types/revocation.d.ts.map +1 -0
- package/dist/{storage/memory.d.mts → types/storage/memory.d.ts} +17 -21
- package/dist/types/storage/memory.d.ts.map +1 -0
- package/dist/types/storage/storage.d.ts +177 -0
- package/dist/types/storage/storage.d.ts.map +1 -0
- package/dist/{storage/turso.d.mts → types/storage/turso.d.ts} +4 -8
- package/dist/types/storage/turso.d.ts.map +1 -0
- package/dist/{storage/unstorage.d.mts → types/storage/unstorage.d.ts} +12 -11
- package/dist/types/storage/unstorage.d.ts.map +1 -0
- package/dist/types/subject.d.ts +115 -0
- package/dist/types/subject.d.ts.map +1 -0
- package/dist/types/themes/theme.d.ts +207 -0
- package/dist/types/themes/theme.d.ts.map +1 -0
- package/dist/types/toolkit/client.d.ts +235 -0
- package/dist/types/toolkit/client.d.ts.map +1 -0
- package/dist/types/toolkit/index.d.ts +45 -0
- package/dist/types/toolkit/index.d.ts.map +1 -0
- package/dist/types/toolkit/providers/facebook.d.ts +8 -0
- package/dist/types/toolkit/providers/facebook.d.ts.map +1 -0
- package/dist/types/toolkit/providers/github.d.ts +8 -0
- package/dist/types/toolkit/providers/github.d.ts.map +1 -0
- package/dist/types/toolkit/providers/google.d.ts +8 -0
- package/dist/types/toolkit/providers/google.d.ts.map +1 -0
- package/dist/types/toolkit/providers/strategy.d.ts +38 -0
- package/dist/types/toolkit/providers/strategy.d.ts.map +1 -0
- package/dist/{toolkit/storage.d.mts → types/toolkit/storage.d.ts} +37 -39
- package/dist/types/toolkit/storage.d.ts.map +1 -0
- package/dist/{toolkit/utils.d.mts → types/toolkit/utils.d.ts} +2 -4
- package/dist/types/toolkit/utils.d.ts.map +1 -0
- package/dist/types/types.d.ts +92 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/ui/base.d.ts +18 -0
- package/dist/types/ui/base.d.ts.map +1 -0
- package/dist/types/ui/code.d.ts +43 -0
- package/dist/types/ui/code.d.ts.map +1 -0
- package/dist/types/ui/form.d.ts +24 -0
- package/dist/types/ui/form.d.ts.map +1 -0
- package/dist/types/ui/icon.d.ts +60 -0
- package/dist/types/ui/icon.d.ts.map +1 -0
- package/dist/types/ui/magiclink.d.ts +41 -0
- package/dist/types/ui/magiclink.d.ts.map +1 -0
- package/dist/types/ui/password.d.ts +43 -0
- package/dist/types/ui/password.d.ts.map +1 -0
- package/dist/types/ui/select.d.ts +33 -0
- package/dist/types/ui/select.d.ts.map +1 -0
- package/dist/{util.d.mts → types/util.d.ts} +11 -13
- package/dist/types/util.d.ts.map +1 -0
- package/package.json +10 -16
- package/dist/adapters/node.d.mts +0 -18
- package/dist/adapters/node.mjs +0 -69
- package/dist/allow.mjs +0 -63
- package/dist/client.d.mts +0 -456
- package/dist/client.mjs +0 -283
- package/dist/core.d.mts +0 -110
- package/dist/core.mjs +0 -595
- package/dist/error.mjs +0 -237
- package/dist/index.d.mts +0 -2
- package/dist/index.mjs +0 -3
- package/dist/keys.mjs +0 -146
- package/dist/mutex.d.mts +0 -44
- package/dist/mutex.mjs +0 -110
- package/dist/pkce.mjs +0 -157
- package/dist/provider/apple.d.mts +0 -111
- package/dist/provider/apple.mjs +0 -164
- package/dist/provider/code.d.mts +0 -228
- package/dist/provider/code.mjs +0 -246
- package/dist/provider/discord.d.mts +0 -146
- package/dist/provider/discord.mjs +0 -156
- package/dist/provider/facebook.d.mts +0 -142
- package/dist/provider/facebook.mjs +0 -150
- package/dist/provider/github.d.mts +0 -140
- package/dist/provider/github.mjs +0 -169
- package/dist/provider/gitlab.d.mts +0 -106
- package/dist/provider/gitlab.mjs +0 -147
- package/dist/provider/google.d.mts +0 -112
- package/dist/provider/google.mjs +0 -109
- package/dist/provider/linkedin.d.mts +0 -132
- package/dist/provider/linkedin.mjs +0 -142
- package/dist/provider/magiclink.d.mts +0 -89
- package/dist/provider/magiclink.mjs +0 -143
- package/dist/provider/microsoft.d.mts +0 -178
- package/dist/provider/microsoft.mjs +0 -177
- package/dist/provider/oauth2.d.mts +0 -176
- package/dist/provider/oauth2.mjs +0 -222
- package/dist/provider/passkey.d.mts +0 -104
- package/dist/provider/passkey.mjs +0 -320
- package/dist/provider/password.d.mts +0 -412
- package/dist/provider/password.mjs +0 -363
- package/dist/provider/provider.d.mts +0 -227
- package/dist/provider/provider.mjs +0 -44
- package/dist/provider/reddit.d.mts +0 -107
- package/dist/provider/reddit.mjs +0 -127
- package/dist/provider/slack.d.mts +0 -114
- package/dist/provider/slack.mjs +0 -138
- package/dist/provider/spotify.d.mts +0 -113
- package/dist/provider/spotify.mjs +0 -135
- package/dist/provider/totp.d.mts +0 -112
- package/dist/provider/totp.mjs +0 -191
- package/dist/provider/twitch.d.mts +0 -108
- package/dist/provider/twitch.mjs +0 -131
- package/dist/provider/vercel.d.mts +0 -177
- package/dist/provider/vercel.mjs +0 -230
- package/dist/random.mjs +0 -86
- package/dist/revocation.d.mts +0 -55
- package/dist/revocation.mjs +0 -63
- package/dist/router/context.d.mts +0 -21
- package/dist/router/context.mjs +0 -193
- package/dist/router/cookies.d.mts +0 -8
- package/dist/router/cookies.mjs +0 -13
- package/dist/router/index.d.mts +0 -21
- package/dist/router/index.mjs +0 -107
- package/dist/router/matcher.d.mts +0 -15
- package/dist/router/matcher.mjs +0 -76
- package/dist/router/middleware/cors.d.mts +0 -15
- package/dist/router/middleware/cors.mjs +0 -114
- package/dist/router/safe-request.d.mts +0 -52
- package/dist/router/safe-request.mjs +0 -160
- package/dist/router/types.d.mts +0 -67
- package/dist/router/types.mjs +0 -1
- package/dist/router/variables.d.mts +0 -12
- package/dist/router/variables.mjs +0 -20
- package/dist/storage/memory.mjs +0 -125
- package/dist/storage/storage.d.mts +0 -179
- package/dist/storage/storage.mjs +0 -104
- package/dist/storage/turso.mjs +0 -117
- package/dist/storage/unstorage.mjs +0 -103
- package/dist/subject.d.mts +0 -62
- package/dist/subject.mjs +0 -36
- package/dist/themes/theme.d.mts +0 -209
- package/dist/themes/theme.mjs +0 -120
- package/dist/toolkit/client.d.mts +0 -169
- package/dist/toolkit/client.mjs +0 -209
- package/dist/toolkit/index.d.mts +0 -9
- package/dist/toolkit/index.mjs +0 -9
- package/dist/toolkit/providers/facebook.d.mts +0 -12
- package/dist/toolkit/providers/facebook.mjs +0 -16
- package/dist/toolkit/providers/github.d.mts +0 -12
- package/dist/toolkit/providers/github.mjs +0 -16
- package/dist/toolkit/providers/google.d.mts +0 -12
- package/dist/toolkit/providers/google.mjs +0 -20
- package/dist/toolkit/providers/strategy.d.mts +0 -40
- package/dist/toolkit/providers/strategy.mjs +0 -1
- package/dist/toolkit/storage.mjs +0 -157
- package/dist/toolkit/utils.mjs +0 -30
- package/dist/types.d.mts +0 -94
- package/dist/types.mjs +0 -1
- package/dist/ui/base.d.mts +0 -30
- package/dist/ui/base.mjs +0 -407
- package/dist/ui/code.d.mts +0 -43
- package/dist/ui/code.mjs +0 -173
- package/dist/ui/form.d.mts +0 -32
- package/dist/ui/form.mjs +0 -49
- package/dist/ui/icon.d.mts +0 -58
- package/dist/ui/icon.mjs +0 -247
- package/dist/ui/magiclink.d.mts +0 -41
- package/dist/ui/magiclink.mjs +0 -152
- package/dist/ui/passkey.d.mts +0 -27
- package/dist/ui/passkey.mjs +0 -323
- package/dist/ui/password.d.mts +0 -42
- package/dist/ui/password.mjs +0 -402
- package/dist/ui/select.d.mts +0 -34
- package/dist/ui/select.mjs +0 -98
- package/dist/ui/totp.d.mts +0 -34
- package/dist/ui/totp.mjs +0 -270
- package/dist/util.mjs +0 -128
package/dist/toolkit/storage.mjs
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
//#region src/toolkit/storage.ts
|
|
2
|
-
const STORAGE_KEY = "draftauth.pkce";
|
|
3
|
-
/**
|
|
4
|
-
* Creates a browser sessionStorage adapter for PKCE state.
|
|
5
|
-
* Suitable for client-side SPAs where state should only persist during the browser session.
|
|
6
|
-
*
|
|
7
|
-
* @returns AuthStorage implementation using sessionStorage
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* const storage = createSessionStorage()
|
|
12
|
-
*
|
|
13
|
-
* // Use in toolkit client
|
|
14
|
-
* const client = createOAuthClient({
|
|
15
|
-
* storage,
|
|
16
|
-
* providers: { ... }
|
|
17
|
-
* })
|
|
18
|
-
* ```
|
|
19
|
-
*/
|
|
20
|
-
const createSessionStorage = () => ({
|
|
21
|
-
set: (data) => {
|
|
22
|
-
if (typeof sessionStorage === "undefined") throw new Error("sessionStorage is not available in this environment");
|
|
23
|
-
sessionStorage.setItem(STORAGE_KEY, JSON.stringify(data));
|
|
24
|
-
},
|
|
25
|
-
get: () => {
|
|
26
|
-
if (typeof sessionStorage === "undefined") return null;
|
|
27
|
-
const data = sessionStorage.getItem(STORAGE_KEY);
|
|
28
|
-
return data ? JSON.parse(data) : null;
|
|
29
|
-
},
|
|
30
|
-
clear: () => {
|
|
31
|
-
if (typeof sessionStorage === "undefined") return;
|
|
32
|
-
sessionStorage.removeItem(STORAGE_KEY);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
/**
|
|
36
|
-
* Creates a browser localStorage adapter for PKCE state.
|
|
37
|
-
* Suitable for client-side SPAs where state should persist across browser sessions.
|
|
38
|
-
*
|
|
39
|
-
* ⚠️ Warning: localStorage persists data indefinitely. Consider using sessionStorage
|
|
40
|
-
* for better security, as it automatically clears on browser close.
|
|
41
|
-
*
|
|
42
|
-
* @returns AuthStorage implementation using localStorage
|
|
43
|
-
*
|
|
44
|
-
* @example
|
|
45
|
-
* ```ts
|
|
46
|
-
* const storage = createLocalStorage()
|
|
47
|
-
*
|
|
48
|
-
* // Use in toolkit client
|
|
49
|
-
* const client = createOAuthClient({
|
|
50
|
-
* storage,
|
|
51
|
-
* providers: { ... }
|
|
52
|
-
* })
|
|
53
|
-
* ```
|
|
54
|
-
*/
|
|
55
|
-
const createLocalStorage = () => ({
|
|
56
|
-
set: (data) => {
|
|
57
|
-
if (typeof localStorage === "undefined") throw new Error("localStorage is not available in this environment");
|
|
58
|
-
localStorage.setItem(STORAGE_KEY, JSON.stringify(data));
|
|
59
|
-
},
|
|
60
|
-
get: () => {
|
|
61
|
-
if (typeof localStorage === "undefined") return null;
|
|
62
|
-
const data = localStorage.getItem(STORAGE_KEY);
|
|
63
|
-
return data ? JSON.parse(data) : null;
|
|
64
|
-
},
|
|
65
|
-
clear: () => {
|
|
66
|
-
if (typeof localStorage === "undefined") return;
|
|
67
|
-
localStorage.removeItem(STORAGE_KEY);
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
/**
|
|
71
|
-
* Creates a memory-based storage adapter for PKCE state.
|
|
72
|
-
* Suitable for server-side rendering or testing environments.
|
|
73
|
-
* State is lost when the process terminates or page reloads.
|
|
74
|
-
*
|
|
75
|
-
* @returns AuthStorage implementation using in-memory storage
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* ```ts
|
|
79
|
-
* // Server-side or testing
|
|
80
|
-
* const storage = createMemoryStorage()
|
|
81
|
-
*
|
|
82
|
-
* const client = createOAuthClient({
|
|
83
|
-
* storage,
|
|
84
|
-
* providers: { ... }
|
|
85
|
-
* })
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
const createMemoryStorage = () => {
|
|
89
|
-
let state = null;
|
|
90
|
-
return {
|
|
91
|
-
set: (data) => {
|
|
92
|
-
state = data;
|
|
93
|
-
},
|
|
94
|
-
get: () => {
|
|
95
|
-
return state;
|
|
96
|
-
},
|
|
97
|
-
clear: () => {
|
|
98
|
-
state = null;
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* Creates a cookie-based storage adapter for PKCE state.
|
|
104
|
-
* Suitable for server-side OAuth flows (Next.js, Remix, etc.) where you need
|
|
105
|
-
* to persist state across requests.
|
|
106
|
-
*
|
|
107
|
-
* @param options - Cookie configuration options
|
|
108
|
-
* @returns AuthStorage implementation using cookies
|
|
109
|
-
*
|
|
110
|
-
* @example
|
|
111
|
-
* ```ts
|
|
112
|
-
* // Next.js App Router
|
|
113
|
-
* import { cookies } from 'next/headers'
|
|
114
|
-
*
|
|
115
|
-
* const storage = createCookieStorage({
|
|
116
|
-
* getCookie: (name) => cookies().get(name)?.value ?? null,
|
|
117
|
-
* setCookie: (name, value, opts) => {
|
|
118
|
-
* cookies().set(name, value, {
|
|
119
|
-
* httpOnly: true,
|
|
120
|
-
* secure: true,
|
|
121
|
-
* sameSite: 'lax',
|
|
122
|
-
* maxAge: opts.maxAge
|
|
123
|
-
* })
|
|
124
|
-
* },
|
|
125
|
-
* deleteCookie: (name) => cookies().delete(name)
|
|
126
|
-
* })
|
|
127
|
-
*
|
|
128
|
-
* // TanStack Start
|
|
129
|
-
* import { getCookie, setCookie, deleteCookie } from '@tanstack/react-start/server'
|
|
130
|
-
*
|
|
131
|
-
* const storage = createCookieStorage({
|
|
132
|
-
* getCookie,
|
|
133
|
-
* setCookie: (name, value, opts) => setCookie(name, value, opts),
|
|
134
|
-
* deleteCookie
|
|
135
|
-
* })
|
|
136
|
-
* ```
|
|
137
|
-
*/
|
|
138
|
-
const createCookieStorage = (options) => ({
|
|
139
|
-
set: async (data) => {
|
|
140
|
-
await options.setCookie(STORAGE_KEY, JSON.stringify(data), {
|
|
141
|
-
maxAge: 600,
|
|
142
|
-
httpOnly: true,
|
|
143
|
-
secure: process.env.NODE_ENV === "production",
|
|
144
|
-
sameSite: "lax"
|
|
145
|
-
});
|
|
146
|
-
},
|
|
147
|
-
get: async () => {
|
|
148
|
-
const value = await options.getCookie(STORAGE_KEY);
|
|
149
|
-
return value ? JSON.parse(value) : null;
|
|
150
|
-
},
|
|
151
|
-
clear: async () => {
|
|
152
|
-
await options.deleteCookie(STORAGE_KEY);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
//#endregion
|
|
157
|
-
export { createCookieStorage, createLocalStorage, createMemoryStorage, createSessionStorage };
|
package/dist/toolkit/utils.mjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
//#region src/toolkit/utils.ts
|
|
2
|
-
/**
|
|
3
|
-
* Universal utilities for the OAuth toolkit.
|
|
4
|
-
* These functions work in both browser and Node.js environments.
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Generates a cryptographically secure random string using Web Crypto API.
|
|
8
|
-
* Works in both browser and Node.js environments (Node 15+).
|
|
9
|
-
*
|
|
10
|
-
* @param length - Length of random data in bytes (default: 32 for 256-bit security)
|
|
11
|
-
* @returns Base64url-encoded secure random string
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* const state = generateSecureRandom(16) // 128-bit random state
|
|
16
|
-
* const token = generateSecureRandom(32) // 256-bit random token
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
const generateSecureRandom = (length = 32) => {
|
|
20
|
-
if (length <= 0 || !Number.isInteger(length)) throw new RangeError("Length must be a positive integer");
|
|
21
|
-
const randomBytes = new Uint8Array(length);
|
|
22
|
-
crypto.getRandomValues(randomBytes);
|
|
23
|
-
let base64 = "";
|
|
24
|
-
if (typeof btoa !== "undefined") base64 = btoa(String.fromCharCode(...randomBytes));
|
|
25
|
-
else base64 = Buffer.from(randomBytes).toString("base64");
|
|
26
|
-
return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
//#endregion
|
|
30
|
-
export { generateSecureRandom };
|
package/dist/types.d.mts
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
//#region src/types.d.ts
|
|
2
|
-
/**
|
|
3
|
-
* Shared type definitions for Draft Auth core.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Authorization state for OAuth 2.0 flows.
|
|
7
|
-
*/
|
|
8
|
-
interface AuthorizationState {
|
|
9
|
-
/** OAuth redirect URI */
|
|
10
|
-
redirect_uri?: string;
|
|
11
|
-
/** OAuth response type (code, token) */
|
|
12
|
-
response_type?: string;
|
|
13
|
-
/** OAuth state parameter for CSRF protection */
|
|
14
|
-
state?: string;
|
|
15
|
-
/** OAuth client identifier */
|
|
16
|
-
client_id?: string;
|
|
17
|
-
/** OAuth audience parameter */
|
|
18
|
-
audience?: string;
|
|
19
|
-
/** Raw scope string from request */
|
|
20
|
-
scope?: string;
|
|
21
|
-
/** Parsed OAuth scopes array */
|
|
22
|
-
scopes?: string[];
|
|
23
|
-
/** PKCE challenge data for code verification */
|
|
24
|
-
pkce?: PKCEChallenge;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Token generation result for OAuth 2.0.
|
|
28
|
-
*/
|
|
29
|
-
interface TokenGenerationResult {
|
|
30
|
-
/** OAuth access token */
|
|
31
|
-
access: string;
|
|
32
|
-
/** Token expiration time in seconds */
|
|
33
|
-
expiresIn: number;
|
|
34
|
-
/** OAuth refresh token */
|
|
35
|
-
refresh: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* PKCE challenge data for OAuth flows.
|
|
39
|
-
*/
|
|
40
|
-
interface PKCEChallenge {
|
|
41
|
-
challenge: string;
|
|
42
|
-
method: "S256";
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* TTL configuration for tokens and sessions.
|
|
46
|
-
*/
|
|
47
|
-
interface TtlConfiguration {
|
|
48
|
-
/** Access token TTL in seconds */
|
|
49
|
-
access: number;
|
|
50
|
-
/** Refresh token TTL in seconds */
|
|
51
|
-
refresh: number;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Refresh token storage payload structure.
|
|
55
|
-
* Contains metadata about issued refresh tokens.
|
|
56
|
-
*/
|
|
57
|
-
interface RefreshTokenStoragePayload {
|
|
58
|
-
/** Subject type identifier */
|
|
59
|
-
type: string;
|
|
60
|
-
/** Subject properties/claims */
|
|
61
|
-
properties: unknown;
|
|
62
|
-
/** Resolved subject identifier for JWT */
|
|
63
|
-
subject: string;
|
|
64
|
-
/** Client identifier that owns this refresh token */
|
|
65
|
-
clientID: string;
|
|
66
|
-
/** OAuth scopes associated with this token */
|
|
67
|
-
scopes?: string[];
|
|
68
|
-
/** Timestamp when the refresh token was first used */
|
|
69
|
-
timeUsed?: number;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Code storage payload for authorization code grant.
|
|
73
|
-
* Used for storing authorization code data during OAuth flows.
|
|
74
|
-
*/
|
|
75
|
-
interface CodeStoragePayload {
|
|
76
|
-
/** Subject type identifier */
|
|
77
|
-
type: string;
|
|
78
|
-
/** Subject properties/claims */
|
|
79
|
-
properties: unknown;
|
|
80
|
-
/** Resolved subject identifier for JWT */
|
|
81
|
-
subject: string;
|
|
82
|
-
/** Redirect URI used in authorization request */
|
|
83
|
-
redirectURI: string;
|
|
84
|
-
/** Client identifier */
|
|
85
|
-
clientID: string;
|
|
86
|
-
/** OAuth scopes */
|
|
87
|
-
scopes?: string[];
|
|
88
|
-
/** Token TTL configuration */
|
|
89
|
-
ttl: TtlConfiguration;
|
|
90
|
-
/** PKCE challenge data */
|
|
91
|
-
pkce?: PKCEChallenge;
|
|
92
|
-
}
|
|
93
|
-
//#endregion
|
|
94
|
-
export { AuthorizationState, CodeStoragePayload, PKCEChallenge, RefreshTokenStoragePayload, TokenGenerationResult, TtlConfiguration };
|
package/dist/types.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { };
|
package/dist/ui/base.d.mts
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Theme } from "../themes/theme.mjs";
|
|
2
|
-
import * as preact0 from "preact";
|
|
3
|
-
import { ComponentChildren } from "preact";
|
|
4
|
-
|
|
5
|
-
//#region src/ui/base.d.ts
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Props for the Layout component
|
|
9
|
-
*/
|
|
10
|
-
interface LayoutProps {
|
|
11
|
-
children: ComponentChildren;
|
|
12
|
-
theme?: Theme;
|
|
13
|
-
title?: string;
|
|
14
|
-
size?: "small";
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Base Layout component that provides the foundational structure for all auth UIs
|
|
18
|
-
*/
|
|
19
|
-
declare const Layout: ({
|
|
20
|
-
children,
|
|
21
|
-
theme,
|
|
22
|
-
title,
|
|
23
|
-
size
|
|
24
|
-
}: LayoutProps) => preact0.JSX.Element;
|
|
25
|
-
/**
|
|
26
|
-
* Helper function to render a Preact component to HTML string
|
|
27
|
-
*/
|
|
28
|
-
declare const renderToHTML: (component: ComponentChildren) => string;
|
|
29
|
-
//#endregion
|
|
30
|
-
export { Layout, LayoutProps, renderToHTML };
|