powerlines 0.24.8 → 0.25.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 (460) hide show
  1. package/dist/{api-C32Buv5_.d.ts → api-BTK8aYwE.d.cts} +1 -1
  2. package/dist/{api-wzd5AREv.d.cts → api-eyrYBmQh.d.ts} +1 -1
  3. package/dist/api.cjs +8 -6
  4. package/dist/api.d.cts +20 -22
  5. package/dist/api.d.ts +20 -22
  6. package/dist/api.js +7 -5
  7. package/dist/astro.cjs +12 -10
  8. package/dist/astro.d.cts +19 -21
  9. package/dist/astro.d.ts +19 -21
  10. package/dist/astro.js +10 -8
  11. package/dist/{chunk-JKBJF3UI.js → chunk-2MYPFASJ.js} +2 -0
  12. package/dist/chunk-2VIXD2XB.js +3 -0
  13. package/dist/{chunk-OB7MYWHE.js → chunk-44PO64SX.js} +4 -2
  14. package/dist/chunk-4JCNAKOE.cjs +4 -0
  15. package/dist/{chunk-QH4TS5V4.cjs → chunk-6MFZ436T.cjs} +978 -1032
  16. package/dist/chunk-6ZGIV2SU.cjs +4 -0
  17. package/dist/chunk-7BZQBW77.cjs +4 -0
  18. package/dist/{chunk-JQCWV4DT.js → chunk-7LKYXMB3.js} +2 -0
  19. package/dist/{chunk-SHUYVCID.js → chunk-7QVYU63E.js} +2 -0
  20. package/dist/chunk-AFJCY3R6.js +3 -0
  21. package/dist/chunk-AXIRZAL7.js +3 -0
  22. package/dist/chunk-BTNHSS2P.cjs +13 -0
  23. package/dist/{chunk-FQXHIKCM.cjs → chunk-C2U4ATHO.cjs} +9 -7
  24. package/dist/chunk-DFLNRC3B.cjs +4 -0
  25. package/dist/chunk-DS7OM4NX.cjs +4 -0
  26. package/dist/{chunk-W5X3ZEZ5.js → chunk-EBXVKPUX.js} +2 -0
  27. package/dist/{chunk-X74SYWFL.cjs → chunk-G2EHTXK6.cjs} +9 -7
  28. package/dist/chunk-GIE6OE3X.js +3 -0
  29. package/dist/chunk-HJW7OH6E.js +3 -0
  30. package/dist/{chunk-MOXO6WJO.js → chunk-HSIMIWOH.js} +3 -1
  31. package/dist/{chunk-5IBA5HC2.cjs → chunk-HTJKPEWU.cjs} +6 -4
  32. package/dist/chunk-IHUNA3MO.cjs +4 -0
  33. package/dist/chunk-JU2HWIWS.js +12 -0
  34. package/dist/{chunk-BCHFSOQ4.js → chunk-LQXE5JHF.js} +906 -957
  35. package/dist/chunk-MBBNZS6K.cjs +16 -0
  36. package/dist/{chunk-3TNZWTLG.js → chunk-NNADGQRN.js} +5 -3
  37. package/dist/chunk-OYASPHNL.js +3 -0
  38. package/dist/chunk-PCCFAZML.js +3 -0
  39. package/dist/{chunk-USNT2KNT.cjs → chunk-PK6SKIKE.cjs} +2 -0
  40. package/dist/{chunk-ETKZMGLN.cjs → chunk-PSTCR335.cjs} +2 -0
  41. package/dist/chunk-Q7EJVZVI.cjs +4 -0
  42. package/dist/{chunk-CJSGAITR.js → chunk-S7MXT5A2.js} +3 -1
  43. package/dist/{chunk-7RWEBVQC.cjs → chunk-SDVEUTY2.cjs} +13 -11
  44. package/dist/{chunk-OLCL34MI.js → chunk-SYDUPBME.js} +6 -4
  45. package/dist/chunk-TLHFXGYV.js +3 -0
  46. package/dist/chunk-TP5MEMLG.cjs +12 -0
  47. package/dist/chunk-VNRXLY2T.js +3 -0
  48. package/dist/chunk-VQCQRLGM.cjs +4 -0
  49. package/dist/chunk-XZO6ZJQP.cjs +4 -0
  50. package/dist/{chunk-XP7OML7S.cjs → chunk-YUX7LOBU.cjs} +2 -0
  51. package/dist/chunk-YZZUOOPS.cjs +4 -0
  52. package/dist/chunk-Z5H7LD6W.js +3 -0
  53. package/dist/{chunk-VBR53KGY.js → chunk-Z5UEYORO.js} +5 -3
  54. package/dist/{chunk-PAMSESZV.cjs → chunk-Z6ARQDHR.cjs} +2 -0
  55. package/dist/config.cjs +5 -3
  56. package/dist/config.d.cts +19 -21
  57. package/dist/config.d.ts +19 -21
  58. package/dist/config.js +4 -2
  59. package/dist/{resolved-CSqGKlA5.d.cts → context-TizkCfOv.d.cts} +848 -849
  60. package/dist/{resolved-BABoCnXm.d.ts → context-jhcT1Vi1.d.ts} +848 -849
  61. package/dist/esbuild.cjs +13 -11
  62. package/dist/esbuild.d.cts +19 -21
  63. package/dist/esbuild.d.ts +19 -21
  64. package/dist/esbuild.js +10 -8
  65. package/dist/farm.cjs +9 -7
  66. package/dist/farm.d.cts +19 -21
  67. package/dist/farm.d.ts +19 -21
  68. package/dist/farm.js +8 -6
  69. package/dist/index.cjs +39 -41
  70. package/dist/index.d.cts +30 -55
  71. package/dist/index.d.ts +30 -55
  72. package/dist/index.js +20 -18
  73. package/dist/lib/{api-CDUN9en8.d.ts → api-CCOhyMZo.d.cts} +1 -1
  74. package/dist/lib/{api-BRMITKt-.d.cts → api-CpJJXdtL.d.ts} +1 -1
  75. package/dist/lib/build/esbuild.cjs +5 -5
  76. package/dist/lib/build/esbuild.d.cts +2 -2
  77. package/dist/lib/build/esbuild.d.ts +2 -2
  78. package/dist/lib/build/esbuild.js +2 -2
  79. package/dist/lib/build/index.cjs +25 -25
  80. package/dist/lib/build/index.d.cts +4 -4
  81. package/dist/lib/build/index.d.ts +4 -4
  82. package/dist/lib/build/index.js +9 -9
  83. package/dist/lib/build/rolldown.cjs +3 -3
  84. package/dist/lib/build/rolldown.d.cts +2 -2
  85. package/dist/lib/build/rolldown.d.ts +2 -2
  86. package/dist/lib/build/rolldown.js +2 -2
  87. package/dist/lib/build/rollup.cjs +3 -3
  88. package/dist/lib/build/rollup.d.cts +2 -2
  89. package/dist/lib/build/rollup.d.ts +2 -2
  90. package/dist/lib/build/rollup.js +1 -1
  91. package/dist/lib/build/rspack.cjs +2 -2
  92. package/dist/lib/build/rspack.d.cts +2 -2
  93. package/dist/lib/build/rspack.d.ts +2 -2
  94. package/dist/lib/build/rspack.js +1 -1
  95. package/dist/lib/build/tsup.cjs +6 -6
  96. package/dist/lib/build/tsup.d.cts +2 -2
  97. package/dist/lib/build/tsup.d.ts +2 -2
  98. package/dist/lib/build/tsup.js +3 -3
  99. package/dist/lib/build/unbuild.cjs +5 -5
  100. package/dist/lib/build/unbuild.d.cts +4 -4
  101. package/dist/lib/build/unbuild.d.ts +4 -4
  102. package/dist/lib/build/unbuild.js +2 -2
  103. package/dist/lib/build/vite.cjs +5 -5
  104. package/dist/lib/build/vite.d.cts +2 -2
  105. package/dist/lib/build/vite.d.ts +2 -2
  106. package/dist/lib/build/vite.js +3 -3
  107. package/dist/lib/build/webpack.cjs +2 -2
  108. package/dist/lib/build/webpack.d.cts +2 -2
  109. package/dist/lib/build/webpack.d.ts +2 -2
  110. package/dist/lib/build/webpack.js +1 -1
  111. package/dist/lib/chunk-3T56KQ7U.cjs +49 -0
  112. package/dist/lib/{chunk-PZLO6FZW.js → chunk-3W53W5J2.js} +2 -2
  113. package/dist/lib/chunk-4W6WV35V.js +108 -0
  114. package/dist/lib/chunk-6OYSDQXE.cjs +139 -0
  115. package/dist/lib/{chunk-EV357RFB.cjs → chunk-7MHUTBEC.cjs} +1 -3
  116. package/dist/lib/{chunk-A2NFSQ5K.js → chunk-7OVZZWGY.js} +1 -1
  117. package/dist/lib/chunk-A2NW7WAN.js +47 -0
  118. package/dist/lib/chunk-D6MI2V6R.cjs +115 -0
  119. package/dist/lib/{chunk-VHLINWXG.js → chunk-DLVVEHMU.js} +1 -1
  120. package/dist/lib/{chunk-XLYMVIVD.cjs → chunk-DNQBXFNE.cjs} +10 -10
  121. package/dist/lib/{chunk-UGVHYKKN.js → chunk-DYLE5FD3.js} +39 -2
  122. package/dist/lib/{chunk-AKBAX4FH.js → chunk-EN52JYUK.js} +1 -1
  123. package/dist/lib/{chunk-JYDGFQIV.cjs → chunk-F2CXZUSB.cjs} +1 -1
  124. package/dist/lib/{chunk-7VJ42H2I.cjs → chunk-HRRI4KOM.cjs} +1 -3
  125. package/dist/lib/{chunk-LPRZ3HD4.cjs → chunk-IXTLRVAK.cjs} +3 -3
  126. package/dist/lib/{chunk-SYF7QG2J.js → chunk-J3BW52BU.js} +1 -1
  127. package/dist/lib/chunk-KFDNKOXM.js +56 -0
  128. package/dist/lib/chunk-L56XA427.js +137 -0
  129. package/dist/lib/{chunk-6PPZCPME.cjs → chunk-LOW2TIQ6.cjs} +2 -2
  130. package/dist/lib/{chunk-TMZCGC5U.js → chunk-MI55FDCZ.js} +1 -1
  131. package/dist/lib/{chunk-DUZJ7ZF2.cjs → chunk-MKKWFHGE.cjs} +2 -2
  132. package/dist/lib/{chunk-ISBHXSDH.cjs → chunk-N5XEKCVW.cjs} +1 -1
  133. package/dist/lib/{chunk-XZFEHPYE.js → chunk-N5YLKWC2.js} +1 -1
  134. package/dist/lib/chunk-NIRFKQAD.js +845 -0
  135. package/dist/lib/{chunk-YMHOAMCU.cjs → chunk-NLJR4WIX.cjs} +41 -4
  136. package/dist/lib/{chunk-L3HESXYF.cjs → chunk-NUE5DIH3.cjs} +3 -3
  137. package/dist/lib/chunk-OBA5U4Y2.js +1059 -0
  138. package/dist/lib/{chunk-FQLZZYYO.js → chunk-OEF6EHQV.js} +1 -3
  139. package/dist/lib/{chunk-WTTBXYFQ.js → chunk-OFXWRM3U.js} +2 -2
  140. package/dist/lib/chunk-ONETLSPO.js +85 -0
  141. package/dist/lib/{chunk-2OV26JXJ.cjs → chunk-PQRWG64T.cjs} +3 -3
  142. package/dist/lib/chunk-R33US3PV.cjs +1081 -0
  143. package/dist/lib/{chunk-OA7OL7HF.cjs → chunk-SFEEJZLK.cjs} +38 -66
  144. package/dist/lib/{chunk-H6EOZSIZ.js → chunk-TAVG226Z.js} +1 -1
  145. package/dist/lib/{chunk-DALRRHB4.cjs → chunk-TSFG3WEA.cjs} +1 -1
  146. package/dist/lib/{chunk-RMA2PMP7.cjs → chunk-TZCC5IWH.cjs} +3 -3
  147. package/dist/lib/chunk-VHCBD2IS.js +149 -0
  148. package/dist/lib/{chunk-HY6DNFCT.js → chunk-VODWHWD6.js} +2 -2
  149. package/dist/lib/{chunk-2X5DUDNT.js → chunk-W6GWSJ22.js} +2 -2
  150. package/dist/lib/chunk-WBSA6OG6.cjs +860 -0
  151. package/dist/lib/{chunk-TOCNXURI.cjs → chunk-WCXA5WFX.cjs} +4 -4
  152. package/dist/lib/{chunk-6I5PL7H2.js → chunk-WGSZ4X6N.js} +1 -3
  153. package/dist/lib/{chunk-T2KQZC5K.js → chunk-WLDQUTFD.js} +27 -54
  154. package/dist/lib/{chunk-AOHJEL2Q.js → chunk-WOKPJMGJ.js} +3 -3
  155. package/dist/lib/{chunk-TDJNFAOV.cjs → chunk-X6JDYLWM.cjs} +1 -1
  156. package/dist/lib/chunk-XLHFUATD.cjs +151 -0
  157. package/dist/lib/chunk-XUYQYUWZ.cjs +87 -0
  158. package/dist/lib/chunk-YYEAV24J.cjs +67 -0
  159. package/dist/lib/{config-D8KrE7SZ.d.cts → config-Cqxh4V21.d.cts} +58 -475
  160. package/dist/lib/{config-DBIFdRoq.d.ts → config-D-WwQL-4.d.ts} +58 -475
  161. package/dist/lib/config-file.d.cts +2 -2
  162. package/dist/lib/config-file.d.ts +2 -2
  163. package/dist/lib/contexts/api-context.cjs +12 -7
  164. package/dist/lib/contexts/api-context.d.cts +27 -4
  165. package/dist/lib/contexts/api-context.d.ts +27 -4
  166. package/dist/lib/contexts/api-context.js +11 -6
  167. package/dist/lib/contexts/context.cjs +10 -5
  168. package/dist/lib/contexts/context.d.cts +7 -7
  169. package/dist/lib/contexts/context.d.ts +7 -7
  170. package/dist/lib/contexts/context.js +9 -4
  171. package/dist/lib/contexts/environment-context.cjs +11 -6
  172. package/dist/lib/contexts/environment-context.d.cts +4 -4
  173. package/dist/lib/contexts/environment-context.d.ts +4 -4
  174. package/dist/lib/contexts/environment-context.js +10 -5
  175. package/dist/lib/contexts/index.cjs +14 -9
  176. package/dist/lib/contexts/index.d.cts +4 -4
  177. package/dist/lib/contexts/index.d.ts +4 -4
  178. package/dist/lib/contexts/index.js +11 -6
  179. package/dist/lib/contexts/plugin-context.d.cts +4 -4
  180. package/dist/lib/contexts/plugin-context.d.ts +4 -4
  181. package/dist/lib/entry.cjs +9 -9
  182. package/dist/lib/entry.d.cts +2 -2
  183. package/dist/lib/entry.d.ts +2 -2
  184. package/dist/lib/entry.js +1 -1
  185. package/dist/lib/fs/helpers.cjs +47 -0
  186. package/dist/lib/fs/helpers.d.cts +74 -0
  187. package/dist/lib/fs/helpers.d.ts +74 -0
  188. package/dist/lib/fs/helpers.js +2 -0
  189. package/dist/lib/fs/index.cjs +17 -0
  190. package/dist/lib/fs/index.d.cts +33 -0
  191. package/dist/lib/fs/index.d.ts +33 -0
  192. package/dist/lib/fs/index.js +8 -0
  193. package/dist/lib/fs/storage/base.cjs +11 -0
  194. package/dist/lib/fs/storage/base.d.cts +138 -0
  195. package/dist/lib/fs/storage/base.d.ts +138 -0
  196. package/dist/lib/fs/storage/base.js +2 -0
  197. package/dist/lib/fs/storage/file-system.cjs +13 -0
  198. package/dist/lib/fs/storage/file-system.d.cts +90 -0
  199. package/dist/lib/fs/storage/file-system.d.ts +90 -0
  200. package/dist/lib/fs/storage/file-system.js +4 -0
  201. package/dist/lib/fs/storage/index.cjs +22 -0
  202. package/dist/lib/fs/storage/index.d.cts +6 -0
  203. package/dist/lib/fs/storage/index.d.ts +6 -0
  204. package/dist/lib/fs/storage/index.js +5 -0
  205. package/dist/lib/fs/storage/virtual.cjs +12 -0
  206. package/dist/lib/fs/storage/virtual.d.cts +66 -0
  207. package/dist/lib/fs/storage/virtual.d.ts +66 -0
  208. package/dist/lib/fs/storage/virtual.js +3 -0
  209. package/dist/lib/fs/vfs.cjs +16 -0
  210. package/dist/lib/fs/vfs.d.cts +247 -0
  211. package/dist/lib/fs/vfs.d.ts +247 -0
  212. package/dist/lib/fs/vfs.js +7 -0
  213. package/dist/lib/fs-Dg-aTfiN.d.cts +378 -0
  214. package/dist/lib/fs-Dg-aTfiN.d.ts +378 -0
  215. package/dist/lib/index.cjs +62 -68
  216. package/dist/lib/index.d.cts +18 -356
  217. package/dist/lib/index.d.ts +18 -356
  218. package/dist/lib/index.js +19 -13
  219. package/dist/lib/{internal-CaGANOWK.d.cts → internal-Cl7s1iAA.d.cts} +2 -2
  220. package/dist/lib/{internal-1qCyw7bA.d.ts → internal-W5pvS6e9.d.ts} +2 -2
  221. package/dist/lib/logger.d.cts +2 -2
  222. package/dist/lib/logger.d.ts +2 -2
  223. package/dist/lib/typescript/import-transformer.cjs +7 -45
  224. package/dist/lib/typescript/import-transformer.d.cts +2 -2
  225. package/dist/lib/typescript/import-transformer.d.ts +2 -2
  226. package/dist/lib/typescript/import-transformer.js +2 -47
  227. package/dist/lib/typescript/index.cjs +10 -22
  228. package/dist/lib/typescript/index.d.cts +4 -4
  229. package/dist/lib/typescript/index.d.ts +4 -4
  230. package/dist/lib/typescript/index.js +2 -2
  231. package/dist/lib/typescript/ts-morph.cjs +6 -2
  232. package/dist/lib/typescript/ts-morph.d.cts +28 -4
  233. package/dist/lib/typescript/ts-morph.d.ts +28 -4
  234. package/dist/lib/typescript/ts-morph.js +1 -1
  235. package/dist/lib/unplugin/factory.cjs +14 -9
  236. package/dist/lib/unplugin/factory.d.cts +4 -4
  237. package/dist/lib/unplugin/factory.d.ts +4 -4
  238. package/dist/lib/unplugin/factory.js +13 -8
  239. package/dist/lib/unplugin/helpers.d.cts +2 -2
  240. package/dist/lib/unplugin/helpers.d.ts +2 -2
  241. package/dist/lib/unplugin/index.cjs +16 -11
  242. package/dist/lib/unplugin/index.d.cts +4 -4
  243. package/dist/lib/unplugin/index.d.ts +4 -4
  244. package/dist/lib/unplugin/index.js +14 -9
  245. package/dist/lib/unplugin/plugin.cjs +2 -2
  246. package/dist/lib/unplugin/plugin.d.cts +4 -4
  247. package/dist/lib/unplugin/plugin.d.ts +4 -4
  248. package/dist/lib/unplugin/plugin.js +1 -1
  249. package/dist/lib/{unplugin-CEeJqADD.d.ts → unplugin-Cg2NoKj0.d.ts} +2 -2
  250. package/dist/lib/{unplugin-bUSyjd0S.d.cts → unplugin-trF-VLnO.d.cts} +2 -2
  251. package/dist/lib/utilities/bundle.cjs +4 -4
  252. package/dist/lib/utilities/bundle.d.cts +2 -2
  253. package/dist/lib/utilities/bundle.d.ts +2 -2
  254. package/dist/lib/utilities/bundle.js +3 -3
  255. package/dist/lib/utilities/cache.d.cts +2 -2
  256. package/dist/lib/utilities/cache.d.ts +2 -2
  257. package/dist/lib/utilities/file-header.d.cts +2 -2
  258. package/dist/lib/utilities/file-header.d.ts +2 -2
  259. package/dist/lib/utilities/index.cjs +22 -22
  260. package/dist/lib/utilities/index.d.cts +2 -2
  261. package/dist/lib/utilities/index.d.ts +2 -2
  262. package/dist/lib/utilities/index.js +6 -6
  263. package/dist/lib/utilities/meta.cjs +7 -7
  264. package/dist/lib/utilities/meta.d.cts +2 -2
  265. package/dist/lib/utilities/meta.d.ts +2 -2
  266. package/dist/lib/utilities/meta.js +1 -1
  267. package/dist/lib/utilities/resolve.cjs +5 -5
  268. package/dist/lib/utilities/resolve.d.cts +2 -2
  269. package/dist/lib/utilities/resolve.d.ts +2 -2
  270. package/dist/lib/utilities/resolve.js +4 -4
  271. package/dist/lib/utilities/source-file.d.cts +2 -2
  272. package/dist/lib/utilities/source-file.d.ts +2 -2
  273. package/dist/lib/utilities/source-map.d.cts +2 -2
  274. package/dist/lib/utilities/source-map.d.ts +2 -2
  275. package/dist/lib/utilities/worker.d.cts +2 -2
  276. package/dist/lib/utilities/worker.d.ts +2 -2
  277. package/dist/lib/utilities/write-file.d.cts +2 -2
  278. package/dist/lib/utilities/write-file.d.ts +2 -2
  279. package/dist/next.cjs +11 -9
  280. package/dist/next.js +9 -7
  281. package/dist/nuxt.cjs +13 -11
  282. package/dist/nuxt.js +11 -9
  283. package/dist/plugin-utils/{chunk-JHTLGE4X.js → chunk-K2GWRZPV.js} +1 -1
  284. package/dist/plugin-utils/{chunk-HSYQWNIH.cjs → chunk-VWFJOPKC.cjs} +1 -1
  285. package/dist/plugin-utils/{context-BITGF5LZ.d.cts → context-PtfEjz3_.d.cts} +187 -230
  286. package/dist/plugin-utils/{context-BITGF5LZ.d.ts → context-PtfEjz3_.d.ts} +187 -230
  287. package/dist/plugin-utils/context-helpers.d.cts +1 -2
  288. package/dist/plugin-utils/context-helpers.d.ts +1 -2
  289. package/dist/plugin-utils/enforce.d.cts +1 -2
  290. package/dist/plugin-utils/enforce.d.ts +1 -2
  291. package/dist/plugin-utils/extend.d.cts +1 -2
  292. package/dist/plugin-utils/extend.d.ts +1 -2
  293. package/dist/plugin-utils/get-config-path.d.cts +1 -2
  294. package/dist/plugin-utils/get-config-path.d.ts +1 -2
  295. package/dist/plugin-utils/helpers.d.cts +1 -2
  296. package/dist/plugin-utils/helpers.d.ts +1 -2
  297. package/dist/plugin-utils/index.cjs +2 -2
  298. package/dist/plugin-utils/index.d.cts +1 -2
  299. package/dist/plugin-utils/index.d.ts +1 -2
  300. package/dist/plugin-utils/index.js +1 -1
  301. package/dist/plugin-utils/merge.d.cts +1 -2
  302. package/dist/plugin-utils/merge.d.ts +1 -2
  303. package/dist/plugin-utils/paths.cjs +2 -2
  304. package/dist/plugin-utils/paths.d.cts +2 -3
  305. package/dist/plugin-utils/paths.d.ts +2 -3
  306. package/dist/plugin-utils/paths.js +1 -1
  307. package/dist/rolldown.cjs +9 -7
  308. package/dist/rolldown.d.cts +19 -21
  309. package/dist/rolldown.d.ts +19 -21
  310. package/dist/rolldown.js +8 -6
  311. package/dist/rollup.cjs +9 -7
  312. package/dist/rollup.d.cts +19 -21
  313. package/dist/rollup.d.ts +19 -21
  314. package/dist/rollup.js +8 -6
  315. package/dist/rspack.cjs +9 -7
  316. package/dist/rspack.d.cts +18 -20
  317. package/dist/rspack.d.ts +18 -20
  318. package/dist/rspack.js +8 -6
  319. package/dist/tsup.cjs +12 -10
  320. package/dist/tsup.js +10 -8
  321. package/dist/types/api.cjs +3 -1
  322. package/dist/types/api.cjs.map +1 -0
  323. package/dist/types/api.d.cts +20 -22
  324. package/dist/types/api.d.ts +20 -22
  325. package/dist/types/api.js +3 -1
  326. package/dist/types/api.js.map +1 -0
  327. package/dist/types/babel.cjs +3 -1
  328. package/dist/types/babel.cjs.map +1 -0
  329. package/dist/types/babel.d.cts +17 -19
  330. package/dist/types/babel.d.ts +17 -19
  331. package/dist/types/babel.js +3 -1
  332. package/dist/types/babel.js.map +1 -0
  333. package/dist/types/build.cjs +3 -1
  334. package/dist/types/build.cjs.map +1 -0
  335. package/dist/types/build.js +3 -1
  336. package/dist/types/build.js.map +1 -0
  337. package/dist/types/commands.cjs +5 -3
  338. package/dist/types/commands.cjs.map +1 -0
  339. package/dist/types/commands.d.cts +18 -20
  340. package/dist/types/commands.d.ts +18 -20
  341. package/dist/types/commands.js +4 -2
  342. package/dist/types/commands.js.map +1 -0
  343. package/dist/types/config.cjs +3 -1
  344. package/dist/types/config.cjs.map +1 -0
  345. package/dist/types/config.d.cts +2 -4
  346. package/dist/types/config.d.ts +2 -4
  347. package/dist/types/config.js +3 -1
  348. package/dist/types/config.js.map +1 -0
  349. package/dist/types/context.cjs +5 -3
  350. package/dist/types/context.cjs.map +1 -0
  351. package/dist/types/context.d.cts +8 -10
  352. package/dist/types/context.d.ts +8 -10
  353. package/dist/types/context.js +4 -2
  354. package/dist/types/context.js.map +1 -0
  355. package/dist/types/fs.cjs +10 -4
  356. package/dist/types/fs.cjs.map +1 -0
  357. package/dist/types/fs.d.cts +138 -184
  358. package/dist/types/fs.d.ts +138 -184
  359. package/dist/types/fs.js +4 -2
  360. package/dist/types/fs.js.map +1 -0
  361. package/dist/types/hooks.cjs +3 -1
  362. package/dist/types/hooks.cjs.map +1 -0
  363. package/dist/types/hooks.d.cts +19 -21
  364. package/dist/types/hooks.d.ts +19 -21
  365. package/dist/types/hooks.js +3 -1
  366. package/dist/types/hooks.js.map +1 -0
  367. package/dist/types/index.cjs +26 -20
  368. package/dist/types/index.cjs.map +1 -0
  369. package/dist/types/index.d.cts +13 -15
  370. package/dist/types/index.d.ts +13 -15
  371. package/dist/types/index.js +17 -15
  372. package/dist/types/index.js.map +1 -0
  373. package/dist/types/internal.cjs +2 -0
  374. package/dist/types/internal.cjs.map +1 -0
  375. package/dist/types/internal.d.cts +20 -22
  376. package/dist/types/internal.d.ts +20 -22
  377. package/dist/types/internal.js +2 -0
  378. package/dist/types/internal.js.map +1 -0
  379. package/dist/types/plugin.cjs +5 -3
  380. package/dist/types/plugin.cjs.map +1 -0
  381. package/dist/types/plugin.d.cts +9 -11
  382. package/dist/types/plugin.d.ts +9 -11
  383. package/dist/types/plugin.js +4 -2
  384. package/dist/types/plugin.js.map +1 -0
  385. package/dist/types/resolved.cjs +3 -1
  386. package/dist/types/resolved.cjs.map +1 -0
  387. package/dist/types/resolved.d.cts +7 -9
  388. package/dist/types/resolved.d.ts +7 -9
  389. package/dist/types/resolved.js +3 -1
  390. package/dist/types/resolved.js.map +1 -0
  391. package/dist/types/tsconfig.cjs +3 -1
  392. package/dist/types/tsconfig.cjs.map +1 -0
  393. package/dist/types/tsconfig.js +3 -1
  394. package/dist/types/tsconfig.js.map +1 -0
  395. package/dist/types/typedoc.cjs +3 -1
  396. package/dist/types/typedoc.cjs.map +1 -0
  397. package/dist/types/typedoc.js +3 -1
  398. package/dist/types/typedoc.js.map +1 -0
  399. package/dist/types/unplugin.cjs +3 -1
  400. package/dist/types/unplugin.cjs.map +1 -0
  401. package/dist/types/unplugin.d.cts +11 -13
  402. package/dist/types/unplugin.d.ts +11 -13
  403. package/dist/types/unplugin.js +3 -1
  404. package/dist/types/unplugin.js.map +1 -0
  405. package/dist/unloader.cjs +9 -7
  406. package/dist/unloader.d.cts +19 -21
  407. package/dist/unloader.d.ts +19 -21
  408. package/dist/unloader.js +8 -6
  409. package/dist/unplugin.cjs +20 -20
  410. package/dist/unplugin.d.cts +19 -21
  411. package/dist/unplugin.d.ts +19 -21
  412. package/dist/unplugin.js +10 -10
  413. package/dist/vite.cjs +13 -11
  414. package/dist/vite.d.cts +19 -21
  415. package/dist/vite.d.ts +19 -21
  416. package/dist/vite.js +10 -8
  417. package/dist/webpack.cjs +12 -10
  418. package/dist/webpack.d.cts +19 -21
  419. package/dist/webpack.d.ts +19 -21
  420. package/dist/webpack.js +9 -7
  421. package/package.json +72 -19
  422. package/schemas/fs.capnp +4 -59
  423. package/dist/chunk-2NO7N5OW.cjs +0 -2
  424. package/dist/chunk-7GYTTM4M.cjs +0 -2
  425. package/dist/chunk-AENPRFWJ.cjs +0 -2
  426. package/dist/chunk-AYKZK666.cjs +0 -8
  427. package/dist/chunk-BUR2JQ6G.cjs +0 -11
  428. package/dist/chunk-DRXFQCNC.js +0 -1
  429. package/dist/chunk-FNZDWE4L.js +0 -1
  430. package/dist/chunk-GHJU2KGP.cjs +0 -2
  431. package/dist/chunk-GRU7B3QM.cjs +0 -2
  432. package/dist/chunk-HQFZ64VC.cjs +0 -2
  433. package/dist/chunk-J4BQZHTQ.js +0 -1
  434. package/dist/chunk-JGB5YQ2U.js +0 -1
  435. package/dist/chunk-KALR2O2F.cjs +0 -2
  436. package/dist/chunk-LOUZXJFY.cjs +0 -10
  437. package/dist/chunk-OO3YXM72.js +0 -1
  438. package/dist/chunk-QE3WGMAP.js +0 -1
  439. package/dist/chunk-SMNKPH4T.js +0 -1
  440. package/dist/chunk-T2P533I5.js +0 -1
  441. package/dist/chunk-V3MLQDZQ.js +0 -1
  442. package/dist/chunk-VT7NVLLU.js +0 -5
  443. package/dist/chunk-YRJ4MLVL.cjs +0 -2
  444. package/dist/chunk-ZC43PZXS.cjs +0 -2
  445. package/dist/lib/chunk-3MZQ4MQX.cjs +0 -2360
  446. package/dist/lib/chunk-5JAFU45Z.js +0 -2324
  447. package/dist/lib/chunk-HAXL7QE7.js +0 -154
  448. package/dist/lib/chunk-SAS5EPBD.cjs +0 -107
  449. package/dist/lib/chunk-WUYK74EH.cjs +0 -165
  450. package/dist/lib/chunk-YQ3ODCHV.js +0 -105
  451. package/dist/lib/typescript/compiler-host.cjs +0 -164
  452. package/dist/lib/typescript/compiler-host.d.cts +0 -63
  453. package/dist/lib/typescript/compiler-host.d.ts +0 -63
  454. package/dist/lib/typescript/compiler-host.js +0 -156
  455. package/dist/lib/typescript/program.cjs +0 -27
  456. package/dist/lib/typescript/program.d.cts +0 -68
  457. package/dist/lib/typescript/program.d.ts +0 -68
  458. package/dist/lib/typescript/program.js +0 -2
  459. /package/dist/{chunk-2NCILNCH.cjs → lib/chunk-K2SFTPN3.cjs} +0 -0
  460. /package/dist/{chunk-BLNT5INX.js → lib/chunk-NQAHFTUW.js} +0 -0
