@pasosdejesus/m 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +47 -0
- package/dist/e2e/env.test.js +13 -0
- package/dist/e2e/env.test.js.map +1 -1
- package/dist/e2e/full-wallet.d.ts +41 -0
- package/dist/e2e/full-wallet.d.ts.map +1 -0
- package/dist/e2e/full-wallet.js +138 -0
- package/dist/e2e/full-wallet.js.map +1 -0
- package/dist/e2e/full-wallet.test.d.ts +2 -0
- package/dist/e2e/full-wallet.test.d.ts.map +1 -0
- package/dist/e2e/full-wallet.test.js +37 -0
- package/dist/e2e/full-wallet.test.js.map +1 -0
- package/dist/e2e/index.d.ts +5 -1
- package/dist/e2e/index.d.ts.map +1 -1
- package/dist/e2e/index.js +2 -0
- package/dist/e2e/index.js.map +1 -1
- package/dist/e2e/local-node.d.ts +22 -0
- package/dist/e2e/local-node.d.ts.map +1 -0
- package/dist/e2e/local-node.js +144 -0
- package/dist/e2e/local-node.js.map +1 -0
- package/dist/e2e/local-node.test.d.ts +2 -0
- package/dist/e2e/local-node.test.d.ts.map +1 -0
- package/dist/e2e/local-node.test.js +43 -0
- package/dist/e2e/local-node.test.js.map +1 -0
- package/dist/e2e/signer.test.d.ts +2 -0
- package/dist/e2e/signer.test.d.ts.map +1 -0
- package/dist/e2e/signer.test.js +57 -0
- package/dist/e2e/signer.test.js.map +1 -0
- package/dist/e2e/wallet-mock.d.ts +18 -3
- package/dist/e2e/wallet-mock.d.ts.map +1 -1
- package/dist/e2e/wallet-mock.js +22 -10
- package/dist/e2e/wallet-mock.js.map +1 -1
- package/dist/e2e/wallet-mock.test.js +7 -7
- package/dist/e2e/wallet-mock.test.js.map +1 -1
- package/dist/tasks/wallet.d.ts.map +1 -1
- package/dist/tasks/wallet.js +14 -25
- package/dist/tasks/wallet.js.map +1 -1
- package/dist/test-utils/index.d.ts +1 -0
- package/dist/test-utils/index.d.ts.map +1 -1
- package/dist/test-utils/index.js +1 -0
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/wallet-mocks.d.ts +44 -0
- package/dist/test-utils/wallet-mocks.d.ts.map +1 -0
- package/dist/test-utils/wallet-mocks.js +114 -0
- package/dist/test-utils/wallet-mocks.js.map +1 -0
- package/dist/test-utils/wallet-mocks.test.d.ts +2 -0
- package/dist/test-utils/wallet-mocks.test.d.ts.map +1 -0
- package/dist/test-utils/wallet-mocks.test.js +55 -0
- package/dist/test-utils/wallet-mocks.test.js.map +1 -0
- package/dist/test-utils/wallet-setup.d.ts +2 -0
- package/dist/test-utils/wallet-setup.d.ts.map +1 -0
- package/dist/test-utils/wallet-setup.js +23 -0
- package/dist/test-utils/wallet-setup.js.map +1 -0
- package/dist/test-utils/wallet-setup.test.d.ts +2 -0
- package/dist/test-utils/wallet-setup.test.d.ts.map +1 -0
- package/dist/test-utils/wallet-setup.test.js +18 -0
- package/dist/test-utils/wallet-setup.test.js.map +1 -0
- package/dist/wallet/biometric.d.ts +33 -0
- package/dist/wallet/biometric.d.ts.map +1 -0
- package/dist/wallet/biometric.js +88 -0
- package/dist/wallet/biometric.js.map +1 -0
- package/dist/wallet/biometric.test.d.ts +2 -0
- package/dist/wallet/biometric.test.d.ts.map +1 -0
- package/dist/wallet/biometric.test.js +44 -0
- package/dist/wallet/biometric.test.js.map +1 -0
- package/dist/wallet/crypto.d.ts +42 -0
- package/dist/wallet/crypto.d.ts.map +1 -0
- package/dist/wallet/crypto.js +127 -0
- package/dist/wallet/crypto.js.map +1 -0
- package/dist/wallet/crypto.test.d.ts +2 -0
- package/dist/wallet/crypto.test.d.ts.map +1 -0
- package/dist/wallet/crypto.test.js +34 -0
- package/dist/wallet/crypto.test.js.map +1 -0
- package/dist/wallet/destinations.d.ts +20 -0
- package/dist/wallet/destinations.d.ts.map +1 -0
- package/dist/wallet/destinations.js +98 -0
- package/dist/wallet/destinations.js.map +1 -0
- package/dist/wallet/destinations.test.d.ts +2 -0
- package/dist/wallet/destinations.test.d.ts.map +1 -0
- package/dist/wallet/destinations.test.js +34 -0
- package/dist/wallet/destinations.test.js.map +1 -0
- package/dist/wallet/external-provider.d.ts +33 -0
- package/dist/wallet/external-provider.d.ts.map +1 -0
- package/dist/wallet/external-provider.js +108 -0
- package/dist/wallet/external-provider.js.map +1 -0
- package/dist/wallet/external-provider.test.d.ts +2 -0
- package/dist/wallet/external-provider.test.d.ts.map +1 -0
- package/dist/wallet/external-provider.test.js +44 -0
- package/dist/wallet/external-provider.test.js.map +1 -0
- package/dist/wallet/index.d.ts +14 -0
- package/dist/wallet/index.d.ts.map +1 -0
- package/dist/wallet/index.js +24 -0
- package/dist/wallet/index.js.map +1 -0
- package/dist/wallet/indexeddb.test.d.ts +2 -0
- package/dist/wallet/indexeddb.test.d.ts.map +1 -0
- package/dist/wallet/indexeddb.test.js +28 -0
- package/dist/wallet/indexeddb.test.js.map +1 -0
- package/dist/wallet/kdf.test.d.ts +2 -0
- package/dist/wallet/kdf.test.d.ts.map +1 -0
- package/dist/wallet/kdf.test.js +54 -0
- package/dist/wallet/kdf.test.js.map +1 -0
- package/dist/wallet/provider.d.ts +38 -0
- package/dist/wallet/provider.d.ts.map +1 -0
- package/dist/wallet/provider.js +285 -0
- package/dist/wallet/provider.js.map +1 -0
- package/dist/wallet/provider.test.d.ts +2 -0
- package/dist/wallet/provider.test.d.ts.map +1 -0
- package/dist/wallet/provider.test.js +170 -0
- package/dist/wallet/provider.test.js.map +1 -0
- package/dist/wallet/signer.d.ts +55 -0
- package/dist/wallet/signer.d.ts.map +1 -0
- package/dist/wallet/signer.js +91 -0
- package/dist/wallet/signer.js.map +1 -0
- package/dist/wallet/signer.test.d.ts +2 -0
- package/dist/wallet/signer.test.d.ts.map +1 -0
- package/dist/wallet/signer.test.js +62 -0
- package/dist/wallet/signer.test.js.map +1 -0
- package/dist/wallet/siwe.d.ts +2 -0
- package/dist/wallet/siwe.d.ts.map +1 -0
- package/dist/wallet/siwe.js +5 -0
- package/dist/wallet/siwe.js.map +1 -0
- package/dist/wallet/storage/file.d.ts +19 -0
- package/dist/wallet/storage/file.d.ts.map +1 -0
- package/dist/wallet/storage/file.js +48 -0
- package/dist/wallet/storage/file.js.map +1 -0
- package/dist/wallet/storage/idb.d.ts +25 -0
- package/dist/wallet/storage/idb.d.ts.map +1 -0
- package/dist/wallet/storage/idb.js +58 -0
- package/dist/wallet/storage/idb.js.map +1 -0
- package/dist/wallet/storage/index.d.ts +5 -0
- package/dist/wallet/storage/index.d.ts.map +1 -0
- package/dist/wallet/storage/index.js +4 -0
- package/dist/wallet/storage/index.js.map +1 -0
- package/dist/wallet/storage/indexeddb.d.ts +8 -0
- package/dist/wallet/storage/indexeddb.d.ts.map +1 -0
- package/dist/wallet/storage/indexeddb.js +18 -0
- package/dist/wallet/storage/indexeddb.js.map +1 -0
- package/dist/wallet/storage/memory.d.ts +10 -0
- package/dist/wallet/storage/memory.d.ts.map +1 -0
- package/dist/wallet/storage/memory.js +19 -0
- package/dist/wallet/storage/memory.js.map +1 -0
- package/dist/wallet/storage.test.d.ts +2 -0
- package/dist/wallet/storage.test.d.ts.map +1 -0
- package/dist/wallet/storage.test.js +103 -0
- package/dist/wallet/storage.test.js.map +1 -0
- package/dist/wallet/types.d.ts +69 -0
- package/dist/wallet/types.d.ts.map +1 -0
- package/dist/wallet/types.js +6 -0
- package/dist/wallet/types.js.map +1 -0
- package/dist/wallet/wallet.d.ts +81 -0
- package/dist/wallet/wallet.d.ts.map +1 -0
- package/dist/wallet/wallet.js +358 -0
- package/dist/wallet/wallet.js.map +1 -0
- package/dist/wallet/wallet.test.d.ts +2 -0
- package/dist/wallet/wallet.test.d.ts.map +1 -0
- package/dist/wallet/wallet.test.js +150 -0
- package/dist/wallet/wallet.test.js.map +1 -0
- package/dist/wallet/web-authn.d.ts +78 -0
- package/dist/wallet/web-authn.d.ts.map +1 -0
- package/dist/wallet/web-authn.js +250 -0
- package/dist/wallet/web-authn.js.map +1 -0
- package/package.json +14 -4
- package/src/e2e/README.md +51 -0
- package/src/wallet/README.md +96 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# @pasosdejesus/m/wallet
|
|
2
|
+
|
|
3
|
+
Núcleo compartido de billetera (`m/REQ/14`): mnemónica BIP39, derivación, firma,
|
|
4
|
+
cifrado en reposo, almacenamiento intercambiable, provider EIP-1193 y verificación
|
|
5
|
+
del usuario (WebAuthn). Sin React y sin Kysely: lo usan el CLI de `m` y los
|
|
6
|
+
consumidores (learn.tg, sivel3, stable-sl).
|
|
7
|
+
|
|
8
|
+
## Instalación
|
|
9
|
+
|
|
10
|
+
Ya viene con `@pasosdejesus/m`. Los adaptadores de archivo viven en el subpath
|
|
11
|
+
aparte para no arrastrar `node:fs` al bundle del navegador:
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
import { createWallet, unlockWallet, signMessage, keccak } from '@pasosdejesus/m/wallet'
|
|
15
|
+
import { FileStorage } from '@pasosdejesus/m/wallet/storage' // Node.js
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Sin cifrado en reposo (primitivas)
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
import { newMnemonic, accountFromMnemonic, privateKeyFromMnemonic, keccak } from '@pasosdejesus/m/wallet'
|
|
22
|
+
|
|
23
|
+
const mnemonic = newMnemonic()
|
|
24
|
+
const account = accountFromMnemonic(mnemonic)
|
|
25
|
+
const privateKey = privateKeyFromMnemonic(mnemonic) // 0x...
|
|
26
|
+
const hash = keccak('hello') // reemplaza `cast keccak`
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Con cifrado en reposo (billetera in-app)
|
|
30
|
+
|
|
31
|
+
```js
|
|
32
|
+
import { createWallet, unlockWallet, lockWallet, signMessage } from '@pasosdejesus/m/wallet'
|
|
33
|
+
import { FileStorage } from '@pasosdejesus/m/wallet/storage'
|
|
34
|
+
|
|
35
|
+
const storage = new FileStorage('/path/wallet.json') // o MemoryStorage/IndexedDBStorage
|
|
36
|
+
const { walletInfo, mnemonic } = await createWallet({ password: 'correct horse', storage })
|
|
37
|
+
await lockWallet()
|
|
38
|
+
await unlockWallet('correct horse', storage)
|
|
39
|
+
const signature = await signMessage('hola')
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
`PBKDF2-SHA256` (600.000 iteraciones de piso, calibradas al dispositivo) + `AES-256-GCM`.
|
|
43
|
+
Registros viejos con menos iteraciones se re-cifran al desbloquear.
|
|
44
|
+
|
|
45
|
+
## Provider EIP-1193 y proveedor inyectado
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
import { getInAppWalletProvider, getExternalProvider } from '@pasosdejesus/m/wallet'
|
|
49
|
+
|
|
50
|
+
const provider = getInAppWalletProvider({ rpcUrl: process.env.RPC_URL }) // null si está bloqueada
|
|
51
|
+
const injected = getExternalProvider() // EIP-6963 con respaldo window.ethereum
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Para React, conecta el store con `useSyncExternalStore` usando
|
|
55
|
+
`subscribeExternalProvider`/`getExternalProviderSnapshot`.
|
|
56
|
+
|
|
57
|
+
## Namespaces configurables
|
|
58
|
+
|
|
59
|
+
Un paquete compartido no debe escribir en el namespace de un consumidor:
|
|
60
|
+
|
|
61
|
+
```js
|
|
62
|
+
import { setWalletDbName } from '@pasosdejesus/m/wallet'
|
|
63
|
+
import { setDestinationsPrefix } from '@pasosdejesus/m/wallet'
|
|
64
|
+
import { setRpName } from '@pasosdejesus/m/wallet'
|
|
65
|
+
|
|
66
|
+
setWalletDbName('learn-tg-pdj-wallet') // IndexedDB (default: pasosdejesus-m-wallet)
|
|
67
|
+
setDestinationsPrefix('learn.tg.pdj-wallet.') // localStorage
|
|
68
|
+
setRpName('learn.tg') // nombre de la credencial WebAuthn
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Pruebas
|
|
72
|
+
|
|
73
|
+
Mocks en `@pasosdejesus/m/test-utils` (`installLocalStorage`, `installIndexedDB`,
|
|
74
|
+
`mockWebAuthn`). `IndexedDBStorage` requiere la devDependency opcional
|
|
75
|
+
`fake-indexeddb`.
|
|
76
|
+
|
|
77
|
+
Preset listo para vitest (jsdom + mocks ya instalados):
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
// vitest.config.ts
|
|
81
|
+
export default {
|
|
82
|
+
test: {
|
|
83
|
+
environment: 'jsdom',
|
|
84
|
+
setupFiles: ['@pasosdejesus/m/test-utils/wallet-setup'],
|
|
85
|
+
},
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
O a mano: `import { setupWalletTests } from '@pasosdejesus/m/test-utils'; setupWalletTests()`.
|
|
90
|
+
|
|
91
|
+
## Notas
|
|
92
|
+
|
|
93
|
+
- Fase 1/2 de `m/REQ/14`: primitivas, estado, storage, provider, WebAuthn (L1/L2),
|
|
94
|
+
destinos y resolutor EIP-6963. La billetera integrada (hook/UI React) vive en el
|
|
95
|
+
consumidor o en un futuro `@pasosdejesus/m/wallet-react`.
|
|
96
|
+
- E2E con firma real: `@pasosdejesus/m/e2e` (`injectEIP6963`, `setupFullWalletMock`).
|