@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.
Files changed (163) hide show
  1. package/dist/CHANGELOG.md +47 -0
  2. package/dist/e2e/env.test.js +13 -0
  3. package/dist/e2e/env.test.js.map +1 -1
  4. package/dist/e2e/full-wallet.d.ts +41 -0
  5. package/dist/e2e/full-wallet.d.ts.map +1 -0
  6. package/dist/e2e/full-wallet.js +138 -0
  7. package/dist/e2e/full-wallet.js.map +1 -0
  8. package/dist/e2e/full-wallet.test.d.ts +2 -0
  9. package/dist/e2e/full-wallet.test.d.ts.map +1 -0
  10. package/dist/e2e/full-wallet.test.js +37 -0
  11. package/dist/e2e/full-wallet.test.js.map +1 -0
  12. package/dist/e2e/index.d.ts +5 -1
  13. package/dist/e2e/index.d.ts.map +1 -1
  14. package/dist/e2e/index.js +2 -0
  15. package/dist/e2e/index.js.map +1 -1
  16. package/dist/e2e/local-node.d.ts +22 -0
  17. package/dist/e2e/local-node.d.ts.map +1 -0
  18. package/dist/e2e/local-node.js +144 -0
  19. package/dist/e2e/local-node.js.map +1 -0
  20. package/dist/e2e/local-node.test.d.ts +2 -0
  21. package/dist/e2e/local-node.test.d.ts.map +1 -0
  22. package/dist/e2e/local-node.test.js +43 -0
  23. package/dist/e2e/local-node.test.js.map +1 -0
  24. package/dist/e2e/signer.test.d.ts +2 -0
  25. package/dist/e2e/signer.test.d.ts.map +1 -0
  26. package/dist/e2e/signer.test.js +57 -0
  27. package/dist/e2e/signer.test.js.map +1 -0
  28. package/dist/e2e/wallet-mock.d.ts +18 -3
  29. package/dist/e2e/wallet-mock.d.ts.map +1 -1
  30. package/dist/e2e/wallet-mock.js +22 -10
  31. package/dist/e2e/wallet-mock.js.map +1 -1
  32. package/dist/e2e/wallet-mock.test.js +7 -7
  33. package/dist/e2e/wallet-mock.test.js.map +1 -1
  34. package/dist/tasks/wallet.d.ts.map +1 -1
  35. package/dist/tasks/wallet.js +14 -25
  36. package/dist/tasks/wallet.js.map +1 -1
  37. package/dist/test-utils/index.d.ts +1 -0
  38. package/dist/test-utils/index.d.ts.map +1 -1
  39. package/dist/test-utils/index.js +1 -0
  40. package/dist/test-utils/index.js.map +1 -1
  41. package/dist/test-utils/wallet-mocks.d.ts +44 -0
  42. package/dist/test-utils/wallet-mocks.d.ts.map +1 -0
  43. package/dist/test-utils/wallet-mocks.js +114 -0
  44. package/dist/test-utils/wallet-mocks.js.map +1 -0
  45. package/dist/test-utils/wallet-mocks.test.d.ts +2 -0
  46. package/dist/test-utils/wallet-mocks.test.d.ts.map +1 -0
  47. package/dist/test-utils/wallet-mocks.test.js +55 -0
  48. package/dist/test-utils/wallet-mocks.test.js.map +1 -0
  49. package/dist/test-utils/wallet-setup.d.ts +2 -0
  50. package/dist/test-utils/wallet-setup.d.ts.map +1 -0
  51. package/dist/test-utils/wallet-setup.js +23 -0
  52. package/dist/test-utils/wallet-setup.js.map +1 -0
  53. package/dist/test-utils/wallet-setup.test.d.ts +2 -0
  54. package/dist/test-utils/wallet-setup.test.d.ts.map +1 -0
  55. package/dist/test-utils/wallet-setup.test.js +18 -0
  56. package/dist/test-utils/wallet-setup.test.js.map +1 -0
  57. package/dist/wallet/biometric.d.ts +33 -0
  58. package/dist/wallet/biometric.d.ts.map +1 -0
  59. package/dist/wallet/biometric.js +88 -0
  60. package/dist/wallet/biometric.js.map +1 -0
  61. package/dist/wallet/biometric.test.d.ts +2 -0
  62. package/dist/wallet/biometric.test.d.ts.map +1 -0
  63. package/dist/wallet/biometric.test.js +44 -0
  64. package/dist/wallet/biometric.test.js.map +1 -0
  65. package/dist/wallet/crypto.d.ts +42 -0
  66. package/dist/wallet/crypto.d.ts.map +1 -0
  67. package/dist/wallet/crypto.js +127 -0
  68. package/dist/wallet/crypto.js.map +1 -0
  69. package/dist/wallet/crypto.test.d.ts +2 -0
  70. package/dist/wallet/crypto.test.d.ts.map +1 -0
  71. package/dist/wallet/crypto.test.js +34 -0
  72. package/dist/wallet/crypto.test.js.map +1 -0
  73. package/dist/wallet/destinations.d.ts +20 -0
  74. package/dist/wallet/destinations.d.ts.map +1 -0
  75. package/dist/wallet/destinations.js +98 -0
  76. package/dist/wallet/destinations.js.map +1 -0
  77. package/dist/wallet/destinations.test.d.ts +2 -0
  78. package/dist/wallet/destinations.test.d.ts.map +1 -0
  79. package/dist/wallet/destinations.test.js +34 -0
  80. package/dist/wallet/destinations.test.js.map +1 -0
  81. package/dist/wallet/external-provider.d.ts +33 -0
  82. package/dist/wallet/external-provider.d.ts.map +1 -0
  83. package/dist/wallet/external-provider.js +108 -0
  84. package/dist/wallet/external-provider.js.map +1 -0
  85. package/dist/wallet/external-provider.test.d.ts +2 -0
  86. package/dist/wallet/external-provider.test.d.ts.map +1 -0
  87. package/dist/wallet/external-provider.test.js +44 -0
  88. package/dist/wallet/external-provider.test.js.map +1 -0
  89. package/dist/wallet/index.d.ts +14 -0
  90. package/dist/wallet/index.d.ts.map +1 -0
  91. package/dist/wallet/index.js +24 -0
  92. package/dist/wallet/index.js.map +1 -0
  93. package/dist/wallet/indexeddb.test.d.ts +2 -0
  94. package/dist/wallet/indexeddb.test.d.ts.map +1 -0
  95. package/dist/wallet/indexeddb.test.js +28 -0
  96. package/dist/wallet/indexeddb.test.js.map +1 -0
  97. package/dist/wallet/kdf.test.d.ts +2 -0
  98. package/dist/wallet/kdf.test.d.ts.map +1 -0
  99. package/dist/wallet/kdf.test.js +54 -0
  100. package/dist/wallet/kdf.test.js.map +1 -0
  101. package/dist/wallet/provider.d.ts +38 -0
  102. package/dist/wallet/provider.d.ts.map +1 -0
  103. package/dist/wallet/provider.js +285 -0
  104. package/dist/wallet/provider.js.map +1 -0
  105. package/dist/wallet/provider.test.d.ts +2 -0
  106. package/dist/wallet/provider.test.d.ts.map +1 -0
  107. package/dist/wallet/provider.test.js +170 -0
  108. package/dist/wallet/provider.test.js.map +1 -0
  109. package/dist/wallet/signer.d.ts +55 -0
  110. package/dist/wallet/signer.d.ts.map +1 -0
  111. package/dist/wallet/signer.js +91 -0
  112. package/dist/wallet/signer.js.map +1 -0
  113. package/dist/wallet/signer.test.d.ts +2 -0
  114. package/dist/wallet/signer.test.d.ts.map +1 -0
  115. package/dist/wallet/signer.test.js +62 -0
  116. package/dist/wallet/signer.test.js.map +1 -0
  117. package/dist/wallet/siwe.d.ts +2 -0
  118. package/dist/wallet/siwe.d.ts.map +1 -0
  119. package/dist/wallet/siwe.js +5 -0
  120. package/dist/wallet/siwe.js.map +1 -0
  121. package/dist/wallet/storage/file.d.ts +19 -0
  122. package/dist/wallet/storage/file.d.ts.map +1 -0
  123. package/dist/wallet/storage/file.js +48 -0
  124. package/dist/wallet/storage/file.js.map +1 -0
  125. package/dist/wallet/storage/idb.d.ts +25 -0
  126. package/dist/wallet/storage/idb.d.ts.map +1 -0
  127. package/dist/wallet/storage/idb.js +58 -0
  128. package/dist/wallet/storage/idb.js.map +1 -0
  129. package/dist/wallet/storage/index.d.ts +5 -0
  130. package/dist/wallet/storage/index.d.ts.map +1 -0
  131. package/dist/wallet/storage/index.js +4 -0
  132. package/dist/wallet/storage/index.js.map +1 -0
  133. package/dist/wallet/storage/indexeddb.d.ts +8 -0
  134. package/dist/wallet/storage/indexeddb.d.ts.map +1 -0
  135. package/dist/wallet/storage/indexeddb.js +18 -0
  136. package/dist/wallet/storage/indexeddb.js.map +1 -0
  137. package/dist/wallet/storage/memory.d.ts +10 -0
  138. package/dist/wallet/storage/memory.d.ts.map +1 -0
  139. package/dist/wallet/storage/memory.js +19 -0
  140. package/dist/wallet/storage/memory.js.map +1 -0
  141. package/dist/wallet/storage.test.d.ts +2 -0
  142. package/dist/wallet/storage.test.d.ts.map +1 -0
  143. package/dist/wallet/storage.test.js +103 -0
  144. package/dist/wallet/storage.test.js.map +1 -0
  145. package/dist/wallet/types.d.ts +69 -0
  146. package/dist/wallet/types.d.ts.map +1 -0
  147. package/dist/wallet/types.js +6 -0
  148. package/dist/wallet/types.js.map +1 -0
  149. package/dist/wallet/wallet.d.ts +81 -0
  150. package/dist/wallet/wallet.d.ts.map +1 -0
  151. package/dist/wallet/wallet.js +358 -0
  152. package/dist/wallet/wallet.js.map +1 -0
  153. package/dist/wallet/wallet.test.d.ts +2 -0
  154. package/dist/wallet/wallet.test.d.ts.map +1 -0
  155. package/dist/wallet/wallet.test.js +150 -0
  156. package/dist/wallet/wallet.test.js.map +1 -0
  157. package/dist/wallet/web-authn.d.ts +78 -0
  158. package/dist/wallet/web-authn.d.ts.map +1 -0
  159. package/dist/wallet/web-authn.js +250 -0
  160. package/dist/wallet/web-authn.js.map +1 -0
  161. package/package.json +14 -4
  162. package/src/e2e/README.md +51 -0
  163. 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`).