@zerodev/wallet-core 0.0.1-alpha.20 → 0.0.1-alpha.21
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/_cjs/core/{createZeroDevWallet.js → createZeroDevWalletCore.js} +5 -10
- package/dist/_cjs/core/createZeroDevWalletCore.js.map +1 -0
- package/dist/_cjs/index.js +9 -7
- package/dist/_cjs/index.js.map +1 -1
- package/dist/_cjs/index.native.js +39 -0
- package/dist/_cjs/index.native.js.map +1 -0
- package/dist/_cjs/native/stampers/passkey.js +30 -0
- package/dist/_cjs/native/stampers/passkey.js.map +1 -0
- package/dist/_cjs/native/stampers/secureStore.js +112 -0
- package/dist/_cjs/native/stampers/secureStore.js.map +1 -0
- package/dist/_cjs/native/storage/asyncStorage.js +11 -0
- package/dist/_cjs/native/storage/asyncStorage.js.map +1 -0
- package/dist/_cjs/stubs/native-on-web.js +3 -0
- package/dist/_cjs/stubs/native-on-web.js.map +1 -0
- package/dist/_cjs/utils/platform.js +19 -0
- package/dist/_cjs/utils/platform.js.map +1 -0
- package/dist/_cjs/web/createZeroDevWallet.js +21 -0
- package/dist/_cjs/web/createZeroDevWallet.js.map +1 -0
- package/dist/_esm/core/{createZeroDevWallet.js → createZeroDevWalletCore.js} +4 -9
- package/dist/_esm/core/createZeroDevWalletCore.js.map +1 -0
- package/dist/_esm/index.js +11 -3
- package/dist/_esm/index.js.map +1 -1
- package/dist/_esm/index.native.js +18 -0
- package/dist/_esm/index.native.js.map +1 -0
- package/dist/_esm/native/stampers/passkey.js +27 -0
- package/dist/_esm/native/stampers/passkey.js.map +1 -0
- package/dist/_esm/native/stampers/secureStore.js +120 -0
- package/dist/_esm/native/stampers/secureStore.js.map +1 -0
- package/dist/_esm/native/storage/asyncStorage.js +13 -0
- package/dist/_esm/native/storage/asyncStorage.js.map +1 -0
- package/dist/_esm/stubs/native-on-web.js +3 -0
- package/dist/_esm/stubs/native-on-web.js.map +1 -0
- package/dist/_esm/utils/platform.js +16 -0
- package/dist/_esm/utils/platform.js.map +1 -0
- package/dist/_esm/web/createZeroDevWallet.js +18 -0
- package/dist/_esm/web/createZeroDevWallet.js.map +1 -0
- package/dist/_types/core/{createZeroDevWallet.d.ts → createZeroDevWalletCore.d.ts} +7 -7
- package/dist/_types/core/createZeroDevWalletCore.d.ts.map +1 -0
- package/dist/_types/index.d.ts +3 -3
- package/dist/_types/index.d.ts.map +1 -1
- package/dist/_types/index.native.d.ts +19 -0
- package/dist/_types/index.native.d.ts.map +1 -0
- package/dist/_types/native/stampers/passkey.d.ts +5 -0
- package/dist/_types/native/stampers/passkey.d.ts.map +1 -0
- package/dist/_types/native/stampers/secureStore.d.ts +3 -0
- package/dist/_types/native/stampers/secureStore.d.ts.map +1 -0
- package/dist/_types/native/storage/asyncStorage.d.ts +3 -0
- package/dist/_types/native/storage/asyncStorage.d.ts.map +1 -0
- package/dist/_types/stubs/native-on-web.d.ts +2 -0
- package/dist/_types/stubs/native-on-web.d.ts.map +1 -0
- package/dist/_types/utils/exportPrivateKey.d.ts +1 -1
- package/dist/_types/utils/exportPrivateKey.d.ts.map +1 -1
- package/dist/_types/utils/exportWallet.d.ts +1 -1
- package/dist/_types/utils/exportWallet.d.ts.map +1 -1
- package/dist/_types/utils/platform.d.ts +2 -0
- package/dist/_types/utils/platform.d.ts.map +1 -0
- package/dist/_types/web/createZeroDevWallet.d.ts +18 -0
- package/dist/_types/web/createZeroDevWallet.d.ts.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +92 -11
- package/src/core/{createZeroDevWallet.ts → createZeroDevWalletCore.ts} +11 -19
- package/src/index.native.ts +102 -0
- package/src/index.ts +19 -9
- package/src/native/stampers/passkey.ts +39 -0
- package/src/native/stampers/secureStore.ts +139 -0
- package/src/native/storage/asyncStorage.ts +18 -0
- package/src/stubs/native-on-web.ts +3 -0
- package/src/utils/exportPrivateKey.ts +1 -1
- package/src/utils/exportWallet.ts +1 -1
- package/src/utils/platform.ts +21 -0
- package/src/web/createZeroDevWallet.ts +45 -0
- package/dist/_cjs/core/createZeroDevWallet.js.map +0 -1
- package/dist/_cjs/stampers/index.js +0 -10
- package/dist/_cjs/stampers/index.js.map +0 -1
- package/dist/_esm/core/createZeroDevWallet.js.map +0 -1
- package/dist/_esm/stampers/index.js +0 -4
- package/dist/_esm/stampers/index.js.map +0 -1
- package/dist/_types/core/createZeroDevWallet.d.ts.map +0 -1
- package/dist/_types/stampers/index.d.ts +0 -5
- package/dist/_types/stampers/index.d.ts.map +0 -1
- package/src/stampers/index.ts +0 -8
package/package.json
CHANGED
|
@@ -1,15 +1,65 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerodev/wallet-core",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.21",
|
|
4
4
|
"description": "ZeroDev Wallet SDK built on Turnkey",
|
|
5
|
+
"sideEffects": false,
|
|
5
6
|
"main": "./dist/_cjs/index.js",
|
|
6
7
|
"module": "./dist/_esm/index.js",
|
|
7
8
|
"types": "./dist/_types/index.d.ts",
|
|
8
9
|
"exports": {
|
|
9
10
|
".": {
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
"react-native": {
|
|
12
|
+
"types": "./dist/_types/index.native.d.ts",
|
|
13
|
+
"default": "./dist/_esm/index.native.js"
|
|
14
|
+
},
|
|
15
|
+
"browser": {
|
|
16
|
+
"types": "./dist/_types/index.d.ts",
|
|
17
|
+
"default": "./dist/_esm/index.js"
|
|
18
|
+
},
|
|
19
|
+
"import": {
|
|
20
|
+
"types": "./dist/_types/index.d.ts",
|
|
21
|
+
"default": "./dist/_esm/index.js"
|
|
22
|
+
},
|
|
23
|
+
"require": {
|
|
24
|
+
"types": "./dist/_types/index.d.ts",
|
|
25
|
+
"default": "./dist/_cjs/index.js"
|
|
26
|
+
},
|
|
27
|
+
"default": {
|
|
28
|
+
"types": "./dist/_types/index.d.ts",
|
|
29
|
+
"default": "./dist/_esm/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"./react-native": {
|
|
33
|
+
"browser": "./dist/_esm/stubs/native-on-web.js",
|
|
34
|
+
"import": {
|
|
35
|
+
"types": "./dist/_types/index.native.d.ts",
|
|
36
|
+
"default": "./dist/_esm/index.native.js"
|
|
37
|
+
},
|
|
38
|
+
"default": "./dist/_esm/index.native.js"
|
|
39
|
+
},
|
|
40
|
+
"./react-native/stampers/secure-store": {
|
|
41
|
+
"browser": "./dist/_esm/stubs/native-on-web.js",
|
|
42
|
+
"import": {
|
|
43
|
+
"types": "./dist/_types/native/stampers/secureStore.d.ts",
|
|
44
|
+
"default": "./dist/_esm/native/stampers/secureStore.js"
|
|
45
|
+
},
|
|
46
|
+
"default": "./dist/_esm/native/stampers/secureStore.js"
|
|
47
|
+
},
|
|
48
|
+
"./react-native/stampers/passkey": {
|
|
49
|
+
"browser": "./dist/_esm/stubs/native-on-web.js",
|
|
50
|
+
"import": {
|
|
51
|
+
"types": "./dist/_types/native/stampers/passkey.d.ts",
|
|
52
|
+
"default": "./dist/_esm/native/stampers/passkey.js"
|
|
53
|
+
},
|
|
54
|
+
"default": "./dist/_esm/native/stampers/passkey.js"
|
|
55
|
+
},
|
|
56
|
+
"./react-native/storage/async-storage": {
|
|
57
|
+
"browser": "./dist/_esm/stubs/native-on-web.js",
|
|
58
|
+
"import": {
|
|
59
|
+
"types": "./dist/_types/native/storage/asyncStorage.d.ts",
|
|
60
|
+
"default": "./dist/_esm/native/storage/asyncStorage.js"
|
|
61
|
+
},
|
|
62
|
+
"default": "./dist/_esm/native/storage/asyncStorage.js"
|
|
13
63
|
},
|
|
14
64
|
"./viem": {
|
|
15
65
|
"types": "./dist/_types/adapters/viem.d.ts",
|
|
@@ -20,11 +70,6 @@
|
|
|
20
70
|
"types": "./dist/_types/actions/index.d.ts",
|
|
21
71
|
"import": "./dist/_esm/actions/index.js",
|
|
22
72
|
"require": "./dist/_cjs/actions/index.js"
|
|
23
|
-
},
|
|
24
|
-
"./stampers": {
|
|
25
|
-
"types": "./dist/_types/stampers/index.d.ts",
|
|
26
|
-
"import": "./dist/_esm/stampers/index.js",
|
|
27
|
-
"require": "./dist/_cjs/stampers/index.js"
|
|
28
73
|
}
|
|
29
74
|
},
|
|
30
75
|
"files": [
|
|
@@ -59,12 +104,48 @@
|
|
|
59
104
|
"json-canonicalize": "^2.0.0"
|
|
60
105
|
},
|
|
61
106
|
"peerDependencies": {
|
|
62
|
-
"viem": "^2.38.0"
|
|
107
|
+
"viem": "^2.38.0",
|
|
108
|
+
"@react-native-async-storage/async-storage": ">=2.0.0",
|
|
109
|
+
"@turnkey/api-key-stamper": ">=0.6.0",
|
|
110
|
+
"@turnkey/crypto": ">=2.8.0",
|
|
111
|
+
"@turnkey/react-native-passkey-stamper": ">=1.2.0",
|
|
112
|
+
"expo-secure-store": ">=14.0.0",
|
|
113
|
+
"react-native": ">=0.73.0",
|
|
114
|
+
"uuid": ">=11.0.0"
|
|
115
|
+
},
|
|
116
|
+
"peerDependenciesMeta": {
|
|
117
|
+
"@react-native-async-storage/async-storage": {
|
|
118
|
+
"optional": true
|
|
119
|
+
},
|
|
120
|
+
"@turnkey/api-key-stamper": {
|
|
121
|
+
"optional": true
|
|
122
|
+
},
|
|
123
|
+
"@turnkey/crypto": {
|
|
124
|
+
"optional": true
|
|
125
|
+
},
|
|
126
|
+
"@turnkey/react-native-passkey-stamper": {
|
|
127
|
+
"optional": true
|
|
128
|
+
},
|
|
129
|
+
"expo-secure-store": {
|
|
130
|
+
"optional": true
|
|
131
|
+
},
|
|
132
|
+
"react-native": {
|
|
133
|
+
"optional": true
|
|
134
|
+
},
|
|
135
|
+
"uuid": {
|
|
136
|
+
"optional": true
|
|
137
|
+
}
|
|
63
138
|
},
|
|
64
139
|
"devDependencies": {
|
|
65
140
|
"@hpke/core": "^1.9.0",
|
|
141
|
+
"@react-native-async-storage/async-storage": "2.2.0",
|
|
142
|
+
"@turnkey/api-key-stamper": "0.6.4",
|
|
143
|
+
"@turnkey/crypto": "2.8.13",
|
|
144
|
+
"@turnkey/react-native-passkey-stamper": "1.2.12",
|
|
66
145
|
"@types/node": "^20.0.0",
|
|
67
|
-
"
|
|
146
|
+
"expo-secure-store": "55.0.9",
|
|
147
|
+
"typescript": "5.9.3",
|
|
148
|
+
"uuid": "^13.0.0"
|
|
68
149
|
},
|
|
69
150
|
"scripts": {
|
|
70
151
|
"build": "pnpm run clean && pnpm run build:cjs && pnpm run build:esm && pnpm run build:types",
|
|
@@ -16,10 +16,7 @@ import {
|
|
|
16
16
|
DEFAULT_SESSION_EXPIRATION_IN_SECONDS,
|
|
17
17
|
KMS_SERVER_URL,
|
|
18
18
|
} from '../constants.js'
|
|
19
|
-
import { createIndexedDbStamper } from '../stampers/indexedDbStamper.js'
|
|
20
19
|
import type { ApiKeyStamper, PasskeyStamper } from '../stampers/types.js'
|
|
21
|
-
import { createWebauthnStamper } from '../stampers/webauthnStamper.js'
|
|
22
|
-
import { createWebStorageAdapter } from '../storage/adapters.js'
|
|
23
20
|
import {
|
|
24
21
|
createStorageManager,
|
|
25
22
|
type StorageAdapter,
|
|
@@ -28,14 +25,14 @@ import { SessionType, type ZeroDevWalletSession } from '../types/session.js'
|
|
|
28
25
|
import { buildClientSignature } from '../utils/buildClientSignature.js'
|
|
29
26
|
import { encryptOtpAttempt } from '../utils/encryptOtpAttempt.js'
|
|
30
27
|
import { humanReadableDateTime, parseSession } from '../utils/utils.js'
|
|
31
|
-
export interface
|
|
28
|
+
export interface ZeroDevWalletConfigCore {
|
|
32
29
|
organizationId?: string
|
|
33
30
|
proxyBaseUrl?: string
|
|
34
31
|
projectId: string
|
|
35
|
-
sessionStorage
|
|
36
|
-
rpId
|
|
37
|
-
apiKeyStamper
|
|
38
|
-
passkeyStamper
|
|
32
|
+
sessionStorage: StorageAdapter
|
|
33
|
+
rpId: string
|
|
34
|
+
apiKeyStamper: ApiKeyStamper
|
|
35
|
+
passkeyStamper: PasskeyStamper
|
|
39
36
|
fetchOptions?: CreateTransportOptions['fetchOptions']
|
|
40
37
|
}
|
|
41
38
|
|
|
@@ -118,24 +115,19 @@ export interface ZeroDevWalletSDK {
|
|
|
118
115
|
toAccount: () => Promise<LocalAccount>
|
|
119
116
|
}
|
|
120
117
|
|
|
121
|
-
export async function
|
|
122
|
-
config:
|
|
118
|
+
export async function createZeroDevWalletCore(
|
|
119
|
+
config: ZeroDevWalletConfigCore,
|
|
123
120
|
): Promise<ZeroDevWalletSDK> {
|
|
124
121
|
const {
|
|
125
122
|
projectId,
|
|
126
123
|
sessionStorage,
|
|
127
|
-
rpId
|
|
124
|
+
rpId,
|
|
125
|
+
apiKeyStamper,
|
|
126
|
+
passkeyStamper,
|
|
128
127
|
organizationId = DEFAULT_ORGANIZATION_ID,
|
|
129
128
|
} = config
|
|
130
129
|
|
|
131
|
-
const sessionStorageManager = createStorageManager(
|
|
132
|
-
sessionStorage || createWebStorageAdapter(),
|
|
133
|
-
)
|
|
134
|
-
|
|
135
|
-
const apiKeyStamper = config.apiKeyStamper ?? (await createIndexedDbStamper())
|
|
136
|
-
|
|
137
|
-
const passkeyStamper =
|
|
138
|
-
config.passkeyStamper ?? (await createWebauthnStamper({ rpId }))
|
|
130
|
+
const sessionStorageManager = createStorageManager(sessionStorage)
|
|
139
131
|
|
|
140
132
|
const client = createClient({
|
|
141
133
|
apiKeyStamper,
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { isReactNative } from './utils/platform.js'
|
|
2
|
+
|
|
3
|
+
if (!isReactNative()) {
|
|
4
|
+
// biome-ignore lint/suspicious/noConsole: Warning users if they try to use the web entry on React Native.
|
|
5
|
+
console.warn(
|
|
6
|
+
'@zerodev/wallet-core/react-native: the React Native entry was loaded outside a React Native runtime. If this is a non-RN context, import `@zerodev/wallet-core` (the bare specifier) instead.',
|
|
7
|
+
)
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// Re-export shared API surface. Note: we intentionally do NOT re-export the
|
|
11
|
+
// web stamper factories (createIndexedDbStamper, createWebauthnStamper,
|
|
12
|
+
// createIframeStamper) here — they're web-only. The native adapter factories
|
|
13
|
+
// live behind their own granular subpaths so consumers using alternative
|
|
14
|
+
// adapters (Keychain, MMKV, custom) skip the unused peer-dep installs.
|
|
15
|
+
export type {
|
|
16
|
+
ApiKeyAuthenticator,
|
|
17
|
+
AuthenticateWithEmailParameters,
|
|
18
|
+
AuthenticateWithEmailReturnType,
|
|
19
|
+
AuthenticateWithOAuthParameters,
|
|
20
|
+
AuthenticateWithOAuthReturnType,
|
|
21
|
+
EmailContact,
|
|
22
|
+
EmailCustomization,
|
|
23
|
+
GetAuthenticatorsParameters,
|
|
24
|
+
GetAuthenticatorsReturnType,
|
|
25
|
+
GetUserWalletParameters,
|
|
26
|
+
GetUserWalletReturnType,
|
|
27
|
+
GetWhoamiParameters,
|
|
28
|
+
GetWhoamiReturnType,
|
|
29
|
+
LoginWithOTPParameters,
|
|
30
|
+
LoginWithOTPReturnType,
|
|
31
|
+
OAuthAuthenticator,
|
|
32
|
+
OtpContact,
|
|
33
|
+
PasskeyAuthenticator,
|
|
34
|
+
RegisterWithOTPParameters,
|
|
35
|
+
RegisterWithOTPReturnType,
|
|
36
|
+
Sign7702AuthorizationParameters,
|
|
37
|
+
Sign7702AuthorizationReturnType,
|
|
38
|
+
SignMessageParameters,
|
|
39
|
+
SignMessageReturnType,
|
|
40
|
+
SignTransactionParameters,
|
|
41
|
+
SignTransactionReturnType,
|
|
42
|
+
SignTypedDataV4Parameters,
|
|
43
|
+
SignTypedDataV4ReturnType,
|
|
44
|
+
SignUserOperationParameters,
|
|
45
|
+
SignUserOperationReturnType,
|
|
46
|
+
} from './actions/index.js'
|
|
47
|
+
export {
|
|
48
|
+
authenticateWithEmail,
|
|
49
|
+
authenticateWithOAuth,
|
|
50
|
+
getAuthenticators,
|
|
51
|
+
getUserWallet,
|
|
52
|
+
getWhoami,
|
|
53
|
+
loginWithOTP,
|
|
54
|
+
registerWithOTP,
|
|
55
|
+
sign7702Authorization,
|
|
56
|
+
signMessage,
|
|
57
|
+
signTransaction,
|
|
58
|
+
signTypedDataV4,
|
|
59
|
+
signUserOperation,
|
|
60
|
+
} from './actions/index.js'
|
|
61
|
+
export type { ToViemAccountParams } from './adapters/viem.js'
|
|
62
|
+
export { toViemAccount } from './adapters/viem.js'
|
|
63
|
+
export type { ZeroDevWalletActions } from './client/decorators/client.js'
|
|
64
|
+
export { zeroDevWalletActions } from './client/decorators/client.js'
|
|
65
|
+
export type {
|
|
66
|
+
Client,
|
|
67
|
+
ClientConfig,
|
|
68
|
+
CreateTransportOptions,
|
|
69
|
+
Transport,
|
|
70
|
+
} from './client/index.js'
|
|
71
|
+
export {
|
|
72
|
+
createBaseClient,
|
|
73
|
+
createClient,
|
|
74
|
+
type ZeroDevWalletClient,
|
|
75
|
+
zeroDevWalletTransport,
|
|
76
|
+
} from './client/index.js'
|
|
77
|
+
export { KMS_SERVER_URL } from './constants.js'
|
|
78
|
+
export type {
|
|
79
|
+
AuthParams,
|
|
80
|
+
ZeroDevWalletSDK,
|
|
81
|
+
} from './core/createZeroDevWalletCore.js'
|
|
82
|
+
// RN entry re-exports core directly. `ZeroDevWalletConfigCore` already has
|
|
83
|
+
// all four adapter fields required, so RN consumers get compile-time enforcement
|
|
84
|
+
// without a separate type wrapper.
|
|
85
|
+
export {
|
|
86
|
+
createZeroDevWalletCore as createZeroDevWallet,
|
|
87
|
+
type ZeroDevWalletConfigCore as ZeroDevWalletConfig,
|
|
88
|
+
} from './core/createZeroDevWalletCore.js'
|
|
89
|
+
export type {
|
|
90
|
+
ApiKeyStamper,
|
|
91
|
+
Attestation,
|
|
92
|
+
IframeStamper,
|
|
93
|
+
PasskeyRegistrationOptions,
|
|
94
|
+
PasskeyRegistrationResult,
|
|
95
|
+
PasskeyStamper,
|
|
96
|
+
} from './stampers/types.js'
|
|
97
|
+
export type { StorageAdapter, StorageManager } from './storage/manager.js'
|
|
98
|
+
export type { StamperType, ZeroDevWalletSession } from './types/session.js'
|
|
99
|
+
export type { KeyFormat } from './utils/exportPrivateKey.js'
|
|
100
|
+
export { exportPrivateKey } from './utils/exportPrivateKey.js'
|
|
101
|
+
export { exportWallet } from './utils/exportWallet.js'
|
|
102
|
+
export { normalizeTimestamp } from './utils/utils.js'
|
package/src/index.ts
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
import { isReactNative } from './utils/platform.js'
|
|
2
|
+
|
|
3
|
+
if (isReactNative()) {
|
|
4
|
+
// biome-ignore lint/suspicious/noConsole: Warning users if they try to use the web entry on React Native.
|
|
5
|
+
console.warn(
|
|
6
|
+
'@zerodev/wallet-core: the web entry was loaded in a React Native runtime. Check that your metro.config.js has `unstable_enablePackageExports: true` and `"react-native"` in `unstable_conditionNames`.',
|
|
7
|
+
)
|
|
8
|
+
}
|
|
9
|
+
|
|
1
10
|
export type {
|
|
2
11
|
// Auth types
|
|
3
12
|
ApiKeyAuthenticator,
|
|
@@ -73,17 +82,10 @@ export {
|
|
|
73
82
|
export { KMS_SERVER_URL } from './constants.js'
|
|
74
83
|
export type {
|
|
75
84
|
AuthParams,
|
|
76
|
-
ZeroDevWalletConfig,
|
|
77
85
|
ZeroDevWalletSDK,
|
|
78
|
-
} from './core/
|
|
79
|
-
// Core
|
|
80
|
-
export { createZeroDevWallet } from './core/createZeroDevWallet.js'
|
|
86
|
+
} from './core/createZeroDevWalletCore.js'
|
|
81
87
|
// Stampers
|
|
82
|
-
export {
|
|
83
|
-
createIframeStamper,
|
|
84
|
-
createIndexedDbStamper,
|
|
85
|
-
createWebauthnStamper,
|
|
86
|
-
} from './stampers/index.js'
|
|
88
|
+
export { createIframeStamper } from './stampers/iframeStamper.js'
|
|
87
89
|
export type {
|
|
88
90
|
ApiKeyStamper,
|
|
89
91
|
Attestation,
|
|
@@ -101,3 +103,11 @@ export { exportPrivateKey } from './utils/exportPrivateKey.js'
|
|
|
101
103
|
export { exportWallet } from './utils/exportWallet.js'
|
|
102
104
|
// Utils
|
|
103
105
|
export { normalizeTimestamp } from './utils/utils.js'
|
|
106
|
+
// Core — bare specifier resolves web defaults (IndexedDB, WebAuthn, session
|
|
107
|
+
// storage, hostname-derived rpId) before forwarding to the shared factory.
|
|
108
|
+
// RN consumers go through `@zerodev/wallet-core/react-native`, which exposes
|
|
109
|
+
// the strict `ZeroDevWalletConfig` (= core's required-fields shape) directly.
|
|
110
|
+
export {
|
|
111
|
+
createZeroDevWallet,
|
|
112
|
+
type ZeroDevWalletConfig,
|
|
113
|
+
} from './web/createZeroDevWallet.js'
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createPasskey,
|
|
3
|
+
PasskeyStamper as TurnkeyPasskeyStamper,
|
|
4
|
+
} from '@turnkey/react-native-passkey-stamper'
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid'
|
|
6
|
+
import type {
|
|
7
|
+
PasskeyRegistrationOptions,
|
|
8
|
+
PasskeyStamper,
|
|
9
|
+
} from '../../stampers/types.js'
|
|
10
|
+
|
|
11
|
+
export async function createReactNativePasskeyStamper({
|
|
12
|
+
rpId,
|
|
13
|
+
}: {
|
|
14
|
+
rpId: string
|
|
15
|
+
}): Promise<PasskeyStamper> {
|
|
16
|
+
const inner = new TurnkeyPasskeyStamper({ rpId })
|
|
17
|
+
|
|
18
|
+
return {
|
|
19
|
+
async stamp(payload: string) {
|
|
20
|
+
return await inner.stamp(payload)
|
|
21
|
+
},
|
|
22
|
+
async clear() {},
|
|
23
|
+
async register({ rp, userName }: PasskeyRegistrationOptions) {
|
|
24
|
+
const { attestation, challenge: encodedChallenge } = await createPasskey({
|
|
25
|
+
rp: {
|
|
26
|
+
id: rp.id,
|
|
27
|
+
name: rp.name ?? 'Turnkey',
|
|
28
|
+
},
|
|
29
|
+
user: {
|
|
30
|
+
id: uuidv4(),
|
|
31
|
+
name: userName,
|
|
32
|
+
displayName: userName,
|
|
33
|
+
},
|
|
34
|
+
authenticatorName: userName ?? 'End-User Passkey',
|
|
35
|
+
})
|
|
36
|
+
return { attestation, encodedChallenge }
|
|
37
|
+
},
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { ApiKeyStamper, SignatureFormat } from '@turnkey/api-key-stamper'
|
|
2
|
+
import { generateP256KeyPair } from '@turnkey/crypto'
|
|
3
|
+
import * as SecureStore from 'expo-secure-store'
|
|
4
|
+
import type { ApiKeyStamper as ZDApiKeyStamper } from '../../stampers/types.js'
|
|
5
|
+
|
|
6
|
+
const PUBLIC_KEY = 'zerodev.publicKey'
|
|
7
|
+
const PRIVATE_KEY = 'zerodev.privateKey'
|
|
8
|
+
|
|
9
|
+
class SecureStoreStamperInner {
|
|
10
|
+
private publicKeyHex: string | null = null
|
|
11
|
+
|
|
12
|
+
async init(): Promise<void> {
|
|
13
|
+
const publicKey = await SecureStore.getItemAsync(PUBLIC_KEY)
|
|
14
|
+
const privateKey = await SecureStore.getItemAsync(PRIVATE_KEY)
|
|
15
|
+
|
|
16
|
+
if (publicKey && privateKey) {
|
|
17
|
+
this.publicKeyHex = publicKey
|
|
18
|
+
} else {
|
|
19
|
+
await this.resetKeyPair()
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
async getPublicKey(): Promise<string | null> {
|
|
24
|
+
return this.publicKeyHex
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async resetKeyPair(externalKeyPair?: {
|
|
28
|
+
publicKey: string
|
|
29
|
+
privateKey: string
|
|
30
|
+
}): Promise<void> {
|
|
31
|
+
await this.clear()
|
|
32
|
+
|
|
33
|
+
const pair = externalKeyPair ?? generateP256KeyPair()
|
|
34
|
+
|
|
35
|
+
await SecureStore.setItemAsync(PUBLIC_KEY, pair.publicKey)
|
|
36
|
+
await SecureStore.setItemAsync(PRIVATE_KEY, pair.privateKey)
|
|
37
|
+
|
|
38
|
+
this.publicKeyHex = pair.publicKey
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private async getTurnkeyApiKeyStamper(): Promise<ApiKeyStamper> {
|
|
42
|
+
if (!this.publicKeyHex) {
|
|
43
|
+
throw new Error(
|
|
44
|
+
'Key not initialized. Call init() or resetKeyPair() first.',
|
|
45
|
+
)
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const privateKey = await SecureStore.getItemAsync(PRIVATE_KEY)
|
|
49
|
+
if (!privateKey) {
|
|
50
|
+
throw new Error('No private key found in secure store.')
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return new ApiKeyStamper({
|
|
54
|
+
apiPublicKey: this.publicKeyHex,
|
|
55
|
+
apiPrivateKey: privateKey,
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async stamp(
|
|
60
|
+
payload: string,
|
|
61
|
+
): Promise<{ stampHeaderName: string; stampHeaderValue: string }> {
|
|
62
|
+
const stamper = await this.getTurnkeyApiKeyStamper()
|
|
63
|
+
const { stampHeaderName, stampHeaderValue } = await stamper.stamp(payload)
|
|
64
|
+
return { stampHeaderName, stampHeaderValue }
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async sign(payload: string): Promise<string> {
|
|
68
|
+
const stamper = await this.getTurnkeyApiKeyStamper()
|
|
69
|
+
return stamper.sign(payload, SignatureFormat.Der)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async clear(): Promise<void> {
|
|
73
|
+
await SecureStore.deleteItemAsync(PUBLIC_KEY)
|
|
74
|
+
await SecureStore.deleteItemAsync(PRIVATE_KEY)
|
|
75
|
+
this.publicKeyHex = null
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
async function warmApiKeyStamperForMetroDev(
|
|
80
|
+
inner: SecureStoreStamperInner,
|
|
81
|
+
): Promise<void> {
|
|
82
|
+
// `__DEV__` is a global set by React Native's Metro; read it via globalThis
|
|
83
|
+
// so this file needs no ambient `.d.ts` (which would conflict with RN's own
|
|
84
|
+
// typings when both happen to be in scope, e.g. in the editor).
|
|
85
|
+
if (!(globalThis as { __DEV__?: boolean }).__DEV__) return
|
|
86
|
+
|
|
87
|
+
// In Expo dev, Turnkey's API key stamper loads its React Native signer with a
|
|
88
|
+
// dynamic import the first time `stamp()` runs. OTP verification is usually
|
|
89
|
+
// the first code path that stamps a payload, and if the app was backgrounded
|
|
90
|
+
// while the user copied the code, Metro can serve that lazy module after
|
|
91
|
+
// foregrounding and trigger a full JS reload. Warming the stamper during dev
|
|
92
|
+
// startup makes Metro load the signer while the app is foregrounded; production
|
|
93
|
+
// builds do not use Metro and skip this block via `__DEV__`.
|
|
94
|
+
try {
|
|
95
|
+
await inner.stamp('{"purpose":"metro-dev-warmup"}')
|
|
96
|
+
} catch (error) {
|
|
97
|
+
// biome-ignore lint/suspicious/noConsole: This only runs in dev mode
|
|
98
|
+
console.warn('Failed to warm API key stamper in dev:', error)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export async function createSecureStoreStamper(): Promise<ZDApiKeyStamper> {
|
|
103
|
+
const inner = new SecureStoreStamperInner()
|
|
104
|
+
await inner.init()
|
|
105
|
+
await warmApiKeyStamperForMetroDev(inner)
|
|
106
|
+
|
|
107
|
+
let pendingKeyPair: { publicKey: string; privateKey: string } | null = null
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
async getPublicKey() {
|
|
111
|
+
return inner.getPublicKey()
|
|
112
|
+
},
|
|
113
|
+
async stamp(payload: string) {
|
|
114
|
+
return inner.stamp(payload)
|
|
115
|
+
},
|
|
116
|
+
async sign(payload: string) {
|
|
117
|
+
return inner.sign(payload)
|
|
118
|
+
},
|
|
119
|
+
async clear() {
|
|
120
|
+
await inner.clear()
|
|
121
|
+
},
|
|
122
|
+
async resetKeyPair() {
|
|
123
|
+
pendingKeyPair = null
|
|
124
|
+
await inner.resetKeyPair()
|
|
125
|
+
},
|
|
126
|
+
async prepareKeyRotation() {
|
|
127
|
+
const keyPair = generateP256KeyPair()
|
|
128
|
+
pendingKeyPair = keyPair
|
|
129
|
+
return keyPair.publicKey
|
|
130
|
+
},
|
|
131
|
+
async commitKeyRotation() {
|
|
132
|
+
if (!pendingKeyPair) {
|
|
133
|
+
throw new Error('No pending key rotation to commit')
|
|
134
|
+
}
|
|
135
|
+
await inner.resetKeyPair(pendingKeyPair)
|
|
136
|
+
pendingKeyPair = null
|
|
137
|
+
},
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { AsyncStorageStatic } from '@react-native-async-storage/async-storage'
|
|
2
|
+
import * as AsyncStorageNS from '@react-native-async-storage/async-storage'
|
|
3
|
+
import type { StorageAdapter } from '../../storage/manager.js'
|
|
4
|
+
|
|
5
|
+
// CJS package whose `.d.ts` declares `export default AsyncStorage`. Our tsconfig
|
|
6
|
+
// keeps `esModuleInterop: false` (and `verbatimModuleSyntax: true`), so a plain
|
|
7
|
+
// `import AsyncStorage from '...'` types as the module namespace instead of
|
|
8
|
+
// the default. Unwrap explicitly. At runtime Metro returns the default object
|
|
9
|
+
// either way; this only affects the static type.
|
|
10
|
+
const AsyncStorage: AsyncStorageStatic = (
|
|
11
|
+
AsyncStorageNS as unknown as { default: AsyncStorageStatic }
|
|
12
|
+
).default
|
|
13
|
+
|
|
14
|
+
export const asyncStorageAdapter: StorageAdapter = {
|
|
15
|
+
getItem: (key) => AsyncStorage.getItem(key),
|
|
16
|
+
setItem: (key, value) => AsyncStorage.setItem(key, value),
|
|
17
|
+
removeItem: (key) => AsyncStorage.removeItem(key),
|
|
18
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function isReactNative(): boolean {
|
|
2
|
+
if (
|
|
3
|
+
typeof navigator !== 'undefined' &&
|
|
4
|
+
(navigator as { product?: string }).product === 'ReactNative'
|
|
5
|
+
) {
|
|
6
|
+
return true
|
|
7
|
+
}
|
|
8
|
+
if (
|
|
9
|
+
typeof window !== 'undefined' &&
|
|
10
|
+
Object.hasOwn(window, 'ReactNativeWebView')
|
|
11
|
+
) {
|
|
12
|
+
return true
|
|
13
|
+
}
|
|
14
|
+
if (
|
|
15
|
+
typeof globalThis !== 'undefined' &&
|
|
16
|
+
Object.hasOwn(globalThis, 'HermesEngine')
|
|
17
|
+
) {
|
|
18
|
+
return true
|
|
19
|
+
}
|
|
20
|
+
return false
|
|
21
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createZeroDevWalletCore,
|
|
3
|
+
type ZeroDevWalletConfigCore,
|
|
4
|
+
type ZeroDevWalletSDK,
|
|
5
|
+
} from '../core/createZeroDevWalletCore.js'
|
|
6
|
+
import { createIndexedDbStamper } from '../stampers/indexedDbStamper.js'
|
|
7
|
+
import type { ApiKeyStamper, PasskeyStamper } from '../stampers/types.js'
|
|
8
|
+
import { createWebauthnStamper } from '../stampers/webauthnStamper.js'
|
|
9
|
+
import { createWebStorageAdapter } from '../storage/adapters.js'
|
|
10
|
+
import type { StorageAdapter } from '../storage/manager.js'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Web config: all four web-defaulted fields are optional overrides.
|
|
14
|
+
* `rpId` falls back to `window.location.hostname`; the others fall back to
|
|
15
|
+
* IndexedDB / WebAuthn / sessionStorage-backed implementations. RN consumers
|
|
16
|
+
* go through `@zerodev/wallet-core/react-native`, which exposes the strict
|
|
17
|
+
* `ZeroDevWalletConfigCore` shape directly.
|
|
18
|
+
*/
|
|
19
|
+
export type ZeroDevWalletConfig = Omit<
|
|
20
|
+
ZeroDevWalletConfigCore,
|
|
21
|
+
'apiKeyStamper' | 'passkeyStamper' | 'rpId' | 'sessionStorage'
|
|
22
|
+
> & {
|
|
23
|
+
rpId?: string
|
|
24
|
+
sessionStorage?: StorageAdapter
|
|
25
|
+
apiKeyStamper?: ApiKeyStamper
|
|
26
|
+
passkeyStamper?: PasskeyStamper
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export async function createZeroDevWallet(
|
|
30
|
+
config: ZeroDevWalletConfig,
|
|
31
|
+
): Promise<ZeroDevWalletSDK> {
|
|
32
|
+
const rpId = config.rpId ?? window.location.hostname
|
|
33
|
+
const apiKeyStamper = config.apiKeyStamper ?? (await createIndexedDbStamper())
|
|
34
|
+
const passkeyStamper =
|
|
35
|
+
config.passkeyStamper ?? (await createWebauthnStamper({ rpId }))
|
|
36
|
+
const sessionStorage = config.sessionStorage ?? createWebStorageAdapter()
|
|
37
|
+
|
|
38
|
+
return createZeroDevWalletCore({
|
|
39
|
+
...config,
|
|
40
|
+
rpId,
|
|
41
|
+
apiKeyStamper,
|
|
42
|
+
passkeyStamper,
|
|
43
|
+
sessionStorage,
|
|
44
|
+
})
|
|
45
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createZeroDevWallet.js","sourceRoot":"","sources":["../../../src/core/createZeroDevWallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createWebauthnStamper = exports.createIndexedDbStamper = exports.createIframeStamper = void 0;
|
|
4
|
-
var iframeStamper_js_1 = require("./iframeStamper.js");
|
|
5
|
-
Object.defineProperty(exports, "createIframeStamper", { enumerable: true, get: function () { return iframeStamper_js_1.createIframeStamper; } });
|
|
6
|
-
var indexedDbStamper_js_1 = require("./indexedDbStamper.js");
|
|
7
|
-
Object.defineProperty(exports, "createIndexedDbStamper", { enumerable: true, get: function () { return indexedDbStamper_js_1.createIndexedDbStamper; } });
|
|
8
|
-
var webauthnStamper_js_1 = require("./webauthnStamper.js");
|
|
9
|
-
Object.defineProperty(exports, "createWebauthnStamper", { enumerable: true, get: function () { return webauthnStamper_js_1.createWebauthnStamper; } });
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stampers/index.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AAA/C,uHAAA,mBAAmB,OAAA;AAC5B,6DAA8D;AAArD,6HAAA,sBAAsB,OAAA;AAM/B,2DAA4D;AAAnD,2HAAA,qBAAqB,OAAA"}
|