@passlock/client 0.9.30 → 0.9.32

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 (89) hide show
  1. package/README.md +1 -1
  2. package/README.template.md +1 -1
  3. package/dist/authentication/authenticate.d.ts +5 -6
  4. package/dist/authentication/authenticate.fixture.d.ts +9 -9
  5. package/dist/authentication/authenticate.fixture.js +8 -8
  6. package/dist/authentication/authenticate.fixture.js.map +1 -1
  7. package/dist/authentication/authenticate.js +4 -5
  8. package/dist/authentication/authenticate.js.map +1 -1
  9. package/dist/connection/connection.d.ts +3 -3
  10. package/dist/connection/connection.fixture.d.ts +2 -2
  11. package/dist/connection/connection.fixture.js +2 -2
  12. package/dist/connection/connection.fixture.js.map +1 -1
  13. package/dist/connection/connection.js +2 -2
  14. package/dist/connection/connection.js.map +1 -1
  15. package/dist/effect.js +2 -2
  16. package/dist/effect.js.map +1 -1
  17. package/dist/email/email.d.ts +1 -1
  18. package/dist/email/email.fixture.d.ts +4 -4
  19. package/dist/email/email.fixture.js +3 -3
  20. package/dist/email/email.fixture.js.map +1 -1
  21. package/dist/email/email.js +2 -2
  22. package/dist/email/email.js.map +1 -1
  23. package/dist/index.d.ts +4 -4
  24. package/dist/registration/register.d.ts +5 -7
  25. package/dist/registration/register.fixture.d.ts +8 -8
  26. package/dist/registration/register.fixture.js +6 -6
  27. package/dist/registration/register.fixture.js.map +1 -1
  28. package/dist/registration/register.js +5 -6
  29. package/dist/registration/register.js.map +1 -1
  30. package/dist/rpc/client.js +1 -1
  31. package/dist/rpc/client.js.map +1 -1
  32. package/dist/rpc/connection.d.ts +1 -1
  33. package/dist/rpc/connection.js +3 -2
  34. package/dist/rpc/connection.js.map +1 -1
  35. package/dist/rpc/{authentication.d.ts → passkey/authentication.d.ts} +4 -4
  36. package/dist/rpc/passkey/authentication.js +17 -0
  37. package/dist/rpc/passkey/authentication.js.map +1 -0
  38. package/dist/rpc/{registration.d.ts → passkey/registration.d.ts} +3 -3
  39. package/dist/rpc/passkey/registration.js +17 -0
  40. package/dist/rpc/passkey/registration.js.map +1 -0
  41. package/dist/rpc/social.d.ts +1 -1
  42. package/dist/rpc/social.js +6 -5
  43. package/dist/rpc/social.js.map +1 -1
  44. package/dist/rpc/user.d.ts +1 -1
  45. package/dist/rpc/user.js +5 -4
  46. package/dist/rpc/user.js.map +1 -1
  47. package/dist/social/social.d.ts +7 -8
  48. package/dist/social/social.fixture.d.ts +5 -5
  49. package/dist/social/social.fixture.js +7 -7
  50. package/dist/social/social.fixture.js.map +1 -1
  51. package/dist/social/social.js +7 -8
  52. package/dist/social/social.js.map +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/dist/user/user.d.ts +3 -3
  55. package/dist/user/user.fixture.d.ts +6 -6
  56. package/dist/user/user.fixture.js +6 -6
  57. package/dist/user/user.fixture.js.map +1 -1
  58. package/dist/user/user.js +5 -6
  59. package/dist/user/user.js.map +1 -1
  60. package/dist/version.d.ts +1 -1
  61. package/dist/version.js +1 -1
  62. package/package.json +2 -2
  63. package/src/authentication/authenticate.fixture.ts +11 -11
  64. package/src/authentication/authenticate.test.ts +1 -1
  65. package/src/authentication/authenticate.ts +10 -16
  66. package/src/connection/connection.fixture.ts +2 -2
  67. package/src/connection/connection.ts +3 -3
  68. package/src/effect.ts +2 -2
  69. package/src/email/email.fixture.ts +3 -3
  70. package/src/email/email.ts +2 -2
  71. package/src/registration/register.fixture.ts +11 -11
  72. package/src/registration/register.test.ts +1 -1
  73. package/src/registration/register.ts +11 -13
  74. package/src/rpc/client.ts +1 -1
  75. package/src/rpc/connection.ts +4 -2
  76. package/src/rpc/{authentication.ts → passkey/authentication.ts} +22 -13
  77. package/src/rpc/passkey/registration.ts +52 -0
  78. package/src/rpc/social.ts +24 -14
  79. package/src/rpc/user.ts +23 -12
  80. package/src/social/social.fixture.ts +7 -8
  81. package/src/social/social.test.ts +8 -8
  82. package/src/social/social.ts +13 -16
  83. package/src/user/user.fixture.ts +10 -10
  84. package/src/user/user.ts +7 -9
  85. package/dist/rpc/authentication.js +0 -16
  86. package/dist/rpc/authentication.js.map +0 -1
  87. package/dist/rpc/registration.js +0 -16
  88. package/dist/rpc/registration.js.map +0 -1
  89. package/src/rpc/registration.ts +0 -41
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/user/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAG1D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAGrF,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAW3C,aAAa;AAEb,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAMlE;CAAG;AAMN,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAc,EAA+C,EAAE;IAC5F,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAEtC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAE3F,OAAO,YAAY,CAAA;IACrB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAoB,EAC6B,EAAE;IACnD,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAEtC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAA;QAC1C,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,cAAc,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1F,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,UAAU;AAEV,qBAAqB;AACrB,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CACzC,WAAW,EACX,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAc,CAAC,CAAA;IACjD,OAAO,WAAW,CAAC,EAAE,CAAC;QACpB,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC3E,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA;AACD,oBAAoB"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/user/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAI1D,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAWrC,aAAa;AAEb,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,EAMlE;CAAG;AAMN,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAc,EAA+C,EAAE;IAC5F,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE1C,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAEnG,OAAO,YAAY,CAAA;IACrB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAoB,EAC6B,EAAE;IACnD,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC,CAAA;QACnD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QAE1C,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAA;QAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAA;QAC1C,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAA;IAClG,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,UAAU;AAEV,qBAAqB;AACrB,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CACzC,WAAW,EACX,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAkB,CAAC,CAAA;IACrD,OAAO,WAAW,CAAC,EAAE,CAAC;QACpB,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KAC3E,CAAC,CAAA;AACJ,CAAC,CAAC,CACH,CAAA;AACD,oBAAoB"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const PASSLOCK_CLIENT_VERSION = "0.9.30";
1
+ export declare const PASSLOCK_CLIENT_VERSION = "0.9.32";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const PASSLOCK_CLIENT_VERSION = '0.9.30';
1
+ export const PASSLOCK_CLIENT_VERSION = '0.9.32';
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@passlock/client",
3
- "version": "0.9.30",
3
+ "version": "0.9.32",
4
4
  "description": "Passkey authentication and social login for web apps (Typescript). Framework agnostic",
