powerlines 0.36.28 → 0.37.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/dist/{context-DU4oqb6r.d.cts → api-CLQePK25.d.cts} +262 -127
  2. package/dist/{context-DmCNtNIs.d.ts → api-DClrDYWk.d.ts} +262 -127
  3. package/dist/api.cjs +4 -4
  4. package/dist/api.d.cts +7 -7
  5. package/dist/api.d.ts +7 -7
  6. package/dist/api.js +3 -3
  7. package/dist/astro.cjs +6 -6
  8. package/dist/astro.d.cts +6 -5
  9. package/dist/astro.d.ts +6 -5
  10. package/dist/astro.js +5 -5
  11. package/dist/{chunk-K4ZR45W7.cjs → chunk-2ZNVD64B.cjs} +4 -4
  12. package/dist/{chunk-7IDSUDJN.js → chunk-3JGCXWAM.js} +3 -3
  13. package/dist/chunk-42ZHOCZJ.cjs +14 -0
  14. package/dist/{chunk-PZZP3VX2.cjs → chunk-4PIVB3SY.cjs} +14 -9
  15. package/dist/{chunk-ZCMOAOQN.cjs → chunk-B6DVCLP5.cjs} +8 -7
  16. package/dist/chunk-CCJQBJKQ.js +12 -0
  17. package/dist/{chunk-VZMAJMBD.js → chunk-DVJEAUGP.js} +5 -5
  18. package/dist/{chunk-3CCAN6GY.cjs → chunk-E4QAO32M.cjs} +176 -128
  19. package/dist/chunk-FON7JDQF.cjs +12 -0
  20. package/dist/{chunk-NSHXFNIL.js → chunk-IBQ5USID.js} +12 -7
  21. package/dist/{chunk-TP4FRF4H.cjs → chunk-JQDMR7OP.cjs} +2 -2
  22. package/dist/{chunk-4VQBXIAH.js → chunk-MI5E6YZI.js} +3 -3
  23. package/dist/chunk-NITQ5IYP.js +22 -0
  24. package/dist/{chunk-JMX44J5R.js → chunk-NM3AFEVI.js} +174 -128
  25. package/dist/{chunk-AJPO5EP7.js → chunk-PQXP7XQK.js} +8 -7
  26. package/dist/{chunk-OCEXXVLR.cjs → chunk-TFRZZNXL.cjs} +6 -6
  27. package/dist/{chunk-JTK4RYSG.js → chunk-U5MNJ4XF.js} +3 -3
  28. package/dist/{chunk-EXY3RCJH.js → chunk-UNIWU6XL.js} +2 -2
  29. package/dist/chunk-V5WOGN7O.cjs +25 -0
  30. package/dist/chunk-XHOP5GXJ.cjs +12 -0
  31. package/dist/esbuild.cjs +8 -8
  32. package/dist/esbuild.d.cts +6 -5
  33. package/dist/esbuild.d.ts +6 -5
  34. package/dist/esbuild.js +5 -5
  35. package/dist/farm.cjs +5 -5
  36. package/dist/farm.d.cts +6 -5
  37. package/dist/farm.d.ts +6 -5
  38. package/dist/farm.js +4 -4
  39. package/dist/index.cjs +30 -22
  40. package/dist/index.d.cts +6 -7
  41. package/dist/index.d.ts +6 -7
  42. package/dist/index.js +6 -6
  43. package/dist/lib/build/esbuild.d.cts +1 -1
  44. package/dist/lib/build/esbuild.d.ts +1 -1
  45. package/dist/lib/build/index.d.cts +2 -3
  46. package/dist/lib/build/index.d.ts +2 -3
  47. package/dist/lib/build/rolldown.d.cts +1 -1
  48. package/dist/lib/build/rolldown.d.ts +1 -1
  49. package/dist/lib/build/rollup.d.cts +1 -1
  50. package/dist/lib/build/rollup.d.ts +1 -1
  51. package/dist/lib/build/rspack.d.cts +1 -1
  52. package/dist/lib/build/rspack.d.ts +1 -1
  53. package/dist/lib/build/tsdown.d.cts +1 -1
  54. package/dist/lib/build/tsdown.d.ts +1 -1
  55. package/dist/lib/build/tsup.d.cts +1 -1
  56. package/dist/lib/build/tsup.d.ts +1 -1
  57. package/dist/lib/build/unbuild.d.cts +2 -3
  58. package/dist/lib/build/unbuild.d.ts +2 -3
  59. package/dist/lib/build/vite.d.cts +1 -1
  60. package/dist/lib/build/vite.d.ts +1 -1
  61. package/dist/lib/build/webpack.d.cts +1 -1
  62. package/dist/lib/build/webpack.d.ts +1 -1
  63. package/dist/lib/chunk-254IMO3A.js +17 -0
  64. package/dist/lib/chunk-254IMO3A.js.map +1 -0
  65. package/dist/lib/{chunk-T3VYM4BO.cjs → chunk-4QMQCXAG.cjs} +6 -6
  66. package/dist/lib/{chunk-T3VYM4BO.cjs.map → chunk-4QMQCXAG.cjs.map} +1 -1
  67. package/dist/lib/chunk-64R4MDJ7.cjs +25 -0
  68. package/dist/lib/chunk-64R4MDJ7.cjs.map +1 -0
  69. package/dist/lib/{chunk-HEMW2YZA.js → chunk-7PD2L3PS.js} +2 -2
  70. package/dist/lib/{chunk-HEMW2YZA.js.map → chunk-7PD2L3PS.js.map} +1 -1
  71. package/dist/lib/{chunk-PWKYZBQQ.js → chunk-FI4QUQV2.js} +4 -4
  72. package/dist/lib/{chunk-PWKYZBQQ.js.map → chunk-FI4QUQV2.js.map} +1 -1
  73. package/dist/lib/{chunk-3RTOKGVV.cjs → chunk-G3BXMS2V.cjs} +47 -48
  74. package/dist/lib/chunk-G3BXMS2V.cjs.map +1 -0
  75. package/dist/lib/chunk-GNEHIBN4.cjs +20 -0
  76. package/dist/lib/chunk-GNEHIBN4.cjs.map +1 -0
  77. package/dist/lib/{chunk-57WHQU5T.cjs → chunk-GZDE4GLY.cjs} +2 -2
  78. package/dist/lib/{chunk-57WHQU5T.cjs.map → chunk-GZDE4GLY.cjs.map} +1 -1
  79. package/dist/lib/chunk-HGE5DAZF.js +22 -0
  80. package/dist/lib/chunk-HGE5DAZF.js.map +1 -0
  81. package/dist/lib/{chunk-GUZKITBG.js → chunk-I7BLJZ4D.js} +5 -5
  82. package/dist/lib/chunk-I7BLJZ4D.js.map +1 -0
  83. package/dist/lib/{chunk-MZQFHBHY.cjs → chunk-QVDESIYV.cjs} +5 -5
  84. package/dist/lib/chunk-QVDESIYV.cjs.map +1 -0
  85. package/dist/lib/{chunk-POY47Z36.js → chunk-TO3SBSXL.js} +35 -36
  86. package/dist/lib/chunk-TO3SBSXL.js.map +1 -0
  87. package/dist/lib/{chunk-XAALLEOG.js → chunk-TWAVU346.js} +27 -29
  88. package/dist/lib/chunk-TWAVU346.js.map +1 -0
  89. package/dist/lib/{chunk-C7KNYLNP.cjs → chunk-UXLXQOJD.cjs} +29 -30
  90. package/dist/lib/chunk-UXLXQOJD.cjs.map +1 -0
  91. package/dist/lib/chunk-WAN5RBXY.cjs +234 -0
  92. package/dist/lib/chunk-WAN5RBXY.cjs.map +1 -0
  93. package/dist/lib/chunk-XDUEQVFC.js +232 -0
  94. package/dist/lib/chunk-XDUEQVFC.js.map +1 -0
  95. package/dist/lib/{config-BSQhtJCR.d.ts → config-BLfOgflT.d.ts} +230 -104
  96. package/dist/lib/{config-CP6f9ozu.d.cts → config-CmG_oSbS.d.cts} +230 -104
  97. package/dist/lib/config-file.d.cts +1 -1
  98. package/dist/lib/config-file.d.ts +1 -1
  99. package/dist/lib/contexts/api-context.cjs +7 -5
  100. package/dist/lib/contexts/api-context.d.cts +2 -3
  101. package/dist/lib/contexts/api-context.d.ts +2 -3
  102. package/dist/lib/contexts/api-context.js +6 -4
  103. package/dist/lib/contexts/context.cjs +3 -2
  104. package/dist/lib/contexts/context.d.cts +2 -3
  105. package/dist/lib/contexts/context.d.ts +2 -3
  106. package/dist/lib/contexts/context.js +2 -1
  107. package/dist/lib/contexts/environment-context.cjs +6 -4
  108. package/dist/lib/contexts/environment-context.d.cts +3 -4
  109. package/dist/lib/contexts/environment-context.d.ts +3 -4
  110. package/dist/lib/contexts/environment-context.js +5 -3
  111. package/dist/lib/contexts/index.cjs +10 -8
  112. package/dist/lib/contexts/index.d.cts +2 -3
  113. package/dist/lib/contexts/index.d.ts +2 -3
  114. package/dist/lib/contexts/index.js +6 -4
  115. package/dist/lib/contexts/plugin-context.cjs +2 -2
  116. package/dist/lib/contexts/plugin-context.d.cts +2 -3
  117. package/dist/lib/contexts/plugin-context.d.ts +2 -3
  118. package/dist/lib/contexts/plugin-context.js +1 -1
  119. package/dist/lib/entry.d.cts +1 -1
  120. package/dist/lib/entry.d.ts +1 -1
  121. package/dist/lib/fs/index.d.cts +1 -1
  122. package/dist/lib/fs/index.d.ts +1 -1
  123. package/dist/lib/fs/vfs.d.cts +1 -1
  124. package/dist/lib/fs/vfs.d.ts +1 -1
  125. package/dist/lib/index.cjs +22 -17
  126. package/dist/lib/index.d.cts +3 -5
  127. package/dist/lib/index.d.ts +3 -5
  128. package/dist/lib/index.js +8 -7
  129. package/dist/lib/{internal-BusfSz8D.d.ts → internal-BfGb9HLc.d.ts} +4 -3
  130. package/dist/lib/{internal-CPKLmt5v.d.cts → internal-CYMrNGHE.d.cts} +4 -3
  131. package/dist/lib/logger.d.cts +1 -1
  132. package/dist/lib/logger.d.ts +1 -1
  133. package/dist/lib/typescript/import-transformer.d.cts +1 -1
  134. package/dist/lib/typescript/import-transformer.d.ts +1 -1
  135. package/dist/lib/typescript/index.d.cts +1 -1
  136. package/dist/lib/typescript/index.d.ts +1 -1
  137. package/dist/lib/typescript/ts-morph.d.cts +1 -1
  138. package/dist/lib/typescript/ts-morph.d.ts +1 -1
  139. package/dist/lib/unplugin/factory.cjs +8 -6
  140. package/dist/lib/unplugin/factory.d.cts +4 -128
  141. package/dist/lib/unplugin/factory.d.ts +4 -128
  142. package/dist/lib/unplugin/factory.js +7 -5
  143. package/dist/lib/unplugin/helpers.cjs +7 -2
  144. package/dist/lib/unplugin/helpers.d.cts +9 -2
  145. package/dist/lib/unplugin/helpers.d.ts +9 -2
  146. package/dist/lib/unplugin/helpers.js +2 -1
  147. package/dist/lib/unplugin/index.cjs +15 -10
  148. package/dist/lib/unplugin/index.d.cts +4 -6
  149. package/dist/lib/unplugin/index.d.ts +4 -6
  150. package/dist/lib/unplugin/index.js +8 -7
  151. package/dist/lib/unplugin/plugin.cjs +4 -3
  152. package/dist/lib/unplugin/plugin.d.cts +2 -4
  153. package/dist/lib/unplugin/plugin.d.ts +2 -4
  154. package/dist/lib/unplugin/plugin.js +3 -2
  155. package/dist/lib/utilities/bundle.d.cts +1 -1
  156. package/dist/lib/utilities/bundle.d.ts +1 -1
  157. package/dist/lib/utilities/cache.d.cts +1 -1
  158. package/dist/lib/utilities/cache.d.ts +1 -1
  159. package/dist/lib/utilities/file-header.d.cts +1 -1
  160. package/dist/lib/utilities/file-header.d.ts +1 -1
  161. package/dist/lib/utilities/index.d.cts +1 -1
  162. package/dist/lib/utilities/index.d.ts +1 -1
  163. package/dist/lib/utilities/meta.d.cts +1 -1
  164. package/dist/lib/utilities/meta.d.ts +1 -1
  165. package/dist/lib/utilities/resolve.d.cts +1 -1
  166. package/dist/lib/utilities/resolve.d.ts +1 -1
  167. package/dist/lib/utilities/source-file.d.cts +1 -1
  168. package/dist/lib/utilities/source-file.d.ts +1 -1
  169. package/dist/lib/utilities/source-map.d.cts +1 -1
  170. package/dist/lib/utilities/source-map.d.ts +1 -1
  171. package/dist/lib/utilities/worker.d.cts +1 -1
  172. package/dist/lib/utilities/worker.d.ts +1 -1
  173. package/dist/lib/utilities/write-file.d.cts +1 -1
  174. package/dist/lib/utilities/write-file.d.ts +1 -1
  175. package/dist/next.cjs +6 -6
  176. package/dist/next.js +5 -5
  177. package/dist/nuxt.cjs +9 -9
  178. package/dist/nuxt.d.cts +4 -3
  179. package/dist/nuxt.d.ts +4 -3
  180. package/dist/nuxt.js +7 -7
  181. package/dist/plugin-utils/{chunk-EJ5XPAJQ.cjs → chunk-2I5L22QB.cjs} +8 -6
  182. package/dist/plugin-utils/chunk-2I5L22QB.cjs.map +1 -0
  183. package/dist/plugin-utils/{chunk-AHZPK4Z5.cjs → chunk-4FLR5DY5.cjs} +7 -7
  184. package/dist/plugin-utils/{chunk-AHZPK4Z5.cjs.map → chunk-4FLR5DY5.cjs.map} +1 -1
  185. package/dist/plugin-utils/{chunk-BWAX3NRG.cjs → chunk-6YOLE5BT.cjs} +34 -21
  186. package/dist/plugin-utils/chunk-6YOLE5BT.cjs.map +1 -0
  187. package/dist/plugin-utils/{chunk-JAG7QJDV.cjs → chunk-ARNNN4GS.cjs} +5 -5
  188. package/dist/plugin-utils/chunk-ARNNN4GS.cjs.map +1 -0
  189. package/dist/plugin-utils/{chunk-FTVPZZJO.js → chunk-I3FSMSLD.js} +32 -20
  190. package/dist/plugin-utils/chunk-I3FSMSLD.js.map +1 -0
  191. package/dist/plugin-utils/{chunk-N4IXPCGY.js → chunk-RZAQTG45.js} +3 -3
  192. package/dist/plugin-utils/{chunk-N4IXPCGY.js.map → chunk-RZAQTG45.js.map} +1 -1
  193. package/dist/plugin-utils/{chunk-JCX2UJYO.js → chunk-XDURJUGS.js} +5 -3
  194. package/dist/plugin-utils/chunk-XDURJUGS.js.map +1 -0
  195. package/dist/plugin-utils/{chunk-WZCGJ7JR.js → chunk-Z2BYI6KW.js} +3 -3
  196. package/dist/plugin-utils/chunk-Z2BYI6KW.js.map +1 -0
  197. package/dist/plugin-utils/{context-GdayEWcl.d.cts → context-BQTlTcfV.d.cts} +444 -76
  198. package/dist/plugin-utils/{context-GdayEWcl.d.ts → context-BQTlTcfV.d.ts} +444 -76
  199. package/dist/plugin-utils/context-helpers.d.cts +11 -2
  200. package/dist/plugin-utils/context-helpers.d.ts +11 -2
  201. package/dist/plugin-utils/enforce.cjs +5 -5
  202. package/dist/plugin-utils/enforce.d.cts +13 -4
  203. package/dist/plugin-utils/enforce.d.ts +13 -4
  204. package/dist/plugin-utils/enforce.js +4 -4
  205. package/dist/plugin-utils/extend.cjs +4 -4
  206. package/dist/plugin-utils/extend.d.cts +11 -2
  207. package/dist/plugin-utils/extend.d.ts +11 -2
  208. package/dist/plugin-utils/extend.js +3 -3
  209. package/dist/plugin-utils/get-config-path.d.cts +11 -2
  210. package/dist/plugin-utils/get-config-path.d.ts +11 -2
  211. package/dist/plugin-utils/helpers.cjs +25 -21
  212. package/dist/plugin-utils/helpers.d.cts +36 -32
  213. package/dist/plugin-utils/helpers.d.ts +36 -32
  214. package/dist/plugin-utils/helpers.js +1 -1
  215. package/dist/plugin-utils/index.cjs +31 -27
  216. package/dist/plugin-utils/index.d.cts +12 -3
  217. package/dist/plugin-utils/index.d.ts +12 -3
  218. package/dist/plugin-utils/index.js +4 -4
  219. package/dist/plugin-utils/merge.cjs +3 -3
  220. package/dist/plugin-utils/merge.d.cts +11 -2
  221. package/dist/plugin-utils/merge.d.ts +11 -2
  222. package/dist/plugin-utils/merge.js +2 -2
  223. package/dist/plugin-utils/paths.d.cts +11 -2
  224. package/dist/plugin-utils/paths.d.ts +11 -2
  225. package/dist/rolldown.cjs +8 -8
  226. package/dist/rolldown.d.cts +6 -5
  227. package/dist/rolldown.d.ts +6 -5
  228. package/dist/rolldown.js +5 -5
  229. package/dist/rollup.cjs +5 -5
  230. package/dist/rollup.d.cts +6 -5
  231. package/dist/rollup.d.ts +6 -5
  232. package/dist/rollup.js +4 -4
  233. package/dist/rspack.cjs +5 -5
  234. package/dist/rspack.d.cts +6 -5
  235. package/dist/rspack.d.ts +6 -5
  236. package/dist/rspack.js +4 -4
  237. package/dist/tsdown.cjs +6 -6
  238. package/dist/tsdown.js +5 -5
  239. package/dist/tsup.cjs +6 -6
  240. package/dist/tsup.js +5 -5
  241. package/dist/types/api.d.cts +5 -5
  242. package/dist/types/api.d.ts +5 -5
  243. package/dist/types/babel.d.cts +6 -5
  244. package/dist/types/babel.d.ts +6 -5
  245. package/dist/types/build.cjs +7 -3
  246. package/dist/types/build.d.cts +19 -13
  247. package/dist/types/build.d.ts +19 -13
  248. package/dist/types/build.js +1 -1
  249. package/dist/types/commands.d.cts +4 -3
  250. package/dist/types/commands.d.ts +4 -3
  251. package/dist/types/config.d.cts +3 -2
  252. package/dist/types/config.d.ts +3 -2
  253. package/dist/types/context.cjs +2 -2
  254. package/dist/types/context.d.cts +3 -2
  255. package/dist/types/context.d.ts +3 -2
  256. package/dist/types/context.js +1 -1
  257. package/dist/types/hooks.cjs +8 -1
  258. package/dist/types/hooks.d.cts +15 -14
  259. package/dist/types/hooks.d.ts +15 -14
  260. package/dist/types/hooks.js +2 -1
  261. package/dist/types/index.cjs +19 -11
  262. package/dist/types/index.d.cts +4 -5
  263. package/dist/types/index.d.ts +4 -5
  264. package/dist/types/index.js +4 -4
  265. package/dist/types/internal.d.cts +8 -6
  266. package/dist/types/internal.d.ts +8 -6
  267. package/dist/types/plugin.cjs +7 -7
  268. package/dist/types/plugin.d.cts +3 -2
  269. package/dist/types/plugin.d.ts +3 -2
  270. package/dist/types/plugin.js +2 -2
  271. package/dist/types/resolved.d.cts +2 -1
  272. package/dist/types/resolved.d.ts +2 -1
  273. package/dist/types/unplugin.d.cts +14 -39
  274. package/dist/types/unplugin.d.ts +14 -39
  275. package/dist/unloader.cjs +5 -5
  276. package/dist/unloader.d.cts +4 -3
  277. package/dist/unloader.d.ts +4 -3
  278. package/dist/unloader.js +4 -4
  279. package/dist/unplugin.cjs +17 -15
  280. package/dist/unplugin.d.cts +18 -13
  281. package/dist/unplugin.d.ts +18 -13
  282. package/dist/unplugin.js +9 -13
  283. package/dist/vite.cjs +8 -8
  284. package/dist/vite.d.cts +6 -5
  285. package/dist/vite.d.ts +6 -5
  286. package/dist/vite.js +5 -5
  287. package/dist/webpack.cjs +8 -8
  288. package/dist/webpack.d.cts +6 -5
  289. package/dist/webpack.d.ts +6 -5
  290. package/dist/webpack.js +5 -5
  291. package/package.json +7 -4
  292. package/dist/api-D0gA4eJU.d.cts +0 -142
  293. package/dist/api-cYTlb0MO.d.ts +0 -142
  294. package/dist/chunk-HJW7OH6E.js +0 -3
  295. package/dist/chunk-J7SXQCBV.cjs +0 -12
  296. package/dist/chunk-U2RJRKLT.js +0 -15
  297. package/dist/chunk-WVLFG7L6.cjs +0 -12
  298. package/dist/chunk-XOMY3USD.cjs +0 -17
  299. package/dist/chunk-XZO6ZJQP.cjs +0 -4
  300. package/dist/lib/api-BeWRTlF3.d.cts +0 -141
  301. package/dist/lib/api-C00m3GB0.d.ts +0 -141
  302. package/dist/lib/chunk-3RTOKGVV.cjs.map +0 -1
  303. package/dist/lib/chunk-A4RSMLXW.cjs +0 -13
  304. package/dist/lib/chunk-A4RSMLXW.cjs.map +0 -1
  305. package/dist/lib/chunk-C7KNYLNP.cjs.map +0 -1
  306. package/dist/lib/chunk-DLX6BNNE.cjs +0 -196
  307. package/dist/lib/chunk-DLX6BNNE.cjs.map +0 -1
  308. package/dist/lib/chunk-GUZKITBG.js.map +0 -1
  309. package/dist/lib/chunk-HDUSUF6L.js +0 -11
  310. package/dist/lib/chunk-HDUSUF6L.js.map +0 -1
  311. package/dist/lib/chunk-MZQFHBHY.cjs.map +0 -1
  312. package/dist/lib/chunk-POY47Z36.js.map +0 -1
  313. package/dist/lib/chunk-XAALLEOG.js.map +0 -1
  314. package/dist/lib/chunk-XHDL2XZB.js +0 -194
  315. package/dist/lib/chunk-XHDL2XZB.js.map +0 -1
  316. package/dist/lib/unplugin-BKtwOoMk.d.ts +0 -18
  317. package/dist/lib/unplugin-BWG1mWFO.d.cts +0 -18
  318. package/dist/plugin-utils/chunk-BWAX3NRG.cjs.map +0 -1
  319. package/dist/plugin-utils/chunk-EJ5XPAJQ.cjs.map +0 -1
  320. package/dist/plugin-utils/chunk-FTVPZZJO.js.map +0 -1
  321. package/dist/plugin-utils/chunk-JAG7QJDV.cjs.map +0 -1
  322. package/dist/plugin-utils/chunk-JCX2UJYO.js.map +0 -1
  323. package/dist/plugin-utils/chunk-WZCGJ7JR.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ import { UNPLUGIN_BUILDER_VARIANTS } from './chunk-HGE5DAZF.js';
