@originals/auth 1.5.0 → 1.6.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/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/server-auth.d.ts +61 -0
- package/dist/client/server-auth.d.ts.map +1 -0
- package/dist/client/server-auth.js +77 -0
- package/dist/client/server-auth.js.map +1 -0
- package/dist/client/turnkey-client.js +1 -1
- package/dist/client/turnkey-client.js.map +1 -1
- package/dist/server/middleware.d.ts.map +1 -1
- package/dist/server/middleware.js +4 -2
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/turnkey-client.js +1 -1
- package/dist/server/turnkey-client.js.map +1 -1
- package/dist/server/turnkey-signer.d.ts +1 -1
- package/dist/server/turnkey-signer.d.ts.map +1 -1
- package/dist/server/turnkey-signer.js +2 -2
- package/dist/server/turnkey-signer.js.map +1 -1
- package/eslint.config.js +32 -0
- package/package.json +4 -2
- package/src/client/index.ts +1 -2
- package/src/client/server-auth.ts +101 -0
- package/src/client/turnkey-client.ts +1 -1
- package/src/client/turnkey-did-signer.ts +4 -0
- package/src/server/index.ts +4 -0
- package/src/server/middleware.ts +8 -2
- package/src/server/turnkey-client.ts +5 -1
- package/src/server/turnkey-signer.ts +3 -3
- package/src/types.ts +4 -0
- package/tests/index.test.ts +4 -0
- package/tests/server-auth.test.ts +167 -0
- package/tsconfig.json +4 -0
package/dist/client/index.d.ts
CHANGED
|
@@ -19,4 +19,5 @@
|
|
|
19
19
|
*/
|
|
20
20
|
export { initializeTurnkeyClient, initOtp, completeOtp, fetchUser, fetchWallets, getKeyByCurve, createWalletWithAccounts, ensureWalletWithAccounts, TurnkeySessionExpiredError, withTokenExpiration, } from './turnkey-client';
|
|
21
21
|
export { TurnkeyDIDSigner, createDIDWithTurnkey } from './turnkey-did-signer';
|
|
22
|
+
export { sendOtp, verifyOtp, type ServerAuthOptions } from './server-auth';
|
|
22
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,uBAAuB,EACvB,OAAO,EACP,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,uBAAuB,EACvB,OAAO,EACP,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/client/index.js
CHANGED
|
@@ -19,4 +19,5 @@
|
|
|
19
19
|
*/
|
|
20
20
|
export { initializeTurnkeyClient, initOtp, completeOtp, fetchUser, fetchWallets, getKeyByCurve, createWalletWithAccounts, ensureWalletWithAccounts, TurnkeySessionExpiredError, withTokenExpiration, } from './turnkey-client';
|
|
21
21
|
export { TurnkeyDIDSigner, createDIDWithTurnkey } from './turnkey-did-signer';
|
|
22
|
+
export { sendOtp, verifyOtp } from './server-auth';
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,uBAAuB,EACvB,OAAO,EACP,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,uBAAuB,EACvB,OAAO,EACP,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAA0B,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side helpers for server-proxied authentication
|
|
3
|
+
* Use these when your server handles Turnkey API keys
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { sendOtp, verifyOtp } from '@originals/auth/client';
|
|
8
|
+
*
|
|
9
|
+
* // Send OTP to user's email via your server
|
|
10
|
+
* const { sessionId } = await sendOtp('user@example.com');
|
|
11
|
+
*
|
|
12
|
+
* // Verify the code they enter
|
|
13
|
+
* const { verified, email, subOrgId } = await verifyOtp(sessionId, '123456');
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
import type { InitiateAuthResult, VerifyAuthResult } from '../types';
|
|
17
|
+
/**
|
|
18
|
+
* Options for server-proxied auth functions
|
|
19
|
+
*/
|
|
20
|
+
export interface ServerAuthOptions {
|
|
21
|
+
/** Custom fetch function (for testing) */
|
|
22
|
+
fetch?: typeof fetch;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Send OTP via your server endpoint
|
|
26
|
+
* Server should call initiateEmailAuth() from @originals/auth/server
|
|
27
|
+
*
|
|
28
|
+
* @param email - User's email address
|
|
29
|
+
* @param endpoint - Server endpoint URL (default: '/api/auth/send-otp')
|
|
30
|
+
* @param options - Optional configuration
|
|
31
|
+
* @returns Promise with sessionId and message
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const { sessionId, message } = await sendOtp('user@example.com');
|
|
36
|
+
* // sessionId is used for verification step
|
|
37
|
+
* // message is user-friendly text to display
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export declare function sendOtp(email: string, endpoint?: string, options?: ServerAuthOptions): Promise<InitiateAuthResult>;
|
|
41
|
+
/**
|
|
42
|
+
* Verify OTP via your server endpoint
|
|
43
|
+
* Server should call verifyEmailAuth() from @originals/auth/server
|
|
44
|
+
*
|
|
45
|
+
* @param sessionId - Session ID from sendOtp result
|
|
46
|
+
* @param code - OTP code entered by user
|
|
47
|
+
* @param endpoint - Server endpoint URL (default: '/api/auth/verify-otp')
|
|
48
|
+
* @param options - Optional configuration
|
|
49
|
+
* @returns Promise with verification result
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* const { verified, email, subOrgId } = await verifyOtp(sessionId, '123456');
|
|
54
|
+
* if (verified) {
|
|
55
|
+
* // User is authenticated
|
|
56
|
+
* console.log(`Authenticated: ${email}`);
|
|
57
|
+
* }
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function verifyOtp(sessionId: string, code: string, endpoint?: string, options?: ServerAuthOptions): Promise<VerifyAuthResult>;
|
|
61
|
+
//# sourceMappingURL=server-auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-auth.d.ts","sourceRoot":"","sources":["../../src/client/server-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,SAAuB,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAc7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,SAAyB,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAc3B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side helpers for server-proxied authentication
|
|
3
|
+
* Use these when your server handles Turnkey API keys
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { sendOtp, verifyOtp } from '@originals/auth/client';
|
|
8
|
+
*
|
|
9
|
+
* // Send OTP to user's email via your server
|
|
10
|
+
* const { sessionId } = await sendOtp('user@example.com');
|
|
11
|
+
*
|
|
12
|
+
* // Verify the code they enter
|
|
13
|
+
* const { verified, email, subOrgId } = await verifyOtp(sessionId, '123456');
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Send OTP via your server endpoint
|
|
18
|
+
* Server should call initiateEmailAuth() from @originals/auth/server
|
|
19
|
+
*
|
|
20
|
+
* @param email - User's email address
|
|
21
|
+
* @param endpoint - Server endpoint URL (default: '/api/auth/send-otp')
|
|
22
|
+
* @param options - Optional configuration
|
|
23
|
+
* @returns Promise with sessionId and message
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const { sessionId, message } = await sendOtp('user@example.com');
|
|
28
|
+
* // sessionId is used for verification step
|
|
29
|
+
* // message is user-friendly text to display
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export async function sendOtp(email, endpoint = '/api/auth/send-otp', options) {
|
|
33
|
+
const fetchFn = options?.fetch ?? fetch;
|
|
34
|
+
const response = await fetchFn(endpoint, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
headers: { 'Content-Type': 'application/json' },
|
|
37
|
+
body: JSON.stringify({ email }),
|
|
38
|
+
});
|
|
39
|
+
if (!response.ok) {
|
|
40
|
+
const error = await response.json().catch(() => ({ message: 'Failed to send OTP' }));
|
|
41
|
+
throw new Error(error.message ?? `HTTP ${response.status}`);
|
|
42
|
+
}
|
|
43
|
+
return response.json();
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Verify OTP via your server endpoint
|
|
47
|
+
* Server should call verifyEmailAuth() from @originals/auth/server
|
|
48
|
+
*
|
|
49
|
+
* @param sessionId - Session ID from sendOtp result
|
|
50
|
+
* @param code - OTP code entered by user
|
|
51
|
+
* @param endpoint - Server endpoint URL (default: '/api/auth/verify-otp')
|
|
52
|
+
* @param options - Optional configuration
|
|
53
|
+
* @returns Promise with verification result
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const { verified, email, subOrgId } = await verifyOtp(sessionId, '123456');
|
|
58
|
+
* if (verified) {
|
|
59
|
+
* // User is authenticated
|
|
60
|
+
* console.log(`Authenticated: ${email}`);
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export async function verifyOtp(sessionId, code, endpoint = '/api/auth/verify-otp', options) {
|
|
65
|
+
const fetchFn = options?.fetch ?? fetch;
|
|
66
|
+
const response = await fetchFn(endpoint, {
|
|
67
|
+
method: 'POST',
|
|
68
|
+
headers: { 'Content-Type': 'application/json' },
|
|
69
|
+
body: JSON.stringify({ sessionId, code }),
|
|
70
|
+
});
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
const error = await response.json().catch(() => ({ message: 'Verification failed' }));
|
|
73
|
+
throw new Error(error.message ?? `HTTP ${response.status}`);
|
|
74
|
+
}
|
|
75
|
+
return response.json();
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=server-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-auth.js","sourceRoot":"","sources":["../../src/client/server-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,KAAa,EACb,QAAQ,GAAG,oBAAoB,EAC/B,OAA2B;IAE3B,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;KAChC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAyB,CAAC;QAC7G,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAiC,CAAC;AACxD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,IAAY,EACZ,QAAQ,GAAG,sBAAsB,EACjC,OAA2B;IAE3B,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,IAAI,KAAK,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAyB,CAAC;QAC9G,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAA+B,CAAC;AACtD,CAAC"}
|
|
@@ -87,7 +87,7 @@ export async function completeOtp(turnkeyClient, otpId, otpCode, email) {
|
|
|
87
87
|
return {
|
|
88
88
|
sessionToken: response.sessionToken,
|
|
89
89
|
userId: userInfo.userId,
|
|
90
|
-
action: response.action === 'LOGIN' ? 'login' : 'signup',
|
|
90
|
+
action: String(response.action) === 'LOGIN' ? 'login' : 'signup',
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
93
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-client.js","sourceRoot":"","sources":["../../src/client/turnkey-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"turnkey-client.js","sourceRoot":"","sources":["../../src/client/turnkey-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAkC,MAAM,UAAU,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,qBAAqB,GAC7B,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAkC,MAAM,UAAU,CAAC;AAEtF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,qBAAqB,GAC7B,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,CAsD/E;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,qBAAqB,GAC7B,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAmCpE"}
|
|
@@ -34,7 +34,8 @@ export function createAuthMiddleware(options) {
|
|
|
34
34
|
return async (req, res, next) => {
|
|
35
35
|
try {
|
|
36
36
|
// Get JWT token from HTTP-only cookie
|
|
37
|
-
const
|
|
37
|
+
const cookies = req.cookies;
|
|
38
|
+
const token = cookies?.[cookieName];
|
|
38
39
|
if (!token) {
|
|
39
40
|
return res.status(401).json({ error: 'Not authenticated' });
|
|
40
41
|
}
|
|
@@ -81,7 +82,8 @@ export function createOptionalAuthMiddleware(options) {
|
|
|
81
82
|
const cookieName = options.cookieName ?? 'auth_token';
|
|
82
83
|
return async (req, res, next) => {
|
|
83
84
|
try {
|
|
84
|
-
const
|
|
85
|
+
const cookies = req.cookies;
|
|
86
|
+
const token = cookies?.[cookieName];
|
|
85
87
|
if (!token) {
|
|
86
88
|
next();
|
|
87
89
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA8B;IAE9B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC;IAEtD,OAAO,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAA4B,EAAE;QACzF,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-client.js","sourceRoot":"","sources":["../../src/server/turnkey-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAa9C;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAqC;IACvE,MAAM,YAAY,GAAG,MAAM,EAAE,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IAChF,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IACnF,MAAM,cAAc,GAAG,MAAM,EAAE,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAErF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,IAAI,OAAO,CAAC;QACjB,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,yBAAyB;QAC3D,YAAY;QACZ,aAAa;QACb,qBAAqB,EAAE,cAAc;KACtC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAa,EACb,aAAsB;IAEtB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC3D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,6CAA6C;IAC7C,MAAM,cAAc,GAAG,QAAQ,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IAEjF,OAAO,CAAC,GAAG,CAAC,iDAAiD,KAAK,KAAK,CAAC,CAAC;IAEzE,IAAI,CAAC;QACH,wDAAwD;QACxD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,YAAY,CAAC;YAC3D,cAAc;YACd,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,KAAK;SACnB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QAChD,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEpE,IAAI,gBAAgB,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,sCAAsC,gBAAgB,EAAE,CAAC,CAAC;YAEtE,qCAAqC;YACrC,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC;oBAC9D,cAAc,EAAE,gBAAgB;iBACjC,CAAC,CAAC;gBACH,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;gBAEtD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;oBACpB,OAAO,gBAAgB,CAAC;gBAC1B,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,cAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,cAAc,CAAC,CAAC;gBACpE,OAAO,gBAAgB,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAAC,
|
|
1
|
+
{"version":3,"file":"turnkey-client.js","sourceRoot":"","sources":["../../src/server/turnkey-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,5 +36,5 @@ export declare class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerif
|
|
|
36
36
|
/**
|
|
37
37
|
* Create a Turnkey signer for use with the Originals SDK
|
|
38
38
|
*/
|
|
39
|
-
export declare function createTurnkeySigner(subOrgId: string, keyId: string, turnkeyClient: Turnkey, verificationMethodId: string, publicKeyMultibase: string):
|
|
39
|
+
export declare function createTurnkeySigner(subOrgId: string, keyId: string, turnkeyClient: Turnkey, verificationMethodId: string, publicKeyMultibase: string): TurnkeyWebVHSigner;
|
|
40
40
|
//# sourceMappingURL=turnkey-signer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-signer.d.ts","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAwB1F;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,cAAc,EAAE,gBAAgB;IACzE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,oBAAoB,CAAS;gBAGnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,MAAM;IAS9B;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAgDnC;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;IAwBnB,uBAAuB,IAAI,MAAM;IAIjC,qBAAqB,IAAI,MAAM;CAGhC;AAED;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"turnkey-signer.d.ts","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAA0B,MAAM,gBAAgB,CAAC;AAwB1F;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,cAAc,EAAE,gBAAgB;IACzE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,oBAAoB,CAAS;gBAGnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,MAAM;IAS9B;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE;QAChB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAgDnC;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC;IAwBnB,uBAAuB,IAAI,MAAM;IAIjC,qBAAqB,IAAI,MAAM;CAGhC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,OAAO,EACtB,oBAAoB,EAAE,MAAM,EAC5B,kBAAkB,EAAE,MAAM,GACzB,kBAAkB,CAQpB"}
|
|
@@ -98,7 +98,7 @@ export class TurnkeyWebVHSigner {
|
|
|
98
98
|
if (typeof ed25519Module.utils?.sha512Sync !== 'function') {
|
|
99
99
|
ed25519Module.utils.sha512Sync = sha512Fn;
|
|
100
100
|
}
|
|
101
|
-
return await ed25519.
|
|
101
|
+
return await ed25519.verifyAsync(signature, message, ed25519PublicKey);
|
|
102
102
|
}
|
|
103
103
|
catch (error) {
|
|
104
104
|
console.error('Error verifying signature:', error);
|
|
@@ -115,7 +115,7 @@ export class TurnkeyWebVHSigner {
|
|
|
115
115
|
/**
|
|
116
116
|
* Create a Turnkey signer for use with the Originals SDK
|
|
117
117
|
*/
|
|
118
|
-
export
|
|
118
|
+
export function createTurnkeySigner(subOrgId, keyId, turnkeyClient, verificationMethodId, publicKeyMultibase) {
|
|
119
119
|
return new TurnkeyWebVHSigner(subOrgId, keyId, publicKeyMultibase, turnkeyClient, verificationMethodId);
|
|
120
120
|
}
|
|
121
121
|
//# sourceMappingURL=turnkey-signer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turnkey-signer.js","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"turnkey-signer.js","sourceRoot":"","sources":["../../src/server/turnkey-signer.ts"],"names":[],"mappings":"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"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import eslint from '@eslint/js';
|
|
2
|
+
import tseslint from 'typescript-eslint';
|
|
3
|
+
|
|
4
|
+
export default tseslint.config(
|
|
5
|
+
eslint.configs.recommended,
|
|
6
|
+
...tseslint.configs.recommendedTypeChecked,
|
|
7
|
+
{
|
|
8
|
+
languageOptions: {
|
|
9
|
+
parserOptions: {
|
|
10
|
+
project: true,
|
|
11
|
+
tsconfigRootDir: import.meta.dirname,
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
rules: {
|
|
15
|
+
'@typescript-eslint/no-explicit-any': 'warn',
|
|
16
|
+
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
|
|
17
|
+
'@typescript-eslint/explicit-function-return-type': 'off',
|
|
18
|
+
'@typescript-eslint/no-unsafe-assignment': 'warn',
|
|
19
|
+
'@typescript-eslint/no-unsafe-member-access': 'warn',
|
|
20
|
+
'@typescript-eslint/no-unsafe-call': 'warn',
|
|
21
|
+
'@typescript-eslint/no-unsafe-return': 'warn',
|
|
22
|
+
'@typescript-eslint/restrict-template-expressions': 'warn',
|
|
23
|
+
'no-console': 'off',
|
|
24
|
+
'no-empty': ['error', { allowEmptyCatch: false }],
|
|
25
|
+
'prefer-const': 'error',
|
|
26
|
+
'no-var': 'error',
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
ignores: ['dist/', 'node_modules/', '*.js', 'tests/'],
|
|
31
|
+
}
|
|
32
|
+
);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@originals/auth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "Turnkey-based authentication for the Originals Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -55,6 +55,7 @@
|
|
|
55
55
|
"@noble/ed25519": "^2.0.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
+
"@eslint/js": "^9.0.0",
|
|
58
59
|
"@types/bun": "^1.3.0",
|
|
59
60
|
"@types/express": "^4.17.21",
|
|
60
61
|
"@types/jsonwebtoken": "^9.0.7",
|
|
@@ -63,7 +64,8 @@
|
|
|
63
64
|
"bun-types": "^1.3.1",
|
|
64
65
|
"eslint": "^9.0.0",
|
|
65
66
|
"tsc-alias": "^1.8.16",
|
|
66
|
-
"typescript": "^5.0.0"
|
|
67
|
+
"typescript": "^5.0.0",
|
|
68
|
+
"typescript-eslint": "^8.0.0"
|
|
67
69
|
},
|
|
68
70
|
"peerDependencies": {
|
|
69
71
|
"express": ">=4.0.0"
|
package/src/client/index.ts
CHANGED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side helpers for server-proxied authentication
|
|
3
|
+
* Use these when your server handles Turnkey API keys
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { sendOtp, verifyOtp } from '@originals/auth/client';
|
|
8
|
+
*
|
|
9
|
+
* // Send OTP to user's email via your server
|
|
10
|
+
* const { sessionId } = await sendOtp('user@example.com');
|
|
11
|
+
*
|
|
12
|
+
* // Verify the code they enter
|
|
13
|
+
* const { verified, email, subOrgId } = await verifyOtp(sessionId, '123456');
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import type { InitiateAuthResult, VerifyAuthResult } from '../types';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Options for server-proxied auth functions
|
|
21
|
+
*/
|
|
22
|
+
export interface ServerAuthOptions {
|
|
23
|
+
/** Custom fetch function (for testing) */
|
|
24
|
+
fetch?: typeof fetch;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Send OTP via your server endpoint
|
|
29
|
+
* Server should call initiateEmailAuth() from @originals/auth/server
|
|
30
|
+
*
|
|
31
|
+
* @param email - User's email address
|
|
32
|
+
* @param endpoint - Server endpoint URL (default: '/api/auth/send-otp')
|
|
33
|
+
* @param options - Optional configuration
|
|
34
|
+
* @returns Promise with sessionId and message
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const { sessionId, message } = await sendOtp('user@example.com');
|
|
39
|
+
* // sessionId is used for verification step
|
|
40
|
+
* // message is user-friendly text to display
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export async function sendOtp(
|
|
44
|
+
email: string,
|
|
45
|
+
endpoint = '/api/auth/send-otp',
|
|
46
|
+
options?: ServerAuthOptions
|
|
47
|
+
): Promise<InitiateAuthResult> {
|
|
48
|
+
const fetchFn = options?.fetch ?? fetch;
|
|
49
|
+
const response = await fetchFn(endpoint, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: { 'Content-Type': 'application/json' },
|
|
52
|
+
body: JSON.stringify({ email }),
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
const error = await response.json().catch(() => ({ message: 'Failed to send OTP' })) as { message?: string };
|
|
57
|
+
throw new Error(error.message ?? `HTTP ${response.status}`);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return response.json() as Promise<InitiateAuthResult>;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Verify OTP via your server endpoint
|
|
65
|
+
* Server should call verifyEmailAuth() from @originals/auth/server
|
|
66
|
+
*
|
|
67
|
+
* @param sessionId - Session ID from sendOtp result
|
|
68
|
+
* @param code - OTP code entered by user
|
|
69
|
+
* @param endpoint - Server endpoint URL (default: '/api/auth/verify-otp')
|
|
70
|
+
* @param options - Optional configuration
|
|
71
|
+
* @returns Promise with verification result
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const { verified, email, subOrgId } = await verifyOtp(sessionId, '123456');
|
|
76
|
+
* if (verified) {
|
|
77
|
+
* // User is authenticated
|
|
78
|
+
* console.log(`Authenticated: ${email}`);
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export async function verifyOtp(
|
|
83
|
+
sessionId: string,
|
|
84
|
+
code: string,
|
|
85
|
+
endpoint = '/api/auth/verify-otp',
|
|
86
|
+
options?: ServerAuthOptions
|
|
87
|
+
): Promise<VerifyAuthResult> {
|
|
88
|
+
const fetchFn = options?.fetch ?? fetch;
|
|
89
|
+
const response = await fetchFn(endpoint, {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
headers: { 'Content-Type': 'application/json' },
|
|
92
|
+
body: JSON.stringify({ sessionId, code }),
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
const error = await response.json().catch(() => ({ message: 'Verification failed' })) as { message?: string };
|
|
97
|
+
throw new Error(error.message ?? `HTTP ${response.status}`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return response.json() as Promise<VerifyAuthResult>;
|
|
101
|
+
}
|
|
@@ -111,7 +111,7 @@ export async function completeOtp(
|
|
|
111
111
|
return {
|
|
112
112
|
sessionToken: response.sessionToken,
|
|
113
113
|
userId: userInfo.userId,
|
|
114
|
-
action: response.action === 'LOGIN' ? 'login' : 'signup',
|
|
114
|
+
action: String(response.action) === 'LOGIN' ? 'login' : 'signup',
|
|
115
115
|
};
|
|
116
116
|
} catch (error) {
|
|
117
117
|
console.error('Error completing OTP:', error);
|
package/src/server/index.ts
CHANGED
package/src/server/middleware.ts
CHANGED
|
@@ -41,7 +41,8 @@ export function createAuthMiddleware(
|
|
|
41
41
|
return async (req: Request, res: Response, next: NextFunction): Promise<void | Response> => {
|
|
42
42
|
try {
|
|
43
43
|
// Get JWT token from HTTP-only cookie
|
|
44
|
-
const
|
|
44
|
+
const cookies = req.cookies as Record<string, string> | undefined;
|
|
45
|
+
const token = cookies?.[cookieName];
|
|
45
46
|
|
|
46
47
|
if (!token) {
|
|
47
48
|
return res.status(401).json({ error: 'Not authenticated' });
|
|
@@ -101,7 +102,8 @@ export function createOptionalAuthMiddleware(
|
|
|
101
102
|
|
|
102
103
|
return async (req: Request, res: Response, next: NextFunction): Promise<void> => {
|
|
103
104
|
try {
|
|
104
|
-
const
|
|
105
|
+
const cookies = req.cookies as Record<string, string> | undefined;
|
|
106
|
+
const token = cookies?.[cookieName];
|
|
105
107
|
|
|
106
108
|
if (!token) {
|
|
107
109
|
next();
|
|
@@ -134,3 +136,7 @@ export function createOptionalAuthMiddleware(
|
|
|
134
136
|
|
|
135
137
|
|
|
136
138
|
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
@@ -90,7 +90,7 @@ export async function getOrCreateTurnkeySubOrg(
|
|
|
90
90
|
return existingSubOrgId;
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
|
-
} catch
|
|
93
|
+
} catch {
|
|
94
94
|
console.log(`📝 No existing sub-org found, will create new one`);
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -150,3 +150,7 @@ export async function getOrCreateTurnkeySubOrg(
|
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
@@ -133,7 +133,7 @@ export class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerifier {
|
|
|
133
133
|
ed25519Module.utils!.sha512Sync = sha512Fn;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
-
return await ed25519.
|
|
136
|
+
return await ed25519.verifyAsync(signature, message, ed25519PublicKey);
|
|
137
137
|
} catch (error) {
|
|
138
138
|
console.error('Error verifying signature:', error);
|
|
139
139
|
return false;
|
|
@@ -152,13 +152,13 @@ export class TurnkeyWebVHSigner implements ExternalSigner, ExternalVerifier {
|
|
|
152
152
|
/**
|
|
153
153
|
* Create a Turnkey signer for use with the Originals SDK
|
|
154
154
|
*/
|
|
155
|
-
export
|
|
155
|
+
export function createTurnkeySigner(
|
|
156
156
|
subOrgId: string,
|
|
157
157
|
keyId: string,
|
|
158
158
|
turnkeyClient: Turnkey,
|
|
159
159
|
verificationMethodId: string,
|
|
160
160
|
publicKeyMultibase: string
|
|
161
|
-
):
|
|
161
|
+
): TurnkeyWebVHSigner {
|
|
162
162
|
return new TurnkeyWebVHSigner(
|
|
163
163
|
subOrgId,
|
|
164
164
|
keyId,
|
package/src/types.ts
CHANGED
package/tests/index.test.ts
CHANGED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { describe, test, expect, mock } from 'bun:test';
|
|
2
|
+
import { sendOtp, verifyOtp } from '../src/client/server-auth';
|
|
3
|
+
|
|
4
|
+
describe('server-auth', () => {
|
|
5
|
+
describe('sendOtp', () => {
|
|
6
|
+
test('sends email to endpoint and returns result', async () => {
|
|
7
|
+
const mockFetch = mock(() =>
|
|
8
|
+
Promise.resolve({
|
|
9
|
+
ok: true,
|
|
10
|
+
json: () => Promise.resolve({ sessionId: 'session_123', message: 'Code sent' }),
|
|
11
|
+
})
|
|
12
|
+
);
|
|
13
|
+
const result = await sendOtp('test@example.com', '/api/auth/send-otp', {
|
|
14
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
15
|
+
});
|
|
16
|
+
expect(result.sessionId).toBe('session_123');
|
|
17
|
+
expect(result.message).toBe('Code sent');
|
|
18
|
+
expect(mockFetch).toHaveBeenCalledWith(
|
|
19
|
+
'/api/auth/send-otp',
|
|
20
|
+
expect.objectContaining({
|
|
21
|
+
method: 'POST',
|
|
22
|
+
headers: { 'Content-Type': 'application/json' },
|
|
23
|
+
body: JSON.stringify({ email: 'test@example.com' }),
|
|
24
|
+
})
|
|
25
|
+
);
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test('throws on non-ok response with server message', async () => {
|
|
29
|
+
const mockFetch = mock(() =>
|
|
30
|
+
Promise.resolve({
|
|
31
|
+
ok: false,
|
|
32
|
+
status: 400,
|
|
33
|
+
json: () => Promise.resolve({ message: 'Invalid email' }),
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
await expect(
|
|
37
|
+
sendOtp('bad', '/api/auth/send-otp', { fetch: mockFetch as unknown as typeof fetch })
|
|
38
|
+
).rejects.toThrow('Invalid email');
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('throws with HTTP status when no message in response', async () => {
|
|
42
|
+
const mockFetch = mock(() =>
|
|
43
|
+
Promise.resolve({
|
|
44
|
+
ok: false,
|
|
45
|
+
status: 500,
|
|
46
|
+
json: () => Promise.resolve({}),
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
await expect(
|
|
50
|
+
sendOtp('test@example.com', '/api/auth/send-otp', {
|
|
51
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
52
|
+
})
|
|
53
|
+
).rejects.toThrow('HTTP 500');
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('throws fallback message when json parsing fails', async () => {
|
|
57
|
+
const mockFetch = mock(() =>
|
|
58
|
+
Promise.resolve({
|
|
59
|
+
ok: false,
|
|
60
|
+
status: 502,
|
|
61
|
+
json: () => Promise.reject(new Error('Invalid JSON')),
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
await expect(
|
|
65
|
+
sendOtp('test@example.com', '/api/auth/send-otp', {
|
|
66
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
67
|
+
})
|
|
68
|
+
).rejects.toThrow('Failed to send OTP');
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test('uses default endpoint when not provided', async () => {
|
|
72
|
+
const mockFetch = mock(() =>
|
|
73
|
+
Promise.resolve({
|
|
74
|
+
ok: true,
|
|
75
|
+
json: () => Promise.resolve({ sessionId: 's1', message: 'ok' }),
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
await sendOtp('test@example.com', undefined, { fetch: mockFetch as unknown as typeof fetch });
|
|
79
|
+
expect(mockFetch).toHaveBeenCalledWith('/api/auth/send-otp', expect.anything());
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
describe('verifyOtp', () => {
|
|
84
|
+
test('sends sessionId and code, returns verification result', async () => {
|
|
85
|
+
const mockFetch = mock(() =>
|
|
86
|
+
Promise.resolve({
|
|
87
|
+
ok: true,
|
|
88
|
+
json: () =>
|
|
89
|
+
Promise.resolve({ verified: true, email: 'test@example.com', subOrgId: 'org_123' }),
|
|
90
|
+
})
|
|
91
|
+
);
|
|
92
|
+
const result = await verifyOtp('session_123', '123456', '/api/auth/verify-otp', {
|
|
93
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
94
|
+
});
|
|
95
|
+
expect(result.verified).toBe(true);
|
|
96
|
+
expect(result.email).toBe('test@example.com');
|
|
97
|
+
expect(result.subOrgId).toBe('org_123');
|
|
98
|
+
expect(mockFetch).toHaveBeenCalledWith(
|
|
99
|
+
'/api/auth/verify-otp',
|
|
100
|
+
expect.objectContaining({
|
|
101
|
+
method: 'POST',
|
|
102
|
+
headers: { 'Content-Type': 'application/json' },
|
|
103
|
+
body: JSON.stringify({ sessionId: 'session_123', code: '123456' }),
|
|
104
|
+
})
|
|
105
|
+
);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test('throws on verification failure with server message', async () => {
|
|
109
|
+
const mockFetch = mock(() =>
|
|
110
|
+
Promise.resolve({
|
|
111
|
+
ok: false,
|
|
112
|
+
status: 401,
|
|
113
|
+
json: () => Promise.resolve({ message: 'Invalid code' }),
|
|
114
|
+
})
|
|
115
|
+
);
|
|
116
|
+
await expect(
|
|
117
|
+
verifyOtp('s1', 'wrong', '/api/auth/verify-otp', {
|
|
118
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
119
|
+
})
|
|
120
|
+
).rejects.toThrow('Invalid code');
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
test('throws with HTTP status when no message in response', async () => {
|
|
124
|
+
const mockFetch = mock(() =>
|
|
125
|
+
Promise.resolve({
|
|
126
|
+
ok: false,
|
|
127
|
+
status: 403,
|
|
128
|
+
json: () => Promise.resolve({}),
|
|
129
|
+
})
|
|
130
|
+
);
|
|
131
|
+
await expect(
|
|
132
|
+
verifyOtp('s1', '123456', '/api/auth/verify-otp', {
|
|
133
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
134
|
+
})
|
|
135
|
+
).rejects.toThrow('HTTP 403');
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
test('throws fallback message when json parsing fails', async () => {
|
|
139
|
+
const mockFetch = mock(() =>
|
|
140
|
+
Promise.resolve({
|
|
141
|
+
ok: false,
|
|
142
|
+
status: 500,
|
|
143
|
+
json: () => Promise.reject(new Error('Invalid JSON')),
|
|
144
|
+
})
|
|
145
|
+
);
|
|
146
|
+
await expect(
|
|
147
|
+
verifyOtp('s1', '123456', '/api/auth/verify-otp', {
|
|
148
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
149
|
+
})
|
|
150
|
+
).rejects.toThrow('Verification failed');
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
test('uses default endpoint when not provided', async () => {
|
|
154
|
+
const mockFetch = mock(() =>
|
|
155
|
+
Promise.resolve({
|
|
156
|
+
ok: true,
|
|
157
|
+
json: () =>
|
|
158
|
+
Promise.resolve({ verified: true, email: 'test@example.com', subOrgId: 'org_123' }),
|
|
159
|
+
})
|
|
160
|
+
);
|
|
161
|
+
await verifyOtp('session_123', '123456', undefined, {
|
|
162
|
+
fetch: mockFetch as unknown as typeof fetch,
|
|
163
|
+
});
|
|
164
|
+
expect(mockFetch).toHaveBeenCalledWith('/api/auth/verify-otp', expect.anything());
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|