@@ -0,0 +1,845 @@
1
+ import { CACHE_HASH_LENGTH, PROJECT_ROOT_HASH_LENGTH, getPrefixedProjectRootHash } from './chunk-OEF6EHQV.js';
2
+ import { VirtualFileSystem } from './chunk-OBA5U4Y2.js';
3
+ import { createProgram } from './chunk-4W6WV35V.js';
4
+ import { getTsconfigFilePath } from './chunk-ZGMEHSNN.js';
5
+ import { loadWorkspaceConfig, loadUserConfigFile } from './chunk-XBM7FHNK.js';
6
+ import { createLog, extendLog } from './chunk-ENRLU4UR.js';
7
+ import { resolveEntriesSync, getUniqueEntries, replacePathTokens } from './chunk-N5YLKWC2.js';
8
+ import { __name } from './chunk-SHUYVCID.js';
9
+ import { LogLevelLabel } from '@storm-software/config-tools/types';
10
+ import { toArray } from '@stryke/convert/to-array';
11
+ import { getEnvPaths } from '@stryke/env/get-env-paths';
12
+ import { existsSync } from '@stryke/fs/exists';
13
+ import { relativeToWorkspaceRoot } from '@stryke/fs/get-workspace-root';
14
+ import { readJsonFile } from '@stryke/fs/json';
15
+ import { resolvePackage } from '@stryke/fs/resolve';
16
+ import { hashDirectory } from '@stryke/hash/hash-files';
17
+ import { murmurhash } from '@stryke/hash/murmurhash';
18
+ import { getUnique } from '@stryke/helpers/get-unique';
19
+ import { omit } from '@stryke/helpers/omit';
20
+ import { StormJSON } from '@stryke/json/storm-json';
21
+ import { appendPath } from '@stryke/path/append';
22
+ import { isAbsolute } from '@stryke/path/is-type';
23
+ import { joinPaths } from '@stryke/path/join';
24
+ import { replacePath } from '@stryke/path/replace';
25
+ import { titleCase } from '@stryke/string-format/title-case';
26
+ import { isNull } from '@stryke/type-checks/is-null';
27
+ import { isSetObject } from '@stryke/type-checks/is-set-object';
28
+ import { isSetString } from '@stryke/type-checks/is-set-string';
29
+ import { isString } from '@stryke/type-checks/is-string';
30
+ import { uuid } from '@stryke/unique-id/uuid';
31
+ import { tsconfigPathsToRegExp, match } from 'bundle-require';
32
+ import defu2 from 'defu';
33
+ import { joinPaths as joinPaths$1 } from '@stryke/path/join-paths';
34
+ import { createJiti } from 'jiti';
35
+ import { isFunction } from '@stryke/type-checks/is-function';
36
+ import { isUndefined } from '@stryke/type-checks/is-undefined';
37
+
38
+ function resolveOptions(options) {
39
+ return defu2(options, {
40
+ interopDefault: true,
41
+ fsCache: options.mode !== "development" ? joinPaths$1(options.cacheDir, "jiti") : false,
42
+ moduleCache: options.mode !== "development"
43
+ });
44
+ }
45
+ __name(resolveOptions, "resolveOptions");
46
+ function createPluginResolver(options) {
47
+ return createJiti(joinPaths$1(options.workspaceRoot, options.projectRoot), resolveOptions({
48
+ ...options
49
+ }));
50
+ }
51
+ __name(createPluginResolver, "createPluginResolver");
52
+ function createResolver(options) {
53
+ const baseResolver = createJiti(joinPaths$1(options.workspaceRoot, options.projectRoot), resolveOptions(options));
54
+ baseResolver.plugin = createPluginResolver(options);
55
+ return baseResolver;
56
+ }
57
+ __name(createResolver, "createResolver");
58
+
59
+ // src/types/commands.ts
60
+ var SUPPORTED_COMMANDS = [
61
+ "new",
62
+ "clean",
63
+ "prepare",
64
+ "lint",
65
+ "test",
66
+ "build",
67
+ "docs",
68
+ "deploy",
69
+ "finalize"
70
+ ];
71
+
72
+ // src/plugin-utils/helpers.ts
73
+ function isPlugin(value) {
74
+ return isSetObject(value) && "name" in value && isSetString(value.name) && (isUndefined(value.applyToEnvironment) || "applyToEnvironment" in value && isFunction(value.applyToEnvironment)) && (isUndefined(value.dedupe) || "dedupe" in value && isFunction(value.dedupe)) && (isUndefined(value.dependsOn) || "dependsOn" in value && Array.isArray(value.dependsOn) && value.dependsOn.every(isPluginConfig)) && SUPPORTED_COMMANDS.every((command) => isUndefined(value[command]) || command in value && (isFunction(value[command]) || isSetObject(value[command]) && "handler" in value[command] && isFunction(value[command].handler)));
75
+ }
76
+ __name(isPlugin, "isPlugin");
77
+ function isPluginConfigObject(value) {
78
+ return isSetObject(value) && "plugin" in value && ((isSetString(value.plugin) || isFunction(value.plugin)) && "options" in value && isSetObject(value.options) || isPlugin(value.plugin));
79
+ }
80
+ __name(isPluginConfigObject, "isPluginConfigObject");
81
+ function isPluginConfigTuple(value) {
82
+ return Array.isArray(value) && (value.length === 1 || value.length === 2) && ((isSetString(value[0]) || isFunction(value[0])) && value.length > 1 && isSetObject(value[1]) || isPlugin(value[0]));
83
+ }
84
+ __name(isPluginConfigTuple, "isPluginConfigTuple");
85
+ function isPluginConfig(value) {
86
+ return isSetString(value) || isFunction(value) || isPlugin(value) || isPluginConfigObject(value) || isPluginConfigTuple(value);
87
+ }
88
+ __name(isPluginConfig, "isPluginConfig");
89
+ function isPluginHookFunction(value) {
90
+ return isFunction(value) || isSetObject(value) && "handler" in value && isFunction(value.handler);
91
+ }
92
+ __name(isPluginHookFunction, "isPluginHookFunction");
93
+ function isPluginHookObject(value) {
94
+ return isSetObject(value) && "handler" in value && isFunction(value.handler);
95
+ }
96
+ __name(isPluginHookObject, "isPluginHookObject");
97
+ function isPluginHook(value) {
98
+ return isPluginHookFunction(value) || isPluginHookObject(value);
99
+ }
100
+ __name(isPluginHook, "isPluginHook");
101
+ function getHookHandler(pluginHook) {
102
+ return isFunction(pluginHook) ? pluginHook : pluginHook.handler;
103
+ }
104
+ __name(getHookHandler, "getHookHandler");
105
+ function isHookExternal(hook) {
106
+ return hook.startsWith("vite:") || hook.startsWith("esbuild:") || hook.startsWith("rolldown:") || hook.startsWith("rollup:") || hook.startsWith("webpack:") || hook.startsWith("rspack:") || hook.startsWith("farm:");
107
+ }
108
+ __name(isHookExternal, "isHookExternal");
109
+ function checkDedupe(plugin, plugins) {
110
+ return plugin.dedupe === false || plugins.some((p) => p.dedupe !== false && (isFunction(p.dedupe) && p.dedupe(plugin) || p.name === plugin.name));
111
+ }
112
+ __name(checkDedupe, "checkDedupe");
113
+ function addPluginHook(context, plugin, pluginHook, hooksList) {
114
+ if (!checkDedupe(plugin, hooksList.map((hook) => hook.plugin))) {
115
+ hooksList.push(isFunction(pluginHook) ? {
116
+ plugin,
117
+ handler: getHookHandler(pluginHook).bind(context)
118
+ } : {
119
+ plugin,
120
+ ...pluginHook,
121
+ handler: getHookHandler(pluginHook).bind(context)
122
+ });
123
+ }
124
+ }
125
+ __name(addPluginHook, "addPluginHook");
126
+
127
+ // src/lib/contexts/context.ts
128
+ var configCache = /* @__PURE__ */ new WeakMap();
129
+ var PowerlinesContext = class _PowerlinesContext {
130
+ static {
131
+ __name(this, "PowerlinesContext");
132
+ }
133
+ /**
134
+ * Internal reference to the API instance
135
+ *
136
+ * @internal
137
+ */
138
+ #api;
139
+ #workspaceConfig;
140
+ #checksum = null;
141
+ #buildId = uuid();
142
+ #releaseId = uuid();
143
+ #timestamp = Date.now();
144
+ #envPaths;
145
+ #fs;
146
+ #tsconfig;
147
+ #program;
148
+ #resolvePatterns = [];
149
+ #getConfigProps(config = {}) {
150
+ return {
151
+ variant: config.build?.variant,
152
+ projectType: config.type,
153
+ projectRoot: config.root,
154
+ name: config.name,
155
+ title: config.title,
156
+ description: config.description,
157
+ sourceRoot: config.sourceRoot,
158
+ configFile: config.configFile,
159
+ customLogger: config.customLogger,
160
+ logLevel: config.logLevel,
161
+ tsconfig: config.tsconfig,
162
+ tsconfigRaw: config.tsconfigRaw,
163
+ skipCache: config.skipCache,
164
+ skipInstalls: config.skipInstalls,
165
+ entry: config.entry,
166
+ output: config.output,
167
+ plugins: config.plugins,
168
+ mode: config.mode,
169
+ lint: config.lint,
170
+ transform: config.transform,
171
+ build: config.build,
172
+ framework: config.framework
173
+ };
174
+ }
175
+ /**
176
+ * Create a new Storm context from the workspace root and user config.
177
+ *
178
+ * @param workspaceRoot - The root directory of the workspace.
179
+ * @param config - The user configuration options.
180
+ * @returns A promise that resolves to the new context.
181
+ */
182
+ static async from(workspaceRoot, config) {
183
+ const context = new _PowerlinesContext(await loadWorkspaceConfig(workspaceRoot, config.root));
184
+ await context.withUserConfig(config);
185
+ context.powerlinesPath = await resolvePackage("powerlines");
186
+ if (!context.powerlinesPath) {
187
+ throw new Error("Could not resolve `powerlines` package location.");
188
+ }
189
+ return context;
190
+ }
191
+ /**
192
+ * An object containing the dependencies that should be installed for the project
193
+ */
194
+ dependencies = {};
195
+ /**
196
+ * An object containing the development dependencies that should be installed for the project
197
+ */
198
+ devDependencies = {};
199
+ /**
200
+ * The persisted meta information about the current build
201
+ */
202
+ persistedMeta = void 0;
203
+ /**
204
+ * The path to the Powerlines package
205
+ */
206
+ powerlinesPath;
207
+ /**
208
+ * The parsed `package.json` file for the project
209
+ */
210
+ packageJson;
211
+ /**
212
+ * The parsed `project.json` file for the project
213
+ */
214
+ projectJson = void 0;
215
+ /**
216
+ * The module resolver for the project
217
+ */
218
+ resolver;
219
+ /**
220
+ * Internal context fields and methods
221
+ *
222
+ * @internal
223
+ */
224
+ get $$internal() {
225
+ return {
226
+ api: this.#api
227
+ };
228
+ }
229
+ /**
230
+ * The resolved entry type definitions for the project
231
+ */
232
+ get entry() {
233
+ return resolveEntriesSync(this, toArray(this.config.entry));
234
+ }
235
+ /**
236
+ * The TypeScript configuration parsed from the tsconfig file
237
+ */
238
+ get tsconfig() {
239
+ if (!this.#tsconfig) {
240
+ this.tsconfig = {
241
+ tsconfigFilePath: this.config.tsconfig
242
+ };
243
+ }
244
+ return this.#tsconfig;
245
+ }
246
+ /**
247
+ * Sets the TypeScript configuration parsed from the tsconfig file
248
+ */
249
+ set tsconfig(value) {
250
+ this.#tsconfig = value;
251
+ this.#resolvePatterns = tsconfigPathsToRegExp(value?.options?.paths ?? {});
252
+ }
253
+ /**
254
+ * The virtual file system interface for the project
255
+ */
256
+ get fs() {
257
+ if (!this.#fs) {
258
+ this.#fs = VirtualFileSystem.createSync(this);
259
+ }
260
+ return this.#fs;
261
+ }
262
+ /**
263
+ * Get the checksum of the project's current state
264
+ */
265
+ get checksum() {
266
+ return this.#checksum;
267
+ }
268
+ /**
269
+ * The meta information about the current build
270
+ */
271
+ get meta() {
272
+ return {
273
+ buildId: this.#buildId,
274
+ releaseId: this.#releaseId,
275
+ checksum: this.#checksum,
276
+ timestamp: this.#timestamp,
277
+ projectRootHash: murmurhash({
278
+ workspaceRoot: this.workspaceConfig?.workspaceRoot,
279
+ projectRoot: this.config?.projectRoot
280
+ }, {
281
+ maxLength: PROJECT_ROOT_HASH_LENGTH
282
+ }),
283
+ configHash: murmurhash(this.config, {
284
+ maxLength: CACHE_HASH_LENGTH
285
+ })
286
+ };
287
+ }
288
+ /**
289
+ * The resolved configuration options
290
+ */
291
+ get config() {
292
+ return this.resolvedConfig ?? {};
293
+ }
294
+ /**
295
+ * The logger function
296
+ */
297
+ get log() {
298
+ if (!this.logFn) {
299
+ this.logFn = this.createLog();
300
+ }
301
+ return this.logFn;
302
+ }
303
+ /**
304
+ * The workspace configuration
305
+ */
306
+ get workspaceConfig() {
307
+ return this.#workspaceConfig;
308
+ }
309
+ /**
310
+ * The environment paths for the project
311
+ */
312
+ get envPaths() {
313
+ if (!this.#envPaths) {
314
+ this.#envPaths = getEnvPaths({
315
+ orgId: "storm-software",
316
+ appId: "powerlines",
317
+ workspaceRoot: this.workspaceConfig.workspaceRoot
318
+ });
319
+ }
320
+ return this.#envPaths;
321
+ }
322
+ /**
323
+ * Get the path to the artifacts directory for the project
324
+ */
325
+ get artifactsPath() {
326
+ return joinPaths(this.workspaceConfig.workspaceRoot, this.config.projectRoot, this.config.output.artifactsPath);
327
+ }
328
+ /**
329
+ * Get the path to the builtin modules used by the project
330
+ */
331
+ get builtinsPath() {
332
+ return joinPaths(this.artifactsPath, "builtins");
333
+ }
334
+ /**
335
+ * Get the path to the entry directory for the project
336
+ */
337
+ get entryPath() {
338
+ return joinPaths(this.artifactsPath, "entry");
339
+ }
340
+ /**
341
+ * Get the path to the data directory for the project
342
+ */
343
+ get dataPath() {
344
+ return joinPaths(this.envPaths.data, "projects", getPrefixedProjectRootHash(this.config.name, this.meta.projectRootHash));
345
+ }
346
+ /**
347
+ * Get the path to the cache directory for the project
348
+ */
349
+ get cachePath() {
350
+ return joinPaths(this.envPaths.cache, "projects", murmurhash({
351
+ checksum: this.#checksum,
352
+ config: this.meta.configHash
353
+ }, {
354
+ maxLength: CACHE_HASH_LENGTH
355
+ }));
356
+ }
357
+ /**
358
+ * Get the path to the generated declaration file for the project
359
+ */
360
+ get dtsPath() {
361
+ return this.config.output.dts ? appendPath(this.config.output.dts, this.workspaceConfig.workspaceRoot) : joinPaths(this.workspaceConfig.workspaceRoot, this.config.projectRoot, "powerlines.d.ts");
362
+ }
363
+ /**
364
+ * Get the project root relative to the workspace root
365
+ */
366
+ get relativeToWorkspaceRoot() {
367
+ return relativeToWorkspaceRoot(this.config.projectRoot);
368
+ }
369
+ /**
370
+ * The builtin module id that exist in the Powerlines virtual file system
371
+ */
372
+ get builtins() {
373
+ return Object.values(this.fs.metadata).filter((meta) => meta && meta.type === "builtin").map((meta) => meta?.id).filter(Boolean);
374
+ }
375
+ /**
376
+ * The {@link Project} instance used for type reflection and module manipulation
377
+ *
378
+ * @see https://ts-morph.com/
379
+ *
380
+ * @remarks
381
+ * This instance is created lazily on first access.
382
+ */
383
+ get program() {
384
+ if (!this.#program) {
385
+ this.#program = createProgram(this, {
386
+ skipAddingFilesFromTsConfig: true
387
+ });
388
+ }
389
+ return this.#program;
390
+ }
391
+ /**
392
+ * A helper function to resolve modules in the Virtual File System
393
+ *
394
+ * @remarks
395
+ * This function can be used to resolve modules relative to the project root directory.
396
+ *
397
+ * @example
398
+ * ```ts
399
+ * const resolved = await context.resolve("some-module", "/path/to/importer");
400
+ * ```
401
+ *
402
+ * @param id - The module to resolve.
403
+ * @param importer - An optional path to the importer module.
404
+ * @param options - Additional resolution options.
405
+ * @returns A promise that resolves to the resolved module path.
406
+ */
407
+ async resolveId(id, importer, options = {}) {
408
+ if (this.fs.isVirtual(id)) {
409
+ const result = await this.fs.resolve(id, importer, options);
410
+ if (!result) {
411
+ return void 0;
412
+ }
413
+ return {
414
+ id: `\0${result}`,
415
+ external: this.config.projectType !== "application"
416
+ };
417
+ }
418
+ if (this.config.build.skipNodeModulesBundle) {
419
+ if (match(id, this.#resolvePatterns) || match(id, this.config.build.noExternal)) {
420
+ return void 0;
421
+ }
422
+ if (match(id, this.config.build.external) || id.startsWith("node:")) {
423
+ return {
424
+ id,
425
+ external: true
426
+ };
427
+ }
428
+ if (!/^[A-Z]:[/\\]|^\.{0,2}\/|^\.{1,2}$/.test(id)) {
429
+ return {
430
+ id,
431
+ external: true
432
+ };
433
+ }
434
+ } else {
435
+ if (match(id, this.config.build.noExternal)) {
436
+ return void 0;
437
+ }
438
+ if (match(id, this.config.build.external) || id.startsWith("node:")) {
439
+ return {
440
+ id,
441
+ external: true
442
+ };
443
+ }
444
+ }
445
+ return void 0;
446
+ }
447
+ /**
448
+ * A helper function to load modules from the Virtual File System
449
+ *
450
+ * @remarks
451
+ * This function can be used to load modules relative to the project root directory.
452
+ *
453
+ * @example
454
+ * ```ts
455
+ * const module = await context.load("some-module", "/path/to/importer");
456
+ * ```
457
+ *
458
+ * @param id - The module to load.
459
+ * @returns A promise that resolves to the loaded module.
460
+ */
461
+ async load(id) {
462
+ const resolvedId = await this.fs.resolve(id);
463
+ if (!resolvedId) {
464
+ return void 0;
465
+ }
466
+ const code = await this.fs.read(resolvedId);
467
+ if (!code) {
468
+ return void 0;
469
+ }
470
+ return {
471
+ code,
472
+ map: null
473
+ };
474
+ }
475
+ /**
476
+ * Get the builtin virtual files that exist in the Powerlines virtual file system
477
+ */
478
+ async getBuiltins() {
479
+ return Promise.all(Object.entries(this.fs.metadata).filter(([, meta]) => meta && meta.type === "builtin").map(async ([path, meta]) => {
480
+ const code = await this.fs.read(path);
481
+ return {
482
+ ...meta,
483
+ path,
484
+ code
485
+ };
486
+ }));
487
+ }
488
+ /**
489
+ * Resolves a entry virtual file and writes it to the VFS if it does not already exist
490
+ *
491
+ * @param code - The source code of the entry file
492
+ * @param path - A path to write the entry file to
493
+ * @param options - Optional write file options
494
+ */
495
+ async emitEntry(code, path, options = {}) {
496
+ return this.fs.write(isAbsolute(path) ? path : appendPath(path, this.entryPath), code, defu2(options, {
497
+ type: "entry"
498
+ }));
499
+ }
500
+ /**
501
+ * Resolves a builtin virtual file and writes it to the VFS if it does not already exist
502
+ *
503
+ * @param code - The source code of the builtin file
504
+ * @param id - The unique identifier of the builtin file
505
+ * @param path - An optional path to write the builtin file to
506
+ * @param options - Optional write file options
507
+ */
508
+ async emitBuiltin(code, id, path, options = {}) {
509
+ return this.fs.write(path ? isAbsolute(path) ? path : joinPaths(this.builtinsPath, path) : appendPath(id, this.builtinsPath), code, defu2(options, {
510
+ type: "builtin"
511
+ }));
512
+ }
513
+ /**
514
+ * Update the context using a new user configuration options
515
+ *
516
+ * @param userConfig - The new user configuration options.
517
+ */
518
+ async withUserConfig(userConfig, options = {
519
+ isHighPriority: true
520
+ }) {
521
+ this.mergeUserConfig(userConfig);
522
+ await this.init(this.config.userConfig, options);
523
+ }
524
+ /**
525
+ * Update the context using a new inline configuration options
526
+ *
527
+ * @param inlineConfig - The new inline configuration options.
528
+ */
529
+ async withInlineConfig(inlineConfig, options = {
530
+ isHighPriority: true
531
+ }) {
532
+ this.config.inlineConfig = inlineConfig;
533
+ if (inlineConfig.command === "new") {
534
+ const workspacePackageJsonPath = joinPaths(this.workspaceConfig.workspaceRoot, "package.json");
535
+ if (!existsSync(workspacePackageJsonPath)) {
536
+ throw new Error(`The workspace package.json file could not be found at ${workspacePackageJsonPath}`);
537
+ }
538
+ this.packageJson = await readJsonFile(workspacePackageJsonPath);
539
+ this.workspaceConfig.repository ??= isSetString(this.packageJson?.repository) ? this.packageJson.repository : this.packageJson?.repository?.url;
540
+ }
541
+ await this.init(this.config.inlineConfig, options);
542
+ }
543
+ /**
544
+ * A logging function for fatal messages
545
+ *
546
+ * @param message - The message to log.
547
+ */
548
+ fatal(message) {
549
+ this.log(LogLevelLabel.FATAL, isString(message) ? message : StormJSON.stringify(message));
550
+ }
551
+ /**
552
+ * A logging function for error messages
553
+ *
554
+ * @param message - The message to log.
555
+ */
556
+ error(message) {
557
+ this.log(LogLevelLabel.ERROR, isString(message) ? message : StormJSON.stringify(message));
558
+ }
559
+ /**
560
+ * A logging function for warning messages
561
+ *
562
+ * @param message - The message to log.
563
+ */
564
+ warn(message) {
565
+ this.log(LogLevelLabel.WARN, isString(message) ? message : StormJSON.stringify(message));
566
+ }
567
+ /**
568
+ * A logging function for informational messages
569
+ *
570
+ * @param message - The message to log.
571
+ */
572
+ info(message) {
573
+ this.log(LogLevelLabel.INFO, isString(message) ? message : StormJSON.stringify(message));
574
+ }
575
+ /**
576
+ * A logging function for debug messages
577
+ *
578
+ * @param message - The message to log.
579
+ */
580
+ debug(message) {
581
+ this.log(LogLevelLabel.DEBUG, isString(message) ? message : StormJSON.stringify(message));
582
+ }
583
+ /**
584
+ * A logging function for trace messages
585
+ *
586
+ * @param message - The message to log.
587
+ */
588
+ trace(message) {
589
+ this.log(LogLevelLabel.TRACE, isString(message) ? message : StormJSON.stringify(message));
590
+ }
591
+ /**
592
+ * Create a new logger instance
593
+ *
594
+ * @param name - The name to use for the logger instance
595
+ * @returns A logger function
596
+ */
597
+ createLog(name = null) {
598
+ return createLog(name, {
599
+ ...this.config,
600
+ logLevel: isNull(this.config.logLevel) ? "silent" : this.config.logLevel
601
+ });
602
+ }
603
+ /**
604
+ * Extend the current logger instance with a new name
605
+ *
606
+ * @param name - The name to use for the extended logger instance
607
+ * @returns A logger function
608
+ */
609
+ extendLog(name) {
610
+ return extendLog(this.log, name);
611
+ }
612
+ /**
613
+ * Creates a new StormContext instance.
614
+ *
615
+ * @param workspaceConfig - The workspace configuration.
616
+ */
617
+ constructor(workspaceConfig) {
618
+ this.#workspaceConfig = workspaceConfig;
619
+ this.#envPaths = getEnvPaths({
620
+ orgId: "storm-software",
621
+ appId: "powerlines",
622
+ workspaceRoot: workspaceConfig.workspaceRoot
623
+ });
624
+ }
625
+ /**
626
+ * The resolved configuration for this context
627
+ */
628
+ resolvedConfig = {};
629
+ /**
630
+ * A logger function specific to this context
631
+ */
632
+ logFn;
633
+ /**
634
+ * Generates a checksum representing the current context state
635
+ *
636
+ * @param root - The root directory of the project to generate the checksum for
637
+ * @returns A promise that resolves to a string representing the checksum
638
+ */
639
+ async generateChecksum(root = this.config.projectRoot) {
640
+ this.#checksum = await hashDirectory(root, {
641
+ ignore: [
642
+ "node_modules",
643
+ ".git",
644
+ ".nx",
645
+ ".cache",
646
+ ".storm",
647
+ "tmp",
648
+ "dist"
649
+ ]
650
+ });
651
+ return this.#checksum;
652
+ }
653
+ /**
654
+ * Initialize the context with the provided configuration options
655
+ *
656
+ * @param config - The partial user configuration to use for initialization.
657
+ */
658
+ async init(config = {}, options = {
659
+ isHighPriority: true
660
+ }) {
661
+ const cacheKey = {
662
+ projectRoot: config.root ?? this.config.projectRoot ?? this.config.userConfig?.root ?? this.config.inlineConfig?.root,
663
+ mode: (config.mode ?? this.config.mode) || this.workspaceConfig.mode,
664
+ skipCache: config.skipCache ?? this.config.skipCache ?? false,
665
+ configFile: config.configFile ?? this.config.configFile,
666
+ framework: config.framework ?? this.config.framework ?? "powerlines",
667
+ command: this.config.inlineConfig?.command
668
+ };
669
+ if (configCache.has(cacheKey)) {
670
+ const result = configCache.get(cacheKey);
671
+ this.projectJson = result.projectJson;
672
+ this.packageJson = result.packageJson;
673
+ this.#checksum = result.checksum;
674
+ this.resolver = result.resolver;
675
+ this.mergeUserConfig(result.userConfig.config, this.config.userConfig);
676
+ } else {
677
+ const projectJsonPath = joinPaths(cacheKey.projectRoot, "project.json");
678
+ if (existsSync(projectJsonPath)) {
679
+ this.projectJson = await readJsonFile(projectJsonPath);
680
+ }
681
+ const packageJsonPath = joinPaths(cacheKey.projectRoot, "package.json");
682
+ if (existsSync(packageJsonPath)) {
683
+ this.packageJson = await readJsonFile(packageJsonPath);
684
+ }
685
+ this.#checksum = await this.generateChecksum(cacheKey.projectRoot);
686
+ this.resolver = createResolver({
687
+ workspaceRoot: this.workspaceConfig.workspaceRoot,
688
+ projectRoot: cacheKey.projectRoot,
689
+ cacheDir: this.cachePath,
690
+ mode: cacheKey.mode,
691
+ logLevel: config.logLevel || this.config?.logLevel || this.workspaceConfig.logLevel || "info",
692
+ skipCache: cacheKey.skipCache
693
+ });
694
+ const userConfig = await loadUserConfigFile(cacheKey.projectRoot, this.workspaceConfig.workspaceRoot, this.resolver, cacheKey.command, cacheKey.mode, cacheKey.configFile, cacheKey.framework);
695
+ this.mergeUserConfig(userConfig.config);
696
+ configCache.set(cacheKey, {
697
+ projectJson: this.projectJson,
698
+ packageJson: this.packageJson,
699
+ checksum: this.#checksum,
700
+ resolver: this.resolver,
701
+ userConfig
702
+ });
703
+ }
704
+ config.tsconfig ??= getTsconfigFilePath(this.workspaceConfig.workspaceRoot, cacheKey.projectRoot, config.tsconfig);
705
+ if (isSetObject(config)) {
706
+ this.resolvedConfig = defu2({
707
+ inlineConfig: this.config.inlineConfig,
708
+ userConfig: this.config.userConfig
709
+ }, options.isHighPriority ? this.#getConfigProps(config) : {}, {
710
+ command: this.config.inlineConfig?.command,
711
+ ...this.#getConfigProps(this.config.inlineConfig)
712
+ }, this.#getConfigProps(this.config.userConfig), {
713
+ mode: this.workspaceConfig?.mode,
714
+ logLevel: this.workspaceConfig?.logLevel,
715
+ skipCache: this.workspaceConfig?.skipCache
716
+ }, {
717
+ name: this.projectJson?.name || this.packageJson?.name,
718
+ version: this.packageJson?.version,
719
+ description: this.packageJson?.description,
720
+ sourceRoot: this.projectJson?.sourceRoot || appendPath("src", cacheKey.projectRoot),
721
+ output: defu2(config.output ?? {}, {
722
+ outputPath: cacheKey.projectRoot ? joinPaths(this.workspaceConfig?.directories?.build || "dist", cacheKey.projectRoot) : this.workspaceConfig?.directories?.build || "dist",
723
+ artifactsPath: joinPaths(cacheKey.projectRoot, `.${config.framework ?? "powerlines"}`),
724
+ dts: joinPaths(cacheKey.projectRoot, `${config.framework ?? "powerlines"}.d.ts`),
725
+ builtinPrefix: config.framework ?? "powerlines",
726
+ assets: [
727
+ {
728
+ glob: "LICENSE"
729
+ },
730
+ {
731
+ input: cacheKey.projectRoot,
732
+ glob: "*.md"
733
+ },
734
+ {
735
+ input: cacheKey.projectRoot,
736
+ glob: "package.json"
737
+ }
738
+ ]
739
+ })
740
+ }, options.isHighPriority ? {} : this.#getConfigProps(config), {
741
+ inlineConfig: {},
742
+ userConfig: {},
743
+ framework: "powerlines",
744
+ platform: "neutral",
745
+ mode: "production",
746
+ projectType: "application",
747
+ logLevel: "info",
748
+ preview: false,
749
+ environments: {},
750
+ transform: {
751
+ babel: {
752
+ plugins: [],
753
+ presets: []
754
+ }
755
+ },
756
+ lint: {
757
+ eslint: {}
758
+ },
759
+ build: {
760
+ target: "esnext",
761
+ override: {}
762
+ }
763
+ });
764
+ }
765
+ this.config.entry = getUniqueEntries(this.config.entry);
766
+ if (this.config.name?.startsWith("@") && this.config.name.split("/").filter(Boolean).length > 1) {
767
+ this.config.name = this.config.name.split("/").filter(Boolean)[1];
768
+ }
769
+ this.config.title ??= titleCase(this.config.name);
770
+ if (this.config.build.external) {
771
+ this.config.build.external = getUnique(this.config.build.external);
772
+ }
773
+ if (this.config.build.noExternal) {
774
+ this.config.build.noExternal = getUnique(this.config.build.noExternal);
775
+ }
776
+ this.config.output.format = getUnique(toArray(this.config.output?.format ?? (this.config.projectType === "library" ? [
777
+ "cjs",
778
+ "esm"
779
+ ] : [
780
+ "esm"
781
+ ])));
782
+ if (this.config.projectRoot && this.config.projectRoot !== "." && this.config.projectRoot !== "./" && this.config.projectRoot !== this.workspaceConfig.workspaceRoot) {
783
+ this.config.output.outputPath ??= joinPaths("dist", this.config.projectRoot);
784
+ this.config.output.buildPath ??= joinPaths(this.config.projectRoot, "dist");
785
+ } else {
786
+ this.config.output.outputPath ??= "dist";
787
+ this.config.output.buildPath ??= "dist";
788
+ }
789
+ this.config.output.assets = getUnique(this.config.output.assets.map((asset) => {
790
+ return {
791
+ glob: isSetObject(asset) ? asset.glob : asset,
792
+ input: isString(asset) || !asset.input || asset.input === "." || asset.input === "/" || asset.input === "./" ? this.workspaceConfig.workspaceRoot : appendPath(asset.input, this.workspaceConfig.workspaceRoot),
793
+ output: appendPath(isSetObject(asset) && asset.output ? joinPaths(this.config.output.outputPath, replacePath(asset.output, this.config.output.outputPath)) : this.config.output.outputPath, this.workspaceConfig.workspaceRoot),
794
+ ignore: isSetObject(asset) && asset.ignore ? toArray(asset.ignore) : void 0
795
+ };
796
+ }));
797
+ this.config.plugins = (this.config.plugins ?? []).filter(Boolean).reduce((ret, plugin) => {
798
+ if (isPlugin(plugin) && checkDedupe(plugin, ret.filter((p) => isPlugin(p)))) {
799
+ return ret;
800
+ }
801
+ ret.push(plugin);
802
+ return ret;
803
+ }, []);
804
+ if (this.config.tsconfig) {
805
+ this.config.tsconfig = replacePathTokens(this, this.config.tsconfig);
806
+ }
807
+ if (this.config.output.dts) {
808
+ this.config.output.dts = replacePathTokens(this, this.config.output.dts);
809
+ }
810
+ if (this.config.build.polyfill) {
811
+ this.config.build.polyfill = this.config.build.polyfill.map((polyfill) => replacePathTokens(this, polyfill));
812
+ }
813
+ if (this.config.output.assets) {
814
+ this.config.output.assets = this.config.output.assets.map((asset) => ({
815
+ ...asset,
816
+ glob: replacePathTokens(this, asset.glob),
817
+ ignore: asset.ignore ? asset.ignore.map((ignore) => replacePathTokens(this, ignore)) : void 0,
818
+ input: replacePathTokens(this, asset.input),
819
+ output: replacePathTokens(this, asset.output)
820
+ }));
821
+ }
822
+ this.#fs ??= await VirtualFileSystem.create(this);
823
+ }
824
+ mergeUserConfig(from = {}, into = this.config.userConfig ?? {}) {
825
+ this.config.userConfig = defu2({
826
+ entry: Array.isArray(from.entry) && from.entry.length > 0 ? from.entry : Array.isArray(into?.entry) && into.entry.length > 0 ? into.entry : []
827
+ }, omit(from ?? {}, [
828
+ "entry"
829
+ ]), omit(into ?? {}, [
830
+ "entry"
831
+ ]));
832
+ if (this.config.userConfig.output?.format) {
833
+ this.config.userConfig.output.format = getUnique(toArray(this.config.userConfig.output?.format));
834
+ }
835
+ this.config.userConfig.plugins = (this.config.userConfig.plugins ?? []).filter(Boolean).reduce((ret, plugin) => {
836
+ if (isPlugin(plugin) && checkDedupe(plugin, ret.filter((p) => isPlugin(p)))) {
837
+ return ret;
838
+ }
839
+ ret.push(plugin);
840
+ return ret;
841
+ }, []);
842
+ }
843
+ };
844
+
845
+ export { PowerlinesContext, addPluginHook, checkDedupe, getHookHandler, isHookExternal, isPlugin, isPluginConfig, isPluginConfigObject, isPluginConfigTuple, isPluginHook };