vinextauth 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/adapters/cloudflare-kv.d.ts +28 -0
- package/dist/adapters/cloudflare-kv.js +51 -0
- package/dist/adapters/cloudflare-kv.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +628 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/index.d.ts +24 -0
- package/dist/middleware/index.js +147 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/providers/github.d.ts +12 -0
- package/dist/providers/github.js +41 -0
- package/dist/providers/github.js.map +1 -0
- package/dist/providers/google.d.ts +12 -0
- package/dist/providers/google.js +43 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/react/index.d.ts +38 -0
- package/dist/react/index.js +113 -0
- package/dist/react/index.js.map +1 -0
- package/dist/server/index.d.ts +24 -0
- package/dist/server/index.js +245 -0
- package/dist/server/index.js.map +1 -0
- package/dist/types-G_m6Z3Iz.d.ts +180 -0
- package/package.json +86 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { A as AdapterInterface } from '../types-G_m6Z3Iz.js';
|
|
2
|
+
|
|
3
|
+
interface KVNamespace {
|
|
4
|
+
get(key: string, options: {
|
|
5
|
+
type: "json";
|
|
6
|
+
}): Promise<unknown>;
|
|
7
|
+
put(key: string, value: string, options?: {
|
|
8
|
+
expirationTtl?: number;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
delete(key: string): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* CloudflareKVAdapter — stores sessions in Cloudflare KV.
|
|
14
|
+
* Use when session.strategy = "database".
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { CloudflareKVAdapter } from "vinextauth/adapters/cloudflare-kv"
|
|
19
|
+
*
|
|
20
|
+
* VinextAuth({
|
|
21
|
+
* adapter: CloudflareKVAdapter(env.SESSION_KV),
|
|
22
|
+
* session: { strategy: "database" },
|
|
23
|
+
* })
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
declare function CloudflareKVAdapter(namespace: KVNamespace): AdapterInterface;
|
|
27
|
+
|
|
28
|
+
export { CloudflareKVAdapter };
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// src/adapters/cloudflare-kv.ts
|
|
2
|
+
function CloudflareKVAdapter(namespace) {
|
|
3
|
+
function key(sessionToken) {
|
|
4
|
+
return `session:${sessionToken}`;
|
|
5
|
+
}
|
|
6
|
+
return {
|
|
7
|
+
async getSession(sessionToken) {
|
|
8
|
+
const data = await namespace.get(key(sessionToken), { type: "json" });
|
|
9
|
+
if (!data) return null;
|
|
10
|
+
return {
|
|
11
|
+
...data,
|
|
12
|
+
expires: new Date(data.expires)
|
|
13
|
+
};
|
|
14
|
+
},
|
|
15
|
+
async createSession(session) {
|
|
16
|
+
const stored = {
|
|
17
|
+
sessionToken: session.sessionToken,
|
|
18
|
+
userId: session.userId,
|
|
19
|
+
expires: session.expires.toISOString(),
|
|
20
|
+
user: { id: session.userId }
|
|
21
|
+
};
|
|
22
|
+
const ttl = Math.floor((session.expires.getTime() - Date.now()) / 1e3);
|
|
23
|
+
await namespace.put(key(session.sessionToken), JSON.stringify(stored), {
|
|
24
|
+
expirationTtl: Math.max(ttl, 1)
|
|
25
|
+
});
|
|
26
|
+
return session;
|
|
27
|
+
},
|
|
28
|
+
async updateSession(session) {
|
|
29
|
+
const existing = await namespace.get(key(session.sessionToken), { type: "json" });
|
|
30
|
+
if (!existing) return null;
|
|
31
|
+
const updated = {
|
|
32
|
+
...existing,
|
|
33
|
+
...session,
|
|
34
|
+
expires: session.expires?.toISOString() ?? existing.expires
|
|
35
|
+
};
|
|
36
|
+
await namespace.put(key(session.sessionToken), JSON.stringify(updated));
|
|
37
|
+
return {
|
|
38
|
+
sessionToken: session.sessionToken,
|
|
39
|
+
userId: updated.userId,
|
|
40
|
+
expires: new Date(updated.expires)
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
async deleteSession(sessionToken) {
|
|
44
|
+
await namespace.delete(key(sessionToken));
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export { CloudflareKVAdapter };
|
|
50
|
+
//# sourceMappingURL=cloudflare-kv.js.map
|
|
51
|
+
//# sourceMappingURL=cloudflare-kv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/adapters/cloudflare-kv.ts"],"names":[],"mappings":";AA8BO,SAAS,oBAAoB,SAAA,EAA0C;AAC5E,EAAA,SAAS,IAAI,YAAA,EAA8B;AACzC,IAAA,OAAO,WAAW,YAAY,CAAA,CAAA;AAAA,EAChC;AAEA,EAAA,OAAO;AAAA,IACL,MAAM,WAAW,YAAA,EAAc;AAC7B,MAAA,MAAM,IAAA,GAAO,MAAM,SAAA,CAAU,GAAA,CAAI,GAAA,CAAI,YAAY,CAAA,EAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AACpE,MAAA,IAAI,CAAC,MAAM,OAAO,IAAA;AAClB,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,OAAA,EAAS,IAAI,IAAA,CAAK,IAAA,CAAK,OAAO;AAAA,OAChC;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,cAAc,OAAA,EAAS;AAC3B,MAAA,MAAM,MAAA,GAAwB;AAAA,QAC5B,cAAc,OAAA,CAAQ,YAAA;AAAA,QACtB,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,OAAA,EAAS,OAAA,CAAQ,OAAA,CAAQ,WAAA,EAAY;AAAA,QACrC,IAAA,EAAM,EAAE,EAAA,EAAI,OAAA,CAAQ,MAAA;AAAO,OAC7B;AACA,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,KAAA,CAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,SAAQ,GAAI,IAAA,CAAK,GAAA,EAAI,IAAK,GAAI,CAAA;AACtE,MAAA,MAAM,SAAA,CAAU,IAAI,GAAA,CAAI,OAAA,CAAQ,YAAY,CAAA,EAAG,IAAA,CAAK,SAAA,CAAU,MAAM,CAAA,EAAG;AAAA,QACrE,aAAA,EAAe,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,CAAC;AAAA,OAC/B,CAAA;AACD,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAAA,IAEA,MAAM,cAAc,OAAA,EAAS;AAC3B,MAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,GAAA,CAAI,GAAA,CAAI,OAAA,CAAQ,YAAY,CAAA,EAAG,EAAE,IAAA,EAAM,MAAA,EAAQ,CAAA;AAChF,MAAA,IAAI,CAAC,UAAU,OAAO,IAAA;AACtB,MAAA,MAAM,OAAA,GAAyB;AAAA,QAC7B,GAAG,QAAA;AAAA,QACH,GAAG,OAAA;AAAA,QACH,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAS,WAAA,MAAiB,QAAA,CAAS;AAAA,OACtD;AACA,MAAA,MAAM,SAAA,CAAU,IAAI,GAAA,CAAI,OAAA,CAAQ,YAAY,CAAA,EAAG,IAAA,CAAK,SAAA,CAAU,OAAO,CAAC,CAAA;AACtE,MAAA,OAAO;AAAA,QACL,cAAc,OAAA,CAAQ,YAAA;AAAA,QACtB,QAAQ,OAAA,CAAQ,MAAA;AAAA,QAChB,OAAA,EAAS,IAAI,IAAA,CAAK,OAAA,CAAQ,OAAO;AAAA,OACnC;AAAA,IACF,CAAA;AAAA,IAEA,MAAM,cAAc,YAAA,EAAc;AAChC,MAAA,MAAM,SAAA,CAAU,MAAA,CAAO,GAAA,CAAI,YAAY,CAAC,CAAA;AAAA,IAC1C;AAAA,GACF;AACF","file":"cloudflare-kv.js","sourcesContent":["import type { AdapterInterface, User } from \"../types.js\";\n\n// Minimal KVNamespace interface (matches Cloudflare Workers types)\ninterface KVNamespace {\n get(key: string, options: { type: \"json\" }): Promise<unknown>;\n put(key: string, value: string, options?: { expirationTtl?: number }): Promise<void>;\n delete(key: string): Promise<void>;\n}\n\ninterface StoredSession {\n sessionToken: string;\n userId: string;\n expires: string;\n user: User;\n}\n\n/**\n * CloudflareKVAdapter — stores sessions in Cloudflare KV.\n * Use when session.strategy = \"database\".\n *\n * Usage:\n * ```ts\n * import { CloudflareKVAdapter } from \"vinextauth/adapters/cloudflare-kv\"\n *\n * VinextAuth({\n * adapter: CloudflareKVAdapter(env.SESSION_KV),\n * session: { strategy: \"database\" },\n * })\n * ```\n */\nexport function CloudflareKVAdapter(namespace: KVNamespace): AdapterInterface {\n function key(sessionToken: string): string {\n return `session:${sessionToken}`;\n }\n\n return {\n async getSession(sessionToken) {\n const data = await namespace.get(key(sessionToken), { type: \"json\" }) as StoredSession | null;\n if (!data) return null;\n return {\n ...data,\n expires: new Date(data.expires),\n };\n },\n\n async createSession(session) {\n const stored: StoredSession = {\n sessionToken: session.sessionToken,\n userId: session.userId,\n expires: session.expires.toISOString(),\n user: { id: session.userId },\n };\n const ttl = Math.floor((session.expires.getTime() - Date.now()) / 1000);\n await namespace.put(key(session.sessionToken), JSON.stringify(stored), {\n expirationTtl: Math.max(ttl, 1),\n });\n return session;\n },\n\n async updateSession(session) {\n const existing = await namespace.get(key(session.sessionToken), { type: \"json\" }) as StoredSession | null;\n if (!existing) return null;\n const updated: StoredSession = {\n ...existing,\n ...session,\n expires: session.expires?.toISOString() ?? existing.expires,\n };\n await namespace.put(key(session.sessionToken), JSON.stringify(updated));\n return {\n sessionToken: session.sessionToken,\n userId: updated.userId,\n expires: new Date(updated.expires),\n };\n },\n\n async deleteSession(sessionToken) {\n await namespace.delete(key(sessionToken));\n },\n };\n}\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { V as VinextAuthConfig, a as VinextAuthHandlers } from './types-G_m6Z3Iz.js';
|
|
2
|
+
export { A as AdapterInterface, b as AdapterSession, C as CallbacksConfig, J as JWT, c as JWTCallbackParams, d as JWTConfig, O as OAuthProvider, P as PagesConfig, S as Session, e as SessionCallbackParams, f as SessionConfig, g as SessionContextValue, h as SessionStatus, i as SignInCallbackParams, j as SignInOptions, k as SignOutOptions, U as User, W as WithAuthOptions } from './types-G_m6Z3Iz.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* VinextAuth — main factory function.
|
|
6
|
+
*
|
|
7
|
+
* Usage (identical to NextAuth v4):
|
|
8
|
+
* ```ts
|
|
9
|
+
* const handler = VinextAuth(authOptions)
|
|
10
|
+
* export { handler as GET, handler as POST }
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
declare function VinextAuth(config: VinextAuthConfig): VinextAuthHandlers;
|
|
14
|
+
|
|
15
|
+
export { VinextAuth, VinextAuthConfig, VinextAuthHandlers, VinextAuth as default };
|