2
+ import { __name } from './chunk-7QVYU63E.js';
3
+ import { isSetString } from '@stryke/type-checks/is-set-string';
4
+ import { defu } from 'defu';
5
+
6
+ function combineContexts(context, unplugin) {
7
+ return defu(context, unplugin);
8
+ }
9
+ __name(combineContexts, "combineContexts");
10
+ function isUnpluginBuilderVariant(str) {
11
+ return isSetString(str) && UNPLUGIN_BUILDER_VARIANTS.includes(str);
12
+ }
13
+ __name(isUnpluginBuilderVariant, "isUnpluginBuilderVariant");
14
+
15
+ export { combineContexts, isUnpluginBuilderVariant };
16
+ //# sourceMappingURL=chunk-254IMO3A.js.map
17
+ //# sourceMappingURL=chunk-254IMO3A.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lib/unplugin/helpers.ts"],"names":["combineContexts","context","unplugin","defu","isUnpluginBuilderVariant","str","isSetString","UNPLUGIN_BUILDER_VARIANTS","includes"],"mappings":";;;;;AAkCO,SAASA,eAAAA,CACdC,SACAC,QAAAA,EAAgD;AAEhD,EAAA,OAAOC,IAAAA,CAAKF,SAASC,QAAAA,CAAAA;AACvB;AALgBF,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAaT,SAASI,yBACdC,GAAAA,EAAY;AAEZ,EAAA,OACEC,WAAAA,CAAYD,GAAAA,CAAAA,IACZE,yBAAAA,CAA0BC,SAASH,GAAAA,CAAAA;AAEvC;AAPgBD,MAAAA,CAAAA,wBAAAA,EAAAA,0BAAAA,CAAAA","file":"chunk-254IMO3A.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { defu } from \"defu\";\nimport { UnpluginBuildContext, UnpluginContext } from \"unplugin\";\nimport {\n UNPLUGIN_BUILDER_VARIANTS,\n UnpluginBuilderVariant\n} from \"../../types/build\";\nimport { PluginContext } from \"../../types/context\";\n\n/**\n * Merges a base plugin context with an unplugin context, combining their properties.\n *\n * @param context - The base plugin context to merge into.\n * @param unplugin - The unplugin context to merge from.\n * @returns The merged context.\n */\nexport function combineContexts<TContext extends PluginContext = PluginContext>(\n context: TContext,\n unplugin: UnpluginBuildContext & UnpluginContext\n) {\n return defu(context, unplugin);\n}\n\n/**\n * Checks if a value is a valid UnpluginBuilderVariant.\n *\n * @param str - The value to check.\n * @returns True if the value is a UnpluginBuilderVariant, false otherwise.\n */\nexport function isUnpluginBuilderVariant(\n str: unknown\n): str is UnpluginBuilderVariant {\n return (\n isSetString(str) &&\n UNPLUGIN_BUILDER_VARIANTS.includes(str as UnpluginBuilderVariant)\n );\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var chunkDLX6BNNE_cjs = require('./chunk-DLX6BNNE.cjs');
4
- var chunkC7KNYLNP_cjs = require('./chunk-C7KNYLNP.cjs');
3
+ var chunkWAN5RBXY_cjs = require('./chunk-WAN5RBXY.cjs');
4
+ var chunkUXLXQOJD_cjs = require('./chunk-UXLXQOJD.cjs');
5
5
  var chunk2JR645O3_cjs = require('./chunk-2JR645O3.cjs');
