accounts 0.12.2 → 0.13.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.
Files changed (99) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +6 -5
  3. package/dist/cli/adapter.d.ts.map +1 -1
  4. package/dist/cli/adapter.js +53 -67
  5. package/dist/cli/adapter.js.map +1 -1
  6. package/dist/core/AccessKey.d.ts +89 -106
  7. package/dist/core/AccessKey.d.ts.map +1 -1
  8. package/dist/core/AccessKey.js +226 -210
  9. package/dist/core/AccessKey.js.map +1 -1
  10. package/dist/core/Account.d.ts +0 -9
  11. package/dist/core/Account.d.ts.map +1 -1
  12. package/dist/core/Account.js +1 -13
  13. package/dist/core/Account.js.map +1 -1
  14. package/dist/core/Adapter.d.ts +10 -2
  15. package/dist/core/Adapter.d.ts.map +1 -1
  16. package/dist/core/Provider.d.ts +4 -5
  17. package/dist/core/Provider.d.ts.map +1 -1
  18. package/dist/core/Provider.js +66 -76
  19. package/dist/core/Provider.js.map +1 -1
  20. package/dist/core/Schema.d.ts +7 -7
  21. package/dist/core/adapters/dialog.d.ts.map +1 -1
  22. package/dist/core/adapters/dialog.js +114 -124
  23. package/dist/core/adapters/dialog.js.map +1 -1
  24. package/dist/core/adapters/local.d.ts.map +1 -1
  25. package/dist/core/adapters/local.js +92 -105
  26. package/dist/core/adapters/local.js.map +1 -1
  27. package/dist/core/adapters/privy.d.ts +164 -0
  28. package/dist/core/adapters/privy.d.ts.map +1 -0
  29. package/dist/core/adapters/privy.js +574 -0
  30. package/dist/core/adapters/privy.js.map +1 -0
  31. package/dist/core/adapters/turnkey.d.ts.map +1 -1
  32. package/dist/core/adapters/turnkey.js +136 -133
  33. package/dist/core/adapters/turnkey.js.map +1 -1
  34. package/dist/core/internal/AccessKeyTransaction.d.ts +59 -0
  35. package/dist/core/internal/AccessKeyTransaction.d.ts.map +1 -0
  36. package/dist/core/internal/AccessKeyTransaction.js +155 -0
  37. package/dist/core/internal/AccessKeyTransaction.js.map +1 -0
  38. package/dist/core/zod/rpc.d.ts +9 -4
  39. package/dist/core/zod/rpc.d.ts.map +1 -1
  40. package/dist/core/zod/rpc.js +9 -4
  41. package/dist/core/zod/rpc.js.map +1 -1
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/react-native/adapter.d.ts.map +1 -1
  47. package/dist/react-native/adapter.js +61 -72
  48. package/dist/react-native/adapter.js.map +1 -1
  49. package/dist/server/Kv.d.ts +19 -9
  50. package/dist/server/Kv.d.ts.map +1 -1
  51. package/dist/server/Kv.js +32 -9
  52. package/dist/server/Kv.js.map +1 -1
  53. package/dist/server/internal/handlers/auth.d.ts.map +1 -1
  54. package/dist/server/internal/handlers/auth.js +2 -0
  55. package/dist/server/internal/handlers/auth.js.map +1 -1
  56. package/dist/server/internal/handlers/relay.d.ts +18 -12
  57. package/dist/server/internal/handlers/relay.d.ts.map +1 -1
  58. package/dist/server/internal/handlers/relay.js +115 -2
  59. package/dist/server/internal/handlers/relay.js.map +1 -1
  60. package/dist/server/internal/handlers/webAuthn.d.ts +6 -1
  61. package/dist/server/internal/handlers/webAuthn.d.ts.map +1 -1
  62. package/dist/server/internal/handlers/webAuthn.js +16 -9
  63. package/dist/server/internal/handlers/webAuthn.js.map +1 -1
  64. package/package.json +2 -2
  65. package/src/cli/adapter.ts +69 -74
  66. package/src/core/AccessKey.test.ts +525 -559
  67. package/src/core/AccessKey.ts +323 -327
  68. package/src/core/Account.test.ts +5 -50
  69. package/src/core/Account.ts +1 -19
  70. package/src/core/Adapter.ts +6 -2
  71. package/src/core/{Provider.test.ts → Provider.localnet.test.ts} +97 -31
  72. package/src/core/Provider.ts +110 -110
  73. package/src/core/Schema.test-d.ts +18 -0
  74. package/src/core/adapters/dialog.test.ts +137 -13
  75. package/src/core/adapters/dialog.ts +109 -121
  76. package/src/core/adapters/local.ts +95 -119
  77. package/src/core/adapters/privy.test-d.ts +128 -0
  78. package/src/core/adapters/privy.test.ts +634 -0
  79. package/src/core/adapters/privy.ts +805 -0
  80. package/src/core/adapters/turnkey.test.ts +117 -13
  81. package/src/core/adapters/turnkey.ts +132 -149
  82. package/src/core/internal/AccessKeyTransaction.ts +243 -0
  83. package/src/core/{mppx.test.ts → mppx.localnet.test.ts} +32 -2
  84. package/src/core/zod/request.test.ts +36 -0
  85. package/src/core/zod/rpc.ts +17 -10
  86. package/src/index.ts +1 -1
  87. package/src/react-native/adapter.ts +77 -84
  88. package/src/server/Kv.test.ts +51 -0
  89. package/src/server/Kv.ts +43 -9
  90. package/src/server/internal/handlers/auth.test.ts +10 -5
  91. package/src/server/internal/handlers/auth.ts +3 -0
  92. package/src/server/internal/handlers/{relay.test.ts → relay.localnet.test.ts} +3 -0
  93. package/src/server/internal/handlers/relay.ts +138 -13
  94. package/src/server/internal/handlers/session.test.ts +1 -1
  95. package/src/server/internal/handlers/webAuthn.test.ts +20 -0
  96. package/src/server/internal/handlers/webAuthn.ts +24 -12
  97. /package/src/cli/{Provider.test.ts → Provider.localnet.test.ts} +0 -0
  98. /package/src/react-native/{Provider.test.ts → Provider.localnet.test.ts} +0 -0
  99. /package/src/server/internal/handlers/{exchange.test.ts → exchange.localnet.test.ts} +0 -0