5
5
  "keywords": [
6
6
  "passkey",
@@ -48,7 +48,7 @@
48
48
  "@effect/schema": "0.74.1",
49
49
  "@github/webauthn-json": "^2.1.1",
50
50
  "effect": "3.8.4",
51
- "@passlock/shared": "0.9.30"
51
+ "@passlock/shared": "0.9.32"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@qetza/replacetokens": "^1.7.0",
@@ -1,15 +1,15 @@
1
1
  import { Effect as E, Layer as L, Option as O } from 'effect'
2
2
 
3
3
  import {
4
- OptionsRes,
5
- VerificationReq,
6
- VerificationRes,
7
- } from '@passlock/shared/dist/rpc/authentication.js'
8
- import { IsExistingUserRes, VerifyEmailRes } from '@passlock/shared/dist/rpc/user.js'
4
+ OptionsResponse,
5
+ VerificationRequest,
6
+ VerificationResponse,
7
+ } from '@passlock/shared/dist/rpc/passkey/authentication.js'
8
+ import { IsExistingUserResponse, VerifyEmailResponse } from '@passlock/shared/dist/rpc/user.js'
9
9
  import type { AuthenticationCredential } from '@passlock/shared/dist/schema/passkey.js'
10
10
 
11
11
  import * as Fixtures from '../test/fixtures.js'
12
- import { AuthenticationClient } from '../rpc/authentication.js'
12
+ import { AuthenticationClient } from '../rpc/passkey/authentication.js'
13
13
  import { type AuthenticationRequest, GetCredential } from './authenticate.js'
14
14
 
15
15
  export const session = 'session'
@@ -23,7 +23,7 @@ export const request: AuthenticationRequest = {
23
23
  email: O.none(),
24
24
  }
25
25
 