6
6
  var chunkPK6SKIKE_cjs = require('./chunk-PK6SKIKE.cjs');
7
7
  var types = require('@storm-software/config-tools/types');
@@ -65,7 +65,7 @@ function createDefaultEnvironment(userConfig) {
65
65
  chunkPK6SKIKE_cjs.__name(createDefaultEnvironment, "createDefaultEnvironment");
66
66
 
67
67
  // src/lib/contexts/api-context.ts
68
- var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkC7KNYLNP_cjs.PowerlinesContext {
68
+ var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkUXLXQOJD_cjs.PowerlinesContext {
69
69
  static {
70
70
  chunkPK6SKIKE_cjs.__name(this, "PowerlinesAPIContext");
71
71
  }
@@ -154,7 +154,7 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkC7KNYLNP_cjs
154
154
  if (this.environments[environment.name]) {
155
155
  context = this.environments[environment.name];
156
156
  } else {
157
- context = await chunkDLX6BNNE_cjs.PowerlinesEnvironmentContext.fromConfig(this.workspaceConfig, this.config);
157
+ context = await chunkWAN5RBXY_cjs.PowerlinesEnvironmentContext.fromConfig(this.workspaceConfig, this.config);
158
158
  }
159
159
  if (isSetObject.isSetObject(this.config.inlineConfig)) {
160
160
  await context.withInlineConfig(this.config.inlineConfig);
@@ -261,5 +261,5 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkC7KNYLNP_cjs
261
261
  };
262
262
 
263
263
  exports.PowerlinesAPIContext = PowerlinesAPIContext;
264
- //# sourceMappingURL=chunk-T3VYM4BO.cjs.map
265
- //# sourceMappingURL=chunk-T3VYM4BO.cjs.map
264
+ //# sourceMappingURL=chunk-4QMQCXAG.cjs.map
265
+ //# sourceMappingURL=chunk-4QMQCXAG.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internal/helpers/environment.ts","../../src/lib/contexts/api-context.ts"],"names":["DEFAULT_ENVIRONMENT","GLOBAL_ENVIRONMENT","createEnvironment","name","userConfig","defu","environments","title","titleCase","ssr","mainFields","build","platform","extensions","consumer","preview","port","open","strictPort","host","allowedHosts","cors","headers","undefined","createDefaultEnvironment","PowerlinesAPIContext","PowerlinesContext","from","workspaceRoot","config","context","loadWorkspaceConfig","root","withUserConfig","powerlinesPath","resolvePackage","Error","$$internal","value","environment","Object","values","log","createLog","plugins","workspaceConfig","init","Promise","all","toArray","keys","length","map","env","in","PowerlinesEnvironmentContext","fromConfig","isSetObject","inlineConfig","withInlineConfig","plugin","addPlugin","options","isHighPriority","push","getEnvironment","LogLevelLabel","DEBUG","chalk","bold","cyanBright","WARN","getEnvironmentSafe","toEnvironment"],"mappings":"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","file":"chunk-T3VYM4BO.cjs","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport defu from \"defu\";\nimport { APIContext, Context } from \"../../types/context\";\nimport { EnvironmentResolvedConfig } from \"../../types/resolved\";\n\nexport const DEFAULT_ENVIRONMENT = \"default\" as const;\nexport const GLOBAL_ENVIRONMENT = \"__GLOBAL__\" as const;\n\nexport function createEnvironment<TContext extends Context = Context>(\n name: string,\n userConfig: TContext[\"config\"][\"userConfig\"]\n): EnvironmentResolvedConfig {\n return defu(\n userConfig.environments?.[name] ?? {},\n {\n name,\n title: userConfig.title || titleCase(userConfig.name),\n ssr: false,\n mainFields:\n userConfig.build?.platform === \"browser\"\n ? [\"browser\", \"module\", \"jsnext:main\", \"jsnext\"]\n : [\"module\", \"jsnext:main\", \"jsnext\"],\n extensions: [\".mjs\", \".js\", \".mts\", \".ts\", \".jsx\", \".tsx\", \".json\"],\n consumer: userConfig.build?.platform === \"browser\" ? \"client\" : \"server\",\n preview:\n userConfig.build?.platform === \"browser\"\n ? {\n port: 5173,\n open: true,\n strictPort: false,\n // https: false,\n host: \"localhost\",\n allowedHosts: [\".\"],\n cors: true,\n headers: {}\n }\n : undefined\n },\n userConfig\n ) as EnvironmentResolvedConfig;\n}\n\nexport function createDefaultEnvironment<\n TContext extends APIContext = APIContext\n>(userConfig: TContext[\"config\"][\"userConfig\"]): EnvironmentResolvedConfig {\n return createEnvironment(DEFAULT_ENVIRONMENT, userConfig);\n}\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { toArray } from \"@stryke/convert/to-array\";\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport chalk from \"chalk\";\nimport {\n createDefaultEnvironment,\n createEnvironment,\n GLOBAL_ENVIRONMENT\n} from \"../../internal/helpers/environment\";\nimport {\n InitialUserConfig,\n InlineConfig,\n LogFn,\n UserConfig,\n WorkspaceConfig\n} from \"../../types/config\";\nimport {\n APIContext,\n EnvironmentContext,\n InitContextOptions,\n PluginContext\n} from \"../../types/context\";\nimport {\n UNSAFE_ContextInternal,\n UNSAFE_EnvironmentContext\n} from \"../../types/internal\";\nimport { Plugin } from \"../../types/plugin\";\nimport {\n EnvironmentResolvedConfig,\n ResolvedConfig\n} from \"../../types/resolved\";\nimport { loadWorkspaceConfig } from \"../config-file\";\nimport { PowerlinesContext } from \"./context\";\nimport { PowerlinesEnvironmentContext } from \"./environment-context\";\n\nexport class PowerlinesAPIContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>\n extends PowerlinesContext<TResolvedConfig>\n implements APIContext<TResolvedConfig>\n{\n #environments: Record<string, UNSAFE_EnvironmentContext<TResolvedConfig>> =\n {};\n\n #plugins: Plugin<PluginContext<TResolvedConfig>>[] = [];\n\n #log!: LogFn;\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceRoot - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static override async from<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceRoot: string,\n config: InitialUserConfig<TResolvedConfig[\"userConfig\"]>\n ): Promise<APIContext<TResolvedConfig>> {\n const context = new PowerlinesAPIContext<TResolvedConfig>(\n await loadWorkspaceConfig(workspaceRoot, config.root)\n );\n await context.withUserConfig(config);\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override get $$internal(): UNSAFE_ContextInternal<TResolvedConfig> {\n return super.$$internal;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override set $$internal(\n value: UNSAFE_ContextInternal<TResolvedConfig>\n ) {\n super.$$internal = value;\n for (const environment of Object.values(this.environments)) {\n environment.$$internal = super.$$internal;\n }\n }\n\n /**\n * A record of all environments by name\n */\n public get environments(): Record<\n string,\n UNSAFE_EnvironmentContext<TResolvedConfig>\n > {\n return this.#environments;\n }\n\n public override get log(): LogFn {\n if (!this.#log) {\n this.#log = this.createLog();\n }\n\n return this.#log;\n }\n\n public get plugins(): Array<Plugin<PluginContext<TResolvedConfig>>> {\n return this.#plugins;\n }\n\n protected constructor(workspaceConfig: WorkspaceConfig) {\n super(workspaceConfig);\n }\n\n /**\n * Initialize the context with the provided configuration options\n *\n * @param config - The partial user configuration to use for initialization.\n */\n protected override async init(\n config: Partial<TResolvedConfig[\"userConfig\"]> = {}\n ) {\n await super.init(config);\n\n await Promise.all(\n toArray(\n this.config.userConfig.environments &&\n Object.keys(this.config.userConfig.environments).length > 0\n ? Object.keys(this.config.userConfig.environments).map(name =>\n createEnvironment(name, this.config.userConfig)\n )\n : createDefaultEnvironment(this.config.userConfig)\n ).map(async env => {\n this.#environments[env.name] = await this.in(env);\n })\n );\n }\n\n /**\n * A function to copy the context and update the fields for a specific environment\n *\n * @param environment - The environment configuration to use.\n * @returns A new context instance with the updated environment.\n */\n public async in(\n environment: EnvironmentResolvedConfig\n ): Promise<UNSAFE_EnvironmentContext<TResolvedConfig>> {\n let context: UNSAFE_EnvironmentContext<TResolvedConfig>;\n if (this.environments[environment.name]) {\n context = this.environments[environment.name] as any;\n } else {\n context = (await PowerlinesEnvironmentContext.fromConfig(\n this.workspaceConfig,\n this.config\n )) as any;\n }\n\n if (isSetObject(this.config.inlineConfig)) {\n await context.withInlineConfig(this.config.inlineConfig);\n }\n\n context.environment = environment;\n context.plugins = [];\n\n for (const plugin of this.plugins) {\n await context.addPlugin(plugin);\n }\n\n return context;\n }\n\n /**\n * Update the context using a new user configuration options\n *\n * @param userConfig - The new user configuration options.\n */\n public override async withUserConfig(\n userConfig: InitialUserConfig<TResolvedConfig[\"userConfig\"]>,\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withUserConfig(userConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withUserConfig(\n userConfig as UserConfig,\n options\n );\n })\n );\n }\n\n /**\n * Update the context using a new inline configuration options\n *\n * @param inlineConfig - The new inline configuration options.\n */\n public override async withInlineConfig(\n inlineConfig: TResolvedConfig[\"inlineConfig\"],\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withInlineConfig(inlineConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withInlineConfig(\n inlineConfig as InlineConfig,\n options\n );\n })\n );\n }\n\n /**\n * Add a plugin to the API context and all environments\n *\n * @param plugin - The plugin to add.\n */\n public async addPlugin(plugin: Plugin<PluginContext<TResolvedConfig>>) {\n this.plugins.push(plugin);\n\n await Promise.all(\n Object.keys(this.environments).map(async name => {\n await this.environments[name]!.addPlugin(plugin);\n })\n );\n }\n\n /**\n * Get an environment by name, or the default environment if no name is provided\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context.\n */\n public async getEnvironment(name?: string) {\n let environment: EnvironmentContext<TResolvedConfig> | undefined;\n if (name) {\n environment = this.environments[name];\n }\n\n if (Object.keys(this.environments).length === 1) {\n environment = this.environments[Object.keys(this.environments)[0]!];\n\n this.log(\n LogLevelLabel.DEBUG,\n `Applying the only configured environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n if (!environment) {\n if (name) {\n throw new Error(`Environment \"${name}\" not found.`);\n }\n\n environment = await this.in(\n createDefaultEnvironment(this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.WARN,\n `No environment specified, and no default environment found. Using a temporary default environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n return environment;\n }\n\n /**\n * A safe version of `getEnvironment` that returns `undefined` if the environment is not found\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context or `undefined` if not found.\n */\n public async getEnvironmentSafe(\n name?: string\n ): Promise<EnvironmentContext<TResolvedConfig> | undefined> {\n try {\n return await this.getEnvironment(name);\n } catch {\n return undefined;\n }\n }\n\n /**\n * A function to merge all configured environments into a single context.\n *\n * @remarks\n * If only one environment is configured, that environment will be returned directly.\n *\n * @returns A promise that resolves to a merged/global environment context.\n */\n public async toEnvironment(): Promise<EnvironmentContext<TResolvedConfig>> {\n let environment: EnvironmentContext<TResolvedConfig>;\n if (Object.keys(this.environments).length > 1) {\n environment = await this.in(\n createEnvironment(GLOBAL_ENVIRONMENT, this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.DEBUG,\n `Combined all ${Object.keys(this.environments).length} environments into a single global context.`\n );\n } else {\n environment = await this.getEnvironment();\n }\n\n return environment;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/internal/helpers/environment.ts","../../src/lib/contexts/api-context.ts"],"names":["DEFAULT_ENVIRONMENT","GLOBAL_ENVIRONMENT","createEnvironment","name","userConfig","defu","environments","title","titleCase","ssr","mainFields","build","platform","extensions","consumer","preview","port","open","strictPort","host","allowedHosts","cors","headers","undefined","createDefaultEnvironment","PowerlinesAPIContext","PowerlinesContext","from","workspaceRoot","config","context","loadWorkspaceConfig","root","withUserConfig","powerlinesPath","resolvePackage","Error","$$internal","value","environment","Object","values","log","createLog","plugins","workspaceConfig","init","Promise","all","toArray","keys","length","map","env","in","PowerlinesEnvironmentContext","fromConfig","isSetObject","inlineConfig","withInlineConfig","plugin","addPlugin","options","isHighPriority","push","getEnvironment","LogLevelLabel","DEBUG","chalk","bold","cyanBright","WARN","getEnvironmentSafe","toEnvironment"],"mappings":"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","file":"chunk-4QMQCXAG.cjs","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport defu from \"defu\";\nimport { APIContext, Context } from \"../../types/context\";\nimport { EnvironmentResolvedConfig } from \"../../types/resolved\";\n\nexport const DEFAULT_ENVIRONMENT = \"default\" as const;\nexport const GLOBAL_ENVIRONMENT = \"__GLOBAL__\" as const;\n\nexport function createEnvironment<TContext extends Context = Context>(\n name: string,\n userConfig: TContext[\"config\"][\"userConfig\"]\n): EnvironmentResolvedConfig {\n return defu(\n userConfig.environments?.[name] ?? {},\n {\n name,\n title: userConfig.title || titleCase(userConfig.name),\n ssr: false,\n mainFields:\n userConfig.build?.platform === \"browser\"\n ? [\"browser\", \"module\", \"jsnext:main\", \"jsnext\"]\n : [\"module\", \"jsnext:main\", \"jsnext\"],\n extensions: [\".mjs\", \".js\", \".mts\", \".ts\", \".jsx\", \".tsx\", \".json\"],\n consumer: userConfig.build?.platform === \"browser\" ? \"client\" : \"server\",\n preview:\n userConfig.build?.platform === \"browser\"\n ? {\n port: 5173,\n open: true,\n strictPort: false,\n // https: false,\n host: \"localhost\",\n allowedHosts: [\".\"],\n cors: true,\n headers: {}\n }\n : undefined\n },\n userConfig\n ) as EnvironmentResolvedConfig;\n}\n\nexport function createDefaultEnvironment<\n TContext extends APIContext = APIContext\n>(userConfig: TContext[\"config\"][\"userConfig\"]): EnvironmentResolvedConfig {\n return createEnvironment(DEFAULT_ENVIRONMENT, userConfig);\n}\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { toArray } from \"@stryke/convert/to-array\";\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport chalk from \"chalk\";\nimport {\n createDefaultEnvironment,\n createEnvironment,\n GLOBAL_ENVIRONMENT\n} from \"../../internal/helpers/environment\";\nimport {\n InitialUserConfig,\n InlineConfig,\n LogFn,\n UserConfig,\n WorkspaceConfig\n} from \"../../types/config\";\nimport {\n APIContext,\n EnvironmentContext,\n InitContextOptions,\n PluginContext\n} from \"../../types/context\";\nimport {\n UNSAFE_ContextInternal,\n UNSAFE_EnvironmentContext\n} from \"../../types/internal\";\nimport { Plugin } from \"../../types/plugin\";\nimport {\n EnvironmentResolvedConfig,\n ResolvedConfig\n} from \"../../types/resolved\";\nimport { loadWorkspaceConfig } from \"../config-file\";\nimport { PowerlinesContext } from \"./context\";\nimport { PowerlinesEnvironmentContext } from \"./environment-context\";\n\nexport class PowerlinesAPIContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>\n extends PowerlinesContext<TResolvedConfig>\n implements APIContext<TResolvedConfig>\n{\n #environments: Record<string, UNSAFE_EnvironmentContext<TResolvedConfig>> =\n {};\n\n #plugins: Plugin<PluginContext<TResolvedConfig>>[] = [];\n\n #log!: LogFn;\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceRoot - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static override async from<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceRoot: string,\n config: InitialUserConfig<TResolvedConfig[\"userConfig\"]>\n ): Promise<APIContext<TResolvedConfig>> {\n const context = new PowerlinesAPIContext<TResolvedConfig>(\n await loadWorkspaceConfig(workspaceRoot, config.root)\n );\n await context.withUserConfig(config);\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override get $$internal(): UNSAFE_ContextInternal<TResolvedConfig> {\n return super.$$internal;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override set $$internal(\n value: UNSAFE_ContextInternal<TResolvedConfig>\n ) {\n super.$$internal = value;\n for (const environment of Object.values(this.environments)) {\n environment.$$internal = super.$$internal;\n }\n }\n\n /**\n * A record of all environments by name\n */\n public get environments(): Record<\n string,\n UNSAFE_EnvironmentContext<TResolvedConfig>\n > {\n return this.#environments;\n }\n\n public override get log(): LogFn {\n if (!this.#log) {\n this.#log = this.createLog();\n }\n\n return this.#log;\n }\n\n public get plugins(): Array<Plugin<PluginContext<TResolvedConfig>>> {\n return this.#plugins;\n }\n\n protected constructor(workspaceConfig: WorkspaceConfig) {\n super(workspaceConfig);\n }\n\n /**\n * Initialize the context with the provided configuration options\n *\n * @param config - The partial user configuration to use for initialization.\n */\n protected override async init(\n config: Partial<TResolvedConfig[\"userConfig\"]> = {}\n ) {\n await super.init(config);\n\n await Promise.all(\n toArray(\n this.config.userConfig.environments &&\n Object.keys(this.config.userConfig.environments).length > 0\n ? Object.keys(this.config.userConfig.environments).map(name =>\n createEnvironment(name, this.config.userConfig)\n )\n : createDefaultEnvironment(this.config.userConfig)\n ).map(async env => {\n this.#environments[env.name] = await this.in(env);\n })\n );\n }\n\n /**\n * A function to copy the context and update the fields for a specific environment\n *\n * @param environment - The environment configuration to use.\n * @returns A new context instance with the updated environment.\n */\n public async in(\n environment: EnvironmentResolvedConfig\n ): Promise<UNSAFE_EnvironmentContext<TResolvedConfig>> {\n let context: UNSAFE_EnvironmentContext<TResolvedConfig>;\n if (this.environments[environment.name]) {\n context = this.environments[environment.name] as any;\n } else {\n context = (await PowerlinesEnvironmentContext.fromConfig(\n this.workspaceConfig,\n this.config\n )) as any;\n }\n\n if (isSetObject(this.config.inlineConfig)) {\n await context.withInlineConfig(this.config.inlineConfig);\n }\n\n context.environment = environment;\n context.plugins = [];\n\n for (const plugin of this.plugins) {\n await context.addPlugin(plugin);\n }\n\n return context;\n }\n\n /**\n * Update the context using a new user configuration options\n *\n * @param userConfig - The new user configuration options.\n */\n public override async withUserConfig(\n userConfig: InitialUserConfig<TResolvedConfig[\"userConfig\"]>,\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withUserConfig(userConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withUserConfig(\n userConfig as UserConfig,\n options\n );\n })\n );\n }\n\n /**\n * Update the context using a new inline configuration options\n *\n * @param inlineConfig - The new inline configuration options.\n */\n public override async withInlineConfig(\n inlineConfig: TResolvedConfig[\"inlineConfig\"],\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withInlineConfig(inlineConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withInlineConfig(\n inlineConfig as InlineConfig,\n options\n );\n })\n );\n }\n\n /**\n * Add a plugin to the API context and all environments\n *\n * @param plugin - The plugin to add.\n */\n public async addPlugin(plugin: Plugin<PluginContext<TResolvedConfig>>) {\n this.plugins.push(plugin);\n\n await Promise.all(\n Object.keys(this.environments).map(async name => {\n await this.environments[name]!.addPlugin(plugin);\n })\n );\n }\n\n /**\n * Get an environment by name, or the default environment if no name is provided\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context.\n */\n public async getEnvironment(name?: string) {\n let environment: EnvironmentContext<TResolvedConfig> | undefined;\n if (name) {\n environment = this.environments[name];\n }\n\n if (Object.keys(this.environments).length === 1) {\n environment = this.environments[Object.keys(this.environments)[0]!];\n\n this.log(\n LogLevelLabel.DEBUG,\n `Applying the only configured environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n if (!environment) {\n if (name) {\n throw new Error(`Environment \"${name}\" not found.`);\n }\n\n environment = await this.in(\n createDefaultEnvironment(this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.WARN,\n `No environment specified, and no default environment found. Using a temporary default environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n return environment;\n }\n\n /**\n * A safe version of `getEnvironment` that returns `undefined` if the environment is not found\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context or `undefined` if not found.\n */\n public async getEnvironmentSafe(\n name?: string\n ): Promise<EnvironmentContext<TResolvedConfig> | undefined> {\n try {\n return await this.getEnvironment(name);\n } catch {\n return undefined;\n }\n }\n\n /**\n * A function to merge all configured environments into a single context.\n *\n * @remarks\n * If only one environment is configured, that environment will be returned directly.\n *\n * @returns A promise that resolves to a merged/global environment context.\n */\n public async toEnvironment(): Promise<EnvironmentContext<TResolvedConfig>> {\n let environment: EnvironmentContext<TResolvedConfig>;\n if (Object.keys(this.environments).length > 1) {\n environment = await this.in(\n createEnvironment(GLOBAL_ENVIRONMENT, this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.DEBUG,\n `Combined all ${Object.keys(this.environments).length} environments into a single global context.`\n );\n } else {\n environment = await this.getEnvironment();\n }\n\n return environment;\n }\n}\n"]}
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ // src/types/build.ts
4
+ var UNPLUGIN_BUILDER_VARIANTS = [
5
+ "rollup",
6
+ "webpack",
7
+ "rspack",
8
+ "vite",
9
+ "esbuild",
10
+ "farm",
11
+ "unloader",
12
+ "rolldown",
13
+ "bun"
14
+ ];
15
+ var BUILDER_VARIANTS = [
16
+ ...UNPLUGIN_BUILDER_VARIANTS,
17
+ "tsup",
18
+ "tsdown",
19
+ "unbuild"
20
+ ];
21
+
22
+ exports.BUILDER_VARIANTS = BUILDER_VARIANTS;
23
+ exports.UNPLUGIN_BUILDER_VARIANTS = UNPLUGIN_BUILDER_VARIANTS;
24
+ //# sourceMappingURL=chunk-64R4MDJ7.cjs.map
25
+ //# sourceMappingURL=chunk-64R4MDJ7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/types/build.ts"],"names":["UNPLUGIN_BUILDER_VARIANTS","BUILDER_VARIANTS"],"mappings":";;;AA+CO,IAAMA,yBAAAA,GAAsD;AACjE,EAAA,QAAA;AACA,EAAA,SAAA;AACA,EAAA,QAAA;AACA,EAAA,MAAA;AACA,EAAA,SAAA;AACA,EAAA,MAAA;AACA,EAAA,UAAA;AACA,EAAA,UAAA;AACA,EAAA;;AASK,IAAMC,gBAAAA,GAAqC;AAC7CD,EAAAA,GAAAA,yBAAAA;AACH,EAAA,MAAA;AACA,EAAA,QAAA;AACA,EAAA","file":"chunk-64R4MDJ7.cjs","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport type { UserConfig as ExternalFarmOptions } from \"@farmfe/core\";\nimport type { Configuration as ExternalRspackOptions } from \"@rspack/core\";\nimport type { BuildOptions as ExternalTsupOptions } from \"@storm-software/tsup/types\";\nimport type { UnbuildOptions as ExternalUnbuildOptions } from \"@storm-software/unbuild/types\";\nimport type { BuildConfig as ExternalBunOptions } from \"bun\";\nimport type { BuildOptions as ExternalESBuildOptions } from \"esbuild\";\nimport type { RolldownOptions as ExternalRolldownOptions } from \"rolldown\";\nimport type {\n RollupOptions as ExternalRollupOptions,\n OutputOptions as ExternalRollupOutputOptions\n} from \"rollup\";\nimport type { UserConfig as ExternalTsdownOptions } from \"tsdown\";\nimport type {\n DepOptimizationOptions,\n UserConfig as ExternalViteUserConfig\n} from \"vite\";\nimport type { Configuration as ExternalWebpackOptions } from \"webpack\";\n\nexport type UnpluginBuilderVariant =\n | \"rollup\"\n | \"webpack\"\n | \"rspack\"\n | \"vite\"\n | \"esbuild\"\n | \"farm\"\n | \"unloader\"\n | \"rolldown\"\n | \"bun\";\n\nexport const UNPLUGIN_BUILDER_VARIANTS: UnpluginBuilderVariant[] = [\n \"rollup\",\n \"webpack\",\n \"rspack\",\n \"vite\",\n \"esbuild\",\n \"farm\",\n \"unloader\",\n \"rolldown\",\n \"bun\"\n] as const;\n\nexport type BuilderVariant =\n | UnpluginBuilderVariant\n | \"tsup\"\n | \"tsdown\"\n | \"unbuild\";\n\nexport const BUILDER_VARIANTS: BuilderVariant[] = [\n ...UNPLUGIN_BUILDER_VARIANTS,\n \"tsup\",\n \"tsdown\",\n \"unbuild\"\n] as const;\n\nexport type InferUnpluginVariant<TBuildVariant extends BuilderVariant> =\n TBuildVariant extends \"tsup\"\n ? \"esbuild\"\n : TBuildVariant extends \"tsdown\"\n ? \"rolldown\"\n : TBuildVariant extends \"unbuild\"\n ? \"rollup\"\n : TBuildVariant;\n\nexport interface BuildConfig {\n /**\n * The platform to build the project for\n *\n * @defaultValue \"neutral\"\n */\n platform?: \"node\" | \"browser\" | \"neutral\";\n\n /**\n * Array of strings indicating the polyfills to include for the build.\n *\n * @remarks\n * This option allows you to specify which polyfills should be included in the build process to ensure compatibility with the target environment. The paths for the polyfills can use placeholder tokens (the `replacePathTokens` helper function will be used to resolve the actual values).\n *\n * @example\n * ```ts\n * {\n * polyfill: ['{projectRoot}/custom-polyfill.ts']\n * }\n * ```\n */\n polyfill?: string[];\n\n /**\n * Array of strings indicating the order in which fields in a package.json file should be resolved to determine the entry point for a module.\n *\n * @defaultValue `['browser', 'module', 'jsnext:main', 'jsnext']`\n */\n mainFields?: string[];\n\n /**\n * Array of strings indicating what conditions should be used for module resolution.\n */\n conditions?: string[];\n\n /**\n * Array of strings indicating what file extensions should be used for module resolution.\n *\n * @defaultValue `['.mjs', '.js', '.mts', '.ts', '.jsx', '.tsx', '.json']`\n */\n extensions?: string[];\n\n /**\n * Array of strings indicating what modules should be deduplicated to a single version in the build.\n *\n * @remarks\n * This option is useful for ensuring that only one version of a module is included in the bundle, which can help reduce bundle size and avoid conflicts.\n */\n dedupe?: string[];\n\n /**\n * Array of strings or regular expressions that indicate what modules are builtin for the environment.\n */\n builtins?: (string | RegExp)[];\n\n /**\n * Define global variable replacements.\n *\n * @remarks\n * This option allows you to specify global constants that will be replaced in the code during the build process. It is similar to the `define` option in esbuild and Vite, enabling you to replace specific identifiers with constant expressions at build time.\n *\n * @example\n * ```ts\n * {\n * define: {\n * __VERSION__: '\"1.0.0\"',\n * __DEV__: 'process.env.NODE_ENV !== \"production\"'\n * }\n * }\n * ```\n *\n * @see https://esbuild.github.io/api/#define\n * @see https://vitejs.dev/config/build-options.html#define\n * @see https://github.com/rollup/plugins/tree/master/packages/replace\n */\n define?: Record<string, any>;\n\n /**\n * Global variables that will have import statements injected where necessary\n *\n * @remarks\n * This option allows you to specify global variables that should be automatically imported from specified modules whenever they are used in the code. This is particularly useful for polyfilling Node.js globals in a browser environment.\n *\n * @example\n * ```ts\n * {\n * inject: {\n * process: 'process/browser',\n * Buffer: ['buffer', 'Buffer'],\n * }\n * }\n * ```\n *\n * @see https://github.com/rollup/plugins/tree/master/packages/inject\n */\n inject?: Record<string, string | string[]>;\n\n /**\n * The alias mappings to use for module resolution during the build process.\n *\n * @remarks\n * This option allows you to define custom path aliases for modules, which can be useful for simplifying imports and managing dependencies.\n *\n * @example\n * ```ts\n * {\n * alias: {\n * \"@utils\": \"./src/utils\",\n * \"@components\": \"./src/components\"\n * }\n * }\n * ```\n *\n * @see https://github.com/rollup/plugins/tree/master/packages/alias\n */\n alias?:\n | Record<string, string>\n | Array<{\n find: string | RegExp;\n replacement: string;\n }>;\n\n /**\n * A list of modules that should not be bundled, even if they are external dependencies.\n *\n * @remarks\n * This option is useful for excluding specific modules from the bundle, such as Node.js built-in modules or other libraries that should not be bundled.\n */\n external?: (string | RegExp)[];\n\n /**\n * A list of modules that should always be bundled, even if they are external dependencies.\n */\n noExternal?: (string | RegExp)[];\n\n /**\n * Should the Powerlines CLI processes skip bundling the `node_modules` directory?\n */\n skipNodeModulesBundle?: boolean;\n\n /**\n * If true, `process.env` referenced in code will be preserved as-is and evaluated in runtime. Otherwise, it is statically replaced as an empty object.\n *\n * @defaultValue false\n */\n keepProcessEnv?: boolean;\n\n /**\n * An optional set of override options to apply to the selected build variant.\n *\n * @remarks\n * This option allows you to provide configuration options with the guarantee that they will **not** be overridden and will take precedence over other build configurations.\n */\n override?: Record<string, any>;\n}\n\nexport type BuildResolvedConfig = Omit<BuildConfig, \"override\">;\n\n// ESBuild\nexport type ESBuildBuildConfig = Omit<\n ExternalESBuildOptions,\n | \"entryPoints\"\n | \"sourceRoot\"\n | \"platform\"\n | \"outdir\"\n | \"env\"\n | \"assets\"\n | \"external\"\n | \"inject\"\n | \"tsconfig\"\n | \"tsconfigRaw\"\n | \"logLevel\"\n> &\n BuildConfig;\nexport type ESBuildResolvedBuildConfig = Omit<\n ExternalESBuildOptions,\n \"inject\"\n> &\n BuildResolvedConfig;\n\n// Vite\nexport type ViteBuildConfig = Omit<\n ExternalViteUserConfig,\n | \"entry\"\n | \"entryPoints\"\n | \"tsconfig\"\n | \"tsconfigRaw\"\n | \"environments\"\n | \"output\"\n> &\n BuildConfig & {\n /**\n * Optimize deps config\n */\n optimizeDeps?: Omit<DepOptimizationOptions, \"extensions\">;\n };\nexport type ViteResolvedBuildConfig = ExternalViteUserConfig &\n BuildResolvedConfig;\n\n// Webpack\nexport type WebpackBuildConfig = Omit<\n ExternalWebpackOptions,\n \"name\" | \"entry\" | \"entryPoints\" | \"tsconfig\" | \"tsconfigRaw\"\n> &\n BuildConfig;\nexport type WebpackResolvedBuildConfig = ExternalWebpackOptions &\n BuildResolvedConfig;\n\n// Rspack\nexport type RspackBuildConfig = Omit<\n ExternalRspackOptions,\n \"name\" | \"entry\" | \"entryPoints\" | \"tsconfig\" | \"tsconfigRaw\"\n> &\n BuildConfig;\nexport type RspackResolvedBuildConfig = ExternalRspackOptions &\n BuildResolvedConfig;\n\n// Rollup\nexport type RollupBuildOutputConfig = Omit<\n ExternalRollupOutputOptions,\n \"dir\" | \"format\"\n>;\nexport type RollupBuildConfig = Omit<\n ExternalRollupOptions,\n \"entry\" | \"external\" | \"input\" | \"output\" | \"logLevel\"\n> & {\n output: RollupBuildOutputConfig | RollupBuildOutputConfig[];\n} & BuildConfig;\nexport type RollupResolvedBuildConfig = ExternalRollupOptions &\n BuildResolvedConfig;\n\n// Rolldown\nexport type RolldownBuildConfig = Omit<\n ExternalRolldownOptions,\n \"input\" | \"external\" | \"tsconfig\" | \"logLevel\" | \"output\"\n> &\n BuildConfig;\nexport type RolldownResolvedBuildConfig = ExternalRolldownOptions &\n BuildResolvedConfig;\n\n// Tsup\nexport type TsupBuildConfig = Partial<\n Omit<\n ExternalTsupOptions,\n | \"userOptions\"\n | \"tsconfig\"\n | \"tsconfigRaw\"\n | \"assets\"\n | \"outputPath\"\n | \"mode\"\n | \"format\"\n | \"platform\"\n | \"projectRoot\"\n | \"clean\"\n | \"env\"\n | \"entry\"\n | \"entryPoints\"\n | \"external\"\n | \"noExternal\"\n | \"skipNodeModulesBundle\"\n >\n> &\n BuildConfig;\nexport type TsupResolvedBuildConfig = ExternalTsupOptions & BuildResolvedConfig;\n\n// Tsdown\nexport type TsdownBuildConfig = Partial<\n Omit<\n ExternalTsdownOptions,\n | \"name\"\n | \"outDir\"\n | \"clean\"\n | \"cwd\"\n | \"tsconfig\"\n | \"publicDir\"\n | \"copy\"\n | \"alias\"\n | \"format\"\n | \"platform\"\n | \"env\"\n | \"define\"\n | \"entry\"\n | \"external\"\n | \"noExternal\"\n | \"skipNodeModulesBundle\"\n >\n> &\n BuildConfig;\nexport type TsdownResolvedBuildConfig = ExternalTsdownOptions &\n BuildResolvedConfig;\n\n// Unbuild\nexport type UnbuildBuildConfig = Partial<\n Omit<\n ExternalUnbuildOptions,\n | \"tsconfig\"\n | \"tsconfigRaw\"\n | \"assets\"\n | \"outputPath\"\n | \"mode\"\n | \"format\"\n | \"platform\"\n | \"projectRoot\"\n | \"env\"\n | \"entry\"\n | \"entryPoints\"\n >\n> &\n BuildConfig;\nexport type UnbuildResolvedBuildConfig = ExternalUnbuildOptions &\n BuildResolvedConfig;\n\n// Farm\nexport type FarmBuildConfig = Partial<\n Omit<\n ExternalFarmOptions,\n | \"tsconfig\"\n | \"tsconfigRaw\"\n | \"assets\"\n | \"outputPath\"\n | \"mode\"\n | \"format\"\n | \"platform\"\n | \"projectRoot\"\n | \"env\"\n | \"entry\"\n | \"entryPoints\"\n >\n> &\n BuildConfig;\nexport type FarmResolvedBuildConfig = ExternalFarmOptions & BuildResolvedConfig;\n\n// Bun\nexport type BunBuildConfig = Partial<\n Omit<\n ExternalBunOptions,\n \"assets\" | \"platform\" | \"root\" | \"env\" | \"entryPoints\"\n >\n> &\n BuildConfig;\nexport type BunResolvedBuildConfig = ExternalBunOptions & BuildResolvedConfig;\n"]}
@@ -79,5 +79,5 @@ function createPluginContext(plugin, environment) {
79
79
  __name(createPluginContext, "createPluginContext");
80
80
 
81
81
  export { createPluginContext };
82
- //# sourceMappingURL=chunk-HEMW2YZA.js.map
83
- //# sourceMappingURL=chunk-HEMW2YZA.js.map
82
+ //# sourceMappingURL=chunk-7PD2L3PS.js.map
83
+ //# sourceMappingURL=chunk-7PD2L3PS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/lib/contexts/plugin-context.ts"],"names":["createPluginContext","plugin","environment","normalizeMessage","message","isString","log","extendLog","name","replaceAll","callHookFn","hook","options","args","$$internal","api","callHook","sequential","result","Proxy","get","_","prop","LogLevelLabel","ERROR","WARN","INFO","DEBUG","TRACE","set","value","includes","String"],"mappings":"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","file":"chunk-HEMW2YZA.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { UnpluginMessage } from \"unplugin\";\nimport { CallHookOptions } from \"../../internal/helpers/hooks\";\nimport { LogFn } from \"../../types/config\";\nimport { EnvironmentContext, PluginContext } from \"../../types/context\";\nimport {\n HookKeys,\n InferHookParameters,\n InferHookReturnType\n} from \"../../types/hooks\";\nimport {\n UNSAFE_EnvironmentContext,\n UNSAFE_PluginContext\n} from \"../../types/internal\";\nimport { Plugin } from \"../../types/plugin\";\nimport { ResolvedConfig } from \"../../types/resolved\";\n\n/**\n * Create a Proxy-based PluginContext\n *\n * @param plugin - The plugin instance\n * @param environment - The environment context\n * @returns The proxied plugin context\n */\nexport function createPluginContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>(\n plugin: Plugin<PluginContext<TResolvedConfig>>,\n environment: UNSAFE_EnvironmentContext<TResolvedConfig>\n): UNSAFE_PluginContext<TResolvedConfig> {\n const normalizeMessage = (message: string | UnpluginMessage): string => {\n return isString(message) ? message : message.message;\n };\n\n const log: LogFn = environment.extendLog(plugin.name.replaceAll(\":\", \" - \"));\n\n const callHookFn = async <\n TKey extends HookKeys<PluginContext<TResolvedConfig>>\n >(\n hook: TKey,\n options: CallHookOptions,\n ...args: InferHookParameters<PluginContext<TResolvedConfig>, TKey>\n ): Promise<\n InferHookReturnType<PluginContext<TResolvedConfig>, TKey> | undefined\n > => {\n return environment.$$internal.api.callHook(\n hook,\n {\n sequential: true,\n result: \"merge\",\n ...options,\n environment\n } as Parameters<typeof environment.$$internal.api.callHook>[1],\n ...args\n );\n };\n\n return new Proxy({} as UNSAFE_PluginContext<TResolvedConfig>, {\n get(_, prop) {\n if (prop === \"$$internal\") {\n return {\n ...environment.$$internal,\n environment,\n callHook: callHookFn\n };\n }\n\n if (prop === \"log\" || prop === \"logger\") {\n return log;\n }\n\n if (prop === \"error\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.ERROR, normalizeMessage(message));\n };\n }\n\n if (prop === \"warn\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.WARN, normalizeMessage(message));\n };\n }\n\n if (prop === \"info\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.INFO, normalizeMessage(message));\n };\n }\n\n if (prop === \"debug\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.DEBUG, normalizeMessage(message));\n };\n }\n\n if (prop === \"trace\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.TRACE, normalizeMessage(message));\n };\n }\n\n return environment[prop as keyof EnvironmentContext<TResolvedConfig>];\n },\n set(_, prop, value) {\n if (\n [\n \"$$internal\",\n \"environment\",\n \"config\",\n \"log\",\n \"logger\",\n \"error\",\n \"warn\",\n \"plugins\",\n \"hooks\",\n \"addPlugin\",\n \"selectHooks\"\n ].includes(prop as string)\n ) {\n log(\n LogLevelLabel.WARN,\n `Cannot set read-only property \"${String(prop)}\"`\n );\n\n return false;\n }\n\n environment[prop as keyof EnvironmentContext<TResolvedConfig>] = value;\n return true;\n }\n });\n}\n"]}
1
+ {"version":3,"sources":["../../src/lib/contexts/plugin-context.ts"],"names":["createPluginContext","plugin","environment","normalizeMessage","message","isString","log","extendLog","name","replaceAll","callHookFn","hook","options","args","$$internal","api","callHook","sequential","result","Proxy","get","_","prop","LogLevelLabel","ERROR","WARN","INFO","DEBUG","TRACE","set","value","includes","String"],"mappings":"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","file":"chunk-7PD2L3PS.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { UnpluginMessage } from \"unplugin\";\nimport { CallHookOptions } from \"../../internal/helpers/hooks\";\nimport { LogFn } from \"../../types/config\";\nimport { EnvironmentContext, PluginContext } from \"../../types/context\";\nimport { InferHookParameters, InferHookReturnType } from \"../../types/hooks\";\nimport {\n UNSAFE_EnvironmentContext,\n UNSAFE_PluginContext\n} from \"../../types/internal\";\nimport { Plugin } from \"../../types/plugin\";\nimport { ResolvedConfig } from \"../../types/resolved\";\n\n/**\n * Create a Proxy-based PluginContext\n *\n * @param plugin - The plugin instance\n * @param environment - The environment context\n * @returns The proxied plugin context\n */\nexport function createPluginContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>(\n plugin: Plugin<PluginContext<TResolvedConfig>>,\n environment: UNSAFE_EnvironmentContext<TResolvedConfig>\n): UNSAFE_PluginContext<TResolvedConfig> {\n const normalizeMessage = (message: string | UnpluginMessage): string => {\n return isString(message) ? message : message.message;\n };\n\n const log: LogFn = environment.extendLog(plugin.name.replaceAll(\":\", \" - \"));\n\n const callHookFn = async <TKey extends string>(\n hook: TKey,\n options: CallHookOptions,\n ...args: InferHookParameters<PluginContext<TResolvedConfig>, TKey>\n ): Promise<\n InferHookReturnType<PluginContext<TResolvedConfig>, TKey> | undefined\n > => {\n return environment.$$internal.api.callHook(\n hook,\n {\n sequential: true,\n result: \"merge\",\n ...options,\n environment\n } as Parameters<typeof environment.$$internal.api.callHook>[1],\n ...args\n );\n };\n\n return new Proxy({} as UNSAFE_PluginContext<TResolvedConfig>, {\n get(_, prop) {\n if (prop === \"$$internal\") {\n return {\n ...environment.$$internal,\n environment,\n callHook: callHookFn\n };\n }\n\n if (prop === \"log\" || prop === \"logger\") {\n return log;\n }\n\n if (prop === \"error\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.ERROR, normalizeMessage(message));\n };\n }\n\n if (prop === \"warn\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.WARN, normalizeMessage(message));\n };\n }\n\n if (prop === \"info\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.INFO, normalizeMessage(message));\n };\n }\n\n if (prop === \"debug\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.DEBUG, normalizeMessage(message));\n };\n }\n\n if (prop === \"trace\") {\n return (message: string | UnpluginMessage) => {\n log(LogLevelLabel.TRACE, normalizeMessage(message));\n };\n }\n\n return environment[prop as keyof EnvironmentContext<TResolvedConfig>];\n },\n set(_, prop, value) {\n if (\n [\n \"$$internal\",\n \"environment\",\n \"config\",\n \"log\",\n \"logger\",\n \"error\",\n \"warn\",\n \"plugins\",\n \"hooks\",\n \"addPlugin\",\n \"selectHooks\"\n ].includes(prop as string)\n ) {\n log(\n LogLevelLabel.WARN,\n `Cannot set read-only property \"${String(prop)}\"`\n );\n\n return false;\n }\n\n environment[prop as keyof EnvironmentContext<TResolvedConfig>] = value;\n return true;\n }\n });\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { PowerlinesEnvironmentContext } from './chunk-XHDL2XZB.js';
2
- import { PowerlinesContext } from './chunk-XAALLEOG.js';
1
+ import { PowerlinesEnvironmentContext } from './chunk-XDUEQVFC.js';
2
+ import { PowerlinesContext } from './chunk-TWAVU346.js';
3
3
  import { loadWorkspaceConfig } from './chunk-Q25ZPXA7.js';
4
4
  import { __name } from './chunk-7QVYU63E.js';
5
5
  import { LogLevelLabel } from '@storm-software/config-tools/types';
@@ -254,5 +254,5 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends PowerlinesContext
254
254
  };
255
255
 
256
256
  export { PowerlinesAPIContext };
257
- //# sourceMappingURL=chunk-PWKYZBQQ.js.map
258
- //# sourceMappingURL=chunk-PWKYZBQQ.js.map
257
+ //# sourceMappingURL=chunk-FI4QUQV2.js.map
258
+ //# sourceMappingURL=chunk-FI4QUQV2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internal/helpers/environment.ts","../../src/lib/contexts/api-context.ts"],"names":["DEFAULT_ENVIRONMENT","GLOBAL_ENVIRONMENT","createEnvironment","name","userConfig","defu","environments","title","titleCase","ssr","mainFields","build","platform","extensions","consumer","preview","port","open","strictPort","host","allowedHosts","cors","headers","undefined","createDefaultEnvironment","PowerlinesAPIContext","PowerlinesContext","from","workspaceRoot","config","context","loadWorkspaceConfig","root","withUserConfig","powerlinesPath","resolvePackage","Error","$$internal","value","environment","Object","values","log","createLog","plugins","workspaceConfig","init","Promise","all","toArray","keys","length","map","env","in","PowerlinesEnvironmentContext","fromConfig","isSetObject","inlineConfig","withInlineConfig","plugin","addPlugin","options","isHighPriority","push","getEnvironment","LogLevelLabel","DEBUG","chalk","bold","cyanBright","WARN","getEnvironmentSafe","toEnvironment"],"mappings":"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","file":"chunk-PWKYZBQQ.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport defu from \"defu\";\nimport { APIContext, Context } from \"../../types/context\";\nimport { EnvironmentResolvedConfig } from \"../../types/resolved\";\n\nexport const DEFAULT_ENVIRONMENT = \"default\" as const;\nexport const GLOBAL_ENVIRONMENT = \"__GLOBAL__\" as const;\n\nexport function createEnvironment<TContext extends Context = Context>(\n name: string,\n userConfig: TContext[\"config\"][\"userConfig\"]\n): EnvironmentResolvedConfig {\n return defu(\n userConfig.environments?.[name] ?? {},\n {\n name,\n title: userConfig.title || titleCase(userConfig.name),\n ssr: false,\n mainFields:\n userConfig.build?.platform === \"browser\"\n ? [\"browser\", \"module\", \"jsnext:main\", \"jsnext\"]\n : [\"module\", \"jsnext:main\", \"jsnext\"],\n extensions: [\".mjs\", \".js\", \".mts\", \".ts\", \".jsx\", \".tsx\", \".json\"],\n consumer: userConfig.build?.platform === \"browser\" ? \"client\" : \"server\",\n preview:\n userConfig.build?.platform === \"browser\"\n ? {\n port: 5173,\n open: true,\n strictPort: false,\n // https: false,\n host: \"localhost\",\n allowedHosts: [\".\"],\n cors: true,\n headers: {}\n }\n : undefined\n },\n userConfig\n ) as EnvironmentResolvedConfig;\n}\n\nexport function createDefaultEnvironment<\n TContext extends APIContext = APIContext\n>(userConfig: TContext[\"config\"][\"userConfig\"]): EnvironmentResolvedConfig {\n return createEnvironment(DEFAULT_ENVIRONMENT, userConfig);\n}\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { toArray } from \"@stryke/convert/to-array\";\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport chalk from \"chalk\";\nimport {\n createDefaultEnvironment,\n createEnvironment,\n GLOBAL_ENVIRONMENT\n} from \"../../internal/helpers/environment\";\nimport {\n InitialUserConfig,\n InlineConfig,\n LogFn,\n UserConfig,\n WorkspaceConfig\n} from \"../../types/config\";\nimport {\n APIContext,\n EnvironmentContext,\n InitContextOptions,\n PluginContext\n} from \"../../types/context\";\nimport {\n UNSAFE_ContextInternal,\n UNSAFE_EnvironmentContext\n} from \"../../types/internal\";\nimport { Plugin } from \"../../types/plugin\";\nimport {\n EnvironmentResolvedConfig,\n ResolvedConfig\n} from \"../../types/resolved\";\nimport { loadWorkspaceConfig } from \"../config-file\";\nimport { PowerlinesContext } from \"./context\";\nimport { PowerlinesEnvironmentContext } from \"./environment-context\";\n\nexport class PowerlinesAPIContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>\n extends PowerlinesContext<TResolvedConfig>\n implements APIContext<TResolvedConfig>\n{\n #environments: Record<string, UNSAFE_EnvironmentContext<TResolvedConfig>> =\n {};\n\n #plugins: Plugin<PluginContext<TResolvedConfig>>[] = [];\n\n #log!: LogFn;\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceRoot - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static override async from<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceRoot: string,\n config: InitialUserConfig<TResolvedConfig[\"userConfig\"]>\n ): Promise<APIContext<TResolvedConfig>> {\n const context = new PowerlinesAPIContext<TResolvedConfig>(\n await loadWorkspaceConfig(workspaceRoot, config.root)\n );\n await context.withUserConfig(config);\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override get $$internal(): UNSAFE_ContextInternal<TResolvedConfig> {\n return super.$$internal;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override set $$internal(\n value: UNSAFE_ContextInternal<TResolvedConfig>\n ) {\n super.$$internal = value;\n for (const environment of Object.values(this.environments)) {\n environment.$$internal = super.$$internal;\n }\n }\n\n /**\n * A record of all environments by name\n */\n public get environments(): Record<\n string,\n UNSAFE_EnvironmentContext<TResolvedConfig>\n > {\n return this.#environments;\n }\n\n public override get log(): LogFn {\n if (!this.#log) {\n this.#log = this.createLog();\n }\n\n return this.#log;\n }\n\n public get plugins(): Array<Plugin<PluginContext<TResolvedConfig>>> {\n return this.#plugins;\n }\n\n protected constructor(workspaceConfig: WorkspaceConfig) {\n super(workspaceConfig);\n }\n\n /**\n * Initialize the context with the provided configuration options\n *\n * @param config - The partial user configuration to use for initialization.\n */\n protected override async init(\n config: Partial<TResolvedConfig[\"userConfig\"]> = {}\n ) {\n await super.init(config);\n\n await Promise.all(\n toArray(\n this.config.userConfig.environments &&\n Object.keys(this.config.userConfig.environments).length > 0\n ? Object.keys(this.config.userConfig.environments).map(name =>\n createEnvironment(name, this.config.userConfig)\n )\n : createDefaultEnvironment(this.config.userConfig)\n ).map(async env => {\n this.#environments[env.name] = await this.in(env);\n })\n );\n }\n\n /**\n * A function to copy the context and update the fields for a specific environment\n *\n * @param environment - The environment configuration to use.\n * @returns A new context instance with the updated environment.\n */\n public async in(\n environment: EnvironmentResolvedConfig\n ): Promise<UNSAFE_EnvironmentContext<TResolvedConfig>> {\n let context: UNSAFE_EnvironmentContext<TResolvedConfig>;\n if (this.environments[environment.name]) {\n context = this.environments[environment.name] as any;\n } else {\n context = (await PowerlinesEnvironmentContext.fromConfig(\n this.workspaceConfig,\n this.config\n )) as any;\n }\n\n if (isSetObject(this.config.inlineConfig)) {\n await context.withInlineConfig(this.config.inlineConfig);\n }\n\n context.environment = environment;\n context.plugins = [];\n\n for (const plugin of this.plugins) {\n await context.addPlugin(plugin);\n }\n\n return context;\n }\n\n /**\n * Update the context using a new user configuration options\n *\n * @param userConfig - The new user configuration options.\n */\n public override async withUserConfig(\n userConfig: InitialUserConfig<TResolvedConfig[\"userConfig\"]>,\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withUserConfig(userConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withUserConfig(\n userConfig as UserConfig,\n options\n );\n })\n );\n }\n\n /**\n * Update the context using a new inline configuration options\n *\n * @param inlineConfig - The new inline configuration options.\n */\n public override async withInlineConfig(\n inlineConfig: TResolvedConfig[\"inlineConfig\"],\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withInlineConfig(inlineConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withInlineConfig(\n inlineConfig as InlineConfig,\n options\n );\n })\n );\n }\n\n /**\n * Add a plugin to the API context and all environments\n *\n * @param plugin - The plugin to add.\n */\n public async addPlugin(plugin: Plugin<PluginContext<TResolvedConfig>>) {\n this.plugins.push(plugin);\n\n await Promise.all(\n Object.keys(this.environments).map(async name => {\n await this.environments[name]!.addPlugin(plugin);\n })\n );\n }\n\n /**\n * Get an environment by name, or the default environment if no name is provided\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context.\n */\n public async getEnvironment(name?: string) {\n let environment: EnvironmentContext<TResolvedConfig> | undefined;\n if (name) {\n environment = this.environments[name];\n }\n\n if (Object.keys(this.environments).length === 1) {\n environment = this.environments[Object.keys(this.environments)[0]!];\n\n this.log(\n LogLevelLabel.DEBUG,\n `Applying the only configured environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n if (!environment) {\n if (name) {\n throw new Error(`Environment \"${name}\" not found.`);\n }\n\n environment = await this.in(\n createDefaultEnvironment(this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.WARN,\n `No environment specified, and no default environment found. Using a temporary default environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n return environment;\n }\n\n /**\n * A safe version of `getEnvironment` that returns `undefined` if the environment is not found\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context or `undefined` if not found.\n */\n public async getEnvironmentSafe(\n name?: string\n ): Promise<EnvironmentContext<TResolvedConfig> | undefined> {\n try {\n return await this.getEnvironment(name);\n } catch {\n return undefined;\n }\n }\n\n /**\n * A function to merge all configured environments into a single context.\n *\n * @remarks\n * If only one environment is configured, that environment will be returned directly.\n *\n * @returns A promise that resolves to a merged/global environment context.\n */\n public async toEnvironment(): Promise<EnvironmentContext<TResolvedConfig>> {\n let environment: EnvironmentContext<TResolvedConfig>;\n if (Object.keys(this.environments).length > 1) {\n environment = await this.in(\n createEnvironment(GLOBAL_ENVIRONMENT, this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.DEBUG,\n `Combined all ${Object.keys(this.environments).length} environments into a single global context.`\n );\n } else {\n environment = await this.getEnvironment();\n }\n\n return environment;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/internal/helpers/environment.ts","../../src/lib/contexts/api-context.ts"],"names":["DEFAULT_ENVIRONMENT","GLOBAL_ENVIRONMENT","createEnvironment","name","userConfig","defu","environments","title","titleCase","ssr","mainFields","build","platform","extensions","consumer","preview","port","open","strictPort","host","allowedHosts","cors","headers","undefined","createDefaultEnvironment","PowerlinesAPIContext","PowerlinesContext","from","workspaceRoot","config","context","loadWorkspaceConfig","root","withUserConfig","powerlinesPath","resolvePackage","Error","$$internal","value","environment","Object","values","log","createLog","plugins","workspaceConfig","init","Promise","all","toArray","keys","length","map","env","in","PowerlinesEnvironmentContext","fromConfig","isSetObject","inlineConfig","withInlineConfig","plugin","addPlugin","options","isHighPriority","push","getEnvironment","LogLevelLabel","DEBUG","chalk","bold","cyanBright","WARN","getEnvironmentSafe","toEnvironment"],"mappings":"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","file":"chunk-FI4QUQV2.js","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport defu from \"defu\";\nimport { APIContext, Context } from \"../../types/context\";\nimport { EnvironmentResolvedConfig } from \"../../types/resolved\";\n\nexport const DEFAULT_ENVIRONMENT = \"default\" as const;\nexport const GLOBAL_ENVIRONMENT = \"__GLOBAL__\" as const;\n\nexport function createEnvironment<TContext extends Context = Context>(\n name: string,\n userConfig: TContext[\"config\"][\"userConfig\"]\n): EnvironmentResolvedConfig {\n return defu(\n userConfig.environments?.[name] ?? {},\n {\n name,\n title: userConfig.title || titleCase(userConfig.name),\n ssr: false,\n mainFields:\n userConfig.build?.platform === \"browser\"\n ? [\"browser\", \"module\", \"jsnext:main\", \"jsnext\"]\n : [\"module\", \"jsnext:main\", \"jsnext\"],\n extensions: [\".mjs\", \".js\", \".mts\", \".ts\", \".jsx\", \".tsx\", \".json\"],\n consumer: userConfig.build?.platform === \"browser\" ? \"client\" : \"server\",\n preview:\n userConfig.build?.platform === \"browser\"\n ? {\n port: 5173,\n open: true,\n strictPort: false,\n // https: false,\n host: \"localhost\",\n allowedHosts: [\".\"],\n cors: true,\n headers: {}\n }\n : undefined\n },\n userConfig\n ) as EnvironmentResolvedConfig;\n}\n\nexport function createDefaultEnvironment<\n TContext extends APIContext = APIContext\n>(userConfig: TContext[\"config\"][\"userConfig\"]): EnvironmentResolvedConfig {\n return createEnvironment(DEFAULT_ENVIRONMENT, userConfig);\n}\n","/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { toArray } from \"@stryke/convert/to-array\";\nimport { resolvePackage } from \"@stryke/fs/resolve\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport chalk from \"chalk\";\nimport {\n createDefaultEnvironment,\n createEnvironment,\n GLOBAL_ENVIRONMENT\n} from \"../../internal/helpers/environment\";\nimport {\n InitialUserConfig,\n InlineConfig,\n LogFn,\n UserConfig,\n WorkspaceConfig\n} from \"../../types/config\";\nimport {\n APIContext,\n EnvironmentContext,\n InitContextOptions,\n PluginContext\n} from \"../../types/context\";\nimport {\n UNSAFE_ContextInternal,\n UNSAFE_EnvironmentContext\n} from \"../../types/internal\";\nimport { Plugin } from \"../../types/plugin\";\nimport {\n EnvironmentResolvedConfig,\n ResolvedConfig\n} from \"../../types/resolved\";\nimport { loadWorkspaceConfig } from \"../config-file\";\nimport { PowerlinesContext } from \"./context\";\nimport { PowerlinesEnvironmentContext } from \"./environment-context\";\n\nexport class PowerlinesAPIContext<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n>\n extends PowerlinesContext<TResolvedConfig>\n implements APIContext<TResolvedConfig>\n{\n #environments: Record<string, UNSAFE_EnvironmentContext<TResolvedConfig>> =\n {};\n\n #plugins: Plugin<PluginContext<TResolvedConfig>>[] = [];\n\n #log!: LogFn;\n\n /**\n * Create a new Storm context from the workspace root and user config.\n *\n * @param workspaceRoot - The root directory of the workspace.\n * @param config - The user configuration options.\n * @returns A promise that resolves to the new context.\n */\n public static override async from<\n TResolvedConfig extends ResolvedConfig = ResolvedConfig\n >(\n workspaceRoot: string,\n config: InitialUserConfig<TResolvedConfig[\"userConfig\"]>\n ): Promise<APIContext<TResolvedConfig>> {\n const context = new PowerlinesAPIContext<TResolvedConfig>(\n await loadWorkspaceConfig(workspaceRoot, config.root)\n );\n await context.withUserConfig(config);\n\n const powerlinesPath = await resolvePackage(\"powerlines\");\n if (!powerlinesPath) {\n throw new Error(\"Could not resolve `powerlines` package location.\");\n }\n\n context.powerlinesPath = powerlinesPath;\n\n return context;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override get $$internal(): UNSAFE_ContextInternal<TResolvedConfig> {\n return super.$$internal;\n }\n\n /**\n * Internal context fields and methods\n *\n * @danger\n * This field is for internal use only and should not be accessed or modified directly. It is unstable and can be changed at anytime.\n *\n * @internal\n */\n public override set $$internal(\n value: UNSAFE_ContextInternal<TResolvedConfig>\n ) {\n super.$$internal = value;\n for (const environment of Object.values(this.environments)) {\n environment.$$internal = super.$$internal;\n }\n }\n\n /**\n * A record of all environments by name\n */\n public get environments(): Record<\n string,\n UNSAFE_EnvironmentContext<TResolvedConfig>\n > {\n return this.#environments;\n }\n\n public override get log(): LogFn {\n if (!this.#log) {\n this.#log = this.createLog();\n }\n\n return this.#log;\n }\n\n public get plugins(): Array<Plugin<PluginContext<TResolvedConfig>>> {\n return this.#plugins;\n }\n\n protected constructor(workspaceConfig: WorkspaceConfig) {\n super(workspaceConfig);\n }\n\n /**\n * Initialize the context with the provided configuration options\n *\n * @param config - The partial user configuration to use for initialization.\n */\n protected override async init(\n config: Partial<TResolvedConfig[\"userConfig\"]> = {}\n ) {\n await super.init(config);\n\n await Promise.all(\n toArray(\n this.config.userConfig.environments &&\n Object.keys(this.config.userConfig.environments).length > 0\n ? Object.keys(this.config.userConfig.environments).map(name =>\n createEnvironment(name, this.config.userConfig)\n )\n : createDefaultEnvironment(this.config.userConfig)\n ).map(async env => {\n this.#environments[env.name] = await this.in(env);\n })\n );\n }\n\n /**\n * A function to copy the context and update the fields for a specific environment\n *\n * @param environment - The environment configuration to use.\n * @returns A new context instance with the updated environment.\n */\n public async in(\n environment: EnvironmentResolvedConfig\n ): Promise<UNSAFE_EnvironmentContext<TResolvedConfig>> {\n let context: UNSAFE_EnvironmentContext<TResolvedConfig>;\n if (this.environments[environment.name]) {\n context = this.environments[environment.name] as any;\n } else {\n context = (await PowerlinesEnvironmentContext.fromConfig(\n this.workspaceConfig,\n this.config\n )) as any;\n }\n\n if (isSetObject(this.config.inlineConfig)) {\n await context.withInlineConfig(this.config.inlineConfig);\n }\n\n context.environment = environment;\n context.plugins = [];\n\n for (const plugin of this.plugins) {\n await context.addPlugin(plugin);\n }\n\n return context;\n }\n\n /**\n * Update the context using a new user configuration options\n *\n * @param userConfig - The new user configuration options.\n */\n public override async withUserConfig(\n userConfig: InitialUserConfig<TResolvedConfig[\"userConfig\"]>,\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withUserConfig(userConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withUserConfig(\n userConfig as UserConfig,\n options\n );\n })\n );\n }\n\n /**\n * Update the context using a new inline configuration options\n *\n * @param inlineConfig - The new inline configuration options.\n */\n public override async withInlineConfig(\n inlineConfig: TResolvedConfig[\"inlineConfig\"],\n options: InitContextOptions = {\n isHighPriority: true\n }\n ) {\n await super.withInlineConfig(inlineConfig, options);\n\n await Promise.all(\n Object.keys(this.#environments).map(async name => {\n await this.#environments[name]!.withInlineConfig(\n inlineConfig as InlineConfig,\n options\n );\n })\n );\n }\n\n /**\n * Add a plugin to the API context and all environments\n *\n * @param plugin - The plugin to add.\n */\n public async addPlugin(plugin: Plugin<PluginContext<TResolvedConfig>>) {\n this.plugins.push(plugin);\n\n await Promise.all(\n Object.keys(this.environments).map(async name => {\n await this.environments[name]!.addPlugin(plugin);\n })\n );\n }\n\n /**\n * Get an environment by name, or the default environment if no name is provided\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context.\n */\n public async getEnvironment(name?: string) {\n let environment: EnvironmentContext<TResolvedConfig> | undefined;\n if (name) {\n environment = this.environments[name];\n }\n\n if (Object.keys(this.environments).length === 1) {\n environment = this.environments[Object.keys(this.environments)[0]!];\n\n this.log(\n LogLevelLabel.DEBUG,\n `Applying the only configured environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n if (!environment) {\n if (name) {\n throw new Error(`Environment \"${name}\" not found.`);\n }\n\n environment = await this.in(\n createDefaultEnvironment(this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.WARN,\n `No environment specified, and no default environment found. Using a temporary default environment: ${chalk.bold.cyanBright(\n environment?.environment.name\n )}`\n );\n }\n\n return environment;\n }\n\n /**\n * A safe version of `getEnvironment` that returns `undefined` if the environment is not found\n *\n * @param name - The name of the environment to retrieve.\n * @returns The requested environment context or `undefined` if not found.\n */\n public async getEnvironmentSafe(\n name?: string\n ): Promise<EnvironmentContext<TResolvedConfig> | undefined> {\n try {\n return await this.getEnvironment(name);\n } catch {\n return undefined;\n }\n }\n\n /**\n * A function to merge all configured environments into a single context.\n *\n * @remarks\n * If only one environment is configured, that environment will be returned directly.\n *\n * @returns A promise that resolves to a merged/global environment context.\n */\n public async toEnvironment(): Promise<EnvironmentContext<TResolvedConfig>> {\n let environment: EnvironmentContext<TResolvedConfig>;\n if (Object.keys(this.environments).length > 1) {\n environment = await this.in(\n createEnvironment(GLOBAL_ENVIRONMENT, this.config.userConfig)\n );\n\n this.log(\n LogLevelLabel.DEBUG,\n `Combined all ${Object.keys(this.environments).length} environments into a single global context.`\n );\n } else {\n environment = await this.getEnvironment();\n }\n\n return environment;\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkMFC7UJHT_cjs = require('./chunk-MFC7UJHT.cjs');
4
- var chunkT3VYM4BO_cjs = require('./chunk-T3VYM4BO.cjs');
5
- var chunkC7KNYLNP_cjs = require('./chunk-C7KNYLNP.cjs');
4
+ var chunk4QMQCXAG_cjs = require('./chunk-4QMQCXAG.cjs');
5
+ var chunkUXLXQOJD_cjs = require('./chunk-UXLXQOJD.cjs');
6
6
  var chunkBJGMF356_cjs = require('./chunk-BJGMF356.cjs');
7
7
  var chunkZWLSNYIN_cjs = require('./chunk-ZWLSNYIN.cjs');
8
8
  var chunkQHTL2U3L_cjs = require('./chunk-QHTL2U3L.cjs');
@@ -224,35 +224,32 @@ ${value || ""}`.trim();
224
224
  }
225
225
  return false;
226
226
  });
227
- async function callHook(context, hook, options, ...args) {
228
- const handlers = context.selectHooks(hook, options);
229
- if (handlers.length > 0) {
230
- context.log(types.LogLevelLabel.DEBUG, ` \u{1F9E9} Calling plugin hook: ${chalk3__default.default.bold.cyanBright(`${hook}${options?.order ? ` (${options.order})` : ""}`)}`);
227
+ async function callHook(context, key, options, ...args) {
228
+ const hooks = context.selectHooks(key, options);
229
+ if (hooks.length > 0) {
230
+ context.log(types.LogLevelLabel.DEBUG, ` \u{1F9E9} Calling plugin hook: ${chalk3__default.default.bold.cyanBright(`${key}${options?.order ? ` (${options.order})` : ""}`)}`);
231
+ const invokeHook = /* @__PURE__ */ chunkPK6SKIKE_cjs.__name(async (hook, hookArgs) => {
232
+ return Reflect.apply(hook.handler, hook.context, hookArgs);
233
+ }, "invokeHook");
231
234
  let results = [];
232
235
  if (options?.sequential === false) {
233
- results = await Promise.all(handlers.map(async (handler) => {
234
- if (!isFunction.isFunction(handler.handle)) {
235
- throw new Error(`Plugin hook handler for hook "${hook}" is not a function.`);
236
+ results = await Promise.all(hooks.map(async (hook) => {
237
+ if (!isFunction.isFunction(hook.handler)) {
238
+ throw new Error(`Plugin hook handler for hook "${key}" is not a function.`);
236
239
  }
237
- return Promise.resolve(
238
- // eslint-disable-next-line ts/no-unsafe-call
239
- handler.handle.apply(handler.context, [
240
- ...args
241
- ])
242
- );
240
+ return invokeHook(hook, [
241
+ ...args
242
+ ]);
243
243
  }));
244
244
  } else {
245
- for (const handler of handlers) {
246
- if (!isFunction.isFunction(handler.handle)) {
247
- throw new Error(`Plugin hook handler for hook "${hook}" is not a function.`);
245
+ for (const hook of hooks) {
246
+ if (!isFunction.isFunction(hook.handler)) {
247
+ throw new Error(`Plugin hook handler for hook "${key}" is not a function.`);
248
248
  }
249
249
  if (options?.result === "first" || options?.asNextParam === false) {
250
- results.push(await Promise.resolve(
251
- // eslint-disable-next-line ts/no-unsafe-call
252
- handler.handle.apply(handler.context, [
253
- ...args
254
- ])
255
- ));
250
+ results.push(await Promise.resolve(invokeHook(hook, [
251
+ ...args
252
+ ])));
256
253
  if (options?.result === "first" && isSet.isSet(results[results.length - 1])) {
257
254
  break;
258
255
  }
@@ -263,12 +260,9 @@ async function callHook(context, hook, options, ...args) {
263
260
  if (results.length > 0 && sequenceArgs.length > 0) {
264
261
  sequenceArgs[0] = isFunction.isFunction(options.asNextParam) ? await Promise.resolve(options.asNextParam(results[0])) : results[0];
265
262
  }
266
- const result = await Promise.resolve(
267
- // eslint-disable-next-line ts/no-unsafe-call
268
- handler.handle.apply(handler.context, [
269
- ...sequenceArgs
270
- ])
271
- );
263
+ const result = await Promise.resolve(invokeHook(hook, [
264
+ ...sequenceArgs
265
+ ]));
272
266
  if (result) {
273
267
  if (options?.result === "last") {
274
268
  results = [
@@ -493,7 +487,7 @@ var PowerlinesAPI = class _PowerlinesAPI {
493
487
  * @returns A new instance of the Powerlines API
494
488
  */
495
489
  static async from(workspaceRoot, config) {
496
- const api = new _PowerlinesAPI(await chunkT3VYM4BO_cjs.PowerlinesAPIContext.from(workspaceRoot, config));
490
+ const api = new _PowerlinesAPI(await chunk4QMQCXAG_cjs.PowerlinesAPIContext.from(workspaceRoot, config));
497
491
  api.#context.$$internal = {
498
492
  api,
499
493
  addPlugin: api.#addPlugin.bind(api)
@@ -1001,8 +995,8 @@ ${formatTypes(types$1)}
1001
995
  if (isPromise.isPromiseLike(config)) {
1002
996
  awaited = await Promise.resolve(config);
1003
997
  }
1004
- if (!chunkC7KNYLNP_cjs.isPluginConfig(awaited)) {
1005
- const invalid = chunkC7KNYLNP_cjs.findInvalidPluginConfig(awaited);
998
+ if (!chunkUXLXQOJD_cjs.isPluginConfig(awaited)) {
999
+ const invalid = chunkUXLXQOJD_cjs.findInvalidPluginConfig(awaited);
1006
1000
  throw new Error(`Invalid ${invalid && invalid.length > 1 ? "plugins" : "plugin"} specified in the configuration - ${invalid && invalid.length > 0 ? JSON.stringify(awaited) : invalid?.join("\n\n")}
1007
1001
 
1008
1002
  Please ensure the value is one of the following:
@@ -1014,7 +1008,7 @@ Please ensure the value is one of the following:
1014
1008
  - an array of plugins or plugin configurations`);
1015
1009
  }
1016
1010
  let plugins;
1017
- if (chunkC7KNYLNP_cjs.isPlugin(awaited)) {
1011
+ if (chunkUXLXQOJD_cjs.isPlugin(awaited)) {
1018
1012
  plugins = [
1019
1013
  awaited
1020
1014
  ];
@@ -1027,9 +1021,9 @@ Please ensure the value is one of the following:
1027
1021
  } else {
1028
1022
  plugins = toArray.toArray(resolved);
1029
1023
  }
1030
- } else if (Array.isArray(awaited) && awaited.every(chunkC7KNYLNP_cjs.isPlugin)) {
1024
+ } else if (Array.isArray(awaited) && awaited.every(chunkUXLXQOJD_cjs.isPlugin)) {
1031
1025
  plugins = awaited;
1032
- } else if (Array.isArray(awaited) && awaited.every(chunkC7KNYLNP_cjs.isPluginConfig)) {
1026
+ } else if (Array.isArray(awaited) && awaited.every(chunkUXLXQOJD_cjs.isPluginConfig)) {
1033
1027
  plugins = [];
1034
1028
  for (const pluginConfig of awaited) {
1035
1029
  const initialized = await this.#initPlugin(pluginConfig);
@@ -1037,10 +1031,10 @@ Please ensure the value is one of the following:
1037
1031
  plugins.push(...initialized);
1038
1032
  }
1039
1033
  }
1040
- } else if (chunkC7KNYLNP_cjs.isPluginConfigTuple(awaited) || chunkC7KNYLNP_cjs.isPluginConfigObject(awaited)) {
1034
+ } else if (chunkUXLXQOJD_cjs.isPluginConfigTuple(awaited) || chunkUXLXQOJD_cjs.isPluginConfigObject(awaited)) {
1041
1035
  let pluginConfig;
1042
1036
  let pluginOptions;
1043
- if (chunkC7KNYLNP_cjs.isPluginConfigTuple(awaited)) {
1037
+ if (chunkUXLXQOJD_cjs.isPluginConfigTuple(awaited)) {
1044
1038
  pluginConfig = awaited[0];
1045
1039
  pluginOptions = awaited?.length === 2 ? awaited[1] : void 0;
1046
1040
  } else {
@@ -1056,21 +1050,21 @@ Please ensure the value is one of the following:
1056
1050
  }
1057
1051
  } else if (isFunction.isFunction(pluginConfig)) {
1058
1052
  plugins = toArray.toArray(await Promise.resolve(pluginConfig(pluginOptions)));
1059
- } else if (Array.isArray(pluginConfig) && pluginConfig.every(chunkC7KNYLNP_cjs.isPlugin)) {
1053
+ } else if (Array.isArray(pluginConfig) && pluginConfig.every(chunkUXLXQOJD_cjs.isPlugin)) {
1060
1054
  plugins = pluginConfig;
1061
- } else if (chunkC7KNYLNP_cjs.isPlugin(pluginConfig)) {
1055
+ } else if (chunkUXLXQOJD_cjs.isPlugin(pluginConfig)) {
1062
1056
  plugins = toArray.toArray(pluginConfig);
1063
1057
  }
1064
1058
  }
1065
1059
  if (!plugins) {
1066
1060
  throw new Error(`The plugin configuration ${JSON.stringify(awaited)} is invalid. This configuration must point to a valid Powerlines plugin module.`);
1067
1061
  }
1068
- if (plugins.length > 0 && !plugins.every(chunkC7KNYLNP_cjs.isPlugin)) {
1062
+ if (plugins.length > 0 && !plugins.every(chunkUXLXQOJD_cjs.isPlugin)) {
1069
1063
  throw new Error(`The plugin option ${JSON.stringify(plugins)} does not export a valid module. This configuration must point to a valid Powerlines plugin module.`);
1070
1064
  }
1071
1065
  const result = [];
1072
1066
  for (const plugin of plugins) {
1073
- if (chunkC7KNYLNP_cjs.checkDedupe(plugin, this.context.plugins)) {
1067
+ if (chunkUXLXQOJD_cjs.checkDedupe(plugin, this.context.plugins)) {
1074
1068
  this.context.log(types.LogLevelLabel.TRACE, `Duplicate ${chalk3__default.default.bold.cyanBright(plugin.name)} plugin dependency detected - Skipping initialization.`);
1075
1069
  } else {
1076
1070
  result.push(plugin);
@@ -1151,10 +1145,10 @@ function createUnpluginFactory(variant, decorate) {
1151
1145
  });
1152
1146
  }
1153
1147
  chunkPK6SKIKE_cjs.__name(buildStart, "buildStart");
1154
- async function resolveId(id, importer, options = {
1148
+ async function resolveId(id, importer, options2 = {
1155
1149
  isEntry: false
1156
1150
  }) {
1157
- return api.context.resolve(id, importer, options);
1151
+ return api.context.resolve(id, importer, options2);
1158
1152
  }
1159
1153
  chunkPK6SKIKE_cjs.__name(resolveId, "resolveId");
1160
1154
  async function load(id) {
@@ -1198,7 +1192,7 @@ function createUnpluginFactory(variant, decorate) {
1198
1192
  });
1199
1193
  }
1200
1194
  chunkPK6SKIKE_cjs.__name(writeBundle, "writeBundle");
1201
- const result = {
1195
+ const options = {
1202
1196
  name: "powerlines",
1203
1197
  api,
1204
1198
  resolveId: {
@@ -1226,7 +1220,12 @@ function createUnpluginFactory(variant, decorate) {
1226
1220
  buildStart,
1227
1221
  writeBundle
1228
1222
  };
1229
- return decorate ? decorate(api, result) : result;
1223
+ const result = decorate ? decorate(api, options) : options;
1224
+ log(types.LogLevelLabel.DEBUG, "Unplugin initialized successfully.");
1225
+ return {
1226
+ api,
1227
+ ...result
1228
+ };
1230
1229
  } catch (error) {
1231
1230
  log(types.LogLevelLabel.FATAL, error?.message);
1232
1231
  throw error;
@@ -1236,5 +1235,5 @@ function createUnpluginFactory(variant, decorate) {
1236
1235
  chunkPK6SKIKE_cjs.__name(createUnpluginFactory, "createUnpluginFactory");
1237
1236
 
1238
1237
  exports.createUnpluginFactory = createUnpluginFactory;
1239
- //# sourceMappingURL=chunk-3RTOKGVV.cjs.map
1240
- //# sourceMappingURL=chunk-3RTOKGVV.cjs.map
1238
+ //# sourceMappingURL=chunk-G3BXMS2V.cjs.map
1239
+ //# sourceMappingURL=chunk-G3BXMS2V.cjs.map