@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,169 +0,0 @@
1
- /**
2
- * Example test file demonstrating how to use @pasosdejesus/m test-utils
3
- *
4
- * This file shows practical examples of mocking different parts of a Next.js + Hardhat application.
5
- * Include it in your project as a reference when writing tests.
6
- *
7
- * "Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23)
8
- */
9
-
10
- import { describe, it, expect, beforeEach, beforeAll, afterAll, vi } from 'vitest';
11
- import { createFsMocks } from '@pasosdejesus/m/test-utils/fs-mocks';
12
- import { createMockKysely } from '@pasosdejesus/m/test-utils/kysely-mocks';
13
- import { createAuthMocks } from '@pasosdejesus/m/test-utils/rainbowkit-mocks';
14
- import { viemMocks } from '@pasosdejesus/m/test-utils/viem-mocks';
15
- // radix-mocks is a side-effect import that mocks radix-ui components globally
16
- import '@pasosdejesus/m/test-utils/radix-mocks';
17
-
18
- describe('Example: Using test-utils in your project', () => {
19
- // Example 1: Mocking filesystem operations
20
- describe('fs-mocks: Mocking filesystem', () => {
21
- let fsMocks;
22
-
23
- beforeAll(() => {
24
- fsMocks = createFsMocks();
25
- fsMocks.setupFsMocks();
26
- });
27
-
28
- afterAll(() => {
29
- vi.clearAllMocks();
30
- });
31
-
32
- it('should mock readFile operations', () => {
33
- // Setup mock to return specific content
34
- fsMocks.mockReadFile.mockResolvedValue('{"data": "test"}');
35
-
36
- // In your actual code, this would be called by the function you're testing
37
- // Example: await readFile('/config.json', 'utf-8')
38
- // The mock will return the content we set above
39
- expect(fsMocks.mockReadFile).toBeDefined();
40
- });
41
-
42
- it('should mock readFile with custom content', () => {
43
- const customFsMocks = createFsMocks({
44
- readFileContent: '# Custom content',
45
- });
46
- // The mock is already configured with the custom content
47
- expect(customFsMocks.mockReadFile).toBeDefined();
48
- });
49
- });
50
-
51
- // Example 2: Mocking database operations with Kysely
52
- describe('kysely-mocks: Mocking database queries', () => {
53
- let dbMocks;
54
-
55
- beforeAll(() => {
56
- dbMocks = createMockKysely();
57
- // setupMocks() is deprecated (no-op): declare vi.mock('kysely'|'pg')
58
- // at module scope in your vitest.setup.ts (see README §8).
59
- dbMocks.setupCommonResponses();
60
- });
61
-
62
- it('should mock SELECT queries', () => {
63
- // Configure mock to return specific data
64
- dbMocks.mockExecuteTakeFirst.mockResolvedValue({ id: 1, name: 'John' });
65
-
66
- // In your actual code, when a Kysely query executes, it will use the mock
67
- // Example: await db.selectFrom('users').selectAll().executeTakeFirst()
68
- // The mock will return { id: 1, name: 'John' }
69
- expect(dbMocks.mockExecuteTakeFirst).toBeDefined();
70
- });
71
-
72
- it('should mock INSERT queries', () => {
73
- dbMocks.mockExecute.mockResolvedValue([{ id: 3, name: 'Bob' }]);
74
- expect(dbMocks.mockExecute).toBeDefined();
75
- });
76
- });
77
-
78
- // Example 3: Mocking authentication and wallet state
79
- describe('rainbowkit-mocks: Mocking authentication', () => {
80
- let authMocks;
81
-
82
- beforeAll(() => {
83
- authMocks = createAuthMocks({
84
- address: '0x1234567890123456789012345678901234567890',
85
- isConnected: true,
86
- chainId: 1,
87
- });
88
- authMocks.setupMocks();
89
- authMocks.setupDefaultImplementations();
90
- });
91
-
92
- it('should mock useAccount hook', () => {
93
- // The mock is already configured with the address above
94
- // In your React component test, useAccount() will return the mocked data
95
- expect(authMocks.mocks.mockUseAccount).toBeDefined();
96
- });
97
-
98
- it('should mock useSession hook', () => {
99
- expect(authMocks.mocks.mockUseSession).toBeDefined();
100
- });
101
-
102
- it('should update configuration dynamically', () => {
103
- authMocks.updateConfig({ isConnected: false });
104
- // Now useAccount() will return isConnected: false
105
- expect(authMocks.updateConfig).toBeDefined();
106
- });
107
- });
108
-
109
- // Example 4: Mocking blockchain interactions
110
- describe('viem-mocks: Mocking blockchain', () => {
111
- beforeAll(() => {
112
- // viemMocks are already defined, no setup needed
113
- });
114
-
115
- it('should mock public client', () => {
116
- // Configure the mock
117
- viemMocks.createPublicClient.mockReturnValue({
118
- getBlockNumber: vi.fn().mockResolvedValue(123456n),
119
- });
120
-
121
- const client = viemMocks.createPublicClient();
122
- expect(client.getBlockNumber).toBeDefined();
123
- expect(viemMocks.createPublicClient).toHaveBeenCalled();
124
- });
125
-
126
- it('should mock wallet client', () => {
127
- viemMocks.createWalletClient.mockReturnValue({
128
- sendTransaction: vi.fn().mockResolvedValue('0xabc...'),
129
- });
130
-
131
- const client = viemMocks.createWalletClient();
132
- expect(client.sendTransaction).toBeDefined();
133
- });
134
- });
135
-
136
- // Example 5: Cleanup and teardown
137
- describe('Setup and teardown patterns', () => {
138
- let fsMocks;
139
-
140
- beforeEach(() => {
141
- fsMocks = createFsMocks();
142
- fsMocks.setupFsMocks();
143
- });
144
-
145
- afterEach(() => {
146
- vi.clearAllMocks();
147
- });
148
-
149
- it('should demonstrate proper mock cleanup', () => {
150
- fsMocks.mockReadFile.mockResolvedValue('test');
151
- // Test that mock can be called
152
- expect(fsMocks.mockReadFile).toBeDefined();
153
- });
154
- });
155
- });
156
-
157
- // Helper: TypeScript types for the mocks (for reference)
158
- /**
159
- * Type imports for reference (not executed):
160
- *
161
- * import type {
162
- * FsMocks,
163
- * MockKysely,
164
- * AuthMocks,
165
- * ViemMocks
166
- * } from '@pasosdejesus/m/test-utils';
167
- *
168
- * These types are automatically available when you import the mocks.
169
- */
@@ -1,38 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2020",
4
- "lib": ["dom", "dom.iterable", "esnext"],
5
- "allowJs": true,
6
- "skipLibCheck": true,
7
- "strict": true,
8
- "noEmit": true,
9
- "esModuleInterop": true,
10
- "module": "esnext",
11
- "moduleResolution": "bundler",
12
- "resolveJsonModule": true,
13
- "isolatedModules": true,
14
- "jsx": "react-jsx",
15
- "incremental": true,
16
- "plugins": [
17
- {
18
- "name": "next"
19
- }
20
- ],
21
- "paths": {
22
- "@/*": ["./*"]
23
- },
24
- "types": ["@testing-library/jest-dom", "vitest", "vitest/globals"]
25
- },
26
- "include": [
27
- "next-env.d.ts",
28
- "**/*.ts",
29
- "**/*.tsx",
30
- "types/**/*.d.ts",
31
- "**/*.test.ts",
32
- "**/*.test.tsx",
33
- "vitest.setup.ts"
34
- ],
35
- "exclude": [
36
- "node_modules"
37
- ]
38
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=console.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"console.test.d.ts","sourceRoot":"","sources":["../../src/test-utils/console.test.ts"],"names":[],"mappings":""}
@@ -1,70 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from 'vitest';
2
- import { silenceConsole } from './console.js';
3
- // U2 (m/REQ/49): silencing expected console noise, graduated from learn.tg's
4
- // `NOISY_PATTERNS` wrapper.
5
- function fakeConsole() {
6
- const calls = {
7
- log: [], warn: [], error: [], info: [], debug: [],
8
- };
9
- const target = {
10
- log: (...args) => calls.log.push(args),
11
- warn: (...args) => calls.warn.push(args),
12
- error: (...args) => calls.error.push(args),
13
- info: (...args) => calls.info.push(args),
14
- debug: (...args) => calls.debug.push(args),
15
- };
16
- return { target, calls };
17
- }
18
- afterEach(() => vi.restoreAllMocks());
19
- describe('silenceConsole (U2)', () => {
20
- it('suppresses a suppressed log and lets the rest through', () => {
21
- const { target, calls } = fakeConsole();
22
- const handle = silenceConsole(['[retry]'], { console: target });
23
- target.log('[retry] intento 1 falló');
24
- target.log('resultado útil');
25
- expect(calls.log).toEqual([['resultado útil']]);
26
- expect(handle.suppressed).toEqual([['[retry] intento 1 falló']]);
27
- handle.restore();
28
- });
29
- it('matches when any argument contains the pattern', () => {
30
- const { target, calls } = fakeConsole();
31
- const handle = silenceConsole(['AbortError'], { console: target });
32
- target.warn('navegación cancelada', new Error('AbortError: aborted'));
33
- expect(calls.warn).toHaveLength(0);
34
- handle.restore();
35
- });
36
- it('wraps log, warn and error by default', () => {
37
- const { target, calls } = fakeConsole();
38
- const handle = silenceConsole(['ruido'], { console: target });
39
- target.log('ruido A');
40
- target.warn('ruido B');
41
- target.error('ruido C');
42
- target.info('ruido D'); // not wrapped by default
43
- expect(calls.log).toHaveLength(0);
44
- expect(calls.warn).toHaveLength(0);
45
- expect(calls.error).toHaveLength(0);
46
- expect(calls.info).toHaveLength(1);
47
- handle.restore();
48
- });
49
- it('restores the original methods', () => {
50
- const { target, calls } = fakeConsole();
51
- const handle = silenceConsole(['ruido'], { console: target });
52
- handle.restore();
53
- target.log('ruido A');
54
- expect(calls.log).toHaveLength(1);
55
- });
56
- // Defecto reportado por learn.tg: un namespace de módulo (objeto sin
57
- // Symbol.toPrimitive) revienta con `String()`; no debe tumbar el log.
58
- it('no revienta con objetos que no se pueden convertir a primitivo', () => {
59
- const { target, calls } = fakeConsole();
60
- const handle = silenceConsole(['[retry]'], { console: target });
61
- const notPrimitive = Object.create(null);
62
- expect(() => target.log('Module imported:', notPrimitive)).not.toThrow();
63
- expect(() => target.warn(notPrimitive)).not.toThrow();
64
- // No coincide con el patrón: pasa tal cual.
65
- expect(calls.log).toHaveLength(1);
66
- expect(handle.suppressed).toHaveLength(0);
67
- handle.restore();
68
- });
69
- });
70
- //# sourceMappingURL=console.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"console.test.js","sourceRoot":"","sources":["../../src/test-utils/console.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=kysely-mocks.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kysely-mocks.test.d.ts","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.test.ts"],"names":[],"mappings":""}
@@ -1,126 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { createMockSql, createExpressionBuilder, MockKysely, apiDbMocks, } from './kysely-mocks.js';
3
- // U1 (m/REQ/49): the shared builder must cover what real API routes use, so
4
- // consumers can delete their hand-written `vi.mock('kysely', …)`.
5
- describe('createMockSql (U1)', () => {
6
- it('is a template tag that captures the text and parameters', () => {
7
- const sql = createMockSql();
8
- const fragment = sql `count(*) = ${1} and x`;
9
- expect(fragment.__sql).toBe('count(*) = ? and x');
10
- expect(fragment.parameters).toEqual([1]);
11
- });
12
- it('exposes raw/ref/val/join/literal used by real code', () => {
13
- const sql = createMockSql();
14
- expect(sql.raw('platform_score').__sql).toBe('platform_score');
15
- expect(sql.ref('usuario.id').__sql).toBe('usuario.id');
16
- expect(sql.val(42)).toBe(42);
17
- expect(sql.literal('foo').__sql).toBe('foo');
18
- expect(sql.join([sql.raw('a'), sql.raw('b')]).__sql).toBe('a b');
19
- });
20
- });
21
- describe('createExpressionBuilder (U1)', () => {
22
- it('invokes the subquery callback of eb(col, in, cb)', () => {
23
- const eb = createExpressionBuilder();
24
- const seen = [];
25
- eb('id', 'in', (sub) => {
26
- seen.push(sub);
27
- return {};
28
- });
29
- expect(seen).toHaveLength(1);
30
- });
31
- // Regresión reportada por sivel3: el callback de `eb(col, in, cb)` debe traer
32
- // un builder con `selectFrom` (subconsulta), como el `eb` real de Kysely.
33
- it('el callback de eb(col, in, cb) arma subconsultas con selectFrom', () => {
34
- const eb = createExpressionBuilder();
35
- let inner;
36
- eb('c.id', 'in', (sub) => {
37
- inner = sub.selectFrom('sivel2_gen_acto as a').select('a.caso_id').where('a.x', '=', 1);
38
- });
39
- expect(inner).toBeTruthy();
40
- expect(typeof inner.selectFrom).toBe('function');
41
- });
42
- it('eb.exists(cb) también recibe el builder de subconsulta', () => {
43
- const eb = createExpressionBuilder();
44
- const expr = eb.exists((sub) => sub.selectFrom('t').select('id'));
45
- expect(expr.__expr).toBe('exists');
46
- });
47
- it('builds and/or/not/exists combinators', () => {
48
- const eb = createExpressionBuilder();
49
- expect(eb.or([{ a: 1 }]).__expr).toBe('or');
50
- expect(eb.and([{ a: 1 }]).__expr).toBe('and');
51
- expect(eb.not({ a: 1 }).__expr).toBe('not');
52
- expect(eb.exists((b) => b).__expr).toBe('exists');
53
- });
54
- });
55
- describe('MockKysely builder (U1)', () => {
56
- it('exercises eb.or inside where, and a subquery as a table', () => {
57
- const db = new MockKysely();
58
- const eb = createExpressionBuilder();
59
- const base = db.selectFrom('usuario').select('id').as('lb');
60
- const exec = db
61
- .selectFrom(base)
62
- .selectAll()
63
- .where((builder) => builder.or([builder('lb.id', '=', 1), builder('lb.id', '=', 2)]))
64
- .where(eb.or([eb('a', '=', 1), eb('b', '=', 2)]));
65
- expect(exec).toBe(db);
66
- });
67
- it('accepts where(sql`…`) and having', () => {
68
- const db = new MockKysely();
69
- const sql = createMockSql();
70
- const q = db
71
- .selectFrom('score')
72
- .select('usuario_id')
73
- .groupBy('usuario_id')
74
- .where(sql `score > 0`)
75
- .having(sql `count(*) > ${2}`);
76
- expect(q).toBe(db);
77
- });
78
- it('supports fn aggregations by default and via select callbacks', () => {
79
- const db = new MockKysely();
80
- expect(db.fn.countAll().as).toBeTypeOf('function');
81
- expect(db.fn.sum().as).toBeTypeOf('function');
82
- const q = db.selectFrom('t').select(({ fn }) => [fn.countAll().as('n'), fn.avg('x').as('a')]);
83
- expect(q).toBe(db);
84
- });
85
- it('runs transaction().execute(cb) with a fresh mock', async () => {
86
- const db = new MockKysely({ execute: () => Promise.resolve([{ ok: true }]) });
87
- const rows = await db.transaction().execute(async (trx) => trx.execute());
88
- expect(rows).toEqual([{ ok: true }]);
89
- });
90
- it('chains onConflict(...).doNothing()', () => {
91
- const db = new MockKysely();
92
- const oc = db.insertInto('t').values({}).onConflict((b) => b.column('id').doNothing());
93
- expect(oc).toBe(db);
94
- });
95
- it('exposes getExecutor().executeQuery through the injected sqlExecute', async () => {
96
- const sqlExecute = (query) => Promise.resolve({ rows: [query] });
97
- const db = new MockKysely({ sqlExecute });
98
- const res = await db.getExecutor().executeQuery({ tag: 'x' });
99
- expect(res.rows).toEqual([{ tag: 'x' }]);
100
- });
101
- });
102
- describe('apiDbMocks (U1)', () => {
103
- it('exports a wired eb and sql alongside the classic mocks', () => {
104
- expect(apiDbMocks.mockEb).toBeTypeOf('function');
105
- expect(apiDbMocks.mockSql.raw).toBeTypeOf('function');
106
- const db = new apiDbMocks.MockKysely();
107
- expect(db.selectFrom('x')).toBe(db);
108
- });
109
- // Regresión reportada por learn.tg: el tag `sql` volvió a delegar en
110
- // `mockSqlExecute`, el patrón histórico para controlar el SQL.
111
- it('el tag sql delega en mockSqlExecute', async () => {
112
- apiDbMocks.mockSqlExecute.mockReset();
113
- apiDbMocks.mockSqlExecute.mockResolvedValue({ rows: [{ total: '3' }] });
114
- const fragment = apiDbMocks.mockSql `count(*)`;
115
- const result = await fragment.execute({ tag: 'q' });
116
- expect(apiDbMocks.mockSqlExecute).toHaveBeenCalledWith({ tag: 'q' });
117
- expect(result.rows).toEqual([{ total: '3' }]);
118
- });
119
- it('resetMocks re-cablea el tag sql a mockSqlExecute', async () => {
120
- apiDbMocks.resetMocks();
121
- apiDbMocks.mockSqlExecute.mockResolvedValue({ rows: [{ ok: 1 }] });
122
- const result = await apiDbMocks.mockSql `x`.execute({});
123
- expect(result.rows).toEqual([{ ok: 1 }]);
124
- });
125
- });
126
- //# sourceMappingURL=kysely-mocks.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kysely-mocks.test.js","sourceRoot":"","sources":["../../src/test-utils/kysely-mocks.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=wallet-mocks.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet-mocks.test.d.ts","sourceRoot":"","sources":["../../src/test-utils/wallet-mocks.test.ts"],"names":[],"mappings":""}
@@ -1,55 +0,0 @@
1
- import { afterEach, describe, expect, it } from 'vitest';
2
- import { assertUserVerification, createPrfCredential, detectPlatformSupport, evaluatePrf, hasRecentUserVerification, } from '../wallet/web-authn.js';
3
- import { clearDestinations, isKnownDestination, rememberDestination, setDestinationsPrefix, } from '../wallet/destinations.js';
4
- import { installLocalStorage, mockWebAuthn } from './wallet-mocks.js';
5
- afterEach(() => {
6
- clearDestinations();
7
- });
8
- describe('installLocalStorage', () => {
9
- it('provides a working in-memory localStorage on globalThis', () => {
10
- const storage = installLocalStorage();
11
- storage.setItem('a', '1');
12
- expect(globalThis.localStorage.getItem('a')).toBe('1');
13
- expect(storage.length).toBe(1);
14
- expect(storage.key(0)).toBe('a');
15
- storage.removeItem('a');
16
- expect(storage.getItem('a')).toBeNull();
17
- });
18
- });
19
- describe('destinations with mocked localStorage', () => {
20
- it('remembers and reports known destinations', () => {
21
- installLocalStorage();
22
- setDestinationsPrefix('test.destinations.');
23
- const wallet = '0xABC';
24
- const dest = '0xDeF';
25
- expect(isKnownDestination(wallet, dest)).toBe(false);
26
- rememberDestination(wallet, dest);
27
- expect(isKnownDestination(wallet, dest)).toBe(true);
28
- expect(globalThis.localStorage.getItem('test.destinations.0xabc')).toContain('0xdef');
29
- });
30
- });
31
- describe('mockWebAuthn', () => {
32
- it('reports platform support and creates a PRF credential', async () => {
33
- const mock = mockWebAuthn();
34
- const support = await detectPlatformSupport();
35
- expect(support).toEqual({ webauthn: true, userVerifying: true, prf: true });
36
- const credential = await createPrfCredential('alice');
37
- expect(credential.prfEnabled).toBe(true);
38
- expect(credential.credentialId).toBe(mock.credentialId);
39
- });
40
- it('evaluates the PRF and marks the user verified', async () => {
41
- const secret = new Uint8Array(32).fill(9);
42
- mockWebAuthn({ prfSecret: secret });
43
- const result = await evaluatePrf('AQIDBA==', new Uint8Array(32));
44
- expect(Array.from(result ?? [])).toEqual(Array.from(secret));
45
- await assertUserVerification('AQIDBA==');
46
- expect(hasRecentUserVerification()).toBe(true);
47
- });
48
- it('surfaces a cancellation as NotAllowedError', async () => {
49
- mockWebAuthn({ cancelNext: true });
50
- await expect(evaluatePrf('AQIDBA==', new Uint8Array(32))).rejects.toMatchObject({
51
- name: 'NotAllowedError',
52
- });
53
- });
54
- });
55
- //# sourceMappingURL=wallet-mocks.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet-mocks.test.js","sourceRoot":"","sources":["../../src/test-utils/wallet-mocks.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import './wallet-setup.js';
2
- //# sourceMappingURL=wallet-setup.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet-setup.test.d.ts","sourceRoot":"","sources":["../../src/test-utils/wallet-setup.test.ts"],"names":[],"mappings":"AAGA,OAAO,mBAAmB,CAAA"}
@@ -1,18 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, expect, it } from 'vitest';
3
- // Side effect: installs localStorage, fake-indexeddb and a WebAuthn mock.
4
- import './wallet-setup.js';
5
- import { createPrfCredential, detectPlatformSupport } from '../wallet/web-authn.js';
6
- describe('wallet-setup preset (jsdom)', () => {
7
- it('provides a DOM, a localStorage and a WebAuthn mock', async () => {
8
- expect(typeof document).toBe('object');
9
- expect(document.createElement('div')).toBeTruthy();
10
- globalThis.localStorage.setItem('k', 'v');
11
- expect(globalThis.localStorage.getItem('k')).toBe('v');
12
- const support = await detectPlatformSupport();
13
- expect(support).toEqual({ webauthn: true, userVerifying: true, prf: true });
14
- const credential = await createPrfCredential('alice');
15
- expect(credential.prfEnabled).toBe(true);
16
- });
17
- });
18
- //# sourceMappingURL=wallet-setup.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallet-setup.test.js","sourceRoot":"","sources":["../../src/test-utils/wallet-setup.test.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,0EAA0E;AAC1E,OAAO,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAEnF,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,CAAC,OAAO,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;QAElD,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACzC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEtD,MAAM,OAAO,GAAG,MAAM,qBAAqB,EAAE,CAAA;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;QAE3E,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACrD,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=engines.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engines.test.d.ts","sourceRoot":"","sources":["../../src/util/engines.test.ts"],"names":[],"mappings":""}
@@ -1,79 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { mkdtemp, mkdir, writeFile, rm } from 'node:fs/promises';
3
- import { tmpdir } from 'node:os';
4
- import { join } from 'node:path';
5
- import { discoverEngines, discoverEnginesUpward, findPackagesDir, isEnginePackage } from './engines.js';
6
- async function tmpRoot() {
7
- return mkdtemp(join(tmpdir(), 'm-engines-'));
8
- }
9
- describe('discoverEngines', () => {
10
- it('returns manifests from packages/*/engine.json', async () => {
11
- const root = await tmpRoot();
12
- try {
13
- await mkdir(join(root, 'packages', 'foo'), { recursive: true });
14
- await writeFile(join(root, 'packages', 'foo', 'engine.json'), JSON.stringify({ name: 'foo', version: '1.0.0', stage: 'local' }));
15
- const engines = await discoverEngines(root);
16
- expect(engines).toHaveLength(1);
17
- expect(engines[0].name).toBe('foo');
18
- }
19
- finally {
20
- await rm(root, { recursive: true, force: true });
21
- }
22
- });
23
- it('returns [] when there is no packages dir', async () => {
24
- const root = await tmpRoot();
25
- try {
26
- expect(await discoverEngines(root)).toEqual([]);
27
- }
28
- finally {
29
- await rm(root, { recursive: true, force: true });
30
- }
31
- });
32
- });
33
- describe('findPackagesDir', () => {
34
- it('finds packages dir upward from a nested cwd', async () => {
35
- const root = await tmpRoot();
36
- try {
37
- await mkdir(join(root, 'packages'), { recursive: true });
38
- const nested = join(root, 'apps', 'nextjs');
39
- await mkdir(nested, { recursive: true });
40
- expect(await findPackagesDir(nested)).toBe(join(root, 'packages'));
41
- }
42
- finally {
43
- await rm(root, { recursive: true, force: true });
44
- }
45
- });
46
- it('returns null when not found', async () => {
47
- const root = await tmpRoot();
48
- try {
49
- expect(await findPackagesDir(root)).toBeNull();
50
- }
51
- finally {
52
- await rm(root, { recursive: true, force: true });
53
- }
54
- });
55
- });
56
- describe('discoverEnginesUpward', () => {
57
- it('discovers engines from a nested cwd', async () => {
58
- const root = await tmpRoot();
59
- try {
60
- await mkdir(join(root, 'packages', 'foo'), { recursive: true });
61
- await writeFile(join(root, 'packages', 'foo', 'engine.json'), JSON.stringify({ name: 'foo', version: '1.0.0', stage: 'local' }));
62
- const nested = join(root, 'apps', 'nextjs');
63
- await mkdir(nested, { recursive: true });
64
- const engines = await discoverEnginesUpward(nested);
65
- expect(engines.map(e => e.name)).toEqual(['foo']);
66
- }
67
- finally {
68
- await rm(root, { recursive: true, force: true });
69
- }
70
- });
71
- });
72
- describe('isEnginePackage', () => {
73
- it('detects @pasosdejesus/m-* packages by convention', () => {
74
- expect(isEnginePackage('@pasosdejesus/mpdj', '/nonexistent')).toBe(true);
75
- expect(isEnginePackage('@pasosdejesus/m', '/nonexistent')).toBe(false);
76
- expect(isEnginePackage('lodash', '/nonexistent')).toBe(false);
77
- });
78
- });
79
- //# sourceMappingURL=engines.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"engines.test.js","sourceRoot":"","sources":["../../src/util/engines.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=biometric.test.d.ts.map