@@ -0,0 +1,128 @@
1
+ import { describe, expectTypeOf, test } from 'vp/test'
2
+
3
+ import * as Adapter from '../Adapter.js'
4
+ import { privy } from './privy.js'
5
+
6
+ describe('privy', () => {
7
+ test('accepts a structural Privy client matching `@privy-io/js-sdk-core`', () => {
8
+ expectTypeOf<privy.Client>().toEqualTypeOf<{
9
+ auth: {
10
+ logout: (parameters?: { userId: string } | undefined) => Promise<void> | void
11
+ }
12
+ embeddedWallet: {
13
+ getEthereumProvider: (parameters: {
14
+ wallet: privy.LinkedAccount
15
+ entropyId: string
16
+ entropyIdVerifier: string
17
+ }) => Promise<privy.EthereumProvider> | privy.EthereumProvider
18
+ }
19
+ getAccessToken: () => Promise<string | null>
20
+ initialize?: (() => Promise<void> | void) | undefined
21
+ user: {
22
+ get: () => Promise<{ user: privy.User }>
23
+ }
24
+ }>()
25
+ })
26
+
27
+ test('accepts a wider client with extra fields', () => {
28
+ expectTypeOf<{
29
+ auth: {
30
+ logout: () => Promise<void>
31
+ login: () => Promise<void>
32
+ }
33
+ embeddedWallet: {
34
+ getEthereumProvider: (parameters: {
35
+ wallet: privy.LinkedAccount
36
+ entropyId: string
37
+ entropyIdVerifier: string
38
+ }) => Promise<privy.EthereumProvider>
39
+ }
40
+ getAccessToken: () => Promise<string | null>
41
+ initialize: () => Promise<void>
42
+ user: {
43
+ get: () => Promise<{ user: privy.User }>
44
+ }
45
+ // Extra app-specific fields are fine.
46
+ privyVersion: string
47
+ }>().toMatchTypeOf<privy.Client>()
48
+ })
49
+
50
+ test('ethereum provider shape exposes EIP-1193 request', () => {
51
+ expectTypeOf<privy.EthereumProvider>().toMatchTypeOf<{
52
+ request(parameters: {
53
+ method: string
54
+ params?: readonly unknown[] | undefined
55
+ }): Promise<unknown>
56
+ }>()
57
+ })
58
+
59
+ test('embedded wallet shape requires address and EIP-1193 provider', () => {
60
+ expectTypeOf<privy.EmbeddedWallet>().toEqualTypeOf<{
61
+ address: string
62
+ provider: privy.EthereumProvider
63
+ }>()
64
+ })
65
+
66
+ test('options require client and loadAccounts; createAccount is optional', () => {
67
+ expectTypeOf<privy.Options>().toMatchTypeOf<{
68
+ client: privy.Client
69
+ createAccount?:
70
+ | ((parameters: {
71
+ client: privy.Client
72
+ parameters: Adapter.createAccount.Parameters
73
+ }) => Promise<privy.AccountSelection>)
74
+ | undefined
75
+ loadAccounts: (parameters: {
76
+ client: privy.Client
77
+ parameters?: Adapter.loadAccounts.Parameters | undefined
78
+ }) => Promise<privy.AccountSelection>
79
+ }>()
80
+ })
81
+
82
+ test('privy() returns an Adapter', () => {
83
+ expectTypeOf(privy).returns.toEqualTypeOf<Adapter.Adapter>()
84
+ })
85
+
86
+ test('callbacks receive a Privy client and adapter parameters', () => {
87
+ privy({
88
+ client: {
89
+ auth: { logout: async () => {} },
90
+ embeddedWallet: {
91
+ getEthereumProvider: async () => ({ request: async () => '0x0' }),
92
+ },
93
+ getAccessToken: async () => null,
94
+ user: { get: async () => ({ user: { id: 'u' } }) },
95
+ },
96
+ createAccount: async ({ client, parameters }) => {
97
+ expectTypeOf(client).toMatchTypeOf<privy.Client>()
98
+ expectTypeOf(parameters).toEqualTypeOf<Adapter.createAccount.Parameters>()
99
+ },
100
+ loadAccounts: async ({ client, parameters }) => {
101
+ expectTypeOf(client).toMatchTypeOf<privy.Client>()
102
+ expectTypeOf(parameters).toEqualTypeOf<Adapter.loadAccounts.Parameters | undefined>()
103
+ },
104
+ })
105
+ })
106
+
107
+ test('callbacks preserve the concrete client type', () => {
108
+ const client = {
109
+ auth: { logout: async () => {} },
110
+ embeddedWallet: {
111
+ getEthereumProvider: async () => ({ request: async () => '0x0' }),
112
+ },
113
+ getAccessToken: async () => null,
114
+ user: { get: async () => ({ user: { id: 'u' } }) },
115
+ // App-specific extras must remain visible to callbacks.
116
+ raw: { delegateWallets: async () => 'delegated' as const },
117
+ }
118
+ privy({
119
+ client,
120
+ createAccount: async ({ client }) => {
121
+ expectTypeOf(client.raw.delegateWallets).toEqualTypeOf<() => Promise<'delegated'>>()
122
+ },
123
+ loadAccounts: async ({ client }) => {
124
+ expectTypeOf(client.raw.delegateWallets).toEqualTypeOf<() => Promise<'delegated'>>()
125
+ },
126
+ })
127
+ })
128
+ })