@vonosan/auth 0.2.1

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.
Files changed (61) hide show
  1. package/dist/__tests__/passkey.test.d.ts +11 -0
  2. package/dist/__tests__/passkey.test.d.ts.map +1 -0
  3. package/dist/__tests__/passkey.test.js +87 -0
  4. package/dist/__tests__/passkey.test.js.map +1 -0
  5. package/dist/composables/useAuth.d.ts +43 -0
  6. package/dist/composables/useAuth.d.ts.map +1 -0
  7. package/dist/composables/useAuth.js +133 -0
  8. package/dist/composables/useAuth.js.map +1 -0
  9. package/dist/composables/usePasskey.d.ts +72 -0
  10. package/dist/composables/usePasskey.d.ts.map +1 -0
  11. package/dist/composables/usePasskey.js +289 -0
  12. package/dist/composables/usePasskey.js.map +1 -0
  13. package/dist/index.d.ts +29 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +37 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib/jwt.d.ts +30 -0
  18. package/dist/lib/jwt.d.ts.map +1 -0
  19. package/dist/lib/jwt.js +43 -0
  20. package/dist/lib/jwt.js.map +1 -0
  21. package/dist/lib/otp.d.ts +23 -0
  22. package/dist/lib/otp.d.ts.map +1 -0
  23. package/dist/lib/otp.js +50 -0
  24. package/dist/lib/otp.js.map +1 -0
  25. package/dist/lib/passkey.d.ts +139 -0
  26. package/dist/lib/passkey.d.ts.map +1 -0
  27. package/dist/lib/passkey.js +401 -0
  28. package/dist/lib/passkey.js.map +1 -0
  29. package/dist/lib/password.d.ts +20 -0
  30. package/dist/lib/password.d.ts.map +1 -0
  31. package/dist/lib/password.js +77 -0
  32. package/dist/lib/password.js.map +1 -0
  33. package/dist/middleware/auth.middleware.d.ts +50 -0
  34. package/dist/middleware/auth.middleware.d.ts.map +1 -0
  35. package/dist/middleware/auth.middleware.js +194 -0
  36. package/dist/middleware/auth.middleware.js.map +1 -0
  37. package/dist/passkey-schema.d.ts +375 -0
  38. package/dist/passkey-schema.d.ts.map +1 -0
  39. package/dist/passkey-schema.js +63 -0
  40. package/dist/passkey-schema.js.map +1 -0
  41. package/dist/routes/auth.routes.d.ts +16 -0
  42. package/dist/routes/auth.routes.d.ts.map +1 -0
  43. package/dist/routes/auth.routes.js +81 -0
  44. package/dist/routes/auth.routes.js.map +1 -0
  45. package/dist/routes/passkey.routes.d.ts +16 -0
  46. package/dist/routes/passkey.routes.d.ts.map +1 -0
  47. package/dist/routes/passkey.routes.js +127 -0
  48. package/dist/routes/passkey.routes.js.map +1 -0
  49. package/dist/schema.d.ts +547 -0
  50. package/dist/schema.d.ts.map +1 -0
  51. package/dist/schema.js +81 -0
  52. package/dist/schema.js.map +1 -0
  53. package/dist/service/auth.service.d.ts +73 -0
  54. package/dist/service/auth.service.d.ts.map +1 -0
  55. package/dist/service/auth.service.js +249 -0
  56. package/dist/service/auth.service.js.map +1 -0
  57. package/dist/service/passkey.service.d.ts +65 -0
  58. package/dist/service/passkey.service.d.ts.map +1 -0
  59. package/dist/service/passkey.service.js +202 -0
  60. package/dist/service/passkey.service.js.map +1 -0
  61. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePasskey.js","sourceRoot":"","sources":["../../src/composables/usePasskey.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ export { accounts, authSessions, verificationCodes, apiKeys } from './schema.js';
