@pasosdejesus/m 0.27.2 → 0.29.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 (323) hide show
  1. package/README.md +2 -2
  2. package/dist/CHANGELOG.md +147 -0
  3. package/dist/compose/data.d.ts +30 -0
  4. package/dist/compose/data.d.ts.map +1 -0
  5. package/dist/compose/data.js +46 -0
  6. package/dist/compose/data.js.map +1 -0
  7. package/dist/compose/derive.d.ts +59 -0
  8. package/dist/compose/derive.d.ts.map +1 -0
  9. package/dist/compose/derive.js +143 -0
  10. package/dist/compose/derive.js.map +1 -0
  11. package/dist/compose/discover.d.ts +32 -0
  12. package/dist/compose/discover.d.ts.map +1 -0
  13. package/dist/compose/discover.js +96 -0
  14. package/dist/compose/discover.js.map +1 -0
  15. package/dist/compose/git.d.ts +31 -0
  16. package/dist/compose/git.d.ts.map +1 -0
  17. package/dist/compose/git.js +71 -0
  18. package/dist/compose/git.js.map +1 -0
  19. package/dist/compose/index.d.ts +19 -0
  20. package/dist/compose/index.d.ts.map +1 -0
  21. package/dist/compose/index.js +18 -0
  22. package/dist/compose/index.js.map +1 -0
  23. package/dist/compose/manifest.d.ts +89 -0
  24. package/dist/compose/manifest.d.ts.map +1 -0
  25. package/dist/compose/manifest.js +16 -0
  26. package/dist/compose/manifest.js.map +1 -0
  27. package/dist/compose/sync.d.ts +12 -0
  28. package/dist/compose/sync.d.ts.map +1 -0
  29. package/dist/compose/sync.js +27 -0
  30. package/dist/compose/sync.js.map +1 -0
  31. package/dist/compose/usage.d.ts +54 -0
  32. package/dist/compose/usage.d.ts.map +1 -0
  33. package/dist/compose/usage.js +167 -0
  34. package/dist/compose/usage.js.map +1 -0
  35. package/dist/compose/vendor.d.ts +68 -0
  36. package/dist/compose/vendor.d.ts.map +1 -0
  37. package/dist/compose/vendor.js +166 -0
  38. package/dist/compose/vendor.js.map +1 -0
  39. package/dist/compose/verify.d.ts +11 -0
  40. package/dist/compose/verify.d.ts.map +1 -0
  41. package/dist/compose/verify.js +74 -0
  42. package/dist/compose/verify.js.map +1 -0
  43. package/dist/e2e/env.d.ts +1 -1
  44. package/dist/e2e/env.js +3 -3
  45. package/dist/e2e/env.js.map +1 -1
  46. package/dist/e2e/local-node.js +1 -1
  47. package/dist/e2e/local-node.js.map +1 -1
  48. package/dist/e2e/wallet-mock.js +1 -1
  49. package/dist/e2e/wallet-mock.js.map +1 -1
  50. package/dist/e2e/warmup.js +1 -1
  51. package/dist/e2e/warmup.js.map +1 -1
  52. package/dist/engine.d.ts +3 -16
  53. package/dist/engine.d.ts.map +1 -1
  54. package/dist/i18n/locales/cli.d.ts.map +1 -1
  55. package/dist/i18n/locales/cli.js +20 -10
  56. package/dist/i18n/locales/cli.js.map +1 -1
  57. package/dist/m.js +15 -10
  58. package/dist/m.js.map +1 -1
  59. package/dist/shadcn_components/ui/button.d.ts +1 -1
  60. package/dist/tasks/create.d.ts +1 -1
  61. package/dist/tasks/create.d.ts.map +1 -1
  62. package/dist/tasks/create.js +5 -13
  63. package/dist/tasks/create.js.map +1 -1
  64. package/dist/tasks/db.d.ts +2 -1
  65. package/dist/tasks/db.d.ts.map +1 -1
  66. package/dist/tasks/db.js +14 -11
  67. package/dist/tasks/db.js.map +1 -1
  68. package/dist/tasks/e2e-summary.js +1 -1
  69. package/dist/tasks/e2e-summary.js.map +1 -1
  70. package/dist/tasks/e2e.js +1 -1
  71. package/dist/tasks/e2e.js.map +1 -1
  72. package/dist/tasks/engine.d.ts.map +1 -1
  73. package/dist/tasks/engine.js +436 -17
  74. package/dist/tasks/engine.js.map +1 -1
  75. package/dist/tasks/msip.d.ts +11 -0
  76. package/dist/tasks/msip.d.ts.map +1 -0
  77. package/dist/tasks/{base-model.js → msip.js} +161 -25
  78. package/dist/tasks/msip.js.map +1 -0
  79. package/dist/tasks/warmup.js +1 -1
  80. package/dist/tasks/warmup.js.map +1 -1
  81. package/dist/templates/apps/hardhat/README.md +0 -8
  82. package/dist/templates/apps/nextjs/bin/m +3 -0
  83. package/dist/templates/apps/nextjs/tests/global-setup.ts +28 -0
  84. package/dist/templates/apps/nextjs/vitest.config.ts +3 -0
  85. package/dist/test-utils/console.d.ts +1 -1
  86. package/dist/test-utils/console.js +1 -1
  87. package/dist/test-utils/kysely-mocks.d.ts +1 -1
  88. package/dist/test-utils/kysely-mocks.js +1 -1
  89. package/dist/test-utils/wallet-mocks.js +1 -1
  90. package/dist/test-utils/wallet-setup.js +1 -1
  91. package/dist/util/engines.d.ts +4 -6
  92. package/dist/util/engines.d.ts.map +1 -1
  93. package/dist/util/engines.js +5 -38
  94. package/dist/util/engines.js.map +1 -1
  95. package/dist/util/msip.d.ts +17 -0
  96. package/dist/util/msip.d.ts.map +1 -0
  97. package/dist/util/msip.js +86 -0
  98. package/dist/util/msip.js.map +1 -0
  99. package/dist/wallet/index.js +1 -1
  100. package/dist/wallet/index.js.map +1 -1
  101. package/dist/wallet/next/i18n.d.ts +1 -1
  102. package/dist/wallet/next/i18n.js +1 -1
  103. package/dist/wallet/next/index.js +1 -1
  104. package/dist/wallet/next/index.js.map +1 -1
  105. package/dist/wallet/next/namespaces.d.ts +1 -1
  106. package/dist/wallet/next/namespaces.js +1 -1
  107. package/dist/wallet/storage/idb.d.ts +1 -1
  108. package/dist/wallet/storage/idb.js +1 -1
  109. package/package.json +4 -6
  110. package/src/e2e/README.md +6 -6
  111. package/src/tasks/README.md +3 -3
  112. package/src/test-utils/README.md +2 -2
  113. package/src/wallet/README.md +4 -4
  114. package/dist/base-model/baseline.generated.d.ts +0 -48
  115. package/dist/base-model/baseline.generated.d.ts.map +0 -1
  116. package/dist/base-model/baseline.generated.js +0 -930
  117. package/dist/base-model/baseline.generated.js.map +0 -1
  118. package/dist/base-model/check.d.ts +0 -6
  119. package/dist/base-model/check.d.ts.map +0 -1
  120. package/dist/base-model/check.js +0 -195
  121. package/dist/base-model/check.js.map +0 -1
  122. package/dist/base-model/forward/baseline_1_0_0.d.ts +0 -3
  123. package/dist/base-model/forward/baseline_1_0_0.d.ts.map +0 -1
  124. package/dist/base-model/forward/baseline_1_0_0.js +0 -23
  125. package/dist/base-model/forward/baseline_1_0_0.js.map +0 -1
  126. package/dist/base-model/forward/index.d.ts +0 -28
  127. package/dist/base-model/forward/index.d.ts.map +0 -1
  128. package/dist/base-model/forward/index.js +0 -126
  129. package/dist/base-model/forward/index.js.map +0 -1
  130. package/dist/base-model/forward/index.test.d.ts +0 -2
  131. package/dist/base-model/forward/index.test.d.ts.map +0 -1
  132. package/dist/base-model/forward/index.test.js +0 -65
  133. package/dist/base-model/forward/index.test.js.map +0 -1
  134. package/dist/base-model/forward/policy.d.ts +0 -16
  135. package/dist/base-model/forward/policy.d.ts.map +0 -1
  136. package/dist/base-model/forward/policy.js +0 -37
  137. package/dist/base-model/forward/policy.js.map +0 -1
  138. package/dist/base-model/forward/policy.test.d.ts +0 -2
  139. package/dist/base-model/forward/policy.test.d.ts.map +0 -1
  140. package/dist/base-model/forward/policy.test.js +0 -40
  141. package/dist/base-model/forward/policy.test.js.map +0 -1
  142. package/dist/base-model/forward/types.d.ts +0 -21
  143. package/dist/base-model/forward/types.d.ts.map +0 -1
  144. package/dist/base-model/forward/types.js +0 -2
  145. package/dist/base-model/forward/types.js.map +0 -1
  146. package/dist/base-model/generate.d.ts +0 -42
  147. package/dist/base-model/generate.d.ts.map +0 -1
  148. package/dist/base-model/generate.js +0 -241
  149. package/dist/base-model/generate.js.map +0 -1
  150. package/dist/base-model/guidelines.d.ts +0 -13
  151. package/dist/base-model/guidelines.d.ts.map +0 -1
  152. package/dist/base-model/guidelines.js +0 -61
  153. package/dist/base-model/guidelines.js.map +0 -1
  154. package/dist/base-model/index.d.ts +0 -24
  155. package/dist/base-model/index.d.ts.map +0 -1
  156. package/dist/base-model/index.js +0 -29
  157. package/dist/base-model/index.js.map +0 -1
  158. package/dist/base-model/parse-structure.d.ts +0 -4
  159. package/dist/base-model/parse-structure.d.ts.map +0 -1
  160. package/dist/base-model/parse-structure.js +0 -170
  161. package/dist/base-model/parse-structure.js.map +0 -1
  162. package/dist/base-model/queries.d.ts +0 -34
  163. package/dist/base-model/queries.d.ts.map +0 -1
  164. package/dist/base-model/queries.js +0 -118
  165. package/dist/base-model/queries.js.map +0 -1
  166. package/dist/base-model/references/learn-tg.d.ts +0 -21
  167. package/dist/base-model/references/learn-tg.d.ts.map +0 -1
  168. package/dist/base-model/references/learn-tg.js +0 -65
  169. package/dist/base-model/references/learn-tg.js.map +0 -1
  170. package/dist/base-model/references/msip.d.ts +0 -29
  171. package/dist/base-model/references/msip.d.ts.map +0 -1
  172. package/dist/base-model/references/msip.js +0 -33
  173. package/dist/base-model/references/msip.js.map +0 -1
  174. package/dist/base-model/types.d.ts +0 -207
  175. package/dist/base-model/types.d.ts.map +0 -1
  176. package/dist/base-model/types.js +0 -10
  177. package/dist/base-model/types.js.map +0 -1
  178. package/dist/base-model/version.d.ts +0 -19
  179. package/dist/base-model/version.d.ts.map +0 -1
  180. package/dist/base-model/version.js +0 -26
  181. package/dist/base-model/version.js.map +0 -1
  182. package/dist/base-model/wallet-link.d.ts +0 -69
  183. package/dist/base-model/wallet-link.d.ts.map +0 -1
  184. package/dist/base-model/wallet-link.js +0 -220
  185. package/dist/base-model/wallet-link.js.map +0 -1
  186. package/dist/base-model/wallet-link.test.d.ts +0 -2
  187. package/dist/base-model/wallet-link.test.d.ts.map +0 -1
  188. package/dist/base-model/wallet-link.test.js +0 -147
  189. package/dist/base-model/wallet-link.test.js.map +0 -1
  190. package/dist/e2e/env.test.d.ts +0 -2
  191. package/dist/e2e/env.test.d.ts.map +0 -1
  192. package/dist/e2e/env.test.js +0 -72
  193. package/dist/e2e/env.test.js.map +0 -1
  194. package/dist/e2e/full-wallet.test.d.ts +0 -2
  195. package/dist/e2e/full-wallet.test.d.ts.map +0 -1
  196. package/dist/e2e/full-wallet.test.js +0 -63
  197. package/dist/e2e/full-wallet.test.js.map +0 -1
  198. package/dist/e2e/in-app-wallet.test.d.ts +0 -2
  199. package/dist/e2e/in-app-wallet.test.d.ts.map +0 -1
  200. package/dist/e2e/in-app-wallet.test.js +0 -52
  201. package/dist/e2e/in-app-wallet.test.js.map +0 -1
  202. package/dist/e2e/local-node.test.d.ts +0 -2
  203. package/dist/e2e/local-node.test.d.ts.map +0 -1
  204. package/dist/e2e/local-node.test.js +0 -43
  205. package/dist/e2e/local-node.test.js.map +0 -1
  206. package/dist/e2e/retry.test.d.ts +0 -2
  207. package/dist/e2e/retry.test.d.ts.map +0 -1
  208. package/dist/e2e/retry.test.js +0 -43
  209. package/dist/e2e/retry.test.js.map +0 -1
  210. package/dist/e2e/signer.test.d.ts +0 -2
  211. package/dist/e2e/signer.test.d.ts.map +0 -1
  212. package/dist/e2e/signer.test.js +0 -57
  213. package/dist/e2e/signer.test.js.map +0 -1
  214. package/dist/e2e/siwe-optional.test.d.ts +0 -2
  215. package/dist/e2e/siwe-optional.test.d.ts.map +0 -1
  216. package/dist/e2e/siwe-optional.test.js +0 -13
  217. package/dist/e2e/siwe-optional.test.js.map +0 -1
  218. package/dist/e2e/wallet-mock.test.d.ts +0 -2
  219. package/dist/e2e/wallet-mock.test.d.ts.map +0 -1
  220. package/dist/e2e/wallet-mock.test.js +0 -28
  221. package/dist/e2e/wallet-mock.test.js.map +0 -1
  222. package/dist/e2e/warmup.test.d.ts +0 -2
  223. package/dist/e2e/warmup.test.d.ts.map +0 -1
  224. package/dist/e2e/warmup.test.js +0 -67
  225. package/dist/e2e/warmup.test.js.map +0 -1
  226. package/dist/engine.test.d.ts +0 -2
  227. package/dist/engine.test.d.ts.map +0 -1
  228. package/dist/engine.test.js +0 -35
  229. package/dist/engine.test.js.map +0 -1
  230. package/dist/index.test.d.ts +0 -2
  231. package/dist/index.test.d.ts.map +0 -1
  232. package/dist/index.test.js +0 -11
  233. package/dist/index.test.js.map +0 -1
  234. package/dist/tasks/base-model.d.ts +0 -5
  235. package/dist/tasks/base-model.d.ts.map +0 -1
  236. package/dist/tasks/base-model.js.map +0 -1
  237. package/dist/tasks/create.test.d.ts +0 -2
  238. package/dist/tasks/create.test.d.ts.map +0 -1
  239. package/dist/tasks/create.test.js +0 -41
  240. package/dist/tasks/create.test.js.map +0 -1
  241. package/dist/tasks/e2e.test.d.ts +0 -2
  242. package/dist/tasks/e2e.test.d.ts.map +0 -1
  243. package/dist/tasks/e2e.test.js +0 -108
  244. package/dist/tasks/e2e.test.js.map +0 -1
  245. package/dist/tasks/update.test.d.ts +0 -2
  246. package/dist/tasks/update.test.d.ts.map +0 -1
  247. package/dist/tasks/update.test.js +0 -79
  248. package/dist/tasks/update.test.js.map +0 -1
  249. package/dist/tasks/warmup.test.d.ts +0 -2
  250. package/dist/tasks/warmup.test.d.ts.map +0 -1
  251. package/dist/tasks/warmup.test.js +0 -40
  252. package/dist/tasks/warmup.test.js.map +0 -1
  253. package/dist/templates/apps/nextjs/tests/index.test.ts +0 -7
  254. package/dist/templates/apps/nextjs/tests/test-utils.example.test.ts +0 -169
  255. package/dist/templates/apps/nextjs/tsconfig.test.json +0 -38
  256. package/dist/test-utils/console.test.d.ts +0 -2
  257. package/dist/test-utils/console.test.d.ts.map +0 -1
  258. package/dist/test-utils/console.test.js +0 -70
  259. package/dist/test-utils/console.test.js.map +0 -1
  260. package/dist/test-utils/kysely-mocks.test.d.ts +0 -2
  261. package/dist/test-utils/kysely-mocks.test.d.ts.map +0 -1
  262. package/dist/test-utils/kysely-mocks.test.js +0 -126
  263. package/dist/test-utils/kysely-mocks.test.js.map +0 -1
  264. package/dist/test-utils/wallet-mocks.test.d.ts +0 -2
  265. package/dist/test-utils/wallet-mocks.test.d.ts.map +0 -1
  266. package/dist/test-utils/wallet-mocks.test.js +0 -55
  267. package/dist/test-utils/wallet-mocks.test.js.map +0 -1
  268. package/dist/test-utils/wallet-setup.test.d.ts +0 -2
  269. package/dist/test-utils/wallet-setup.test.d.ts.map +0 -1
  270. package/dist/test-utils/wallet-setup.test.js +0 -18
  271. package/dist/test-utils/wallet-setup.test.js.map +0 -1
  272. package/dist/util/engines.test.d.ts +0 -2
  273. package/dist/util/engines.test.d.ts.map +0 -1
  274. package/dist/util/engines.test.js +0 -79
  275. package/dist/util/engines.test.js.map +0 -1
  276. package/dist/wallet/biometric.test.d.ts +0 -2
  277. package/dist/wallet/biometric.test.d.ts.map +0 -1
  278. package/dist/wallet/biometric.test.js +0 -44
  279. package/dist/wallet/biometric.test.js.map +0 -1
  280. package/dist/wallet/crypto.test.d.ts +0 -2
  281. package/dist/wallet/crypto.test.d.ts.map +0 -1
  282. package/dist/wallet/crypto.test.js +0 -34
  283. package/dist/wallet/crypto.test.js.map +0 -1
  284. package/dist/wallet/destinations.test.d.ts +0 -2
  285. package/dist/wallet/destinations.test.d.ts.map +0 -1
  286. package/dist/wallet/destinations.test.js +0 -34
  287. package/dist/wallet/destinations.test.js.map +0 -1
  288. package/dist/wallet/external-provider.test.d.ts +0 -2
  289. package/dist/wallet/external-provider.test.d.ts.map +0 -1
  290. package/dist/wallet/external-provider.test.js +0 -44
  291. package/dist/wallet/external-provider.test.js.map +0 -1
  292. package/dist/wallet/indexeddb.test.d.ts +0 -2
  293. package/dist/wallet/indexeddb.test.d.ts.map +0 -1
  294. package/dist/wallet/indexeddb.test.js +0 -28
  295. package/dist/wallet/indexeddb.test.js.map +0 -1
  296. package/dist/wallet/kdf.test.d.ts +0 -2
  297. package/dist/wallet/kdf.test.d.ts.map +0 -1
  298. package/dist/wallet/kdf.test.js +0 -54
  299. package/dist/wallet/kdf.test.js.map +0 -1
  300. package/dist/wallet/next/components.test.d.ts +0 -2
  301. package/dist/wallet/next/components.test.d.ts.map +0 -1
  302. package/dist/wallet/next/components.test.js +0 -122
  303. package/dist/wallet/next/components.test.js.map +0 -1
  304. package/dist/wallet/next/useInAppWallet.test.d.ts +0 -2
  305. package/dist/wallet/next/useInAppWallet.test.d.ts.map +0 -1
  306. package/dist/wallet/next/useInAppWallet.test.js +0 -261
  307. package/dist/wallet/next/useInAppWallet.test.js.map +0 -1
  308. package/dist/wallet/provider.test.d.ts +0 -2
  309. package/dist/wallet/provider.test.d.ts.map +0 -1
  310. package/dist/wallet/provider.test.js +0 -170
  311. package/dist/wallet/provider.test.js.map +0 -1
  312. package/dist/wallet/signer.test.d.ts +0 -2
  313. package/dist/wallet/signer.test.d.ts.map +0 -1
  314. package/dist/wallet/signer.test.js +0 -62
  315. package/dist/wallet/signer.test.js.map +0 -1
  316. package/dist/wallet/storage.test.d.ts +0 -2
  317. package/dist/wallet/storage.test.d.ts.map +0 -1
  318. package/dist/wallet/storage.test.js +0 -103
  319. package/dist/wallet/storage.test.js.map +0 -1
  320. package/dist/wallet/wallet.test.d.ts +0 -2
  321. package/dist/wallet/wallet.test.d.ts.map +0 -1
  322. package/dist/wallet/wallet.test.js +0 -150
  323. package/dist/wallet/wallet.test.js.map +0 -1
