@pasosdejesus/m 0.27.1 → 0.28.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/README.md +2 -2
- package/dist/CHANGELOG.md +141 -0
- package/dist/compose/derive.d.ts +53 -0
- package/dist/compose/derive.d.ts.map +1 -0
- package/dist/compose/derive.js +128 -0
- package/dist/compose/derive.js.map +1 -0
- package/dist/compose/discover.d.ts +32 -0
- package/dist/compose/discover.d.ts.map +1 -0
- package/dist/compose/discover.js +96 -0
- package/dist/compose/discover.js.map +1 -0
- package/dist/compose/index.d.ts +17 -0
- package/dist/compose/index.d.ts.map +1 -0
- package/dist/compose/index.js +16 -0
- package/dist/compose/index.js.map +1 -0
- package/dist/compose/manifest.d.ts +89 -0
- package/dist/compose/manifest.d.ts.map +1 -0
- package/dist/compose/manifest.js +16 -0
- package/dist/compose/manifest.js.map +1 -0
- package/dist/compose/sync.d.ts +12 -0
- package/dist/compose/sync.d.ts.map +1 -0
- package/dist/compose/sync.js +27 -0
- package/dist/compose/sync.js.map +1 -0
- package/dist/compose/usage.d.ts +54 -0
- package/dist/compose/usage.d.ts.map +1 -0
- package/dist/compose/usage.js +167 -0
- package/dist/compose/usage.js.map +1 -0
- package/dist/compose/vendor.d.ts +45 -0
- package/dist/compose/vendor.d.ts.map +1 -0
- package/dist/compose/vendor.js +147 -0
- package/dist/compose/vendor.js.map +1 -0
- package/dist/compose/verify.d.ts +11 -0
- package/dist/compose/verify.d.ts.map +1 -0
- package/dist/compose/verify.js +74 -0
- package/dist/compose/verify.js.map +1 -0
- package/dist/e2e/env.d.ts +1 -1
- package/dist/e2e/env.js +3 -3
- package/dist/e2e/env.js.map +1 -1
- package/dist/e2e/local-node.js +1 -1
- package/dist/e2e/local-node.js.map +1 -1
- package/dist/e2e/wallet-mock.js +1 -1
- package/dist/e2e/wallet-mock.js.map +1 -1
- package/dist/e2e/warmup.js +1 -1
- package/dist/e2e/warmup.js.map +1 -1
- package/dist/engine.d.ts +3 -16
- package/dist/engine.d.ts.map +1 -1
- package/dist/i18n/locales/cli.d.ts.map +1 -1
- package/dist/i18n/locales/cli.js +16 -10
- package/dist/i18n/locales/cli.js.map +1 -1
- package/dist/m.js +13 -10
- package/dist/m.js.map +1 -1
- package/dist/shadcn_components/ui/button.d.ts +1 -1
- package/dist/tasks/create.d.ts +7 -2
- package/dist/tasks/create.d.ts.map +1 -1
- package/dist/tasks/create.js +13 -17
- package/dist/tasks/create.js.map +1 -1
- package/dist/tasks/db.d.ts +2 -1
- package/dist/tasks/db.d.ts.map +1 -1
- package/dist/tasks/db.js +14 -11
- package/dist/tasks/db.js.map +1 -1
- package/dist/tasks/e2e-summary.js +1 -1
- package/dist/tasks/e2e-summary.js.map +1 -1
- package/dist/tasks/e2e.js +1 -1
- package/dist/tasks/e2e.js.map +1 -1
- package/dist/tasks/engine.d.ts.map +1 -1
- package/dist/tasks/engine.js +246 -17
- package/dist/tasks/engine.js.map +1 -1
- package/dist/tasks/msip.d.ts +11 -0
- package/dist/tasks/msip.d.ts.map +1 -0
- package/dist/tasks/{base-model.js → msip.js} +161 -25
- package/dist/tasks/msip.js.map +1 -0
- package/dist/tasks/update.d.ts +16 -0
- package/dist/tasks/update.d.ts.map +1 -1
- package/dist/tasks/update.js +61 -10
- package/dist/tasks/update.js.map +1 -1
- package/dist/tasks/warmup.js +1 -1
- package/dist/tasks/warmup.js.map +1 -1
- package/dist/templates/apps/hardhat/README.md +0 -8
- package/dist/templates/apps/nextjs/bin/m +3 -0
- package/dist/templates/apps/nextjs/package.json.hbs +1 -0
- package/dist/templates/apps/nextjs/tests/global-setup.ts +28 -0
- package/dist/templates/apps/nextjs/vitest.config.ts +3 -0
- package/dist/test-utils/console.d.ts +1 -1
- package/dist/test-utils/console.js +1 -1
- package/dist/test-utils/kysely-mocks.d.ts +1 -1
- package/dist/test-utils/kysely-mocks.js +1 -1
- package/dist/test-utils/wallet-mocks.js +1 -1
- package/dist/test-utils/wallet-setup.js +1 -1
- package/dist/util/engines.d.ts +4 -6
- package/dist/util/engines.d.ts.map +1 -1
- package/dist/util/engines.js +5 -38
- package/dist/util/engines.js.map +1 -1
- package/dist/util/msip.d.ts +17 -0
- package/dist/util/msip.d.ts.map +1 -0
- package/dist/util/msip.js +86 -0
- package/dist/util/msip.js.map +1 -0
- package/dist/wallet/index.js +1 -1
- package/dist/wallet/index.js.map +1 -1
- package/dist/wallet/next/i18n.d.ts +1 -1
- package/dist/wallet/next/i18n.js +1 -1
- package/dist/wallet/next/index.js +1 -1
- package/dist/wallet/next/index.js.map +1 -1
- package/dist/wallet/next/namespaces.d.ts +1 -1
- package/dist/wallet/next/namespaces.js +1 -1
- package/dist/wallet/storage/idb.d.ts +1 -1
- package/dist/wallet/storage/idb.js +1 -1
- package/package.json +4 -6
- package/src/e2e/README.md +6 -6
- package/src/tasks/README.md +3 -3
- package/src/test-utils/README.md +2 -2
- package/src/wallet/README.md +4 -4
- package/dist/base-model/baseline.generated.d.ts +0 -48
- package/dist/base-model/baseline.generated.d.ts.map +0 -1
- package/dist/base-model/baseline.generated.js +0 -930
- package/dist/base-model/baseline.generated.js.map +0 -1
- package/dist/base-model/check.d.ts +0 -6
- package/dist/base-model/check.d.ts.map +0 -1
- package/dist/base-model/check.js +0 -195
- package/dist/base-model/check.js.map +0 -1
- package/dist/base-model/forward/baseline_1_0_0.d.ts +0 -3
- package/dist/base-model/forward/baseline_1_0_0.d.ts.map +0 -1
- package/dist/base-model/forward/baseline_1_0_0.js +0 -23
- package/dist/base-model/forward/baseline_1_0_0.js.map +0 -1
- package/dist/base-model/forward/index.d.ts +0 -28
- package/dist/base-model/forward/index.d.ts.map +0 -1
- package/dist/base-model/forward/index.js +0 -126
- package/dist/base-model/forward/index.js.map +0 -1
- package/dist/base-model/forward/index.test.d.ts +0 -2
- package/dist/base-model/forward/index.test.d.ts.map +0 -1
- package/dist/base-model/forward/index.test.js +0 -65
- package/dist/base-model/forward/index.test.js.map +0 -1
- package/dist/base-model/forward/policy.d.ts +0 -16
- package/dist/base-model/forward/policy.d.ts.map +0 -1
- package/dist/base-model/forward/policy.js +0 -37
- package/dist/base-model/forward/policy.js.map +0 -1
- package/dist/base-model/forward/policy.test.d.ts +0 -2
- package/dist/base-model/forward/policy.test.d.ts.map +0 -1
- package/dist/base-model/forward/policy.test.js +0 -40
- package/dist/base-model/forward/policy.test.js.map +0 -1
- package/dist/base-model/forward/types.d.ts +0 -21
- package/dist/base-model/forward/types.d.ts.map +0 -1
- package/dist/base-model/forward/types.js +0 -2
- package/dist/base-model/forward/types.js.map +0 -1
- package/dist/base-model/generate.d.ts +0 -42
- package/dist/base-model/generate.d.ts.map +0 -1
- package/dist/base-model/generate.js +0 -241
- package/dist/base-model/generate.js.map +0 -1
- package/dist/base-model/guidelines.d.ts +0 -13
- package/dist/base-model/guidelines.d.ts.map +0 -1
- package/dist/base-model/guidelines.js +0 -61
- package/dist/base-model/guidelines.js.map +0 -1
- package/dist/base-model/index.d.ts +0 -24
- package/dist/base-model/index.d.ts.map +0 -1
- package/dist/base-model/index.js +0 -29
- package/dist/base-model/index.js.map +0 -1
- package/dist/base-model/parse-structure.d.ts +0 -4
- package/dist/base-model/parse-structure.d.ts.map +0 -1
- package/dist/base-model/parse-structure.js +0 -170
- package/dist/base-model/parse-structure.js.map +0 -1
- package/dist/base-model/queries.d.ts +0 -34
- package/dist/base-model/queries.d.ts.map +0 -1
- package/dist/base-model/queries.js +0 -118
- package/dist/base-model/queries.js.map +0 -1
- package/dist/base-model/references/learn-tg.d.ts +0 -21
- package/dist/base-model/references/learn-tg.d.ts.map +0 -1
- package/dist/base-model/references/learn-tg.js +0 -65
- package/dist/base-model/references/learn-tg.js.map +0 -1
- package/dist/base-model/references/msip.d.ts +0 -29
- package/dist/base-model/references/msip.d.ts.map +0 -1
- package/dist/base-model/references/msip.js +0 -33
- package/dist/base-model/references/msip.js.map +0 -1
- package/dist/base-model/types.d.ts +0 -207
- package/dist/base-model/types.d.ts.map +0 -1
- package/dist/base-model/types.js +0 -10
- package/dist/base-model/types.js.map +0 -1
- package/dist/base-model/version.d.ts +0 -19
- package/dist/base-model/version.d.ts.map +0 -1
- package/dist/base-model/version.js +0 -26
- package/dist/base-model/version.js.map +0 -1
- package/dist/base-model/wallet-link.d.ts +0 -69
- package/dist/base-model/wallet-link.d.ts.map +0 -1
- package/dist/base-model/wallet-link.js +0 -220
- package/dist/base-model/wallet-link.js.map +0 -1
- package/dist/base-model/wallet-link.test.d.ts +0 -2
- package/dist/base-model/wallet-link.test.d.ts.map +0 -1
- package/dist/base-model/wallet-link.test.js +0 -147
- package/dist/base-model/wallet-link.test.js.map +0 -1
- package/dist/e2e/env.test.d.ts +0 -2
- package/dist/e2e/env.test.d.ts.map +0 -1
- package/dist/e2e/env.test.js +0 -72
- package/dist/e2e/env.test.js.map +0 -1
- package/dist/e2e/full-wallet.test.d.ts +0 -2
- package/dist/e2e/full-wallet.test.d.ts.map +0 -1
- package/dist/e2e/full-wallet.test.js +0 -63
- package/dist/e2e/full-wallet.test.js.map +0 -1
- package/dist/e2e/in-app-wallet.test.d.ts +0 -2
- package/dist/e2e/in-app-wallet.test.d.ts.map +0 -1
- package/dist/e2e/in-app-wallet.test.js +0 -52
- package/dist/e2e/in-app-wallet.test.js.map +0 -1
- package/dist/e2e/local-node.test.d.ts +0 -2
- package/dist/e2e/local-node.test.d.ts.map +0 -1
- package/dist/e2e/local-node.test.js +0 -43
- package/dist/e2e/local-node.test.js.map +0 -1
- package/dist/e2e/retry.test.d.ts +0 -2
- package/dist/e2e/retry.test.d.ts.map +0 -1
- package/dist/e2e/retry.test.js +0 -43
- package/dist/e2e/retry.test.js.map +0 -1
- package/dist/e2e/signer.test.d.ts +0 -2
- package/dist/e2e/signer.test.d.ts.map +0 -1
- package/dist/e2e/signer.test.js +0 -57
- package/dist/e2e/signer.test.js.map +0 -1
- package/dist/e2e/siwe-optional.test.d.ts +0 -2
- package/dist/e2e/siwe-optional.test.d.ts.map +0 -1
- package/dist/e2e/siwe-optional.test.js +0 -13
- package/dist/e2e/siwe-optional.test.js.map +0 -1
- package/dist/e2e/wallet-mock.test.d.ts +0 -2
- package/dist/e2e/wallet-mock.test.d.ts.map +0 -1
- package/dist/e2e/wallet-mock.test.js +0 -28
- package/dist/e2e/wallet-mock.test.js.map +0 -1
- package/dist/e2e/warmup.test.d.ts +0 -2
- package/dist/e2e/warmup.test.d.ts.map +0 -1
- package/dist/e2e/warmup.test.js +0 -67
- package/dist/e2e/warmup.test.js.map +0 -1
- package/dist/engine.test.d.ts +0 -2
- package/dist/engine.test.d.ts.map +0 -1
- package/dist/engine.test.js +0 -35
- package/dist/engine.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -11
- package/dist/index.test.js.map +0 -1
- package/dist/tasks/base-model.d.ts +0 -5
- package/dist/tasks/base-model.d.ts.map +0 -1
- package/dist/tasks/base-model.js.map +0 -1
- package/dist/tasks/e2e.test.d.ts +0 -2
- package/dist/tasks/e2e.test.d.ts.map +0 -1
- package/dist/tasks/e2e.test.js +0 -108
- package/dist/tasks/e2e.test.js.map +0 -1
- package/dist/tasks/warmup.test.d.ts +0 -2
- package/dist/tasks/warmup.test.d.ts.map +0 -1
- package/dist/tasks/warmup.test.js +0 -40
- package/dist/tasks/warmup.test.js.map +0 -1
- package/dist/templates/apps/nextjs/tests/index.test.ts +0 -7
- package/dist/templates/apps/nextjs/tests/test-utils.example.test.ts +0 -169
- package/dist/templates/apps/nextjs/tsconfig.test.json +0 -38
- package/dist/test-utils/console.test.d.ts +0 -2
- package/dist/test-utils/console.test.d.ts.map +0 -1
- package/dist/test-utils/console.test.js +0 -70
- package/dist/test-utils/console.test.js.map +0 -1
- package/dist/test-utils/kysely-mocks.test.d.ts +0 -2
- package/dist/test-utils/kysely-mocks.test.d.ts.map +0 -1
- package/dist/test-utils/kysely-mocks.test.js +0 -126
- package/dist/test-utils/kysely-mocks.test.js.map +0 -1
- package/dist/test-utils/wallet-mocks.test.d.ts +0 -2
- package/dist/test-utils/wallet-mocks.test.d.ts.map +0 -1
- package/dist/test-utils/wallet-mocks.test.js +0 -55
- package/dist/test-utils/wallet-mocks.test.js.map +0 -1
- package/dist/test-utils/wallet-setup.test.d.ts +0 -2
- package/dist/test-utils/wallet-setup.test.d.ts.map +0 -1
- package/dist/test-utils/wallet-setup.test.js +0 -18
- package/dist/test-utils/wallet-setup.test.js.map +0 -1
- package/dist/util/engines.test.d.ts +0 -2
- package/dist/util/engines.test.d.ts.map +0 -1
- package/dist/util/engines.test.js +0 -79
- package/dist/util/engines.test.js.map +0 -1
- package/dist/wallet/biometric.test.d.ts +0 -2
- package/dist/wallet/biometric.test.d.ts.map +0 -1
- package/dist/wallet/biometric.test.js +0 -44
- package/dist/wallet/biometric.test.js.map +0 -1
- package/dist/wallet/crypto.test.d.ts +0 -2
- package/dist/wallet/crypto.test.d.ts.map +0 -1
- package/dist/wallet/crypto.test.js +0 -34
- package/dist/wallet/crypto.test.js.map +0 -1
- package/dist/wallet/destinations.test.d.ts +0 -2
- package/dist/wallet/destinations.test.d.ts.map +0 -1
- package/dist/wallet/destinations.test.js +0 -34
- package/dist/wallet/destinations.test.js.map +0 -1
- package/dist/wallet/external-provider.test.d.ts +0 -2
- package/dist/wallet/external-provider.test.d.ts.map +0 -1
- package/dist/wallet/external-provider.test.js +0 -44
- package/dist/wallet/external-provider.test.js.map +0 -1
- package/dist/wallet/indexeddb.test.d.ts +0 -2
- package/dist/wallet/indexeddb.test.d.ts.map +0 -1
- package/dist/wallet/indexeddb.test.js +0 -28
- package/dist/wallet/indexeddb.test.js.map +0 -1
- package/dist/wallet/kdf.test.d.ts +0 -2
- package/dist/wallet/kdf.test.d.ts.map +0 -1
- package/dist/wallet/kdf.test.js +0 -54
- package/dist/wallet/kdf.test.js.map +0 -1
- package/dist/wallet/next/components.test.d.ts +0 -2
- package/dist/wallet/next/components.test.d.ts.map +0 -1
- package/dist/wallet/next/components.test.js +0 -122
- package/dist/wallet/next/components.test.js.map +0 -1
- package/dist/wallet/next/useInAppWallet.test.d.ts +0 -2
- package/dist/wallet/next/useInAppWallet.test.d.ts.map +0 -1
- package/dist/wallet/next/useInAppWallet.test.js +0 -261
- package/dist/wallet/next/useInAppWallet.test.js.map +0 -1
- package/dist/wallet/provider.test.d.ts +0 -2
- package/dist/wallet/provider.test.d.ts.map +0 -1
- package/dist/wallet/provider.test.js +0 -170
- package/dist/wallet/provider.test.js.map +0 -1
- package/dist/wallet/signer.test.d.ts +0 -2
- package/dist/wallet/signer.test.d.ts.map +0 -1
- package/dist/wallet/signer.test.js +0 -62
- package/dist/wallet/signer.test.js.map +0 -1
- package/dist/wallet/storage.test.d.ts +0 -2
- package/dist/wallet/storage.test.d.ts.map +0 -1
- package/dist/wallet/storage.test.js +0 -103
- package/dist/wallet/storage.test.js.map +0 -1
- package/dist/wallet/wallet.test.d.ts +0 -2
- package/dist/wallet/wallet.test.d.ts.map +0 -1
- package/dist/wallet/wallet.test.js +0 -150
- package/dist/wallet/wallet.test.js.map +0 -1
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Los comandos de BD (`db:migrate`, `db:rollback`, `db:structure:dump`) **regeneran** archivos
|
|
2
|
+
// derivados del esquema en el proyecto: `db/db.d.ts` (versionado como fixture, lo usa
|
|
3
|
+
// `.config/kysely.config.ts`) y `db/structure.sql` (artefacto). Una corrida completa de los tests no
|
|
4
|
+
// debe ensuciar el árbol, así que este setup **global** los fotografía al inicio y los restaura al
|
|
5
|
+
// final (no hace falta que cada archivo de test lo repita).
|
|
6
|
+
import fs from 'node:fs';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
|
|
9
|
+
const DERIVED = ['db/db.d.ts', 'db/structure.sql'];
|
|
10
|
+
|
|
11
|
+
export default function setup(): () => void {
|
|
12
|
+
const root = process.cwd();
|
|
13
|
+
const saved = DERIVED.map((relative) => {
|
|
14
|
+
const file = path.join(root, relative);
|
|
15
|
+
return {
|
|
16
|
+
file,
|
|
17
|
+
existed: fs.existsSync(file),
|
|
18
|
+
content: fs.existsSync(file) ? fs.readFileSync(file, 'utf-8') : '',
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
return () => {
|
|
23
|
+
for (const { file, existed, content } of saved) {
|
|
24
|
+
if (existed) fs.writeFileSync(file, content);
|
|
25
|
+
else if (fs.existsSync(file)) fs.rmSync(file, { force: true });
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
@@ -8,6 +8,9 @@ export default defineConfig({
|
|
|
8
8
|
test: {
|
|
9
9
|
globals: true,
|
|
10
10
|
restoreMocks: true,
|
|
11
|
+
// Los comandos de BD regeneran derivados del esquema (`db/db.d.ts`, `db/structure.sql`):
|
|
12
|
+
// este setup global los restaura al terminar la corrida (ver tests/global-setup.ts).
|
|
13
|
+
globalSetup: './tests/global-setup.ts',
|
|
11
14
|
},
|
|
12
15
|
resolve: { conditions },
|
|
13
16
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
|
|
5
5
|
*
|
|
6
|
-
* P5/U2 of
|
|
6
|
+
* P5/U2 of https://gitlab.com/pasosdeJesus/m/-/work_items/49: many consumers wrap `console` to hide expected noise
|
|
7
7
|
* (retry attempts, aborted navigations, warnings from a mocked dependency).
|
|
8
8
|
* This graduates the pattern from learn.tg's `vitest.setup.ts` (`NOISY_PATTERNS`)
|
|
9
9
|
* so consumers can drop their local wrapper.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
|
|
5
5
|
*
|
|
6
|
-
* P5/U2 of
|
|
6
|
+
* P5/U2 of https://gitlab.com/pasosdeJesus/m/-/work_items/49: many consumers wrap `console` to hide expected noise
|
|
7
7
|
* (retry attempts, aborted navigations, warnings from a mocked dependency).
|
|
8
8
|
* This graduates the pattern from learn.tg's `vitest.setup.ts` (`NOISY_PATTERNS`)
|
|
9
9
|
* so consumers can drop their local wrapper.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
|
|
5
5
|
*
|
|
6
|
-
* U1 of
|
|
6
|
+
* U1 of https://gitlab.com/pasosdeJesus/m/-/work_items/49: the builder covers what real API routes use (measured in
|
|
7
7
|
* `sivel3/app/api` and learn.tg): `eb.or`/`eb.and`, `eb('col', 'in', cb)`,
|
|
8
8
|
* `where(sql`…`)`, a subquery used as a table (`db.selectFrom(base.as('lb'))`),
|
|
9
9
|
* `having`, `with`, `onConflict`/`doNothing`, `transaction().execute(cb)`,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
|
|
5
5
|
*
|
|
6
|
-
* U1 of
|
|
6
|
+
* U1 of https://gitlab.com/pasosdeJesus/m/-/work_items/49: the builder covers what real API routes use (measured in
|
|
7
7
|
* `sivel3/app/api` and learn.tg): `eb.or`/`eb.and`, `eb('col', 'in', cb)`,
|
|
8
8
|
* `where(sql`…`)`, a subquery used as a table (`db.selectFrom(base.as('lb'))`),
|
|
9
9
|
* `having`, `with`, `onConflict`/`doNothing`, `transaction().execute(cb)`,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Mocks to test the wallet core in Node (
|
|
2
|
+
* Mocks to test the wallet core in Node (https://gitlab.com/pasosdeJesus/m/-/work_items/14 Fase 4).
|
|
3
3
|
*
|
|
4
4
|
* The wallet core needs three browser-only surfaces to be testable outside a
|
|
5
5
|
* browser: `localStorage` (destinations), `crypto.subtle` (Node 20+ already has it
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vitest setup file for wallet tests (
|
|
2
|
+
* Vitest setup file for wallet tests (https://gitlab.com/pasosdeJesus/m/-/work_items/14 Fase 4).
|
|
3
3
|
*
|
|
4
4
|
* Use it as a `setupFiles` entry together with the jsdom environment so the wallet
|
|
5
5
|
* core tests can run outside a browser without reinventing the mocks:
|
package/dist/util/engines.d.ts
CHANGED
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { createRequire } from 'node:module';
|
|
11
11
|
import type { EngineManifest } from '../engine.js';
|
|
12
|
+
import { discoverEngines } from '../compose/discover.js';
|
|
13
|
+
export { discoverEngines };
|
|
12
14
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
+
* A package is a motor **iff** it ships an `m-engine.json` (https://gitlab.com/pasosdeJesus/m/-/work_items/39). No naming
|
|
16
|
+
* convention nor `mEngine` flag is needed: the file is the marker.
|
|
15
17
|
*/
|
|
16
18
|
export declare function isEnginePackage(name: string, nodeModulesDir: string): boolean;
|
|
17
19
|
/**
|
|
@@ -25,10 +27,6 @@ export declare function resolveEngineEntry(name: string, projectRequire: ReturnT
|
|
|
25
27
|
* package.json (each self-registers on import).
|
|
26
28
|
*/
|
|
27
29
|
export declare function loadEnginePackages(pkgFile: string): Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Discover engine manifests by reading engine.json files under packages/.
|
|
30
|
-
*/
|
|
31
|
-
export declare function discoverEngines(rootDir: string): Promise<EngineManifest[]>;
|
|
32
30
|
/**
|
|
33
31
|
* Locate the `packages/` directory by searching upward from `startDir`.
|
|
34
32
|
* Mirrors the CLI's hierarchical .env / package.json lookup
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engines.d.ts","sourceRoot":"","sources":["../../src/util/engines.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"engines.d.ts","sourceRoot":"","sources":["../../src/util/engines.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAK3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAE7E;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,EAChD,cAAc,EAAE,MAAM,GACrB,MAAM,GAAG,IAAI,CAiBf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS9E;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAIvF"}
|
package/dist/util/engines.js
CHANGED
|
@@ -11,21 +11,14 @@ import { createRequire } from 'node:module';
|
|
|
11
11
|
import { dirname, join } from 'node:path';
|
|
12
12
|
import { pathToFileURL } from 'node:url';
|
|
13
13
|
import { existsSync, readFileSync } from 'node:fs';
|
|
14
|
-
import {
|
|
14
|
+
import { discoverEngines } from '../compose/discover.js';
|
|
15
|
+
export { discoverEngines };
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
17
|
+
* A package is a motor **iff** it ships an `m-engine.json` (https://gitlab.com/pasosdeJesus/m/-/work_items/39). No naming
|
|
18
|
+
* convention nor `mEngine` flag is needed: the file is the marker.
|
|
18
19
|
*/
|
|
19
20
|
export function isEnginePackage(name, nodeModulesDir) {
|
|
20
|
-
|
|
21
|
-
return true;
|
|
22
|
-
try {
|
|
23
|
-
const pj = JSON.parse(readFileSync(join(nodeModulesDir, name, 'package.json'), 'utf-8'));
|
|
24
|
-
return pj.mEngine === true;
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
21
|
+
return existsSync(join(nodeModulesDir, name, 'm-engine.json'));
|
|
29
22
|
}
|
|
30
23
|
/**
|
|
31
24
|
* Resolve a plugin package's entry point relative to the consumer project.
|
|
@@ -81,32 +74,6 @@ export async function loadEnginePackages(pkgFile) {
|
|
|
81
74
|
}
|
|
82
75
|
}
|
|
83
76
|
}
|
|
84
|
-
/**
|
|
85
|
-
* Discover engine manifests by reading engine.json files under packages/.
|
|
86
|
-
*/
|
|
87
|
-
export async function discoverEngines(rootDir) {
|
|
88
|
-
const packagesDir = join(rootDir, 'packages');
|
|
89
|
-
let entries;
|
|
90
|
-
try {
|
|
91
|
-
entries = await readdir(packagesDir, { withFileTypes: true });
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
return [];
|
|
95
|
-
}
|
|
96
|
-
const manifests = [];
|
|
97
|
-
for (const entry of entries) {
|
|
98
|
-
if (!entry.isDirectory())
|
|
99
|
-
continue;
|
|
100
|
-
try {
|
|
101
|
-
const raw = await readFile(join(packagesDir, entry.name, 'engine.json'), 'utf-8');
|
|
102
|
-
manifests.push(JSON.parse(raw));
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
// no engine.json — skip
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return manifests;
|
|
109
|
-
}
|
|
110
77
|
/**
|
|
111
78
|
* Locate the `packages/` directory by searching upward from `startDir`.
|
|
112
79
|
* Mirrors the CLI's hierarchical .env / package.json lookup
|
package/dist/util/engines.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engines.js","sourceRoot":"","sources":["../../src/util/engines.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"engines.js","sourceRoot":"","sources":["../../src/util/engines.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Símbolos que `m` necesita del motor; un candidato sin todos ellos se descarta. */
|
|
2
|
+
export declare const MSIP_SYMBOLS: readonly ["BASE_MODEL_VERSION", "parseStructureSql", "buildBaseline", "buildInventory", "renderGeneratedModule", "BASE_MODEL_MIGRATIONS", "migrationMarker", "planSetup", "renderMigrationFile", "checkMigrationPolicy", "BASELINE_INVENTORY", "BASELINE_SQL", "seedTables", "seedIsLoaded", "countStatement", "truncateStatement"];
|
|
3
|
+
export interface ResolvedMsip {
|
|
4
|
+
/** Módulo del motor ya importado (los tipos exactos se aplican en quien lo usa). */
|
|
5
|
+
module: Record<string, unknown>;
|
|
6
|
+
/** Directorio del motor (de ahí salen `db/seed.sql.gz` y el esquema). */
|
|
7
|
+
dir: string;
|
|
8
|
+
/** De dónde se tomó: `installed` o `vendored`. */
|
|
9
|
+
kind: 'installed' | 'vendored';
|
|
10
|
+
}
|
|
11
|
+
/** Resuelve y cachea el motor `msip` (vendorizado o instalado). */
|
|
12
|
+
export declare function resolveMsip(cwd?: string): Promise<ResolvedMsip>;
|
|
13
|
+
/** Sólo el módulo del motor (para quien no necesita su directorio). */
|
|
14
|
+
export declare function loadMsipModule(cwd?: string): Promise<Record<string, unknown>>;
|
|
15
|
+
/** ¿Hay motor (vendorizado o instalado) y es compatible? (sin lanzar). */
|
|
16
|
+
export declare function msipAvailable(cwd?: string): boolean;
|
|
17
|
+
//# sourceMappingURL=msip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msip.d.ts","sourceRoot":"","sources":["../../src/util/msip.ts"],"names":[],"mappings":"AAuBA,qFAAqF;AACrF,eAAO,MAAM,YAAY,qUAKf,CAAA;AAEV,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAA;IACX,kDAAkD;IAClD,IAAI,EAAE,WAAW,GAAG,UAAU,CAAA;CAC/B;AASD,mEAAmE;AACnE,wBAAsB,WAAW,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCpF;AAED,uEAAuE;AACvE,wBAAsB,cAAc,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAElG;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAOlE"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolución del motor `msip` sin depender de él: `m` no lo declara en
|
|
3
|
+
* `dependencies` (sólo en `devDependencies`, para el monorepo), así que en tiempo de
|
|
4
|
+
* ejecución busca el motor **donde el consumidor lo tenga** y falla con
|
|
5
|
+
* instrucciones si no está. Así `m` se publica sin obligar a publicar el motor
|
|
6
|
+
* ([REQ/40](https://gitlab.com/pasosdeJesus/m/-/work_items/40) D1) y los consumidores pueden
|
|
7
|
+
* vendorizarlo (`eng:sync --vendor`).
|
|
8
|
+
*
|
|
9
|
+
* Orden: (1) la copia vendorizada del consumidor
|
|
10
|
+
* (`<cwd>/packages/generated/msip/dist`, compilada con `tsc -b`), (2) el paquete
|
|
11
|
+
* instalado. Un candidato sólo se acepta si expone **todos** los símbolos que `m`
|
|
12
|
+
* usa (`MSIP_SYMBOLS`), de modo que una versión incompatible se detecta al ejecutar.
|
|
13
|
+
*
|
|
14
|
+
* Los tipos **no** referencian el paquete del motor: eso dejaría un
|
|
15
|
+
* `typeof import('@pasosdejesus/msip')` en los `.d.ts` publicados, que un consumidor
|
|
16
|
+
* sin el motor (p. ej. con `skipLibCheck: false`) no podría resolver. Quien necesita
|
|
17
|
+
* los tipos exactos los aplica en su módulo (`src/tasks/msip.ts`).
|
|
18
|
+
*/
|
|
19
|
+
import { existsSync } from 'node:fs';
|
|
20
|
+
import { createRequire } from 'node:module';
|
|
21
|
+
import { dirname, join } from 'node:path';
|
|
22
|
+
import { pathToFileURL } from 'node:url';
|
|
23
|
+
/** Símbolos que `m` necesita del motor; un candidato sin todos ellos se descarta. */
|
|
24
|
+
export const MSIP_SYMBOLS = [
|
|
25
|
+
'BASE_MODEL_VERSION', 'parseStructureSql', 'buildBaseline', 'buildInventory',
|
|
26
|
+
'renderGeneratedModule', 'BASE_MODEL_MIGRATIONS', 'migrationMarker', 'planSetup', 'renderMigrationFile',
|
|
27
|
+
'checkMigrationPolicy', 'BASELINE_INVENTORY', 'BASELINE_SQL',
|
|
28
|
+
'seedTables', 'seedIsLoaded', 'countStatement', 'truncateStatement',
|
|
29
|
+
];
|
|
30
|
+
const cache = new Map();
|
|
31
|
+
/** `true` cuando el módulo expone todos los símbolos que `m` usa. */
|
|
32
|
+
function isCompatible(module) {
|
|
33
|
+
return MSIP_SYMBOLS.every((symbol) => symbol in module);
|
|
34
|
+
}
|
|
35
|
+
/** Resuelve y cachea el motor `msip` (vendorizado o instalado). */
|
|
36
|
+
export async function resolveMsip(cwd = process.cwd()) {
|
|
37
|
+
const cached = cache.get(cwd);
|
|
38
|
+
if (cached)
|
|
39
|
+
return cached;
|
|
40
|
+
const vendored = join(cwd, 'packages', 'generated', 'msip');
|
|
41
|
+
const candidates = [
|
|
42
|
+
// 1º la copia del consumidor (elección explícita, versión fijada y medida por `eng:check`),
|
|
43
|
+
// 2º el paquete instalado (resolución normal de Node desde `m`).
|
|
44
|
+
{ module: pathToFileURL(join(vendored, 'dist', 'index.js')).href, dir: vendored, kind: 'vendored' },
|
|
45
|
+
{ module: '@pasosdejesus/msip', dir: null, kind: 'installed' },
|
|
46
|
+
];
|
|
47
|
+
let incompatible = null;
|
|
48
|
+
for (const candidate of candidates) {
|
|
49
|
+
try {
|
|
50
|
+
const module = (await import(candidate.module));
|
|
51
|
+
if (!isCompatible(module)) {
|
|
52
|
+
incompatible = candidate.module;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const dir = candidate.dir ?? dirname(createRequire(import.meta.url).resolve('@pasosdejesus/msip/package.json'));
|
|
56
|
+
const resolved = { module, dir, kind: candidate.kind };
|
|
57
|
+
cache.set(cwd, resolved);
|
|
58
|
+
return resolved;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// el candidato no existe (o no se puede importar): siguiente
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (incompatible) {
|
|
65
|
+
throw new Error(`motor \`msip\` incompatible (${incompatible}): falta alguno de ${MSIP_SYMBOLS.join(', ')}; ` +
|
|
66
|
+
'actualiza el motor o vuelve a vendorizarlo (`eng:sync --vendor` + `tsc -b`)');
|
|
67
|
+
}
|
|
68
|
+
throw new Error('motor `msip` no encontrado: vendorízalo con ' +
|
|
69
|
+
'`bin/m eng:sync <ruta-al-checkout>/packages/msip --vendor` (y compílalo: `tsc -b` en ' +
|
|
70
|
+
'`packages/generated/msip`) o instala `@pasosdejesus/msip`');
|
|
71
|
+
}
|
|
72
|
+
/** Sólo el módulo del motor (para quien no necesita su directorio). */
|
|
73
|
+
export async function loadMsipModule(cwd = process.cwd()) {
|
|
74
|
+
return (await resolveMsip(cwd)).module;
|
|
75
|
+
}
|
|
76
|
+
/** ¿Hay motor (vendorizado o instalado) y es compatible? (sin lanzar). */
|
|
77
|
+
export function msipAvailable(cwd = process.cwd()) {
|
|
78
|
+
try {
|
|
79
|
+
createRequire(import.meta.url).resolve('@pasosdejesus/msip/package.json');
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return existsSync(join(cwd, 'packages', 'generated', 'msip', 'dist', 'index.js'));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=msip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"msip.js","sourceRoot":"","sources":["../../src/util/msip.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @pasosdejesus/m/wallet — núcleo compartido de billetera (
|
|
1
|
+
// @pasosdejesus/m/wallet — núcleo compartido de billetera (https://gitlab.com/pasosdeJesus/m/-/work_items/14).
|
|
2
2
|
//
|
|
3
3
|
// Sin React y sin Kysely: mnemónica (BIP39), derivación, firma, cifrado en reposo
|
|
4
4
|
// (PBKDF2 + AES-GCM), almacenamiento intercambiable, estado de la billetera in-app,
|
package/dist/wallet/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,+GAA+G;AAC/G,EAAE;AACF,kFAAkF;AAClF,oFAAoF;AACpF,8EAA8E;AAC9E,4EAA4E;AAC5E,8CAA8C;AAC9C,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,GAEP,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,aAAa,EACb,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,aAAa,CAAA;AAEpB,yDAAyD;AACzD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,0BAA0B,EAC1B,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,GAGrB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAEL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,gBAAgB,CAAA;AAEvB,iEAAiE;AACjE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,GAEpB,MAAM,eAAe,CAAA;AACtB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,mBAAmB,CAAA;AAE1B,uEAAuE;AACvE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,GAI9B,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE5E,OAAO,EACL,SAAS,EACT,aAAa,GASd,MAAM,YAAY,CAAA"}
|
|
@@ -56,7 +56,7 @@ export declare function defaultMessages(lang: Lang): WalletReactMessages;
|
|
|
56
56
|
/**
|
|
57
57
|
* Texts for a language with the host's overrides on top. The components accept this
|
|
58
58
|
* as a `messages` prop so a consumer can inject its own wording without forking the
|
|
59
|
-
* package (
|
|
59
|
+
* package (https://gitlab.com/pasosdeJesus/m/-/work_items/37).
|
|
60
60
|
*/
|
|
61
61
|
export declare function resolveMessages(lang: Lang, override?: Partial<WalletReactMessages>): WalletReactMessages;
|
|
62
62
|
export {};
|
package/dist/wallet/next/i18n.js
CHANGED
|
@@ -56,7 +56,7 @@ export function defaultMessages(lang) {
|
|
|
56
56
|
/**
|
|
57
57
|
* Texts for a language with the host's overrides on top. The components accept this
|
|
58
58
|
* as a `messages` prop so a consumer can inject its own wording without forking the
|
|
59
|
-
* package (
|
|
59
|
+
* package (https://gitlab.com/pasosdeJesus/m/-/work_items/37).
|
|
60
60
|
*/
|
|
61
61
|
export function resolveMessages(lang, override) {
|
|
62
62
|
return { ...defaultMessages(lang), ...override };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// @pasosdejesus/m/wallet/next — React layer of the in-app wallet (
|
|
1
|
+
// @pasosdejesus/m/wallet/next — React layer of the in-app wallet (https://gitlab.com/pasosdeJesus/m/-/work_items/37).
|
|
2
2
|
//
|
|
3
3
|
// Graduated from `learn.tg/packages/pdj-wallet-next`. Texts and storage namespaces are
|
|
4
4
|
// injected by the host; React is an optional peer, so importing the core barrel does
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/next/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/wallet/next/index.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,EAAE;AACF,uFAAuF;AACvF,qFAAqF;AACrF,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,kBAAkB,GAInB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,gBAAgB,EAA8B,MAAM,kCAAkC,CAAA;AAC/F,OAAO,EAAE,iBAAiB,EAA+B,MAAM,mCAAmC,CAAA;AAClG,OAAO,EACL,CAAC,EACD,eAAe,EACf,eAAe,GAIhB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,oBAAoB,EAA8B,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -7,7 +7,7 @@ export interface InAppWalletNamespaces {
|
|
|
7
7
|
rpName?: string;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Applies the host's storage namespaces to the shared wallet core (
|
|
10
|
+
* Applies the host's storage namespaces to the shared wallet core (https://gitlab.com/pasosdeJesus/m/-/work_items/37).
|
|
11
11
|
*
|
|
12
12
|
* A host that already has wallets **must** call this with its own values before the
|
|
13
13
|
* wallet is used, or existing records become unreadable (IndexedDB name, destination
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { setDestinationsPrefix, setRpName, setWalletDbName } from '../index.js';
|
|
2
2
|
/**
|
|
3
|
-
* Applies the host's storage namespaces to the shared wallet core (
|
|
3
|
+
* Applies the host's storage namespaces to the shared wallet core (https://gitlab.com/pasosdeJesus/m/-/work_items/37).
|
|
4
4
|
*
|
|
5
5
|
* A host that already has wallets **must** call this with its own values before the
|
|
6
6
|
* wallet is used, or existing records become unreadable (IndexedDB name, destination
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* version, so the version lives here and nowhere else.
|
|
8
8
|
*
|
|
9
9
|
* The database name is **configurable**: a shared package must not write into one
|
|
10
|
-
* consumer's namespace (
|
|
10
|
+
* consumer's namespace (https://gitlab.com/pasosdeJesus/m/-/work_items/14, "parametrizar las claves de almacenamiento").
|
|
11
11
|
* A consumer that already has data under its own name calls `setWalletDbName()`
|
|
12
12
|
* once at startup to keep reading it.
|
|
13
13
|
*/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* version, so the version lives here and nowhere else.
|
|
8
8
|
*
|
|
9
9
|
* The database name is **configurable**: a shared package must not write into one
|
|
10
|
-
* consumer's namespace (
|
|
10
|
+
* consumer's namespace (https://gitlab.com/pasosdeJesus/m/-/work_items/14, "parametrizar las claves de almacenamiento").
|
|
11
11
|
* A consumer that already has data under its own name calls `setWalletDbName()`
|
|
12
12
|
* once at startup to keep reading it.
|
|
13
13
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pasosdejesus/m",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.28.0",
|
|
4
4
|
"description": "Motor para crear y gestionar proyectos al estilo Pasos de Jesus.",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "ISC",
|
|
@@ -48,10 +48,6 @@
|
|
|
48
48
|
"import": "./dist/wba/index.js",
|
|
49
49
|
"types": "./dist/wba/index.d.ts"
|
|
50
50
|
},
|
|
51
|
-
"./base-model": {
|
|
52
|
-
"import": "./dist/base-model/index.js",
|
|
53
|
-
"types": "./dist/base-model/index.d.ts"
|
|
54
|
-
},
|
|
55
51
|
"./wba/routes": {
|
|
56
52
|
"import": "./dist/wba/routes/index.js",
|
|
57
53
|
"types": "./dist/wba/routes/index.d.ts"
|
|
@@ -126,6 +122,7 @@
|
|
|
126
122
|
},
|
|
127
123
|
"files": [
|
|
128
124
|
"dist",
|
|
125
|
+
"!dist/**/*.test.*",
|
|
129
126
|
"src/tasks/README.md",
|
|
130
127
|
"src/util/README.md",
|
|
131
128
|
"src/wba/README.md",
|
|
@@ -197,7 +194,8 @@
|
|
|
197
194
|
"typescript": "^5.9.3",
|
|
198
195
|
"viem": "^2.55.0",
|
|
199
196
|
"vitest": "3.2.6",
|
|
200
|
-
"wagmi": "^2.19.5"
|
|
197
|
+
"wagmi": "^2.19.5",
|
|
198
|
+
"@pasosdejesus/msip": "1.0.0"
|
|
201
199
|
},
|
|
202
200
|
"optionalPeerDependencies": {
|
|
203
201
|
"@radix-ui/react-accordion": "^1.2.12",
|
package/src/e2e/README.md
CHANGED
|
@@ -100,7 +100,7 @@ const page = await newPage(browser, address, timeout, true)
|
|
|
100
100
|
// GoodDollarClaimButton, wallet interactions now work
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
### Real-signature wallet (
|
|
103
|
+
### Real-signature wallet ([REQ/14](https://gitlab.com/pasosdeJesus/m/-/work_items/14))
|
|
104
104
|
|
|
105
105
|
```ts
|
|
106
106
|
installRealSigner(page, { privateKey, name?, typedDataName? }): Promise<RealSigner>
|
|
@@ -123,7 +123,7 @@ await setupFullWalletMock(page, { privateKey: process.env.PRIVATE_KEY })
|
|
|
123
123
|
await setupFullWalletMock(page, { privateKey: process.env.PRIVATE_KEY, rpcUrl: process.env.RPC_URL })
|
|
124
124
|
```
|
|
125
125
|
|
|
126
|
-
**Mock parity (
|
|
126
|
+
**Mock parity ([REQ/49](https://gitlab.com/pasosdeJesus/m/-/work_items/49) 14).** Without `rpcUrl`, `eth_getTransactionReceipt` used to return
|
|
127
127
|
`null`, so a spec that sends and awaits confirmation hung. Now `setupFullWalletMock` (and
|
|
128
128
|
`fullWalletMockCode`) accept `fakeReceipt` (`{status, blockNumber, transactionHash, logs}`),
|
|
129
129
|
`fakeCelo`, `fakeCallResult` and `fakeTxHash`:
|
|
@@ -135,7 +135,7 @@ await setupFullWalletMock(page, {
|
|
|
135
135
|
})
|
|
136
136
|
```
|
|
137
137
|
|
|
138
|
-
### In-app wallet driver (
|
|
138
|
+
### In-app wallet driver ([REQ/49](https://gitlab.com/pasosdeJesus/m/-/work_items/49) 15)
|
|
139
139
|
|
|
140
140
|
Drives the `m/wallet/next` components by their testids, so consumers do not rewrite selectors:
|
|
141
141
|
|
|
@@ -147,7 +147,7 @@ unlockInAppWallet(page, { password, timeoutMs? }): Promise<void>
|
|
|
147
147
|
With `mnemonic`/`privateKey` it switches to import mode; otherwise it creates a new wallet. It
|
|
148
148
|
selects by testid/`type` (not by localized text), so it works with any `lang`.
|
|
149
149
|
|
|
150
|
-
### Local EVM node (
|
|
150
|
+
### Local EVM node ([REQ/14](https://gitlab.com/pasosdeJesus/m/-/work_items/14))
|
|
151
151
|
|
|
152
152
|
```ts
|
|
153
153
|
startLocalRpc({ chainId?, accounts? }): Promise<LocalRpc> // { url, chainId, accounts, close() }
|
|
@@ -175,7 +175,7 @@ Lessons that cost time here (see also learn.tg's `doc/e2e-testing.md`):
|
|
|
175
175
|
- **Receipt hashes**: the local node re-signs, so `setupFullWalletMock` re-keys the receipt
|
|
176
176
|
under `keccak256(rawTransaction)` (the hash viem waits for).
|
|
177
177
|
|
|
178
|
-
### Runner: retry and summary (
|
|
178
|
+
### Runner: retry and summary ([REQ/49](https://gitlab.com/pasosdeJesus/m/-/work_items/49) P3/P4)
|
|
179
179
|
|
|
180
180
|
```sh
|
|
181
181
|
./bin/m test:e2e --retry 2 --retry-delay 15000 # re-run failed specs (fresh WALLET_INDEX each)
|
|
@@ -191,7 +191,7 @@ Lessons that cost time here (see also learn.tg's `doc/e2e-testing.md`):
|
|
|
191
191
|
row per spec, one column per log, marking `<-- difiere` when a spec's state changes between
|
|
192
192
|
runs (environmental vs product failure).
|
|
193
193
|
|
|
194
|
-
### Site warmup (
|
|
194
|
+
### Site warmup ([REQ/49](https://gitlab.com/pasosdeJesus/m/-/work_items/49) P5)
|
|
195
195
|
|
|
196
196
|
```ts
|
|
197
197
|
warmup(baseUrl, { paths, mode?, filter?, sequentialTimeoutMs?, parallelTimeoutMs?,
|
package/src/tasks/README.md
CHANGED
|
@@ -13,7 +13,7 @@ Each file in this directory exports a `runXxx()` function registered in `../m.ts
|
|
|
13
13
|
| File | Commands | Purpose |
|
|
14
14
|
|------|----------|---------|
|
|
15
15
|
| `context.ts` | `ai:context` | Orchestrates the project context document (schema 1): detection, profiles, filters, budget and output |
|
|
16
|
-
| `
|
|
16
|
+
| `msip.ts` | `eng:msip:dump`, `eng:msip:baseline`, `eng:msip:setup`, `eng:msip:verify`, `eng:msip:seed` | Regenerates the model baseline from its schema, guards its derivation, and loads the initial data |
|
|
17
17
|
| `context-workspaces.ts` | *(internal)* | Detects project types and workspace roots (`rails`, `nextjs`, `hardhat`, `monorepo`, `node`) |
|
|
18
18
|
| `context-profiles.ts` | *(internal)* | Built-in task profiles plus JSON config loading, merging and validation |
|
|
19
19
|
| `context-ignore.ts` | *(internal)* | Default exclusions, absolute secrets deny list and filter precedence |
|
|
@@ -21,10 +21,10 @@ Each file in this directory exports a `runXxx()` function registered in `../m.ts
|
|
|
21
21
|
| `context-reqs.ts` | *(internal)* | Parses `REQ/*.md` and keeps only open requirements |
|
|
22
22
|
| `context-render.ts` | *(internal)* | Structure and document rendering with a hard size budget |
|
|
23
23
|
| `create.ts` | `m:create` | Scaffolds new projects from `templates/` via direct recursive copy (replaced Plop.js) |
|
|
24
|
-
| `db.ts` | `db:create`, `db:drop`, `db:super:createuser`, `db:structure:dump`, `db:structure:load`, `db:migrate`, `db:rollback`, `db:mig:make`, `db:seed`, `db:
|
|
24
|
+
| `db.ts` | `db:create`, `db:drop`, `db:super:createuser`, `db:structure:dump`, `db:structure:load`, `db:migrate`, `db:rollback`, `db:mig:make`, `db:seed`, `db:console`, `db:test`, `db:dump`, `db:restore` | PostgreSQL database lifecycle, migration management, schema verification, and backup/restore |
|
|
25
25
|
| `e2e.ts` | `test:e2e` | E2E tests (Puppeteer specs, axios smoke) |
|
|
26
26
|
| `edit.ts` | `ai:edit` | Parses and applies DeepSeek diff format from clipboard |
|
|
27
|
-
| `engine.ts` | `eng:
|
|
27
|
+
| `engine.ts` | `eng:list`, `eng:sync`, `eng:verify`, `eng:check`, `eng:remove`, `eng:msip:setup`, `eng:wba:setup`, `eng:credentials:setup` | Engine discovery, generated facts, drift, self-containment and migration generation |
|
|
28
28
|
| `env-diff.ts` | `env:diff` | Compares two `.env` files (default: `../.env.example` vs `../.env`), reports differences |
|
|
29
29
|
| `fuzzy.ts` | *(internal)* | Fuzzy string matching helpers for `ai:edit` |
|
|
30
30
|
| `glob.ts` | `ai:glob` | File search by glob pattern |
|
package/src/test-utils/README.md
CHANGED
|
@@ -284,7 +284,7 @@ beforeEach(() => {
|
|
|
284
284
|
- Mock for `pg.Pool` of PostgreSQL
|
|
285
285
|
- **Lesson learned:** The `sql.val()` method is crucial for queries using template tags
|
|
286
286
|
|
|
287
|
-
**Builder coverage (
|
|
287
|
+
**Builder coverage ([REQ/49](https://gitlab.com/pasosdeJesus/m/-/work_items/49) U1):** `MockKysely`/`apiDbMocks` ahora cubren lo que usan las
|
|
288
288
|
rutas reales, así que puedes **borrar tu `GlobalMockKysely` escrito a mano**:
|
|
289
289
|
- `eb.or`/`eb.and`/`eb.not`/`eb.exists` y el callback `eb('col', 'in', cb => …)`, que recibe un
|
|
290
290
|
builder con `selectFrom`/`selectNoFrom`/`insertInto`/`updateTable`/`deleteFrom` para armar
|
|
@@ -392,7 +392,7 @@ viemMocks.createPublicClient.mockReturnValue({ ... })
|
|
|
392
392
|
### 6. `console.ts` – Silenciar ruido esperado de consola
|
|
393
393
|
|
|
394
394
|
**Purpose:** Ocultar ruido esperado en las pruebas (reintentos, navegaciones canceladas,
|
|
395
|
-
warnings de una dependencia simulada). Graduado de `NOISY_PATTERNS` de learn.tg (
|
|
395
|
+
warnings de una dependencia simulada). Graduado de `NOISY_PATTERNS` de learn.tg ([REQ/49](https://gitlab.com/pasosdeJesus/m/-/work_items/49) U2).
|
|
396
396
|
|
|
397
397
|
```typescript
|
|
398
398
|
import { silenceConsole } from '@pasosdejesus/m/test-utils/console'
|
package/src/wallet/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @pasosdejesus/m/wallet
|
|
2
2
|
|
|
3
|
-
Núcleo compartido de billetera (
|
|
3
|
+
Núcleo compartido de billetera ([REQ/14](https://gitlab.com/pasosdeJesus/m/-/work_items/14)): mnemónica BIP39, derivación, firma,
|
|
4
4
|
cifrado en reposo, almacenamiento intercambiable, provider EIP-1193 y verificación
|
|
5
5
|
del usuario (WebAuthn). Sin React y sin Kysely: lo usan el CLI de `m` y los
|
|
6
6
|
consumidores (learn.tg, sivel3, stable-sl).
|
|
@@ -70,7 +70,7 @@ setRpName('learn.tg') // nombre de la credencial We
|
|
|
70
70
|
|
|
71
71
|
## React (`./wallet/next`)
|
|
72
72
|
|
|
73
|
-
Capa React de la billetera in-app (
|
|
73
|
+
Capa React de la billetera in-app ([REQ/37](https://gitlab.com/pasosdeJesus/m/-/work_items/37), graduada de `learn.tg/packages/pdj-wallet-next`):
|
|
74
74
|
|
|
75
75
|
```tsx
|
|
76
76
|
import {
|
|
@@ -113,7 +113,7 @@ O a mano: `import { setupWalletTests } from '@pasosdejesus/m/test-utils'; setupW
|
|
|
113
113
|
|
|
114
114
|
## Notas
|
|
115
115
|
|
|
116
|
-
- Fase 1/2 de
|
|
116
|
+
- Fase 1/2 de [REQ/14](https://gitlab.com/pasosdeJesus/m/-/work_items/14): primitivas, estado, storage, provider, WebAuthn (L1/L2),
|
|
117
117
|
destinos y resolutor EIP-6963. La capa React (hook + `InAppWalletSetup`/`InAppWalletUnlock`)
|
|
118
|
-
vive en el subpath `./wallet/next` (
|
|
118
|
+
vive en el subpath `./wallet/next` ([REQ/37](https://gitlab.com/pasosdeJesus/m/-/work_items/37)).
|
|
119
119
|
- E2E con firma real: `@pasosdejesus/m/e2e` (`injectEIP6963`, `setupFullWalletMock`).
|