@pasosdejesus/m 0.23.1 → 0.25.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 (200) hide show
  1. package/dist/CHANGELOG.md +45 -1
  2. package/dist/e2e/full-wallet.d.ts +41 -0
  3. package/dist/e2e/full-wallet.d.ts.map +1 -0
  4. package/dist/e2e/full-wallet.js +138 -0
  5. package/dist/e2e/full-wallet.js.map +1 -0
  6. package/dist/e2e/full-wallet.test.d.ts +2 -0
  7. package/dist/e2e/full-wallet.test.d.ts.map +1 -0
  8. package/dist/e2e/full-wallet.test.js +37 -0
  9. package/dist/e2e/full-wallet.test.js.map +1 -0
  10. package/dist/e2e/index.d.ts +4 -0
  11. package/dist/e2e/index.d.ts.map +1 -1
  12. package/dist/e2e/index.js +2 -0
  13. package/dist/e2e/index.js.map +1 -1
  14. package/dist/e2e/local-node.d.ts +22 -0
  15. package/dist/e2e/local-node.d.ts.map +1 -0
  16. package/dist/e2e/local-node.js +144 -0
  17. package/dist/e2e/local-node.js.map +1 -0
  18. package/dist/e2e/local-node.test.d.ts +2 -0
  19. package/dist/e2e/local-node.test.d.ts.map +1 -0
  20. package/dist/e2e/local-node.test.js +43 -0
  21. package/dist/e2e/local-node.test.js.map +1 -0
  22. package/dist/i18n/locales/cli.d.ts.map +1 -1
  23. package/dist/i18n/locales/cli.js +2 -0
  24. package/dist/i18n/locales/cli.js.map +1 -1
  25. package/dist/m.js +7 -1
  26. package/dist/m.js.map +1 -1
  27. package/dist/tasks/e2e-summary.d.ts +13 -0
  28. package/dist/tasks/e2e-summary.d.ts.map +1 -0
  29. package/dist/tasks/e2e-summary.js +117 -0
  30. package/dist/tasks/e2e-summary.js.map +1 -0
  31. package/dist/tasks/e2e.d.ts +29 -0
  32. package/dist/tasks/e2e.d.ts.map +1 -1
  33. package/dist/tasks/e2e.js +130 -36
  34. package/dist/tasks/e2e.js.map +1 -1
  35. package/dist/tasks/e2e.test.d.ts +2 -0
  36. package/dist/tasks/e2e.test.d.ts.map +1 -0
  37. package/dist/tasks/e2e.test.js +108 -0
  38. package/dist/tasks/e2e.test.js.map +1 -0
  39. package/dist/tasks/wallet.d.ts.map +1 -1
  40. package/dist/tasks/wallet.js +14 -25
  41. package/dist/tasks/wallet.js.map +1 -1
  42. package/dist/test-utils/index.d.ts +1 -0
  43. package/dist/test-utils/index.d.ts.map +1 -1
  44. package/dist/test-utils/index.js +1 -0
  45. package/dist/test-utils/index.js.map +1 -1
  46. package/dist/test-utils/wallet-mocks.d.ts +44 -0
  47. package/dist/test-utils/wallet-mocks.d.ts.map +1 -0
  48. package/dist/test-utils/wallet-mocks.js +114 -0
  49. package/dist/test-utils/wallet-mocks.js.map +1 -0
  50. package/dist/test-utils/wallet-mocks.test.d.ts +2 -0
  51. package/dist/test-utils/wallet-mocks.test.d.ts.map +1 -0
  52. package/dist/test-utils/wallet-mocks.test.js +55 -0
  53. package/dist/test-utils/wallet-mocks.test.js.map +1 -0
  54. package/dist/test-utils/wallet-setup.d.ts +2 -0
  55. package/dist/test-utils/wallet-setup.d.ts.map +1 -0
  56. package/dist/test-utils/wallet-setup.js +23 -0
  57. package/dist/test-utils/wallet-setup.js.map +1 -0
  58. package/dist/test-utils/wallet-setup.test.d.ts +2 -0
  59. package/dist/test-utils/wallet-setup.test.d.ts.map +1 -0
  60. package/dist/test-utils/wallet-setup.test.js +18 -0
  61. package/dist/test-utils/wallet-setup.test.js.map +1 -0
  62. package/dist/wallet/biometric.d.ts +33 -0
  63. package/dist/wallet/biometric.d.ts.map +1 -0
  64. package/dist/wallet/biometric.js +88 -0
  65. package/dist/wallet/biometric.js.map +1 -0
  66. package/dist/wallet/biometric.test.d.ts +2 -0
  67. package/dist/wallet/biometric.test.d.ts.map +1 -0
  68. package/dist/wallet/biometric.test.js +44 -0
  69. package/dist/wallet/biometric.test.js.map +1 -0
  70. package/dist/wallet/crypto.d.ts +42 -0
  71. package/dist/wallet/crypto.d.ts.map +1 -0
  72. package/dist/wallet/crypto.js +127 -0
  73. package/dist/wallet/crypto.js.map +1 -0
  74. package/dist/wallet/crypto.test.d.ts +2 -0
  75. package/dist/wallet/crypto.test.d.ts.map +1 -0
  76. package/dist/wallet/crypto.test.js +34 -0
  77. package/dist/wallet/crypto.test.js.map +1 -0
  78. package/dist/wallet/destinations.d.ts +20 -0
  79. package/dist/wallet/destinations.d.ts.map +1 -0
  80. package/dist/wallet/destinations.js +98 -0
  81. package/dist/wallet/destinations.js.map +1 -0
  82. package/dist/wallet/destinations.test.d.ts +2 -0
  83. package/dist/wallet/destinations.test.d.ts.map +1 -0
  84. package/dist/wallet/destinations.test.js +34 -0
  85. package/dist/wallet/destinations.test.js.map +1 -0
  86. package/dist/wallet/external-provider.d.ts +33 -0
  87. package/dist/wallet/external-provider.d.ts.map +1 -0
  88. package/dist/wallet/external-provider.js +108 -0
  89. package/dist/wallet/external-provider.js.map +1 -0
  90. package/dist/wallet/external-provider.test.d.ts +2 -0
  91. package/dist/wallet/external-provider.test.d.ts.map +1 -0
  92. package/dist/wallet/external-provider.test.js +44 -0
  93. package/dist/wallet/external-provider.test.js.map +1 -0
  94. package/dist/wallet/index.d.ts +14 -0
  95. package/dist/wallet/index.d.ts.map +1 -0
  96. package/dist/wallet/index.js +24 -0
  97. package/dist/wallet/index.js.map +1 -0
  98. package/dist/wallet/indexeddb.test.d.ts +2 -0
  99. package/dist/wallet/indexeddb.test.d.ts.map +1 -0
  100. package/dist/wallet/indexeddb.test.js +28 -0
  101. package/dist/wallet/indexeddb.test.js.map +1 -0
  102. package/dist/wallet/kdf.test.d.ts +2 -0
  103. package/dist/wallet/kdf.test.d.ts.map +1 -0
  104. package/dist/wallet/kdf.test.js +54 -0
  105. package/dist/wallet/kdf.test.js.map +1 -0
  106. package/dist/wallet/next/components/InAppWalletSetup.d.ts +11 -0
  107. package/dist/wallet/next/components/InAppWalletSetup.d.ts.map +1 -0
  108. package/dist/wallet/next/components/InAppWalletSetup.js +55 -0
  109. package/dist/wallet/next/components/InAppWalletSetup.js.map +1 -0
  110. package/dist/wallet/next/components/InAppWalletUnlock.d.ts +9 -0
  111. package/dist/wallet/next/components/InAppWalletUnlock.d.ts.map +1 -0
  112. package/dist/wallet/next/components/InAppWalletUnlock.js +29 -0
  113. package/dist/wallet/next/components/InAppWalletUnlock.js.map +1 -0
  114. package/dist/wallet/next/components.test.d.ts +2 -0
  115. package/dist/wallet/next/components.test.d.ts.map +1 -0
  116. package/dist/wallet/next/components.test.js +122 -0
  117. package/dist/wallet/next/components.test.js.map +1 -0
  118. package/dist/wallet/next/i18n.d.ts +63 -0
  119. package/dist/wallet/next/i18n.d.ts.map +1 -0
  120. package/dist/wallet/next/i18n.js +64 -0
  121. package/dist/wallet/next/i18n.js.map +1 -0
  122. package/dist/wallet/next/index.d.ts +7 -0
  123. package/dist/wallet/next/index.d.ts.map +1 -0
  124. package/dist/wallet/next/index.js +12 -0
  125. package/dist/wallet/next/index.js.map +1 -0
  126. package/dist/wallet/next/namespaces.d.ts +17 -0
  127. package/dist/wallet/next/namespaces.d.ts.map +1 -0
  128. package/dist/wallet/next/namespaces.js +17 -0
  129. package/dist/wallet/next/namespaces.js.map +1 -0
  130. package/dist/wallet/next/useInAppWallet.d.ts +55 -0
  131. package/dist/wallet/next/useInAppWallet.d.ts.map +1 -0
  132. package/dist/wallet/next/useInAppWallet.js +261 -0
  133. package/dist/wallet/next/useInAppWallet.js.map +1 -0
  134. package/dist/wallet/next/useInAppWallet.test.d.ts +2 -0
  135. package/dist/wallet/next/useInAppWallet.test.d.ts.map +1 -0
  136. package/dist/wallet/next/useInAppWallet.test.js +261 -0
  137. package/dist/wallet/next/useInAppWallet.test.js.map +1 -0
  138. package/dist/wallet/provider.d.ts +38 -0
  139. package/dist/wallet/provider.d.ts.map +1 -0
  140. package/dist/wallet/provider.js +285 -0
  141. package/dist/wallet/provider.js.map +1 -0
  142. package/dist/wallet/provider.test.d.ts +2 -0
  143. package/dist/wallet/provider.test.d.ts.map +1 -0
  144. package/dist/wallet/provider.test.js +170 -0
  145. package/dist/wallet/provider.test.js.map +1 -0
  146. package/dist/wallet/signer.d.ts +55 -0
  147. package/dist/wallet/signer.d.ts.map +1 -0
  148. package/dist/wallet/signer.js +91 -0
  149. package/dist/wallet/signer.js.map +1 -0
  150. package/dist/wallet/signer.test.d.ts +2 -0
  151. package/dist/wallet/signer.test.d.ts.map +1 -0
  152. package/dist/wallet/signer.test.js +62 -0
  153. package/dist/wallet/signer.test.js.map +1 -0
  154. package/dist/wallet/siwe.d.ts +2 -0
  155. package/dist/wallet/siwe.d.ts.map +1 -0
  156. package/dist/wallet/siwe.js +5 -0
  157. package/dist/wallet/siwe.js.map +1 -0
  158. package/dist/wallet/storage/file.d.ts +19 -0
  159. package/dist/wallet/storage/file.d.ts.map +1 -0
  160. package/dist/wallet/storage/file.js +48 -0
  161. package/dist/wallet/storage/file.js.map +1 -0
  162. package/dist/wallet/storage/idb.d.ts +25 -0
  163. package/dist/wallet/storage/idb.d.ts.map +1 -0
  164. package/dist/wallet/storage/idb.js +58 -0
  165. package/dist/wallet/storage/idb.js.map +1 -0
  166. package/dist/wallet/storage/index.d.ts +5 -0
  167. package/dist/wallet/storage/index.d.ts.map +1 -0
  168. package/dist/wallet/storage/index.js +4 -0
  169. package/dist/wallet/storage/index.js.map +1 -0
  170. package/dist/wallet/storage/indexeddb.d.ts +8 -0
  171. package/dist/wallet/storage/indexeddb.d.ts.map +1 -0
  172. package/dist/wallet/storage/indexeddb.js +18 -0
  173. package/dist/wallet/storage/indexeddb.js.map +1 -0
  174. package/dist/wallet/storage/memory.d.ts +10 -0
  175. package/dist/wallet/storage/memory.d.ts.map +1 -0
  176. package/dist/wallet/storage/memory.js +19 -0
  177. package/dist/wallet/storage/memory.js.map +1 -0
  178. package/dist/wallet/storage.test.d.ts +2 -0
  179. package/dist/wallet/storage.test.d.ts.map +1 -0
  180. package/dist/wallet/storage.test.js +103 -0
  181. package/dist/wallet/storage.test.js.map +1 -0
  182. package/dist/wallet/types.d.ts +69 -0
  183. package/dist/wallet/types.d.ts.map +1 -0
  184. package/dist/wallet/types.js +6 -0
  185. package/dist/wallet/types.js.map +1 -0
  186. package/dist/wallet/wallet.d.ts +81 -0
  187. package/dist/wallet/wallet.d.ts.map +1 -0
  188. package/dist/wallet/wallet.js +358 -0
  189. package/dist/wallet/wallet.js.map +1 -0
  190. package/dist/wallet/wallet.test.d.ts +2 -0
  191. package/dist/wallet/wallet.test.d.ts.map +1 -0
  192. package/dist/wallet/wallet.test.js +150 -0
  193. package/dist/wallet/wallet.test.js.map +1 -0
  194. package/dist/wallet/web-authn.d.ts +78 -0
  195. package/dist/wallet/web-authn.d.ts.map +1 -0
  196. package/dist/wallet/web-authn.js +250 -0
  197. package/dist/wallet/web-authn.js.map +1 -0
  198. package/package.json +18 -4
  199. package/src/e2e/README.md +67 -0
  200. package/src/wallet/README.md +119 -0