11
+ export { signAccessToken, signRefreshToken, verifyToken } from './lib/jwt.js';
12
+ export type { TokenPayload } from './lib/jwt.js';
13
+ export { hashPassword, verifyPassword } from './lib/password.js';
14
+ export { generateOtp, hashOtp, verifyOtp } from './lib/otp.js';
15
+ export { authMiddleware, optionalAuthMiddleware, isAdmin, isSuperAdmin, apiKeyOrJwtMiddleware, } from './middleware/auth.middleware.js';
16
+ export { AuthService } from './service/auth.service.js';
17
+ export type { AuthTokens, RegisterInput } from './service/auth.service.js';
18
+ export { default as authRouter } from './routes/auth.routes.js';
19
+ export { useAuth } from './composables/useAuth.js';
20
+ export { passkeyCredentials, passkeyChallenges } from './passkey-schema.js';
21
+ export type { PasskeyCredential as PasskeyCredentialRow } from './passkey-schema.js';
22
+ export { generateChallenge, buildRegistrationOptions, buildAuthenticationOptions, verifyRegistration, verifyAuthentication, bufferToBase64url, base64urlToBuffer, } from './lib/passkey.js';
23
+ export type { PasskeyChallenge, PasskeyCredential, RegistrationOptions, AuthenticationOptions, RegistrationResponse, AuthenticationResponse, VerifiedRegistration, VerifiedAuthentication, } from './lib/passkey.js';
24
+ export { PasskeyService } from './service/passkey.service.js';
25
+ export type { PasskeyServiceConfig } from './service/passkey.service.js';
26
+ export { default as passkeyRouter } from './routes/passkey.routes.js';
27
+ export { usePasskey } from './composables/usePasskey.js';
28
+ export type { PasskeyCredentialInfo } from './composables/usePasskey.js';
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAGhF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC7E,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGhD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGhE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAG9D,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,OAAO,EACP,YAAY,EACZ,qBAAqB,GACtB,MAAM,iCAAiC,CAAA;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAG1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAG/D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAKlD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC3E,YAAY,EAAE,iBAAiB,IAAI,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAGpF,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,kBAAkB,CAAA;AAGzB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAGxE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ // Schema
11
+ export { accounts, authSessions, verificationCodes, apiKeys } from './schema.js';
12
+ // JWT helpers
13
+ export { signAccessToken, signRefreshToken, verifyToken } from './lib/jwt.js';
14
+ // Password helpers
15
+ export { hashPassword, verifyPassword } from './lib/password.js';
16
+ // OTP helpers
17
+ export { generateOtp, hashOtp, verifyOtp } from './lib/otp.js';
18
+ // Middleware
19
+ export { authMiddleware, optionalAuthMiddleware, isAdmin, isSuperAdmin, apiKeyOrJwtMiddleware, } from './middleware/auth.middleware.js';
20
+ // Service
21
+ export { AuthService } from './service/auth.service.js';
22
+ // Routes
23
+ export { default as authRouter } from './routes/auth.routes.js';
24
+ // Composables (Vue — client-side)
25
+ export { useAuth } from './composables/useAuth.js';
26
+ // ─── Passkeys (WebAuthn) ─────────────────────────────────────────────────────
27
+ // Schema
28
+ export { passkeyCredentials, passkeyChallenges } from './passkey-schema.js';
29
+ // Passkey crypto helpers
30
+ export { generateChallenge, buildRegistrationOptions, buildAuthenticationOptions, verifyRegistration, verifyAuthentication, bufferToBase64url, base64urlToBuffer, } from './lib/passkey.js';
31
+ // Passkey service
32
+ export { PasskeyService } from './service/passkey.service.js';
33
+ // Passkey routes
34
+ export { default as passkeyRouter } from './routes/passkey.routes.js';
35
+ // Passkey composable (Vue — client-side)
36
+ export { usePasskey } from './composables/usePasskey.js';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,SAAS;AACT,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAEhF,cAAc;AACd,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG7E,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEhE,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE9D,aAAa;AACb,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,OAAO,EACP,YAAY,EACZ,qBAAqB,GACtB,MAAM,iCAAiC,CAAA;AAExC,UAAU;AACV,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAGvD,SAAS;AACT,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE/D,kCAAkC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,gFAAgF;AAEhF,SAAS;AACT,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAG3E,yBAAyB;AACzB,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EAClB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAA;AAYzB,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,iBAAiB;AACjB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAErE,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ export interface TokenPayload {
11
+ sub?: string;
12
+ accountId?: string;
13
+ email: string;
14
+ role?: string;
15
+ [key: string]: unknown;
16
+ }
17
+ /**
18
+ * `signAccessToken(payload, secret)` — signs a short-lived access token (15 min).
19
+ */
20
+ export declare function signAccessToken(payload: TokenPayload, secret: string): Promise<string>;
21
+ /**
22
+ * `signRefreshToken(payload, secret)` — signs a long-lived refresh token (7 days).
23
+ */
24
+ export declare function signRefreshToken(payload: TokenPayload, secret: string): Promise<string>;
25
+ /**
26
+ * `verifyToken(token, secret)` — verifies a JWT and returns the payload.
27
+ * Returns null on any error (expired, invalid signature, malformed).
28
+ */
29
+ export declare function verifyToken(token: string, secret: string): Promise<TokenPayload | null>;
30
+ //# sourceMappingURL=jwt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/lib/jwt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAID;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAQ9B"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ import { sign, verify } from 'hono/jwt';
11
+ import { Logger } from 'vonosan/server';
12
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
13
+ /**
14
+ * `signAccessToken(payload, secret)` — signs a short-lived access token (15 min).
15
+ */
16
+ export async function signAccessToken(payload, secret) {
17
+ const exp = Math.floor(Date.now() / 1000) + 60 * 15; // 15 minutes
18
+ const sub = payload.sub ?? payload.accountId ?? payload.email;
19
+ return sign({ ...payload, sub, exp }, secret);
20
+ }
21
+ /**
22
+ * `signRefreshToken(payload, secret)` — signs a long-lived refresh token (7 days).
23
+ */
24
+ export async function signRefreshToken(payload, secret) {
25
+ const exp = Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7; // 7 days
26
+ const sub = payload.sub ?? payload.accountId ?? payload.email;
27
+ return sign({ ...payload, sub, exp }, secret);
28
+ }
29
+ /**
30
+ * `verifyToken(token, secret)` — verifies a JWT and returns the payload.
31
+ * Returns null on any error (expired, invalid signature, malformed).
32
+ */
33
+ export async function verifyToken(token, secret) {
34
+ try {
35
+ const payload = await verify(token, secret);
36
+ return payload;
37
+ }
38
+ catch (err) {
39
+ Logger.debug('[jwt] Token verification failed', { error: String(err) });
40
+ return null;
41
+ }
42
+ }
43
+ //# sourceMappingURL=jwt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../src/lib/jwt.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAYvC,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAqB,EACrB,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA,CAAC,aAAa;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAA;IAC7D,OAAO,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAAqB,EACrB,MAAc;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA,CAAC,SAAS;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAA;IAC7D,OAAO,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,CAAA;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,MAAc;IAEd,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAC3C,OAAO,OAAuB,CAAA;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACvE,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ /**
11
+ * `generateOtp()` — returns a cryptographically random 6-digit string.
12
+ */
13
+ export declare function generateOtp(): string;
14
+ /**
15
+ * `hashOtp(otp)` — SHA-256 hash of the OTP string.
16
+ * Store this in the database, never the raw OTP.
17
+ */
18
+ export declare function hashOtp(otp: string): Promise<string>;
19
+ /**
20
+ * `verifyOtp(otp, hash)` — timing-safe comparison of OTP against stored hash.
21
+ */
22
+ export declare function verifyOtp(otp: string, hash: string): Promise<boolean>;
23
+ //# sourceMappingURL=otp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp.d.ts","sourceRoot":"","sources":["../../src/lib/otp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAIpC;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ3E"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ /**
11
+ * OTP utilities — 6-digit one-time passwords hashed with SHA-256.
12
+ * Uses the Web Crypto API for CF Workers / Bun / Node compatibility.
13
+ */
14
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
15
+ function toHex(buffer) {
16
+ return Array.from(new Uint8Array(buffer))
17
+ .map((b) => b.toString(16).padStart(2, '0'))
18
+ .join('');
19
+ }
20
+ // ─── Public API ───────────────────────────────────────────────────────────────
21
+ /**
22
+ * `generateOtp()` — returns a cryptographically random 6-digit string.
23
+ */
24
+ export function generateOtp() {
25
+ const bytes = crypto.getRandomValues(new Uint8Array(4));
26
+ const num = new DataView(bytes.buffer).getUint32(0, false);
27
+ return String(num % 1_000_000).padStart(6, '0');
28
+ }
29
+ /**
30
+ * `hashOtp(otp)` — SHA-256 hash of the OTP string.
31
+ * Store this in the database, never the raw OTP.
32
+ */
33
+ export async function hashOtp(otp) {
34
+ const buffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(otp));
35
+ return toHex(buffer);
36
+ }
37
+ /**
38
+ * `verifyOtp(otp, hash)` — timing-safe comparison of OTP against stored hash.
39
+ */
40
+ export async function verifyOtp(otp, hash) {
41
+ const candidate = await hashOtp(otp);
42
+ if (candidate.length !== hash.length)
43
+ return false;
44
+ let diff = 0;
45
+ for (let i = 0; i < candidate.length; i++) {
46
+ diff |= candidate.charCodeAt(i) ^ hash.charCodeAt(i);
47
+ }
48
+ return diff === 0;
49
+ }
50
+ //# sourceMappingURL=otp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otp.js","sourceRoot":"","sources":["../../src/lib/otp.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AAEH,gFAAgF;AAEhF,SAAS,KAAK,CAAC,MAAmB;IAChC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAA;AACb,CAAC;AAED,iFAAiF;AAEjF;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;IACvD,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC1D,OAAO,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW;IACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACvC,SAAS,EACT,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAC9B,CAAA;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAY;IACvD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAClD,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACtD,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAA;AACnB,CAAC"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * ──────────────────────────────────────────────────────────────────
3
+ * 🏢 Company Name: Bonifade Technologies
4
+ * 👨‍💻 Developer: Bowofade Oyerinde
5
+ * 🐙 GitHub: oyenet1
6
+ * 📅 Created Date: 2026-04-05
7
+ * 🔄 Updated Date: 2026-04-05
8
+ * ──────────────────────────────────────────────────────────────────
9
+ */
10
+ /**
11
+ * Passkey (WebAuthn) helpers — server-side.
12
+ *
13
+ * Uses the Web Crypto API exclusively — compatible with Node.js, Bun,
14
+ * Deno, and Cloudflare Workers. No native bindings required.
15
+ *
16
+ * Flow:
17
+ * Registration:
18
+ * 1. Client calls POST /auth/passkey/register/begin → gets challenge
19
+ * 2. Client calls navigator.credentials.create()
20
+ * 3. Client calls POST /auth/passkey/register/finish → stores credential
21
+ *
22
+ * Authentication:
23
+ * 1. Client calls POST /auth/passkey/auth/begin → gets challenge
24
+ * 2. Client calls navigator.credentials.get()
25
+ * 3. Client calls POST /auth/passkey/auth/finish → verifies + issues tokens
26
+ */
27
+ export interface PasskeyChallenge {
28
+ challenge: string;
29
+ expiresAt: number;
30
+ }
31
+ export interface PasskeyCredential {
32
+ credentialId: string;
33
+ publicKey: string;
34
+ signCount: number;
35
+ transports?: string[];
36
+ deviceType: 'platform' | 'cross-platform';
37
+ backedUp: boolean;
38
+ aaguid: string;
39
+ }
40
+ export interface RegistrationOptions {
41
+ rpId: string;
42
+ rpName: string;
43
+ userId: string;
44
+ userName: string;
45
+ userDisplayName: string;
46
+ challenge: string;
47
+ timeout?: number;
48
+ attestation?: 'none' | 'indirect' | 'direct' | 'enterprise';
49
+ authenticatorSelection?: {
50
+ authenticatorAttachment?: 'platform' | 'cross-platform';
51
+ residentKey?: 'required' | 'preferred' | 'discouraged';
52
+ userVerification?: 'required' | 'preferred' | 'discouraged';
53
+ requireResidentKey?: boolean;
54
+ };
55
+ }
56
+ export interface AuthenticationOptions {
57
+ rpId: string;
58
+ challenge: string;
59
+ timeout?: number;
60
+ userVerification?: 'required' | 'preferred' | 'discouraged';
61
+ allowCredentials?: Array<{
62
+ id: string;
63
+ type: 'public-key';
64
+ transports?: string[];
65
+ }>;
66
+ }
67
+ export interface RegistrationResponse {
68
+ id: string;
69
+ rawId: string;
70
+ type: 'public-key';
71
+ response: {
72
+ clientDataJSON: string;
73
+ attestationObject: string;
74
+ };
75
+ }
76
+ export interface AuthenticationResponse {
77
+ id: string;
78
+ rawId: string;
79
+ type: 'public-key';
80
+ response: {
81
+ clientDataJSON: string;
82
+ authenticatorData: string;
83
+ signature: string;
84
+ userHandle?: string;
85
+ };
86
+ }
87
+ export interface VerifiedRegistration {
88
+ credentialId: string;
89
+ publicKey: string;
90
+ signCount: number;
91
+ aaguid: string;
92
+ deviceType: 'platform' | 'cross-platform';
93
+ backedUp: boolean;
94
+ transports: string[];
95
+ }
96
+ export interface VerifiedAuthentication {
97
+ credentialId: string;
98
+ newSignCount: number;
99
+ userVerified: boolean;
100
+ }
101
+ /**
102
+ * Generate a cryptographically random challenge for WebAuthn.
103
+ * Returns a base64url-encoded 32-byte random value.
104
+ */
105
+ export declare function generateChallenge(): PasskeyChallenge;
106
+ /**
107
+ * Build the PublicKeyCredentialCreationOptions for registration.
108
+ */
109
+ export declare function buildRegistrationOptions(opts: RegistrationOptions): Record<string, unknown>;
110
+ /**
111
+ * Build the PublicKeyCredentialRequestOptions for authentication.
112
+ */
113
+ export declare function buildAuthenticationOptions(opts: AuthenticationOptions): Record<string, unknown>;
114
+ /**
115
+ * Verify a WebAuthn registration response.
116
+ *
117
+ * Validates:
118
+ * - clientDataJSON type, origin, and challenge
119
+ * - attestationObject format (none attestation)
120
+ * - Extracts public key, sign count, AAGUID, and device type
121
+ *
122
+ * @throws Error if verification fails
123
+ */
124
+ export declare function verifyRegistration(response: RegistrationResponse, expectedChallenge: string, expectedOrigin: string, expectedRpId: string): Promise<VerifiedRegistration>;
125
+ /**
126
+ * Verify a WebAuthn authentication response.
127
+ *
128
+ * Validates:
129
+ * - clientDataJSON type, origin, and challenge
130
+ * - authenticatorData RP ID hash and flags
131
+ * - Signature over authenticatorData + clientDataHash using stored public key
132
+ * - Sign count (replay attack prevention)
133
+ *
134
+ * @throws Error if verification fails
135
+ */
136
+ export declare function verifyAuthentication(response: AuthenticationResponse, expectedChallenge: string, expectedOrigin: string, expectedRpId: string, storedCredential: PasskeyCredential): Promise<VerifiedAuthentication>;
137
+ export declare function bufferToBase64url(buffer: Uint8Array): string;
138
+ export declare function base64urlToBuffer(base64url: string): Uint8Array;
139
+ //# sourceMappingURL=passkey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passkey.d.ts","sourceRoot":"","sources":["../../src/lib/passkey.ts"],"names":[],"mappings":"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"}