@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.
- package/dist/CHANGELOG.md +45 -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 +4 -0
- 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/i18n/locales/cli.d.ts.map +1 -1
- package/dist/i18n/locales/cli.js +2 -0
- package/dist/i18n/locales/cli.js.map +1 -1
- package/dist/m.js +7 -1
- package/dist/m.js.map +1 -1
- package/dist/tasks/e2e-summary.d.ts +13 -0
- package/dist/tasks/e2e-summary.d.ts.map +1 -0
- package/dist/tasks/e2e-summary.js +117 -0
- package/dist/tasks/e2e-summary.js.map +1 -0
- package/dist/tasks/e2e.d.ts +29 -0
- package/dist/tasks/e2e.d.ts.map +1 -1
- package/dist/tasks/e2e.js +130 -36
- package/dist/tasks/e2e.js.map +1 -1
- package/dist/tasks/e2e.test.d.ts +2 -0
- package/dist/tasks/e2e.test.d.ts.map +1 -0
- package/dist/tasks/e2e.test.js +108 -0
- package/dist/tasks/e2e.test.js.map +1 -0
- 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/next/components/InAppWalletSetup.d.ts +11 -0
- package/dist/wallet/next/components/InAppWalletSetup.d.ts.map +1 -0
- package/dist/wallet/next/components/InAppWalletSetup.js +55 -0
- package/dist/wallet/next/components/InAppWalletSetup.js.map +1 -0
- package/dist/wallet/next/components/InAppWalletUnlock.d.ts +9 -0
- package/dist/wallet/next/components/InAppWalletUnlock.d.ts.map +1 -0
- package/dist/wallet/next/components/InAppWalletUnlock.js +29 -0
- package/dist/wallet/next/components/InAppWalletUnlock.js.map +1 -0
- package/dist/wallet/next/components.test.d.ts +2 -0
- package/dist/wallet/next/components.test.d.ts.map +1 -0
- package/dist/wallet/next/components.test.js +122 -0
- package/dist/wallet/next/components.test.js.map +1 -0
- package/dist/wallet/next/i18n.d.ts +63 -0
- package/dist/wallet/next/i18n.d.ts.map +1 -0
- package/dist/wallet/next/i18n.js +64 -0
- package/dist/wallet/next/i18n.js.map +1 -0
- package/dist/wallet/next/index.d.ts +7 -0
- package/dist/wallet/next/index.d.ts.map +1 -0
- package/dist/wallet/next/index.js +12 -0
- package/dist/wallet/next/index.js.map +1 -0
- package/dist/wallet/next/namespaces.d.ts +17 -0
- package/dist/wallet/next/namespaces.d.ts.map +1 -0
- package/dist/wallet/next/namespaces.js +17 -0
- package/dist/wallet/next/namespaces.js.map +1 -0
- package/dist/wallet/next/useInAppWallet.d.ts +55 -0
- package/dist/wallet/next/useInAppWallet.d.ts.map +1 -0
- package/dist/wallet/next/useInAppWallet.js +261 -0
- package/dist/wallet/next/useInAppWallet.js.map +1 -0
- package/dist/wallet/next/useInAppWallet.test.d.ts +2 -0
- package/dist/wallet/next/useInAppWallet.test.d.ts.map +1 -0
- package/dist/wallet/next/useInAppWallet.test.js +261 -0
- package/dist/wallet/next/useInAppWallet.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 +18 -4
- package/src/e2e/README.md +67 -0
- 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`).
|