26
- export const rpcOptionsRes = new OptionsRes({
26
+ export const rpcOptionsRes = new OptionsResponse({
27
27
  session,
28
28
  publicKey: {
29
29
  rpId: 'passlock.dev',
@@ -47,13 +47,13 @@ export const credential: AuthenticationCredential = {
47
47
  authenticatorAttachment: null,
48
48
  }
49
49
 
50
- export const rpcVerificationReq = new VerificationReq({ session, credential })
50
+ export const rpcVerificationReq = new VerificationRequest({ session, credential })
51
51
 
52
- export const rpcVerificationRes = new VerificationRes({ principal: Fixtures.principal })
52
+ export const rpcVerificationRes = new VerificationResponse({ principal: Fixtures.principal })
53
53
 
54
- export const rpcIsExistingUserRes = new IsExistingUserRes({ existingUser: true, detail: O.none() })
54
+ export const rpcIsExistingUserRes = new IsExistingUserResponse({ existingUser: true, detail: O.none() })
55
55
 
56
- export const rpcVerifyEmailRes = new VerifyEmailRes({ principal: Fixtures.principal })
56
+ export const rpcVerifyEmailRes = new VerifyEmailResponse({ principal: Fixtures.principal })
57
57
 
58
58
  export const getCredentialTest = L.succeed(
59
59
  GetCredential,
@@ -3,7 +3,7 @@ import { describe, expect, test, vi } from 'vitest'
3
3
  import { mock } from 'vitest-mock-extended'
4
4
 
5
5
  import * as Fixture from './authenticate.fixture.js'
6
- import { AuthenticationClient } from '../rpc/authentication.js'
6
+ import { AuthenticationClient } from '../rpc/passkey/authentication.js'
7
7
  import { StorageService } from '../storage/storage.js'
8
8
  import { AuthenticateServiceLive, AuthenticationService, GetCredential } from './authenticate.js'
9
9
 
@@ -8,25 +8,19 @@ import {
8
8
  import { Context, Effect as E, Layer, flow, pipe } from 'effect'
9
9
 
10
10
  import { InternalBrowserError, type NotSupported } from '@passlock/shared/dist/error/error.js'
11
- import {
12
- type OptionsErrors,
13
- type OptionsReq,
14
- type VerificationErrors,
15
- VerificationReq,
16
- } from '@passlock/shared/dist/rpc/authentication.js'
11
+ import * as RPC from '../rpc/passkey/authentication.js'
17
12
  import type { AuthenticationCredential } from '@passlock/shared/dist/schema/passkey.js'
18
13
  import type { Principal } from '@passlock/shared/dist/schema/principal.js'
19
14
 
20
15
  import { Capabilities } from '../capabilities/capabilities.js'
21
- import { AuthenticationClient } from '../rpc/authentication.js'
22
16
  import { StorageService } from '../storage/storage.js'
23
17
 
24
18
  /* Requests */
25
19
 
26
- export type AuthenticationRequest = OptionsReq
20
+ export type AuthenticationRequest = RPC.OptionsRequest
27
21
  /* Errors */
28
22
 
29
- export type AuthenticationErrors = NotSupported | OptionsErrors | VerificationErrors
23
+ export type AuthenticationErrors = NotSupported | RPC.OptionsErrors | RPC.VerificationErrors
30
24
 
31
25
  /* Dependencies */
32
26
 
@@ -52,11 +46,11 @@ export class AuthenticationService extends Context.Tag('@services/Authentication
52
46
 
53
47
  /* Utilities */
54
48
 
55
- const fetchOptions = (request: OptionsReq) => {
49
+ const fetchOptions = (request: RPC.OptionsRequest) => {
56
50
  return E.gen(function* (_) {
57
51
  yield* _(E.logDebug('Making request'))
58
52
 
59
- const rpcClient = yield* _(AuthenticationClient)
53
+ const rpcClient = yield* _(RPC.AuthenticationClient)
60
54
  const { publicKey, session } = yield* _(rpcClient.getAuthenticationOptions(request))
61
55
 
62
56
  yield* _(E.logDebug('Converting Passlock options to CredentialRequestOptions'))
@@ -79,11 +73,11 @@ const toRequestOptions = (request: CredentialRequestOptionsJSON) => {
79
73
  )
80
74
  }
81
75
 
82
- const verifyCredential = (request: VerificationReq) => {
76
+ const verifyCredential = (request: RPC.VerificationRequest) => {
83
77
  return E.gen(function* (_) {
84
78
  yield* _(E.logDebug('Making request'))
85
79
 
86
- const rpcClient = yield* _(AuthenticationClient)
80
+ const rpcClient = yield* _(RPC.AuthenticationClient)
87
81
  const { principal } = yield* _(rpcClient.verifyAuthenticationCredential(request))
88
82
 
89
83
  return principal
@@ -92,7 +86,7 @@ const verifyCredential = (request: VerificationReq) => {
92
86
 
93
87
  /* Effects */
94
88
 
95
- type Dependencies = GetCredential | Capabilities | StorageService | AuthenticationClient
89
+ type Dependencies = GetCredential | Capabilities | StorageService | RPC.AuthenticationClient
96
90
 
97
91
  export const authenticatePasskey = (
98
92
  request: AuthenticationRequest,
@@ -111,7 +105,7 @@ export const authenticatePasskey = (
111
105
  const credential = yield* _(getCredential(options))
112
106
 
113
107
  yield* _(E.logInfo('Verifying credential with Passlock'))
114
- const principal = yield* _(verifyCredential(new VerificationReq({ credential, session })))
108
+ const principal = yield* _(verifyCredential(new RPC.VerificationRequest({ credential, session })))
115
109
 
116
110
  const storageService = yield* _(StorageService)
117
111
  yield* _(storageService.storeToken(principal))
@@ -138,7 +132,7 @@ export const AuthenticateServiceLive = Layer.effect(
138
132
  AuthenticationService,
139
133
  E.gen(function* (_) {
140
134
  const context = yield* _(
141
- E.context<GetCredential | AuthenticationClient | Capabilities | StorageService>(),
135
+ E.context<GetCredential | RPC.AuthenticationClient | Capabilities | StorageService>(),
142
136
  )
143
137
 
144
138
  return AuthenticationService.of({
@@ -1,10 +1,10 @@
1
1
  import { Effect as E, Layer as L } from 'effect'
2
2
 
3
- import { ConnectRes } from '@passlock/shared/dist/rpc/connection.js'
3
+ import { ConnectResponse } from '@passlock/shared/dist/rpc/connection.js'
4
4
 
5
5
  import { ConnectionClient } from '../rpc/connection.js'
6
6
 
7
- export const preConnectRes = new ConnectRes({ warmed: true })
7
+ export const preConnectRes = new ConnectResponse({ warmed: true })
8
8
 
9
9
  export const rpcClientTest = L.succeed(
10
10
  ConnectionClient,
@@ -5,7 +5,7 @@ import { Context, Effect as E, Layer, flow, pipe } from 'effect'
5
5
 
6
6
  import { Dispatcher } from '../rpc/client.js'
7
7
  import type { RpcConfig } from '../rpc/config.js'
8
- import { ConnectionClient } from '../rpc/connection.js'
8
+ import * as RPC from '../rpc/connection.js'
9
9
 
10
10
  /* Service */
11
11
 
@@ -28,7 +28,7 @@ const hitPrincipal = pipe(
28
28
 
29
29
  const hitRpc = pipe(
30
30
  E.logInfo('Pre-connecting to RPC endpoint'),
31
- E.zipRight(ConnectionClient),
31
+ E.zipRight(RPC.ConnectionClient),
32
32
  E.flatMap(rpcClient => rpcClient.preConnect()),
33
33
  E.asVoid,
34
34
  )
@@ -41,7 +41,7 @@ export const preConnect = () => pipe(E.all([hitPrincipal, hitRpc], { concurrency
41
41
  export const ConnectionServiceLive = Layer.effect(
42
42
  ConnectionService,
43
43
  E.gen(function* (_) {
44
- const context = yield* _(E.context<ConnectionClient | Dispatcher | RpcConfig>())
44
+ const context = yield* _(E.context<RPC.ConnectionClient | Dispatcher | RpcConfig>())
45
45
 
46
46
  return ConnectionService.of({
47
47
  preConnect: flow(preConnect, E.provide(context)),
package/src/effect.ts CHANGED
@@ -32,12 +32,12 @@ import {
32
32
  RegistrationService,
33
33
  RegistrationServiceLive,
34
34
  } from './registration/register.js'
35
- import { AuthenticationClientLive } from './rpc/authentication.js'
35
+ import { AuthenticationClientLive } from './rpc/passkey/authentication.js'
36
36
  import { DispatcherLive } from './rpc/client.js'
37
37
  import type { RpcConfig } from './rpc/config.js'
38
38
  import { RetrySchedule } from './rpc/config.js'
39
39
  import { ConnectionClientLive } from './rpc/connection.js'
40
- import { RegistrationClientLive } from './rpc/registration.js'
40
+ import { RegistrationClientLive } from './rpc/passkey/registration.js'
41
41
  import { SocialClientLive } from './rpc/social.js'
42
42
  import { UserClientLive } from './rpc/user.js'
43
43
  import {
@@ -1,6 +1,6 @@
1
1
  import { Effect as E, Layer as L, Option as O } from 'effect'
2
2
 
3
- import { VerifyEmailReq, VerifyEmailRes } from '@passlock/shared/dist/rpc/user.js'
3
+ import { VerifyEmailRequest, VerifyEmailResponse } from '@passlock/shared/dist/rpc/user.js'
4
4
 
5
5
  import * as Fixtures from '../test/fixtures.js'
6
6
  import { AuthenticationService } from '../authentication/authenticate.js'
@@ -24,9 +24,9 @@ export const authenticationServiceTest = L.succeed(
24
24
  }),
25
25
  )
26
26
 
27
- export const rpcVerifyEmailReq = new VerifyEmailReq({ token, code })
27
+ export const rpcVerifyEmailReq = new VerifyEmailRequest({ token, code })
28
28
 
29
- export const rpcVerifyEmailRes = new VerifyEmailRes({ principal: Fixtures.principal })
29
+ export const rpcVerifyEmailRes = new VerifyEmailResponse({ principal: Fixtures.principal })
30
30
 
31
31
  export const rpcClientTest = L.succeed(
32
32
  UserClient,
@@ -5,7 +5,7 @@ import { Context, Effect as E, Layer, Option as O, flow, identity, pipe } from '
5
5
 
6
6
  import { BadRequest } from '@passlock/shared/dist/error/error.js'
7
7
  import type { VerifyEmailErrors as RpcErrors } from '@passlock/shared/dist/rpc/user.js'
8
- import { VerifyEmailReq } from '@passlock/shared/dist/rpc/user.js'
8
+ import { VerifyEmailRequest } from '@passlock/shared/dist/rpc/user.js'
9
9
  import type { Principal } from '@passlock/shared/dist/schema/principal.js'
10
10
 
11
11
  import { type AuthenticationErrors, AuthenticationService } from '../authentication/authenticate.js'
@@ -112,7 +112,7 @@ export const verifyEmail = (
112
112
  yield* _(E.logDebug('Making request'))
113
113
  const client = yield* _(UserClient)
114
114
  const { principal } = yield* _(
115
- client.verifyEmail(new VerifyEmailReq({ token, code: request.code })),
115
+ client.verifyEmail(new VerifyEmailRequest({ token, code: request.code })),
116
116
  )
117
117
 
118
118
  return principal
@@ -1,15 +1,15 @@
1
1
  import { Effect as E, Layer as L, Option as O } from 'effect'
2
2
 
3
3
  import {
4
- OptionsReq,
5
- OptionsRes,
6
- VerificationReq,
7
- VerificationRes,
8
- } from '@passlock/shared/dist/rpc/registration.js'
4
+ OptionsRequest,
5
+ OptionsResponse,
6
+ VerificationRequest,
7
+ VerificationResponse,
8
+ } from '@passlock/shared/dist/rpc/passkey/registration.js'
9
9
  import type { RegistrationCredential } from '@passlock/shared/dist/schema/passkey.js'
10
10
 
11
11
  import * as Fixtures from '../test/fixtures.js'
12
- import { RegistrationClient } from '../rpc/registration.js'
12
+ import { RegistrationClient } from '../rpc/passkey/registration.js'
13
13
  import { UserService } from '../user/user.js'
14
14
  import { CreateCredential, type RegistrationRequest } from './register.js'
15
15
 
@@ -27,9 +27,9 @@ export const registrationRequest: RegistrationRequest = {
27
27
  verifyEmail: O.none(),
28
28
  }
29
29
 
30
- export const rpcOptionsReq = new OptionsReq(registrationRequest)
30
+ export const rpcOptionsReq = new OptionsRequest(registrationRequest)
31
31
 
32
- export const registrationOptions: OptionsRes = {
32
+ export const registrationOptions: OptionsResponse = {
33
33
  session,
34
34
  publicKey: {
35
35
  rp: {
@@ -46,7 +46,7 @@ export const registrationOptions: OptionsRes = {
46
46
  },
47
47
  }
48
48
 
49
- export const rpcOptionsRes = new OptionsRes(registrationOptions)
49
+ export const rpcOptionsRes = new OptionsResponse(registrationOptions)
50
50
 
51
51
  export const credential: RegistrationCredential = {
52
52
  type: 'public-key',
@@ -60,13 +60,13 @@ export const credential: RegistrationCredential = {
60
60
  clientExtensionResults: {},
61
61
  }
62
62
 
63
- export const rpcVerificationReq = new VerificationReq({
63
+ export const rpcVerificationReq = new VerificationRequest({
64
64
  session,
65
65
  credential,
66
66
  verifyEmail: O.none(),
67
67
  })
68
68
 
69
- export const rpcVerificationRes = new VerificationRes({ principal: Fixtures.principal })
69
+ export const rpcVerificationRes = new VerificationResponse({ principal: Fixtures.principal })
70
70
 
71
71
  export const createCredentialTest = L.succeed(
72
72
  CreateCredential,
@@ -5,7 +5,7 @@ import { mock } from 'vitest-mock-extended'
5
5
  import { Duplicate, InternalBrowserError } from '@passlock/shared/dist/error/error.js'
6
6
 
7
7
  import * as Fixture from './register.fixture.js'
8
- import { RegistrationClient } from '../rpc/registration.js'
8
+ import { RegistrationClient } from '../rpc/passkey/registration.js'
9
9
  import { CreateCredential, RegistrationService, RegistrationServiceLive } from './register.js'
10
10
 
11
11
  describe('register should', () => {
@@ -9,19 +9,17 @@ import { Context, Effect as E, Layer, flow, pipe } from 'effect'
9
9
 
10
10
  import type { Duplicate, NotSupported } from '@passlock/shared/dist/error/error.js'
11
11
  import { InternalBrowserError } from '@passlock/shared/dist/error/error.js'
12
- import type { OptionsErrors, VerificationErrors } from '@passlock/shared/dist/rpc/registration.js'
13
- import { OptionsReq, VerificationReq } from '@passlock/shared/dist/rpc/registration.js'
12
+ import * as RPC from '../rpc/passkey/registration.js'
14
13
  import type { RegistrationCredential } from '@passlock/shared/dist/schema/passkey.js'
15
14
  import type { Principal } from '@passlock/shared/dist/schema/principal.js'
16
15
 
17
16
  import { Capabilities } from '../capabilities/capabilities.js'
18
- import { RegistrationClient } from '../rpc/registration.js'
19
17
  import { StorageService } from '../storage/storage.js'
20
18
  import type { UserService } from '../user/user.js'
21
19
 
22
20
  /* Requests */
23
21
 
24
- export type RegistrationRequest = OptionsReq
22
+ export type RegistrationRequest = RPC.OptionsRequest
25
23
 
26
24
  /* Dependencies */
27
25
 
@@ -36,7 +34,7 @@ export class CreateCredential extends Context.Tag('@services/CreateCredential')<
36
34
 
37
35
  /* Errors */
38
36
 
39
- export type RegistrationErrors = NotSupported | OptionsErrors | VerificationErrors
37
+ export type RegistrationErrors = NotSupported | RPC.OptionsErrors | RPC.VerificationErrors
40
38
 
41
39
  /* Service */
42
40
 
@@ -49,11 +47,11 @@ export class RegistrationService extends Context.Tag('@services/RegistrationServ
49
47
 
50
48
  /* Utilities */
51
49
 
52
- const fetchOptions = (request: OptionsReq) => {
50
+ const fetchOptions = (request: RPC.OptionsRequest) => {
53
51
  return E.gen(function* (_) {
54
52
  yield* _(E.logDebug('Making request'))
55
53
 
56
- const rpcClient = yield* _(RegistrationClient)
54
+ const rpcClient = yield* _(RPC.RegistrationClient)
57
55
  const { publicKey, session } = yield* _(rpcClient.getRegistrationOptions(request))
58
56
 
59
57
  yield* _(E.logDebug('Converting Passlock options to CredentialCreationOptions'))
@@ -76,11 +74,11 @@ const toCreationOptions = (jsonOptions: CredentialCreationOptionsJSON) => {
76
74
  )
77
75
  }
78
76
 
79
- const verifyCredential = (request: VerificationReq) => {
77
+ const verifyCredential = (request: RPC.VerificationRequest) => {
80
78
  return E.gen(function* (_) {
81
79
  yield* _(E.logDebug('Making request'))
82
80
 
83
- const rpcClient = yield* _(RegistrationClient)
81
+ const rpcClient = yield* _(RPC.RegistrationClient)
84
82
  const { principal } = yield* _(rpcClient.verifyRegistrationCredential(request))
85
83
 
86
84
  return principal
@@ -94,7 +92,7 @@ type Dependencies =
94
92
  | CreateCredential
95
93
  | StorageService
96
94
  | UserService
97
- | RegistrationClient
95
+ | RPC.RegistrationClient
98
96
 
99
97
  export const registerPasskey = (
100
98
  request: RegistrationRequest,
@@ -105,14 +103,14 @@ export const registerPasskey = (
105
103
  yield* _(capabilities.passkeySupport)
106
104
 
107
105
  yield* _(E.logInfo('Fetching registration options from Passlock'))
108
- const { options, session } = yield* fetchOptions(new OptionsReq(request))
106
+ const { options, session } = yield* fetchOptions(new RPC.OptionsRequest(request))
109
107
 
110
108
  yield* _(E.logInfo('Building new credential'))
111
109
  const { createCredential } = yield* _(CreateCredential)
112
110
  const credential = yield* _(createCredential(options))
113
111
 
114
112
  yield* _(E.logInfo('Storing credential public key in Passlock'))
115
- const verificationRequest = new VerificationReq({
113
+ const verificationRequest = new RPC.VerificationRequest({
116
114
  ...request,
117
115
  credential,
118
116
  session,
@@ -146,7 +144,7 @@ export const RegistrationServiceLive = Layer.effect(
146
144
  E.gen(function* (_) {
147
145
  const context = yield* _(
148
146
  E.context<
149
- CreateCredential | RegistrationClient | Capabilities | StorageService | UserService
147
+ CreateCredential | RPC.RegistrationClient | Capabilities | StorageService | UserService
150
148
  >(),
151
149
  )
152
150
 
package/src/rpc/client.ts CHANGED
@@ -62,7 +62,7 @@ export const DispatcherLive = Layer.effect(
62
62
  }
63
63
 
64
64
  const buildUrl = (_path: string) => {
65
- const endpoint = maybeEndpoint || 'https://api.passlock.dev'
65
+ const endpoint = maybeEndpoint || 'https://api.v1.passlock.dev'
66
66
  // drop leading /
67
67
  const path = _path.replace(/^\//, '')
68
68
  return `${endpoint}/${tenancyId}/${path}`
@@ -3,7 +3,7 @@ import { Context, Effect as E, Layer } from 'effect'
3
3
 
4
4
  import {
5
5
  CONNECT_ENDPOINT,
6
- ConnectRes,
6
+ ConnectResponse,
7
7
  type ConnectionService,
8
8
  } from '@passlock/shared/dist/rpc/connection.js'
9
9
 
@@ -21,10 +21,12 @@ export const ConnectionClientLive = Layer.effect(
21
21
  E.gen(function* (_) {
22
22
  const dispatcher = yield* _(Dispatcher)
23
23
 
24
- const preConnectResolver = makeGetRequest(ConnectRes, S.Never, dispatcher)
24
+ const preConnectResolver = makeGetRequest(ConnectResponse, S.Never, dispatcher)
25
25
 
26
26
  return {
27
27
  preConnect: () => preConnectResolver(CONNECT_ENDPOINT),
28
28
  }
29
29
  }),
30
30
  )
31
+
32
+ export { ConnectResponse } from '@passlock/shared/dist/rpc/connection.js'
@@ -4,40 +4,49 @@ import {
4
4
  type AuthenticationService,
5
5
  OPTIONS_ENDPOINT,
6
6
  OptionsErrors,
7
- OptionsReq,
8
- OptionsRes,
9
- VERIFY_ENDPOINT,
7
+ OptionsRequest,
8
+ OptionsResponse,
9
+ VERIFICATION_ENDPOINT,
10
10
  VerificationErrors,
11
- VerificationReq,
12
- VerificationRes,
13
- } from '@passlock/shared/dist/rpc/authentication.js'
11
+ VerificationRequest,
12
+ VerificationResponse,
13
+ } from '@passlock/shared/dist/rpc/passkey/authentication.js'
14
14
 
15
- import { Dispatcher, makePostRequest } from './client.js'
15
+ import { Dispatcher, makePostRequest } from '../client.js'
16
16
 
17
17
  /* Client */
18
18
 
19
- export class AuthenticationClient extends Context.Tag('@passkey/auth/client')<
19
+ export class AuthenticationClient extends Context.Tag('@passkey/authentication/client')<
20
20
  AuthenticationClient,
21
21
  AuthenticationService
22
- >() {}
22
+ >() { }
23
23
 
24
24
  export const AuthenticationClientLive = Layer.effect(
25
25
  AuthenticationClient,
26
26
  E.gen(function* (_) {
27
27
  const dispatcher = yield* _(Dispatcher)
28
28
 
29
- const optionsResolver = makePostRequest(OptionsReq, OptionsRes, OptionsErrors, dispatcher)
29
+ const optionsResolver = makePostRequest(OptionsRequest, OptionsResponse, OptionsErrors, dispatcher)
30
30
 
31
31
  const verifyResolver = makePostRequest(
32
- VerificationReq,
33
- VerificationRes,
32
+ VerificationRequest,
33
+ VerificationResponse,
34
34
  VerificationErrors,
35
35
  dispatcher,
36
36
  )
37
37
 
38
38
  return {
39
39
  getAuthenticationOptions: req => optionsResolver(OPTIONS_ENDPOINT, req),
40
- verifyAuthenticationCredential: req => verifyResolver(VERIFY_ENDPOINT, req),
40
+ verifyAuthenticationCredential: req => verifyResolver(VERIFICATION_ENDPOINT, req),
41
41
  }
42
42
  }),
43
43
  )
44
+
45
+ export {
46
+ OptionsErrors,
47
+ OptionsRequest,
48
+ OptionsResponse,
49
+ VerificationErrors,
50
+ VerificationRequest,
51
+ VerificationResponse,
52
+ } from '@passlock/shared/dist/rpc/passkey/authentication.js'
@@ -0,0 +1,52 @@
1
+ import { Context, Effect as E, Layer } from 'effect'
2
+
3
+ import {
4
+ OptionsErrors,
5
+ OptionsRequest,
6
+ OptionsResponse,
7
+ type RegistrationService,
8
+ VerificationErrors,
9
+ VerificationRequest,
10
+ VerificationResponse,
11
+ OPTIONS_ENDPOINT,
12
+ VERIFICATION_ENDPOINT
13
+ } from '@passlock/shared/dist/rpc/passkey/registration.js'
14
+
15
+ import { Dispatcher, makePostRequest } from '../client.js'
16
+
17
+ /* Client */
18
+
19
+ export class RegistrationClient extends Context.Tag('@passkey/register/client')<
20
+ RegistrationClient,
21
+ RegistrationService
22
+ >() {}
23
+
24
+ export const RegistrationClientLive = Layer.effect(
25
+ RegistrationClient,
26
+ E.gen(function* (_) {
27
+ const dispatcher = yield* _(Dispatcher)
28
+
29
+ const optionsResolver = makePostRequest(OptionsRequest, OptionsResponse, OptionsErrors, dispatcher)
30
+
31
+ const verifyResolver = makePostRequest(
32
+ VerificationRequest,
33
+ VerificationResponse,
34
+ VerificationErrors,
35
+ dispatcher,
36
+ )
37
+
38
+ return {
39
+ getRegistrationOptions: req => optionsResolver(OPTIONS_ENDPOINT, req),
40
+ verifyRegistrationCredential: req => verifyResolver(VERIFICATION_ENDPOINT, req),
41
+ }
42
+ }),
43
+ )
44
+
45
+ export {
46
+ OptionsErrors,
47
+ OptionsRequest,
48
+ OptionsResponse,
49
+ VerificationErrors,
50
+ VerificationRequest,
51
+ VerificationResponse,
52
+ } from '@passlock/shared/dist/rpc/passkey/registration.js'
package/src/rpc/social.ts CHANGED
@@ -1,12 +1,14 @@
1
1
  import { Context, Effect as E, Layer } from 'effect'
2
2
 
3
3
  import {
4
- AuthOidcErrors,
5
- AuthOidcReq,
6
- PrincipalRes,
7
- RegisterOidcErrors,
8
- RegisterOidcReq,
9
- type SocialService,
4
+ OIDCRegistrationRequest,
5
+ OIDCRegistrationErrors,
6
+ OIDCAuthenticationRequest,
7
+ OIDCAuthenticationErrors,
8
+ OIDC_REGISTRATION_ENDPOINT,
9
+ OIDC_AUTHENTICATION_ENDPOINT,
10
+ PrincipalResponse,
11
+ type SocialService
10
12
  } from '@passlock/shared/dist/rpc/social.js'
11
13
 
12
14
  import { Dispatcher, makePostRequest } from './client.js'
@@ -24,22 +26,30 @@ export const SocialClientLive = Layer.effect(
24
26
  const dispatcher = yield* _(Dispatcher)
25
27
 
26
28
  const registerResolver = makePostRequest(
27
- RegisterOidcReq,
28
- PrincipalRes,
29
- RegisterOidcErrors,
29
+ OIDCRegistrationRequest,
30
+ PrincipalResponse,
31
+ OIDCRegistrationErrors,
30
32
  dispatcher,
31
33
  )
32
34
 
33
35
  const authenticateResolver = makePostRequest(
34
- AuthOidcReq,
35
- PrincipalRes,
36
- AuthOidcErrors,
36
+ OIDCAuthenticationRequest,
37
+ PrincipalResponse,
38
+ OIDCAuthenticationErrors,
37
39
  dispatcher,
38
40
  )
39
41
 
40
42
  return {
41
- registerOidc: req => registerResolver(OIDC_REGISTER_ENDPOINT, req),
42
- authenticateOidc: req => authenticateResolver(OIDC_AUTH_ENDPOINT, req),
43
+ oidcRegistration: req => registerResolver(OIDC_REGISTRATION_ENDPOINT, req),
44
+ oidcAuthentication: req => authenticateResolver(OIDC_AUTHENTICATION_ENDPOINT, req),
43
45
  }
44
46
  }),
45
47
  )
48
+
49
+ export {
50
+ OIDCRegistrationRequest,
51
+ OIDCRegistrationErrors,
52
+ OIDCAuthenticationRequest,
53
+ OIDCAuthenticationErrors,
54
+ PrincipalResponse,
55
+ } from '@passlock/shared/dist/rpc/social.js'