@pasosdejesus/m 0.19.0 → 0.20.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/e2e/env.d.ts CHANGED
@@ -1,3 +1,9 @@
1
+ export interface E2EAccount {
2
+ address: string;
3
+ signMessage: (opts: {
4
+ message: string;
5
+ }) => Promise<string>;
6
+ }
1
7
  export interface E2EEnv {
2
8
  port: string;
3
9
  host: string;
@@ -5,12 +11,15 @@ export interface E2EEnv {
5
11
  base: string;
6
12
  timeout: number;
7
13
  headless: boolean;
8
- account: {
9
- address: string;
10
- signMessage: (opts: {
11
- message: string;
12
- }) => Promise<string>;
13
- };
14
+ /** Billetera principal (sesión SIWE / primer wallet). */
15
+ account: E2EAccount;
16
+ /**
17
+ * Todas las billeteras disponibles (REQ/35: flujos de claim pueden necesitar
18
+ * una billetera de sesión y otra claimer con fondos para gas).
19
+ * Fuentes: TEST_PRIVATE_KEYS (lista separada por comas, prioridad),
20
+ * TEST_PRIVATE_KEY, apps/.env, Hardhat test key.
21
+ */
22
+ wallets: E2EAccount[];
14
23
  chainId: number;
15
24
  }
16
25
  export declare function initTestEnv(): Promise<E2EEnv>;
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/e2e/env.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,CAAC,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,CAAA;IACzF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CA0BnD;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/e2e/env.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC5D;AAED,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,yDAAyD;IACzD,OAAO,EAAE,UAAU,CAAA;IACnB;;;;;OAKG;IACH,OAAO,EAAE,UAAU,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAyCnD;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1C"}
package/dist/e2e/env.js CHANGED
@@ -1,31 +1,29 @@
1
1
  // Environment helper for E2E tests — parses env vars, resolves account
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
- // Try to load PRIVATE_KEY and NEXT_PUBLIC_ADDRESS from apps/.env
4
+ // Try to load PRIVATE_KEY and NEXT_PUBLIC_ADDRESS from a .env file.
5
+ // Candidates (en orden): ../.env (apps/ cuando cwd=apps/<app>), ../../.env
6
+ // (raíz del repo), .env (cwd). REQ/35: desde apps/nextjs el .env real vive en
7
+ // apps/.env (../.env), no en la raíz.
8
+ const ENV_CANDIDATES = [
9
+ { rel: path.join('..', '.env'), label: 'apps/.env' },
10
+ { rel: path.join('..', '..', '.env'), label: 'root/.env' },
11
+ { rel: '.env', label: '.env' },
12
+ ];
5
13
  function loadEnvFile() {
6
- try {
7
- const envPath = path.join(process.cwd(), '..', '..', '.env');
8
- if (fs.existsSync(envPath)) {
14
+ for (const { rel, label } of ENV_CANDIDATES) {
15
+ try {
16
+ const envPath = path.join(process.cwd(), rel);
17
+ if (!fs.existsSync(envPath))
18
+ continue;
9
19
  const content = fs.readFileSync(envPath, 'utf8');
10
20
  const pk = content.match(/PRIVATE_KEY="([^"]+)"/)?.[1];
11
21
  const addr = content.match(/NEXT_PUBLIC_ADDRESS="([^"]+)"/)?.[1];
12
22
  if (pk && addr)
13
- return { pk, addr, source: 'apps/.env' };
23
+ return { pk, addr, source: label };
14
24
  }
25
+ catch { /* siguiente candidato */ }
15
26
  }
16
- catch { /* fallback */ }
17
- // Also try .env from working directory
18
- try {
19
- const envPath = path.join(process.cwd(), '.env');
20
- if (fs.existsSync(envPath)) {
21
- const content = fs.readFileSync(envPath, 'utf8');
22
- const pk = content.match(/PRIVATE_KEY="([^"]+)"/)?.[1];
23
- const addr = content.match(/NEXT_PUBLIC_ADDRESS="([^"]+)"/)?.[1];
24
- if (pk && addr)
25
- return { pk, addr, source: '.env' };
26
- }
27
- }
28
- catch { /* fallback */ }
29
27
  return null;
30
28
  }
31
29
  const _envFile = loadEnvFile();
@@ -36,21 +34,37 @@ export async function initTestEnv() {
36
34
  const base = `https://${host}${domainPort}`;
37
35
  const timeout = 60000;
38
36
  const headless = process.env.CONCABEZA ? false : true;
39
- // Priority: TEST_PRIVATE_KEY > apps/.env > Hardhat test key
40
- const pk = process.env.TEST_PRIVATE_KEY ||
41
- _envFile?.pk ||
42
- '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80';
37
+ // Prioridad de claves: TEST_PRIVATE_KEYS (lista) > TEST_PRIVATE_KEY >
38
+ // apps/.env > Hardhat test key.
39
+ const rawKeys = (process.env.TEST_PRIVATE_KEYS || '')
40
+ .split(',')
41
+ .map((k) => k.trim())
42
+ .filter(Boolean);
43
+ const pks = rawKeys.length > 0
44
+ ? rawKeys
45
+ : [
46
+ process.env.TEST_PRIVATE_KEY ||
47
+ _envFile?.pk ||
48
+ '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',
49
+ ];
43
50
  // Lazy import viem to avoid requiring it for smoke tests
44
51
  const { privateKeyToAccount } = await import('viem/accounts');
45
- const account = privateKeyToAccount(pk);
52
+ const wallets = pks.map((pk) => {
53
+ const acc = privateKeyToAccount(pk);
54
+ return { address: acc.address, signMessage: acc.signMessage.bind(acc) };
55
+ });
56
+ const account = wallets[0];
46
57
  if (_envFile) {
47
58
  console.log(` 🔑 Using ${_envFile.source} wallet: ${account.address}`);
48
59
  }
60
+ else if (process.env.TEST_PRIVATE_KEY || process.env.TEST_PRIVATE_KEYS) {
61
+ console.log(` 🔑 Using env wallet: ${account.address}`);
62
+ }
49
63
  else {
50
64
  console.log(` 🔑 Using Hardhat test key: ${account.address}`);
51
65
  }
52
66
  const chainId = parseInt(process.env.CHAIN_ID || '42220', 10);
53
- return { port, host, domainPort, base, timeout, headless, account, chainId };
67
+ return { port, host, domainPort, base, timeout, headless, account, wallets, chainId };
54
68
  }
55
69
  export function short(addr) {
56
70
  return addr.slice(0, 10) + '...';
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/e2e/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/e2e/env.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pasosdejesus/m",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "Motor para crear y gestionar proyectos al estilo Pasos de Jesus.",
5
5
  "author": "",
6
6
  "license": "ISC",