@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.
Files changed (312) hide show
  1. package/README.md +2 -2
  2. package/dist/CHANGELOG.md +141 -0
  3. package/dist/compose/derive.d.ts +53 -0
  4. package/dist/compose/derive.d.ts.map +1 -0
  5. package/dist/compose/derive.js +128 -0
  6. package/dist/compose/derive.js.map +1 -0
  7. package/dist/compose/discover.d.ts +32 -0
  8. package/dist/compose/discover.d.ts.map +1 -0
  9. package/dist/compose/discover.js +96 -0
  10. package/dist/compose/discover.js.map +1 -0
  11. package/dist/compose/index.d.ts +17 -0
  12. package/dist/compose/index.d.ts.map +1 -0
  13. package/dist/compose/index.js +16 -0
  14. package/dist/compose/index.js.map +1 -0
  15. package/dist/compose/manifest.d.ts +89 -0
  16. package/dist/compose/manifest.d.ts.map +1 -0
  17. package/dist/compose/manifest.js +16 -0
  18. package/dist/compose/manifest.js.map +1 -0
  19. package/dist/compose/sync.d.ts +12 -0
  20. package/dist/compose/sync.d.ts.map +1 -0
  21. package/dist/compose/sync.js +27 -0
  22. package/dist/compose/sync.js.map +1 -0
  23. package/dist/compose/usage.d.ts +54 -0
  24. package/dist/compose/usage.d.ts.map +1 -0
  25. package/dist/compose/usage.js +167 -0
  26. package/dist/compose/usage.js.map +1 -0
  27. package/dist/compose/vendor.d.ts +45 -0
  28. package/dist/compose/vendor.d.ts.map +1 -0
  29. package/dist/compose/vendor.js +147 -0
  30. package/dist/compose/vendor.js.map +1 -0
  31. package/dist/compose/verify.d.ts +11 -0
  32. package/dist/compose/verify.d.ts.map +1 -0
  33. package/dist/compose/verify.js +74 -0
  34. package/dist/compose/verify.js.map +1 -0
  35. package/dist/e2e/env.d.ts +1 -1
  36. package/dist/e2e/env.js +3 -3
  37. package/dist/e2e/env.js.map +1 -1
  38. package/dist/e2e/local-node.js +1 -1
  39. package/dist/e2e/local-node.js.map +1 -1
  40. package/dist/e2e/wallet-mock.js +1 -1
  41. package/dist/e2e/wallet-mock.js.map +1 -1
  42. package/dist/e2e/warmup.js +1 -1
  43. package/dist/e2e/warmup.js.map +1 -1
  44. package/dist/engine.d.ts +3 -16
  45. package/dist/engine.d.ts.map +1 -1
  46. package/dist/i18n/locales/cli.d.ts.map +1 -1
  47. package/dist/i18n/locales/cli.js +16 -10
  48. package/dist/i18n/locales/cli.js.map +1 -1
  49. package/dist/m.js +13 -10
  50. package/dist/m.js.map +1 -1
  51. package/dist/shadcn_components/ui/button.d.ts +1 -1
  52. package/dist/tasks/create.d.ts +7 -2
  53. package/dist/tasks/create.d.ts.map +1 -1
  54. package/dist/tasks/create.js +13 -17
  55. package/dist/tasks/create.js.map +1 -1
  56. package/dist/tasks/db.d.ts +2 -1
  57. package/dist/tasks/db.d.ts.map +1 -1
  58. package/dist/tasks/db.js +14 -11
  59. package/dist/tasks/db.js.map +1 -1
  60. package/dist/tasks/e2e-summary.js +1 -1
  61. package/dist/tasks/e2e-summary.js.map +1 -1
  62. package/dist/tasks/e2e.js +1 -1
  63. package/dist/tasks/e2e.js.map +1 -1
  64. package/dist/tasks/engine.d.ts.map +1 -1
  65. package/dist/tasks/engine.js +246 -17
  66. package/dist/tasks/engine.js.map +1 -1
  67. package/dist/tasks/msip.d.ts +11 -0
  68. package/dist/tasks/msip.d.ts.map +1 -0
  69. package/dist/tasks/{base-model.js → msip.js} +161 -25
  70. package/dist/tasks/msip.js.map +1 -0
  71. package/dist/tasks/update.d.ts +16 -0
  72. package/dist/tasks/update.d.ts.map +1 -1
  73. package/dist/tasks/update.js +61 -10
  74. package/dist/tasks/update.js.map +1 -1
  75. package/dist/tasks/warmup.js +1 -1
  76. package/dist/tasks/warmup.js.map +1 -1
  77. package/dist/templates/apps/hardhat/README.md +0 -8
  78. package/dist/templates/apps/nextjs/bin/m +3 -0
  79. package/dist/templates/apps/nextjs/package.json.hbs +1 -0
  80. package/dist/templates/apps/nextjs/tests/global-setup.ts +28 -0
  81. package/dist/templates/apps/nextjs/vitest.config.ts +3 -0
  82. package/dist/test-utils/console.d.ts +1 -1
  83. package/dist/test-utils/console.js +1 -1
  84. package/dist/test-utils/kysely-mocks.d.ts +1 -1
  85. package/dist/test-utils/kysely-mocks.js +1 -1
  86. package/dist/test-utils/wallet-mocks.js +1 -1
  87. package/dist/test-utils/wallet-setup.js +1 -1
  88. package/dist/util/engines.d.ts +4 -6
  89. package/dist/util/engines.d.ts.map +1 -1
  90. package/dist/util/engines.js +5 -38
  91. package/dist/util/engines.js.map +1 -1
  92. package/dist/util/msip.d.ts +17 -0
  93. package/dist/util/msip.d.ts.map +1 -0
  94. package/dist/util/msip.js +86 -0
  95. package/dist/util/msip.js.map +1 -0
  96. package/dist/wallet/index.js +1 -1
  97. package/dist/wallet/index.js.map +1 -1
  98. package/dist/wallet/next/i18n.d.ts +1 -1
  99. package/dist/wallet/next/i18n.js +1 -1
  100. package/dist/wallet/next/index.js +1 -1
  101. package/dist/wallet/next/index.js.map +1 -1
  102. package/dist/wallet/next/namespaces.d.ts +1 -1
  103. package/dist/wallet/next/namespaces.js +1 -1
  104. package/dist/wallet/storage/idb.d.ts +1 -1
  105. package/dist/wallet/storage/idb.js +1 -1
  106. package/package.json +4 -6
  107. package/src/e2e/README.md +6 -6
  108. package/src/tasks/README.md +3 -3
  109. package/src/test-utils/README.md +2 -2
  110. package/src/wallet/README.md +4 -4
  111. package/dist/base-model/baseline.generated.d.ts +0 -48
  112. package/dist/base-model/baseline.generated.d.ts.map +0 -1
  113. package/dist/base-model/baseline.generated.js +0 -930
  114. package/dist/base-model/baseline.generated.js.map +0 -1
  115. package/dist/base-model/check.d.ts +0 -6
  116. package/dist/base-model/check.d.ts.map +0 -1
  117. package/dist/base-model/check.js +0 -195
  118. package/dist/base-model/check.js.map +0 -1
  119. package/dist/base-model/forward/baseline_1_0_0.d.ts +0 -3
  120. package/dist/base-model/forward/baseline_1_0_0.d.ts.map +0 -1
  121. package/dist/base-model/forward/baseline_1_0_0.js +0 -23
  122. package/dist/base-model/forward/baseline_1_0_0.js.map +0 -1
  123. package/dist/base-model/forward/index.d.ts +0 -28
  124. package/dist/base-model/forward/index.d.ts.map +0 -1
  125. package/dist/base-model/forward/index.js +0 -126
  126. package/dist/base-model/forward/index.js.map +0 -1
  127. package/dist/base-model/forward/index.test.d.ts +0 -2
  128. package/dist/base-model/forward/index.test.d.ts.map +0 -1
  129. package/dist/base-model/forward/index.test.js +0 -65
  130. package/dist/base-model/forward/index.test.js.map +0 -1
  131. package/dist/base-model/forward/policy.d.ts +0 -16
  132. package/dist/base-model/forward/policy.d.ts.map +0 -1
  133. package/dist/base-model/forward/policy.js +0 -37
  134. package/dist/base-model/forward/policy.js.map +0 -1
  135. package/dist/base-model/forward/policy.test.d.ts +0 -2
  136. package/dist/base-model/forward/policy.test.d.ts.map +0 -1
  137. package/dist/base-model/forward/policy.test.js +0 -40
  138. package/dist/base-model/forward/policy.test.js.map +0 -1
  139. package/dist/base-model/forward/types.d.ts +0 -21
  140. package/dist/base-model/forward/types.d.ts.map +0 -1
  141. package/dist/base-model/forward/types.js +0 -2
  142. package/dist/base-model/forward/types.js.map +0 -1
  143. package/dist/base-model/generate.d.ts +0 -42
  144. package/dist/base-model/generate.d.ts.map +0 -1
  145. package/dist/base-model/generate.js +0 -241
  146. package/dist/base-model/generate.js.map +0 -1
  147. package/dist/base-model/guidelines.d.ts +0 -13
  148. package/dist/base-model/guidelines.d.ts.map +0 -1
  149. package/dist/base-model/guidelines.js +0 -61
  150. package/dist/base-model/guidelines.js.map +0 -1
  151. package/dist/base-model/index.d.ts +0 -24
  152. package/dist/base-model/index.d.ts.map +0 -1
  153. package/dist/base-model/index.js +0 -29
  154. package/dist/base-model/index.js.map +0 -1
  155. package/dist/base-model/parse-structure.d.ts +0 -4
  156. package/dist/base-model/parse-structure.d.ts.map +0 -1
  157. package/dist/base-model/parse-structure.js +0 -170
  158. package/dist/base-model/parse-structure.js.map +0 -1
  159. package/dist/base-model/queries.d.ts +0 -34
  160. package/dist/base-model/queries.d.ts.map +0 -1
  161. package/dist/base-model/queries.js +0 -118
  162. package/dist/base-model/queries.js.map +0 -1
  163. package/dist/base-model/references/learn-tg.d.ts +0 -21
  164. package/dist/base-model/references/learn-tg.d.ts.map +0 -1
  165. package/dist/base-model/references/learn-tg.js +0 -65
  166. package/dist/base-model/references/learn-tg.js.map +0 -1
  167. package/dist/base-model/references/msip.d.ts +0 -29
  168. package/dist/base-model/references/msip.d.ts.map +0 -1
  169. package/dist/base-model/references/msip.js +0 -33
  170. package/dist/base-model/references/msip.js.map +0 -1
  171. package/dist/base-model/types.d.ts +0 -207
  172. package/dist/base-model/types.d.ts.map +0 -1
  173. package/dist/base-model/types.js +0 -10
  174. package/dist/base-model/types.js.map +0 -1
  175. package/dist/base-model/version.d.ts +0 -19
  176. package/dist/base-model/version.d.ts.map +0 -1
  177. package/dist/base-model/version.js +0 -26
  178. package/dist/base-model/version.js.map +0 -1
  179. package/dist/base-model/wallet-link.d.ts +0 -69
  180. package/dist/base-model/wallet-link.d.ts.map +0 -1
  181. package/dist/base-model/wallet-link.js +0 -220
  182. package/dist/base-model/wallet-link.js.map +0 -1
  183. package/dist/base-model/wallet-link.test.d.ts +0 -2
  184. package/dist/base-model/wallet-link.test.d.ts.map +0 -1
  185. package/dist/base-model/wallet-link.test.js +0 -147
  186. package/dist/base-model/wallet-link.test.js.map +0 -1
  187. package/dist/e2e/env.test.d.ts +0 -2
  188. package/dist/e2e/env.test.d.ts.map +0 -1
  189. package/dist/e2e/env.test.js +0 -72
  190. package/dist/e2e/env.test.js.map +0 -1
  191. package/dist/e2e/full-wallet.test.d.ts +0 -2
  192. package/dist/e2e/full-wallet.test.d.ts.map +0 -1
  193. package/dist/e2e/full-wallet.test.js +0 -63
  194. package/dist/e2e/full-wallet.test.js.map +0 -1
  195. package/dist/e2e/in-app-wallet.test.d.ts +0 -2
  196. package/dist/e2e/in-app-wallet.test.d.ts.map +0 -1
  197. package/dist/e2e/in-app-wallet.test.js +0 -52
  198. package/dist/e2e/in-app-wallet.test.js.map +0 -1
  199. package/dist/e2e/local-node.test.d.ts +0 -2
  200. package/dist/e2e/local-node.test.d.ts.map +0 -1
  201. package/dist/e2e/local-node.test.js +0 -43
  202. package/dist/e2e/local-node.test.js.map +0 -1
  203. package/dist/e2e/retry.test.d.ts +0 -2
  204. package/dist/e2e/retry.test.d.ts.map +0 -1
  205. package/dist/e2e/retry.test.js +0 -43
  206. package/dist/e2e/retry.test.js.map +0 -1
  207. package/dist/e2e/signer.test.d.ts +0 -2
  208. package/dist/e2e/signer.test.d.ts.map +0 -1
  209. package/dist/e2e/signer.test.js +0 -57
  210. package/dist/e2e/signer.test.js.map +0 -1
  211. package/dist/e2e/siwe-optional.test.d.ts +0 -2
  212. package/dist/e2e/siwe-optional.test.d.ts.map +0 -1
  213. package/dist/e2e/siwe-optional.test.js +0 -13
  214. package/dist/e2e/siwe-optional.test.js.map +0 -1
  215. package/dist/e2e/wallet-mock.test.d.ts +0 -2
  216. package/dist/e2e/wallet-mock.test.d.ts.map +0 -1
  217. package/dist/e2e/wallet-mock.test.js +0 -28
  218. package/dist/e2e/wallet-mock.test.js.map +0 -1
  219. package/dist/e2e/warmup.test.d.ts +0 -2
  220. package/dist/e2e/warmup.test.d.ts.map +0 -1
  221. package/dist/e2e/warmup.test.js +0 -67
  222. package/dist/e2e/warmup.test.js.map +0 -1
  223. package/dist/engine.test.d.ts +0 -2
  224. package/dist/engine.test.d.ts.map +0 -1
  225. package/dist/engine.test.js +0 -35
  226. package/dist/engine.test.js.map +0 -1
  227. package/dist/index.test.d.ts +0 -2
  228. package/dist/index.test.d.ts.map +0 -1
  229. package/dist/index.test.js +0 -11
  230. package/dist/index.test.js.map +0 -1
  231. package/dist/tasks/base-model.d.ts +0 -5
  232. package/dist/tasks/base-model.d.ts.map +0 -1
  233. package/dist/tasks/base-model.js.map +0 -1
  234. package/dist/tasks/e2e.test.d.ts +0 -2
  235. package/dist/tasks/e2e.test.d.ts.map +0 -1
  236. package/dist/tasks/e2e.test.js +0 -108
  237. package/dist/tasks/e2e.test.js.map +0 -1
  238. package/dist/tasks/warmup.test.d.ts +0 -2
  239. package/dist/tasks/warmup.test.d.ts.map +0 -1
  240. package/dist/tasks/warmup.test.js +0 -40
  241. package/dist/tasks/warmup.test.js.map +0 -1
  242. package/dist/templates/apps/nextjs/tests/index.test.ts +0 -7
  243. package/dist/templates/apps/nextjs/tests/test-utils.example.test.ts +0 -169
  244. package/dist/templates/apps/nextjs/tsconfig.test.json +0 -38
  245. package/dist/test-utils/console.test.d.ts +0 -2
  246. package/dist/test-utils/console.test.d.ts.map +0 -1
  247. package/dist/test-utils/console.test.js +0 -70
  248. package/dist/test-utils/console.test.js.map +0 -1
  249. package/dist/test-utils/kysely-mocks.test.d.ts +0 -2
  250. package/dist/test-utils/kysely-mocks.test.d.ts.map +0 -1
  251. package/dist/test-utils/kysely-mocks.test.js +0 -126
  252. package/dist/test-utils/kysely-mocks.test.js.map +0 -1
  253. package/dist/test-utils/wallet-mocks.test.d.ts +0 -2
  254. package/dist/test-utils/wallet-mocks.test.d.ts.map +0 -1
  255. package/dist/test-utils/wallet-mocks.test.js +0 -55
  256. package/dist/test-utils/wallet-mocks.test.js.map +0 -1
  257. package/dist/test-utils/wallet-setup.test.d.ts +0 -2
  258. package/dist/test-utils/wallet-setup.test.d.ts.map +0 -1
  259. package/dist/test-utils/wallet-setup.test.js +0 -18
  260. package/dist/test-utils/wallet-setup.test.js.map +0 -1
  261. package/dist/util/engines.test.d.ts +0 -2
  262. package/dist/util/engines.test.d.ts.map +0 -1
  263. package/dist/util/engines.test.js +0 -79
  264. package/dist/util/engines.test.js.map +0 -1
  265. package/dist/wallet/biometric.test.d.ts +0 -2
  266. package/dist/wallet/biometric.test.d.ts.map +0 -1
  267. package/dist/wallet/biometric.test.js +0 -44
  268. package/dist/wallet/biometric.test.js.map +0 -1
  269. package/dist/wallet/crypto.test.d.ts +0 -2
  270. package/dist/wallet/crypto.test.d.ts.map +0 -1
  271. package/dist/wallet/crypto.test.js +0 -34
  272. package/dist/wallet/crypto.test.js.map +0 -1
  273. package/dist/wallet/destinations.test.d.ts +0 -2
  274. package/dist/wallet/destinations.test.d.ts.map +0 -1
  275. package/dist/wallet/destinations.test.js +0 -34
  276. package/dist/wallet/destinations.test.js.map +0 -1
  277. package/dist/wallet/external-provider.test.d.ts +0 -2
  278. package/dist/wallet/external-provider.test.d.ts.map +0 -1
  279. package/dist/wallet/external-provider.test.js +0 -44
  280. package/dist/wallet/external-provider.test.js.map +0 -1
  281. package/dist/wallet/indexeddb.test.d.ts +0 -2
  282. package/dist/wallet/indexeddb.test.d.ts.map +0 -1
  283. package/dist/wallet/indexeddb.test.js +0 -28
  284. package/dist/wallet/indexeddb.test.js.map +0 -1
  285. package/dist/wallet/kdf.test.d.ts +0 -2
  286. package/dist/wallet/kdf.test.d.ts.map +0 -1
  287. package/dist/wallet/kdf.test.js +0 -54
  288. package/dist/wallet/kdf.test.js.map +0 -1
  289. package/dist/wallet/next/components.test.d.ts +0 -2
  290. package/dist/wallet/next/components.test.d.ts.map +0 -1
  291. package/dist/wallet/next/components.test.js +0 -122
  292. package/dist/wallet/next/components.test.js.map +0 -1
  293. package/dist/wallet/next/useInAppWallet.test.d.ts +0 -2
  294. package/dist/wallet/next/useInAppWallet.test.d.ts.map +0 -1
  295. package/dist/wallet/next/useInAppWallet.test.js +0 -261
  296. package/dist/wallet/next/useInAppWallet.test.js.map +0 -1
  297. package/dist/wallet/provider.test.d.ts +0 -2
  298. package/dist/wallet/provider.test.d.ts.map +0 -1
  299. package/dist/wallet/provider.test.js +0 -170
  300. package/dist/wallet/provider.test.js.map +0 -1
  301. package/dist/wallet/signer.test.d.ts +0 -2
  302. package/dist/wallet/signer.test.d.ts.map +0 -1
  303. package/dist/wallet/signer.test.js +0 -62
  304. package/dist/wallet/signer.test.js.map +0 -1
  305. package/dist/wallet/storage.test.d.ts +0 -2
  306. package/dist/wallet/storage.test.d.ts.map +0 -1
  307. package/dist/wallet/storage.test.js +0 -103
  308. package/dist/wallet/storage.test.js.map +0 -1
  309. package/dist/wallet/wallet.test.d.ts +0 -2
  310. package/dist/wallet/wallet.test.d.ts.map +0 -1
  311. package/dist/wallet/wallet.test.js +0 -150
  312. 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 `m/REQ/49`: many consumers wrap `console` to hide expected noise
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 `m/REQ/49`: many consumers wrap `console` to hide expected noise
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 `m/REQ/49`: the builder covers what real API routes use (measured in
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 `m/REQ/49`: the builder covers what real API routes use (measured in
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 (`m/REQ/14` Fase 4).
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 (`m/REQ/14` Fase 4).
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:
@@ -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
- * Decide whether a dependency is an m plugin/engine: by the
14
- * @pasosdejesus/m-* naming convention or by declaring `mEngine: true`.
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;AAM3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAElD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAQ7E;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;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAoBhF;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"}
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"}
@@ -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 { readdir, readFile } from 'node:fs/promises';
14
+ import { discoverEngines } from '../compose/discover.js';
15
+ export { discoverEngines };
15
16
  /**
16
- * Decide whether a dependency is an m plugin/engine: by the
17
- * @pasosdejesus/m-* naming convention or by declaring `mEngine: true`.
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
- if (name.startsWith('@pasosdejesus/m') && name !== '@pasosdejesus/m')
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
@@ -1 +1 @@
1
- {"version":3,"file":"engines.js","sourceRoot":"","sources":["../../src/util/engines.ts"],"names":[],"mappings":"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"}
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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"}
@@ -1,4 +1,4 @@
1
- // @pasosdejesus/m/wallet — núcleo compartido de billetera (`m/REQ/14`).
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,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallet/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,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"}
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 (`m/REQ/37`).
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 {};
@@ -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 (`m/REQ/37`).
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 (`m/REQ/37`).
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,+EAA+E;AAC/E,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"}
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 (`m/REQ/37`).
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 (`m/REQ/37`).
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 (`m/REQ/14`, "parametrizar las claves de almacenamiento").
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 (`m/REQ/14`, "parametrizar las claves de almacenamiento").
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.27.1",
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 (`m/REQ/14`)
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 (`m/REQ/49` 14).** Without `rpcUrl`, `eth_getTransactionReceipt` used to return
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 (`m/REQ/49` 15)
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 (`m/REQ/14`)
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 (`m/REQ/49` P3/P4)
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 (`m/REQ/49` P5)
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?,
@@ -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
- | `base-model.ts` | `base-model:dump`, `base-model:verify` | Generates the base-model baseline from a reference and guards its derivation |
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:check`, `db:console`, `db:test`, `db:dump`, `db:restore` | PostgreSQL database lifecycle, migration management, schema verification, and backup/restore |
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:wba:setup`, `eng:credentials:setup`, `eng:list`, `eng:check` | Engine management: migration generation, schema verification |
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 |
@@ -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 (`m/REQ/49` U1):** `MockKysely`/`apiDbMocks` ahora cubren lo que usan las
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 (`m/REQ/49` U2).
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'
@@ -1,6 +1,6 @@
1
1
  # @pasosdejesus/m/wallet
2
2
 
3
- Núcleo compartido de billetera (`m/REQ/14`): mnemónica BIP39, derivación, firma,
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 (`m/REQ/37`, graduada de `learn.tg/packages/pdj-wallet-next`):
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 `m/REQ/14`: primitivas, estado, storage, provider, WebAuthn (L1/L2),
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` (`m/REQ/37`).
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`).