@@ -0,0 +1,119 @@
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
+ ## React (`./wallet/next`)
72
+
73
+ Capa React de la billetera in-app (`m/REQ/37`, graduada de `learn.tg/packages/pdj-wallet-next`):
74
+
75
+ ```tsx
76
+ import {
77
+ useInAppWallet, InAppWalletSetup, InAppWalletUnlock, configureInAppWallet,
78
+ } from '@pasosdejesus/m/wallet/next'
79
+
80
+ // Conserva tu namespace si ya tienes billeteras creadas:
81
+ configureInAppWallet({
82
+ dbName: 'learn-tg-pdj-wallet',
83
+ destinationsPrefix: 'learn.tg.pdj-wallet.',
84
+ rpName: 'learn.tg',
85
+ })
86
+
87
+ // Textos: por defecto en/es; el host puede inyectar los suyos:
88
+ <InAppWalletSetup lang="es" messages={{ createTitle: 'Abrir cartera' }} onDone={(a) => {}} />
89
+ ```
90
+
91
+ `react` es un *optional peer*: el subpath está fuera del barrel, así que importar
92
+ `@pasosdejesus/m/wallet` no arrastra React.
93
+
94
+ ## Pruebas
95
+
96
+ Mocks en `@pasosdejesus/m/test-utils` (`installLocalStorage`, `installIndexedDB`,
97
+ `mockWebAuthn`). `IndexedDBStorage` requiere la devDependency opcional
98
+ `fake-indexeddb`.
99
+
100
+ Preset listo para vitest (jsdom + mocks ya instalados):
101
+
102
+ ```ts
103
+ // vitest.config.ts
104
+ export default {
105
+ test: {
106
+ environment: 'jsdom',
107
+ setupFiles: ['@pasosdejesus/m/test-utils/wallet-setup'],
108
+ },
109
+ }
110
+ ```
111
+
112
+ O a mano: `import { setupWalletTests } from '@pasosdejesus/m/test-utils'; setupWalletTests()`.
113
+
114
+ ## Notas
115
+
116
+ - Fase 1/2 de `m/REQ/14`: primitivas, estado, storage, provider, WebAuthn (L1/L2),
117
+ destinos y resolutor EIP-6963. La capa React (hook + `InAppWalletSetup`/`InAppWalletUnlock`)
118
+ vive en el subpath `./wallet/next` (`m/REQ/37`).
119
+ - E2E con firma real: `@pasosdejesus/m/e2e` (`injectEIP6963`, `setupFullWalletMock`).