@@ -1,15 +1,58 @@
1
1
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, isAbsolute, join } from 'node:path';
3
3
  import { createHash } from 'node:crypto';
4
+ import { gunzipSync } from 'node:zlib';
4
5
  import { spawnSync } from 'node:child_process';
5
6
  import { info, success, warn, problem } from '../util/colors.js';
6
7
  import { parseFlags } from '../util/cli-parser.js';
7
- import { BASE_MODEL_TABLES, BASE_MODEL_VERSION } from '../base-model/version.js';
8
- import { parseStructureSql } from '../base-model/parse-structure.js';
9
- import { buildBaseline, buildInventory, renderGeneratedModule } from '../base-model/generate.js';
10
- import { MSIP_ADDITIONS } from '../base-model/references/msip.js';
11
- import { BASE_MODEL_MIGRATIONS, migrationMarker, planSetup, renderMigrationFile, checkMigrationPolicy, } from '../base-model/forward/index.js';
12
- import { BASELINE_INVENTORY, BASELINE_SQL } from '../base-model/baseline.generated.js';
8
+ import { resolveMsip } from '../util/msip.js';
9
+ /**
10
+ * El motor `msip` **no** es dependencia de `m`: se resuelve donde el consumidor lo tenga
11
+ * (instalado, o vendorizado en `packages/generated/msip`) con `import()` al ejecutar. Los
12
+ * símbolos se copian a estos enlaces para no tocar el resto del archivo.
13
+ */
14
+ let BASE_MODEL_VERSION;
15
+ let parseStructureSql;
16
+ let buildBaseline;
17
+ let buildInventory;
18
+ let renderGeneratedModule;
19
+ let BASE_MODEL_MIGRATIONS;
20
+ let migrationMarker;
21
+ let planSetup;
22
+ let renderMigrationFile;
23
+ let checkMigrationPolicy;
24
+ let BASELINE_INVENTORY;
25
+ let BASELINE_SQL;
26
+ let seedTables;
27
+ let seedIsLoaded;
28
+ let countStatement;
29
+ let truncateStatement;
30
+ /** Directorio del motor resuelto (de ahí sale `db/seed.sql.gz`). */
31
+ let msipDir = null;
32
+ /**
33
+ * Resuelve el motor `msip` (ver `src/util/msip.ts`: instalado o vendorizado) y enlaza sus
34
+ * símbolos, para no repetir el prefijo del módulo en cada uso.
35
+ */
36
+ export async function loadMsip(cwd = process.cwd()) {
37
+ if (msipDir)
38
+ return msipDir;
39
+ const resolved = await resolveMsip(cwd);
40
+ const loaded = resolved.module;
41
+ ({
42
+ BASE_MODEL_VERSION, parseStructureSql, buildBaseline, buildInventory,
43
+ renderGeneratedModule, BASE_MODEL_MIGRATIONS, migrationMarker, planSetup, renderMigrationFile,
44
+ checkMigrationPolicy, BASELINE_INVENTORY, BASELINE_SQL,
45
+ seedTables, seedIsLoaded, countStatement, truncateStatement,
46
+ } = loaded);
47
+ msipDir = resolved.dir;
48
+ return msipDir;
49
+ }
50
+ /**
51
+ * Sin adiciones propias: el modelo base es exactamente la referencia. Lo que un
52
+ * consumidor necesite agregar lo aporta él con `--additions <file.json>` (m no
53
+ * codifica el esquema de ningún consumidor).
54
+ */
55
+ const EMPTY_ADDITIONS = { tables: [], sequences: [], columns: [], constraints: [] };
13
56
  const FLAGS = {
14
57
  'from-structure': { type: 'string' },
15
58
  'from-db': { type: 'boolean' },
@@ -55,14 +98,13 @@ function readExtensions(options) {
55
98
  return { extensions: JSON.parse(readFileSync(options.extensions, 'utf-8')), source: options.extensions };
56
99
  }
57
100
  /**
58
- * Additions: what the base declares beyond the reference. With msip-2.2 as the
59
- * reference the built-in list is `references/msip.ts`; `--additions <file.json>`
60
- * replaces it. `references/learn-tg.ts` is only a subtraction list (it belongs to
61
- * a learn.tg reference) and is not used by default any more.
101
+ * Additions: what the model declares beyond the reference. `m` ships **no**
102
+ * built-in additions (`EMPTY_ADDITIONS`); a consumer aporta lo suyo en tiempo de
103
+ * ejecución con `--additions <file.json>`.
62
104
  */
63
105
  function readAdditions(options) {
64
106
  if (!options.additions)
65
- return { additions: MSIP_ADDITIONS, source: 'built-in msip additions (references/msip.ts)' };
107
+ return { additions: EMPTY_ADDITIONS, source: 'empty (no built-in additions; pass --additions)' };
66
108
  return { additions: JSON.parse(readFileSync(options.additions, 'utf-8')), source: options.additions };
67
109
  }
68
110
  function keptColumns(inventory, table) {
@@ -95,6 +137,7 @@ function diffInventories(base, other) {
95
137
  return diffs;
96
138
  }
97
139
  async function runDump() {
140
+ await loadMsip();
98
141
  const options = readOptions();
99
142
  const say = options.print ? (message) => process.stderr.write(message + '\n') : info;
100
143
  const sayWarn = options.print ? (message) => process.stderr.write(message + '\n') : warn;
@@ -111,16 +154,12 @@ async function runDump() {
111
154
  version: BASE_MODEL_VERSION,
112
155
  reference: { source: reference.source, sha256 },
113
156
  });
114
- const consideredTables = [...new Set([...BASE_MODEL_TABLES, ...additions.tables.map((entry) => entry.name)])];
115
- for (const table of consideredTables) {
116
- if (parsed.tables[table])
157
+ // El modelo son todas las tablas del esquema de referencia; una adición que no
158
+ // está en la referencia la aporta ella misma.
159
+ for (const entry of additions.tables) {
160
+ if (parsed.tables[entry.name])
117
161
  continue;
118
- if (additions.tables.some((entry) => entry.name === table)) {
119
- say(` ${table}: no está en la referencia, lo aportan las adiciones`);
120
- }
121
- else {
122
- sayWarn(`[WARN] "${table}" es del modelo base pero no está en la referencia ni en las adiciones`);
123
- }
162
+ say(` ${entry.name}: no está en la referencia, lo aportan las adiciones`);
124
163
  }
125
164
  for (const entry of extensions.columns) {
126
165
  const [table, column] = entry.split('.');
@@ -144,11 +183,12 @@ async function runDump() {
144
183
  process.stdout.write(baseline.sql);
145
184
  return;
146
185
  }
147
- const out = options.out ?? 'packages/m/src/base-model/baseline.generated.ts';
186
+ const out = options.out ?? 'packages/msip/src/baseline.generated.ts';
148
187
  writeFileSync(out, renderGeneratedModule(baseline), 'utf-8');
149
188
  success(`[OK] wrote ${out}`);
150
189
  }
151
190
  async function runVerify() {
191
+ await loadMsip();
152
192
  const options = readOptions();
153
193
  const reference = readReference(options);
154
194
  const { extensions } = readExtensions(options);
@@ -223,9 +263,10 @@ async function runVerify() {
223
263
  /**
224
264
  * Imprime el baseline **publicado** (el que un consumidor aplica a una base
225
265
  * nueva). Con `--out <archivo>` lo guarda. Lo usa la migración del consumidor;
226
- * `base-model:dump` es distinto: **regenera** el baseline desde una referencia.
266
+ * `eng:msip:dump` es distinto: **regenera** el baseline desde una referencia.
227
267
  */
228
268
  async function runBaseline() {
269
+ await loadMsip();
229
270
  const options = readOptions();
230
271
  const sql = BASELINE_SQL.endsWith('\n') ? BASELINE_SQL : `${BASELINE_SQL}\n`;
231
272
  if (options.out) {
@@ -237,11 +278,12 @@ async function runBaseline() {
237
278
  process.stdout.write(sql);
238
279
  }
239
280
  /**
240
- * `base-model:setup [--out db/migrations] [--check]` (D11). Escribe como migraciones
281
+ * `eng:msip:setup [--out db/migrations] [--check]` (D11). Escribe como migraciones
241
282
  * Kysely del consumidor los pasos que le faltan; `--check` no escribe y sale con
242
283
  * código distinto de cero si falta alguno (lo que corre la CI del consumidor).
243
284
  */
244
285
  async function runSetup() {
286
+ await loadMsip();
245
287
  const { options } = parseFlags(process.argv.slice(3), {
246
288
  out: { type: 'string' },
247
289
  check: { type: 'boolean' },
@@ -259,7 +301,7 @@ async function runSetup() {
259
301
  for (const migration of missing) {
260
302
  problem(`[FAIL] falta ${migrationMarker(migration)} — ${migration.description}`);
261
303
  }
262
- problem('[FAIL] corre `bin/m base-model:setup` para generar las migraciones del modelo base');
304
+ problem('[FAIL] corre `bin/m eng:msip:setup` para generar las migraciones del modelo base');
263
305
  process.exitCode = 1;
264
306
  return;
265
307
  }
@@ -307,4 +349,98 @@ export async function runBaseModelVerify() {
307
349
  process.exitCode = 1;
308
350
  }
309
351
  }
310
- //# sourceMappingURL=base-model.js.map
352
+ /** Seed empaquetado por el motor (`<motor>/db/seed.sql.gz`), con el motor ya resuelto. */
353
+ function defaultSeedFile() {
354
+ if (!msipDir)
355
+ throw new Error('loadMsip() debe correr antes de leer el seed');
356
+ return join(msipDir, 'db', 'seed.sql.gz');
357
+ }
358
+ function readSeed(file) {
359
+ const buffer = readFileSync(file);
360
+ return file.endsWith('.gz') ? gunzipSync(buffer).toString('utf-8') : buffer.toString('utf-8');
361
+ }
362
+ function runPsql(args, input) {
363
+ const res = spawnSync('psql', args, {
364
+ input,
365
+ encoding: 'utf-8',
366
+ env: { ...process.env, PAGER: '', PSQL_PAGER: '', PSQLRC: '/dev/null' },
367
+ timeout: 600_000,
368
+ });
369
+ return { status: res.status ?? 1, stdout: res.stdout ?? '', stderr: res.stderr ?? '' };
370
+ }
371
+ function readSeedCounts(tables) {
372
+ const res = runPsql(['-tA', '-F', '\t', '-v', 'ON_ERROR_STOP=1', '-c', countStatement(tables)]);
373
+ const counts = {};
374
+ for (const line of res.stdout.split('\n')) {
375
+ const [table, n] = line.split('\t');
376
+ if (table)
377
+ counts[table.trim()] = Number(n);
378
+ }
379
+ return counts;
380
+ }
381
+ /**
382
+ * `eng:msip:seed [--file <sql|sql.gz>] [--force] [--check]` — carga los datos
383
+ * iniciales del modelo. Es **idempotente**: si ya están cargados no hace nada
384
+ * (salvo `--force`, que vacía las tablas del seed y recarga). `--check` no escribe
385
+ * y sale ≠0 si falta.
386
+ */
387
+ async function runSeed() {
388
+ await loadMsip();
389
+ const { options } = parseFlags(process.argv.slice(3), {
390
+ file: { type: 'string' },
391
+ force: { type: 'boolean' },
392
+ check: { type: 'boolean' },
393
+ });
394
+ const file = options.file ?? defaultSeedFile();
395
+ if (!existsSync(file)) {
396
+ problem(`[FAIL] seed no encontrado: ${file}`);
397
+ process.exitCode = 1;
398
+ return;
399
+ }
400
+ const sql = readSeed(file);
401
+ const tables = seedTables(sql);
402
+ if (tables.length === 0) {
403
+ warn('[WARN] el seed no trae INSERTs');
404
+ return;
405
+ }
406
+ const loaded = seedIsLoaded(tables, readSeedCounts(tables));
407
+ if (options.check) {
408
+ if (loaded)
409
+ success(`[OK] seed aplicado (${tables.length} tablas)`);
410
+ else {
411
+ problem('[FAIL] seed no aplicado; corre `bin/m eng:msip:seed`');
412
+ process.exitCode = 1;
413
+ }
414
+ return;
415
+ }
416
+ if (loaded && !options.force) {
417
+ info(`[OK] seed ya aplicado (${tables.length} tablas); usa --force para recargar`);
418
+ return;
419
+ }
420
+ if (options.force) {
421
+ const emptied = runPsql(['-v', 'ON_ERROR_STOP=1', '-c', truncateStatement(tables)]);
422
+ if (emptied.status !== 0) {
423
+ problem(`[FAIL] no se pudieron vaciar las tablas: ${emptied.stderr.trim()}`);
424
+ process.exitCode = 1;
425
+ return;
426
+ }
427
+ }
428
+ info(`Aplicando seed ${file} (${tables.length} tablas)...`);
429
+ const load = runPsql(['-1', '-v', 'ON_ERROR_STOP=1', '-q'], sql);
430
+ if (load.status !== 0) {
431
+ problem(`[FAIL] el seed falló: ${load.stderr.trim()}`);
432
+ process.exitCode = 1;
433
+ return;
434
+ }
435
+ success(`[OK] seed aplicado (${tables.length} tablas)`);
436
+ }
437
+ export async function runBaseModelSeed() {
438
+ try {
439
+ await runSeed();
440
+ }
441
+ catch (error) {
442
+ problem(error instanceof Error ? error.message : String(error));
443
+ process.exitCode = 1;
444
+ }
445
+ }
446
+ //# sourceMappingURL=msip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msip.js","sourceRoot":"","sources":["../../src/tasks/msip.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- // warmup — calienta un sitio (Next.js compila rutas bajo demanda) (m/REQ/49 P5).
1
+ // warmup — calienta un sitio (Next.js compila rutas bajo demanda) (https://gitlab.com/pasosdeJesus/m/-/work_items/49 P5).
2
2
  //
3
3
  // La lista de rutas vive en el consumidor: `e2e/warmup-paths.json` o
4
4
  // `package.json:e2e.warmupPaths`. El sitio base sale de `SITE_URL`.
@@ -1 +1 @@
1
- {"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../src/tasks/warmup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warmup.js","sourceRoot":"","sources":["../../src/tasks/warmup.ts"],"names":[],"mappings":"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"}
@@ -76,14 +76,6 @@ cd ../nextjs && pnpm contract:test
76
76
  Uses `@ethereumjs/vm` fallback via `@pasosdejesus/edr`. Run from the
77
77
  nextjs app directory.
78
78
 
79
- ### Experimental (hardhat3)
80
-
81
- ```
82
- cd tests/test-project/apps/hardhat3 && pnpm test
83
- ```
84
-
85
- Zero-mocking runner using `node:test` + shim. No Hardhat installation needed.
86
-
87
79
  ## ABI Synchronization
88
80
 
89
81
  ABIs are synced to `../nextjs/abis/` automatically on `pnpm build`.
@@ -5,4 +5,7 @@ import { dirname, join } from 'path';
5
5
  const __filename = fileURLToPath(import.meta.url);
6
6
  const __dirname = dirname(__filename);
7
7
 
8
+ // Optional PdJ extension (mpdj): registers ai:*, req:* and eng:credentials:*.
9
+ try { await import('@pasosdejesus/mpdj'); } catch {}
10
+
8
11
  import(join(__dirname, '..', 'node_modules', '@pasosdejesus', 'm', 'dist', 'm.js'));
@@ -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"}