powerlines 0.30.13 → 0.31.1

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 (251) hide show
  1. package/dist/{api-jxhfIQp9.d.cts → api-B0ptP6qb.d.cts} +1 -1
  2. package/dist/{api-CXv3AaZq.d.ts → api-T2Rpxoy_.d.ts} +1 -1
  3. package/dist/api.cjs +3 -3
  4. package/dist/api.d.cts +2 -2
  5. package/dist/api.d.ts +2 -2
  6. package/dist/api.js +2 -2
  7. package/dist/astro.cjs +5 -5
  8. package/dist/astro.d.cts +1 -1
  9. package/dist/astro.d.ts +1 -1
  10. package/dist/astro.js +4 -4
  11. package/dist/chunk-2TPZV3VK.cjs +12 -0
  12. package/dist/chunk-45YZCBHR.cjs +12 -0
  13. package/dist/{chunk-ZFMDBIE2.js → chunk-D5WIJFI4.js} +2 -2
  14. package/dist/{chunk-753CT77J.js → chunk-DZY3LNTY.js} +3 -3
  15. package/dist/{chunk-VLTSN4BC.js → chunk-EMIKBRCT.js} +61 -29
  16. package/dist/{chunk-LMASEANM.js → chunk-FJ5JKE4N.js} +18 -5
  17. package/dist/{chunk-YFKHICPO.cjs → chunk-GHDZ3BE6.cjs} +2 -2
  18. package/dist/{chunk-ZYU7E7JL.js → chunk-JGSCIWFQ.js} +2 -2
  19. package/dist/{chunk-6S6OZJYJ.js → chunk-NGRCYHUU.js} +3 -3
  20. package/dist/{chunk-XUT7OSUL.cjs → chunk-OENQ5VVB.cjs} +62 -30
  21. package/dist/{chunk-BLQAOMJB.js → chunk-RPBIX6JI.js} +3 -3
  22. package/dist/{chunk-R4HDRLOF.cjs → chunk-UDPMUFXM.cjs} +19 -6
  23. package/dist/{chunk-3YOLTBW7.cjs → chunk-VFXZVCGG.cjs} +2 -2
  24. package/dist/{chunk-4PIQOC7T.cjs → chunk-XTSKPL6I.cjs} +5 -5
  25. package/dist/{chunk-E2IMELHG.js → chunk-Z5MNSDM4.js} +3 -3
  26. package/dist/{chunk-73HMVW7B.cjs → chunk-ZLLAZ5LF.cjs} +4 -4
  27. package/dist/{context-Bzahbvre.d.cts → context-BGFgv6JB.d.cts} +19 -1
  28. package/dist/{context-DIXLOQWy.d.ts → context-Bv1Saa4e.d.ts} +19 -1
  29. package/dist/esbuild.cjs +7 -7
  30. package/dist/esbuild.d.cts +1 -1
  31. package/dist/esbuild.d.ts +1 -1
  32. package/dist/esbuild.js +4 -4
  33. package/dist/farm.cjs +4 -4
  34. package/dist/farm.d.cts +1 -1
  35. package/dist/farm.d.ts +1 -1
  36. package/dist/farm.js +3 -3
  37. package/dist/index.cjs +13 -13
  38. package/dist/index.d.cts +3 -3
  39. package/dist/index.d.ts +3 -3
  40. package/dist/index.js +4 -4
  41. package/dist/lib/{api-JesRJRuE.d.cts → api-Cpbei2p8.d.cts} +1 -1
  42. package/dist/lib/{api-D1XGInIf.d.ts → api-Xq9Nk4VC.d.ts} +1 -1
  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.cjs +3 -3
  46. package/dist/lib/build/index.d.cts +3 -3
  47. package/dist/lib/build/index.d.ts +3 -3
  48. package/dist/lib/build/index.js +1 -1
  49. package/dist/lib/build/rolldown.d.cts +1 -1
  50. package/dist/lib/build/rolldown.d.ts +1 -1
  51. package/dist/lib/build/rollup.d.cts +1 -1
  52. package/dist/lib/build/rollup.d.ts +1 -1
  53. package/dist/lib/build/rspack.d.cts +1 -1
  54. package/dist/lib/build/rspack.d.ts +1 -1
  55. package/dist/lib/build/tsdown.d.cts +1 -1
  56. package/dist/lib/build/tsdown.d.ts +1 -1
  57. package/dist/lib/build/tsup.d.cts +1 -1
  58. package/dist/lib/build/tsup.d.ts +1 -1
  59. package/dist/lib/build/unbuild.d.cts +3 -3
  60. package/dist/lib/build/unbuild.d.ts +3 -3
  61. package/dist/lib/build/vite.cjs +3 -3
  62. package/dist/lib/build/vite.d.cts +1 -1
  63. package/dist/lib/build/vite.d.ts +1 -1
  64. package/dist/lib/build/vite.js +1 -1
  65. package/dist/lib/build/webpack.d.cts +1 -1
  66. package/dist/lib/build/webpack.d.ts +1 -1
  67. package/dist/lib/{chunk-NRH2VGE4.js → chunk-72NPPPRF.js} +29 -4
  68. package/dist/lib/chunk-72NPPPRF.js.map +1 -0
  69. package/dist/lib/{chunk-YV2TNMIL.cjs → chunk-ACVINY5F.cjs} +30 -5
  70. package/dist/lib/chunk-ACVINY5F.cjs.map +1 -0
  71. package/dist/lib/{chunk-TMQFJ5FK.js → chunk-AEUGNAWZ.js} +35 -28
  72. package/dist/lib/chunk-AEUGNAWZ.js.map +1 -0
  73. package/dist/lib/{chunk-YFB6OGXJ.js → chunk-CRH3UFPJ.js} +17 -4
  74. package/dist/lib/chunk-CRH3UFPJ.js.map +1 -0
  75. package/dist/lib/{chunk-7OO4SKFN.cjs → chunk-DJR7QB4T.cjs} +17 -4
  76. package/dist/lib/chunk-DJR7QB4T.cjs.map +1 -0
  77. package/dist/lib/{chunk-DMQ7IY4L.js → chunk-FR2ZVFLT.js} +2 -2
  78. package/dist/lib/{chunk-DMQ7IY4L.js.map → chunk-FR2ZVFLT.js.map} +1 -1
  79. package/dist/lib/{chunk-VXSQ52OZ.cjs → chunk-O6E2NAHX.cjs} +36 -29
  80. package/dist/lib/chunk-O6E2NAHX.cjs.map +1 -0
  81. package/dist/lib/{chunk-OSLTVUMN.cjs → chunk-UHQU5ASL.cjs} +2 -2
  82. package/dist/lib/{chunk-OSLTVUMN.cjs.map → chunk-UHQU5ASL.cjs.map} +1 -1
  83. package/dist/lib/{config-jmSBo5Uf.d.ts → config-BR0ecb9N.d.ts} +32 -3
  84. package/dist/lib/{config-DQwfksQx.d.cts → config-CvJCttn8.d.cts} +32 -3
  85. package/dist/lib/config-file.d.cts +1 -1
  86. package/dist/lib/config-file.d.ts +1 -1
  87. package/dist/lib/contexts/api-context.cjs +3 -3
  88. package/dist/lib/contexts/api-context.d.cts +18 -3
  89. package/dist/lib/contexts/api-context.d.ts +18 -3
  90. package/dist/lib/contexts/api-context.js +2 -2
  91. package/dist/lib/contexts/context.d.cts +3 -3
  92. package/dist/lib/contexts/context.d.ts +3 -3
  93. package/dist/lib/contexts/environment-context.cjs +2 -2
  94. package/dist/lib/contexts/environment-context.d.cts +3 -3
  95. package/dist/lib/contexts/environment-context.d.ts +3 -3
  96. package/dist/lib/contexts/environment-context.js +1 -1
  97. package/dist/lib/contexts/index.cjs +4 -4
  98. package/dist/lib/contexts/index.d.cts +3 -3
  99. package/dist/lib/contexts/index.d.ts +3 -3
  100. package/dist/lib/contexts/index.js +2 -2
  101. package/dist/lib/contexts/plugin-context.d.cts +3 -3
  102. package/dist/lib/contexts/plugin-context.d.ts +3 -3
  103. package/dist/lib/entry.d.cts +1 -1
  104. package/dist/lib/entry.d.ts +1 -1
  105. package/dist/lib/fs/index.d.cts +1 -1
  106. package/dist/lib/fs/index.d.ts +1 -1
  107. package/dist/lib/fs/vfs.d.cts +1 -1
  108. package/dist/lib/fs/vfs.d.ts +1 -1
  109. package/dist/lib/index.cjs +6 -6
  110. package/dist/lib/index.d.cts +4 -4
  111. package/dist/lib/index.d.ts +4 -4
  112. package/dist/lib/index.js +3 -3
  113. package/dist/lib/{internal-BVDm0kBL.d.cts → internal-CgKAUH2G.d.cts} +2 -2
  114. package/dist/lib/{internal-BM4-dK4g.d.ts → internal-Dae64cVF.d.ts} +2 -2
  115. package/dist/lib/logger.d.cts +1 -1
  116. package/dist/lib/logger.d.ts +1 -1
  117. package/dist/lib/typescript/import-transformer.d.cts +1 -1
  118. package/dist/lib/typescript/import-transformer.d.ts +1 -1
  119. package/dist/lib/typescript/index.d.cts +1 -1
  120. package/dist/lib/typescript/index.d.ts +1 -1
  121. package/dist/lib/typescript/ts-morph.d.cts +1 -1
  122. package/dist/lib/typescript/ts-morph.d.ts +1 -1
  123. package/dist/lib/unplugin/factory.cjs +4 -4
  124. package/dist/lib/unplugin/factory.d.cts +3 -3
  125. package/dist/lib/unplugin/factory.d.ts +3 -3
  126. package/dist/lib/unplugin/factory.js +3 -3
  127. package/dist/lib/unplugin/helpers.d.cts +1 -1
  128. package/dist/lib/unplugin/helpers.d.ts +1 -1
  129. package/dist/lib/unplugin/index.cjs +4 -4
  130. package/dist/lib/unplugin/index.d.cts +3 -3
  131. package/dist/lib/unplugin/index.d.ts +3 -3
  132. package/dist/lib/unplugin/index.js +3 -3
  133. package/dist/lib/unplugin/plugin.d.cts +3 -3
  134. package/dist/lib/unplugin/plugin.d.ts +3 -3
  135. package/dist/lib/{unplugin-BZkVo2w3.d.cts → unplugin-DiXnp3FJ.d.cts} +2 -2
  136. package/dist/lib/{unplugin-DZeOgtvW.d.ts → unplugin-sk-4XDIu.d.ts} +2 -2
  137. package/dist/lib/utilities/bundle.d.cts +1 -1
  138. package/dist/lib/utilities/bundle.d.ts +1 -1
  139. package/dist/lib/utilities/cache.d.cts +1 -1
  140. package/dist/lib/utilities/cache.d.ts +1 -1
  141. package/dist/lib/utilities/file-header.d.cts +1 -1
  142. package/dist/lib/utilities/file-header.d.ts +1 -1
  143. package/dist/lib/utilities/index.d.cts +1 -1
  144. package/dist/lib/utilities/index.d.ts +1 -1
  145. package/dist/lib/utilities/meta.d.cts +1 -1
  146. package/dist/lib/utilities/meta.d.ts +1 -1
  147. package/dist/lib/utilities/resolve.d.cts +1 -1
  148. package/dist/lib/utilities/resolve.d.ts +1 -1
  149. package/dist/lib/utilities/source-file.d.cts +1 -1
  150. package/dist/lib/utilities/source-file.d.ts +1 -1
  151. package/dist/lib/utilities/source-map.d.cts +1 -1
  152. package/dist/lib/utilities/source-map.d.ts +1 -1
  153. package/dist/lib/utilities/worker.d.cts +1 -1
  154. package/dist/lib/utilities/worker.d.ts +1 -1
  155. package/dist/lib/utilities/write-file.d.cts +1 -1
  156. package/dist/lib/utilities/write-file.d.ts +1 -1
  157. package/dist/next.cjs +5 -5
  158. package/dist/next.js +4 -4
  159. package/dist/nuxt.cjs +8 -8
  160. package/dist/nuxt.d.cts +1 -1
  161. package/dist/nuxt.d.ts +1 -1
  162. package/dist/nuxt.js +6 -6
  163. package/dist/plugin-utils/{context-BusdtMHI.d.cts → context-BKItR0Gj.d.cts} +19 -1
  164. package/dist/plugin-utils/{context-BusdtMHI.d.ts → context-BKItR0Gj.d.ts} +19 -1
  165. package/dist/plugin-utils/context-helpers.d.cts +1 -1
  166. package/dist/plugin-utils/context-helpers.d.ts +1 -1
  167. package/dist/plugin-utils/enforce.d.cts +1 -1
  168. package/dist/plugin-utils/enforce.d.ts +1 -1
  169. package/dist/plugin-utils/extend.d.cts +1 -1
  170. package/dist/plugin-utils/extend.d.ts +1 -1
  171. package/dist/plugin-utils/get-config-path.d.cts +1 -1
  172. package/dist/plugin-utils/get-config-path.d.ts +1 -1
  173. package/dist/plugin-utils/helpers.d.cts +1 -1
  174. package/dist/plugin-utils/helpers.d.ts +1 -1
  175. package/dist/plugin-utils/index.d.cts +1 -1
  176. package/dist/plugin-utils/index.d.ts +1 -1
  177. package/dist/plugin-utils/merge.d.cts +1 -1
  178. package/dist/plugin-utils/merge.d.ts +1 -1
  179. package/dist/plugin-utils/paths.d.cts +1 -1
  180. package/dist/plugin-utils/paths.d.ts +1 -1
  181. package/dist/rolldown.cjs +7 -7
  182. package/dist/rolldown.d.cts +1 -1
  183. package/dist/rolldown.d.ts +1 -1
  184. package/dist/rolldown.js +4 -4
  185. package/dist/rollup.cjs +4 -4
  186. package/dist/rollup.d.cts +1 -1
  187. package/dist/rollup.d.ts +1 -1
  188. package/dist/rollup.js +3 -3
  189. package/dist/rspack.cjs +4 -4
  190. package/dist/rspack.d.cts +1 -1
  191. package/dist/rspack.d.ts +1 -1
  192. package/dist/rspack.js +3 -3
  193. package/dist/tsdown.cjs +5 -5
  194. package/dist/tsdown.js +4 -4
  195. package/dist/tsup.cjs +5 -5
  196. package/dist/tsup.js +4 -4
  197. package/dist/types/api.d.cts +2 -2
  198. package/dist/types/api.d.ts +2 -2
  199. package/dist/types/babel.d.cts +1 -1
  200. package/dist/types/babel.d.ts +1 -1
  201. package/dist/types/build.d.cts +13 -2
  202. package/dist/types/build.d.ts +13 -2
  203. package/dist/types/commands.d.cts +1 -1
  204. package/dist/types/commands.d.ts +1 -1
  205. package/dist/types/config.d.cts +1 -1
  206. package/dist/types/config.d.ts +1 -1
  207. package/dist/types/context.cjs +2 -2
  208. package/dist/types/context.d.cts +1 -1
  209. package/dist/types/context.d.ts +1 -1
  210. package/dist/types/context.js +1 -1
  211. package/dist/types/hooks.d.cts +1 -1
  212. package/dist/types/hooks.d.ts +1 -1
  213. package/dist/types/index.cjs +4 -4
  214. package/dist/types/index.d.cts +2 -2
  215. package/dist/types/index.d.ts +2 -2
  216. package/dist/types/index.js +2 -2
  217. package/dist/types/internal.d.cts +2 -2
  218. package/dist/types/internal.d.ts +2 -2
  219. package/dist/types/plugin.cjs +2 -2
  220. package/dist/types/plugin.d.cts +1 -1
  221. package/dist/types/plugin.d.ts +1 -1
  222. package/dist/types/plugin.js +1 -1
  223. package/dist/types/resolved.d.cts +1 -1
  224. package/dist/types/resolved.d.ts +1 -1
  225. package/dist/types/unplugin.d.cts +2 -2
  226. package/dist/types/unplugin.d.ts +2 -2
  227. package/dist/unloader.cjs +4 -4
  228. package/dist/unloader.d.cts +1 -1
  229. package/dist/unloader.d.ts +1 -1
  230. package/dist/unloader.js +3 -3
  231. package/dist/unplugin.cjs +6 -6
  232. package/dist/unplugin.d.cts +2 -2
  233. package/dist/unplugin.d.ts +2 -2
  234. package/dist/unplugin.js +4 -4
  235. package/dist/vite.cjs +7 -7
  236. package/dist/vite.d.cts +1 -1
  237. package/dist/vite.d.ts +1 -1
  238. package/dist/vite.js +4 -4
  239. package/dist/webpack.cjs +7 -7
  240. package/dist/webpack.d.cts +1 -1
  241. package/dist/webpack.d.ts +1 -1
  242. package/dist/webpack.js +4 -4
  243. package/package.json +13 -13
  244. package/dist/chunk-3QPWBUQF.cjs +0 -12
  245. package/dist/chunk-CA4T7HLA.cjs +0 -12
  246. package/dist/lib/chunk-7OO4SKFN.cjs.map +0 -1
  247. package/dist/lib/chunk-NRH2VGE4.js.map +0 -1
  248. package/dist/lib/chunk-TMQFJ5FK.js.map +0 -1
  249. package/dist/lib/chunk-VXSQ52OZ.cjs.map +0 -1
  250. package/dist/lib/chunk-YFB6OGXJ.js.map +0 -1
  251. package/dist/lib/chunk-YV2TNMIL.cjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { Loader } from '@storm-software/unbuild/types';
2
- import { U as UnbuildBuildConfig, C as Context, f as UnbuildResolvedBuildConfig } from '../config-jmSBo5Uf.js';
3
- import { U as UNSAFE_PluginContext } from '../internal-BM4-dK4g.js';
2
+ import { U as UnbuildBuildConfig, C as Context, f as UnbuildResolvedBuildConfig } from '../config-BR0ecb9N.js';
3
+ import { U as UNSAFE_PluginContext } from '../internal-Dae64cVF.js';
4
4
  import '@storm-software/build-tools/types';
5
5
  import '@storm-software/config-tools/types';
6
6
  import '@storm-software/config/types';
@@ -34,7 +34,7 @@ import '@stryke/types/array';
34
34
  import '../tsconfig-Bz-CiFqD.js';
35
35
  import '@stryke/types/tsconfig';
36
36
  import 'typescript';
37
- import '../api-D1XGInIf.js';
37
+ import '../api-Xq9Nk4VC.js';
38
38
 
39
39
  declare const DEFAULT_UNBUILD_CONFIG: Partial<UnbuildBuildConfig>;
40
40
  declare const unbuildLoader: (context: UNSAFE_PluginContext) => Loader;
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk7OO4SKFN_cjs = require('../chunk-7OO4SKFN.cjs');
3
+ var chunkDJR7QB4T_cjs = require('../chunk-DJR7QB4T.cjs');
4
4
  require('../chunk-LIZRGQES.cjs');
5
5
  require('../chunk-FQZQA4EJ.cjs');
6
6
  require('../chunk-YF57WETC.cjs');
@@ -10,11 +10,11 @@ require('../chunk-PK6SKIKE.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "DEFAULT_VITE_CONFIG", {
12
12
  enumerable: true,
13
- get: function () { return chunk7OO4SKFN_cjs.DEFAULT_VITE_CONFIG; }
13
+ get: function () { return chunkDJR7QB4T_cjs.DEFAULT_VITE_CONFIG; }
14
14
  });
15
15
  Object.defineProperty(exports, "extractViteConfig", {
16
16
  enumerable: true,
17
- get: function () { return chunk7OO4SKFN_cjs.extractViteConfig; }
17
+ get: function () { return chunkDJR7QB4T_cjs.extractViteConfig; }
18
18
  });
19
19
  //# sourceMappingURL=vite.cjs.map
20
20
  //# sourceMappingURL=vite.cjs.map
@@ -1,4 +1,4 @@
1
- import { V as ViteResolvedBuildConfig, C as Context } from '../config-DQwfksQx.cjs';
1
+ import { V as ViteResolvedBuildConfig, C as Context } from '../config-CvJCttn8.cjs';
2
2
  import '@storm-software/build-tools/types';
3
3
  import '@storm-software/config-tools/types';
4
4
  import '@storm-software/config/types';
@@ -1,4 +1,4 @@
1
- import { V as ViteResolvedBuildConfig, C as Context } from '../config-jmSBo5Uf.js';
1
+ import { V as ViteResolvedBuildConfig, C as Context } from '../config-BR0ecb9N.js';
2
2
  import '@storm-software/build-tools/types';
3
3
  import '@storm-software/config-tools/types';
4
4
  import '@storm-software/config/types';
@@ -1,4 +1,4 @@
1
- export { DEFAULT_VITE_CONFIG, extractViteConfig } from '../chunk-YFB6OGXJ.js';
1
+ export { DEFAULT_VITE_CONFIG, extractViteConfig } from '../chunk-CRH3UFPJ.js';
2
2
  import '../chunk-D5IEZABI.js';
3
3
  import '../chunk-KLU5DWCZ.js';
4
4
  import '../chunk-FFATMOAQ.js';
@@ -1,5 +1,5 @@
1
1
  import { Configuration } from 'webpack';
2
- import { C as Context } from '../config-DQwfksQx.cjs';
2
+ import { C as Context } from '../config-CvJCttn8.cjs';
3
3
  import '@storm-software/build-tools/types';
4
4
  import '@storm-software/config-tools/types';
5
5
  import '@storm-software/config/types';
@@ -1,5 +1,5 @@
1
1
  import { Configuration } from 'webpack';
2
- import { C as Context } from '../config-jmSBo5Uf.js';
2
+ import { C as Context } from '../config-BR0ecb9N.js';
3
3
  import '@storm-software/build-tools/types';
4
4
  import '@storm-software/config-tools/types';
5
5
  import '@storm-software/config/types';
@@ -1,4 +1,4 @@
1
- import { PowerlinesEnvironmentContext } from './chunk-DMQ7IY4L.js';
1
+ import { PowerlinesEnvironmentContext } from './chunk-FR2ZVFLT.js';
2
2
  import { PowerlinesContext } from './chunk-VN2OA25X.js';
3
3
  import { loadWorkspaceConfig } from './chunk-Q25ZPXA7.js';
4
4
  import { __name } from './chunk-7QVYU63E.js';
@@ -10,7 +10,8 @@ import chalk from 'chalk';
10
10
  import { titleCase } from '@stryke/string-format/title-case';
11
11
  import defu from 'defu';
12
12
 
13
- var DEFAULT_ENVIRONMENT = "default";
13
+ var DEFAULT_ENVIRONMENT = "__DEFAULT__";
14
+ var GLOBAL_ENVIRONMENT = "__GLOBAL__";
14
15
  function createEnvironment(name, userConfig) {
15
16
  return defu(userConfig.environments?.[name] ?? {}, {
16
17
  name,
@@ -219,6 +220,12 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends PowerlinesContext
219
220
  }
220
221
  return environment;
221
222
  }
223
+ /**
224
+ * A safe version of `getEnvironment` that returns `undefined` if the environment is not found
225
+ *
226
+ * @param name - The name of the environment to retrieve.
227
+ * @returns The requested environment context or `undefined` if not found.
228
+ */
222
229
  async getEnvironmentSafe(name) {
223
230
  try {
224
231
  return await this.getEnvironment(name);
@@ -226,8 +233,26 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends PowerlinesContext
226
233
  return void 0;
227
234
  }
228
235
  }
236
+ /**
237
+ * A function to merge all configured environments into a single context.
238
+ *
239
+ * @remarks
240
+ * If only one environment is configured, that environment will be returned directly.
241
+ *
242
+ * @returns A promise that resolves to a merged/global environment context.
243
+ */
244
+ async toEnvironment() {
245
+ let environment;
246
+ if (Object.keys(this.environments).length > 1) {
247
+ environment = await this.in(createEnvironment(GLOBAL_ENVIRONMENT, this.config.userConfig));
248
+ this.log(LogLevelLabel.DEBUG, `Combined all ${Object.keys(this.environments).length} environments into a single global context.`);
249
+ } else {
250
+ environment = await this.getEnvironment();
251
+ }
252
+ return environment;
253
+ }
229
254
  };
230
255
 
231
256
  export { PowerlinesAPIContext };
232
- //# sourceMappingURL=chunk-NRH2VGE4.js.map
233
- //# sourceMappingURL=chunk-NRH2VGE4.js.map
257
+ //# sourceMappingURL=chunk-72NPPPRF.js.map
258
+ //# sourceMappingURL=chunk-72NPPPRF.js.map
@@ -0,0 +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-72NPPPRF.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(\"engine\");\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,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkOSLTVUMN_cjs = require('./chunk-OSLTVUMN.cjs');
3
+ var chunkUHQU5ASL_cjs = require('./chunk-UHQU5ASL.cjs');
4
4
  var chunkCLLQO726_cjs = require('./chunk-CLLQO726.cjs');
5
5
  var chunk2JR645O3_cjs = require('./chunk-2JR645O3.cjs');
6
6
  var chunkPK6SKIKE_cjs = require('./chunk-PK6SKIKE.cjs');
@@ -17,7 +17,8 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
17
17
  var chalk__default = /*#__PURE__*/_interopDefault(chalk);
18
18
  var defu__default = /*#__PURE__*/_interopDefault(defu);
19
19
 
20
- var DEFAULT_ENVIRONMENT = "default";
20
+ var DEFAULT_ENVIRONMENT = "__DEFAULT__";
21
+ var GLOBAL_ENVIRONMENT = "__GLOBAL__";
21
22
  function createEnvironment(name, userConfig) {
22
23
  return defu__default.default(userConfig.environments?.[name] ?? {}, {
23
24
  name,
@@ -153,7 +154,7 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkCLLQO726_cjs
153
154
  if (this.environments[environment.name]) {
154
155
  context = this.environments[environment.name];
155
156
  } else {
156
- context = await chunkOSLTVUMN_cjs.PowerlinesEnvironmentContext.fromConfig(this.workspaceConfig, this.config);
157
+ context = await chunkUHQU5ASL_cjs.PowerlinesEnvironmentContext.fromConfig(this.workspaceConfig, this.config);
157
158
  }
158
159
  if (isSetObject.isSetObject(this.config.inlineConfig)) {
159
160
  await context.withInlineConfig(this.config.inlineConfig);
@@ -226,6 +227,12 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkCLLQO726_cjs
226
227
  }
227
228
  return environment;
228
229
  }
230
+ /**
231
+ * A safe version of `getEnvironment` that returns `undefined` if the environment is not found
232
+ *
233
+ * @param name - The name of the environment to retrieve.
234
+ * @returns The requested environment context or `undefined` if not found.
235
+ */
229
236
  async getEnvironmentSafe(name) {
230
237
  try {
231
238
  return await this.getEnvironment(name);
@@ -233,8 +240,26 @@ var PowerlinesAPIContext = class _PowerlinesAPIContext extends chunkCLLQO726_cjs
233
240
  return void 0;
234
241
  }
235
242
  }
243
+ /**
244
+ * A function to merge all configured environments into a single context.
245
+ *
246
+ * @remarks
247
+ * If only one environment is configured, that environment will be returned directly.
248
+ *
249
+ * @returns A promise that resolves to a merged/global environment context.
250
+ */
251
+ async toEnvironment() {
252
+ let environment;
253
+ if (Object.keys(this.environments).length > 1) {
254
+ environment = await this.in(createEnvironment(GLOBAL_ENVIRONMENT, this.config.userConfig));
255
+ this.log(types.LogLevelLabel.DEBUG, `Combined all ${Object.keys(this.environments).length} environments into a single global context.`);
256
+ } else {
257
+ environment = await this.getEnvironment();
258
+ }
259
+ return environment;
260
+ }
236
261
  };
237
262
 
238
263
  exports.PowerlinesAPIContext = PowerlinesAPIContext;
239
- //# sourceMappingURL=chunk-YV2TNMIL.cjs.map
240
- //# sourceMappingURL=chunk-YV2TNMIL.cjs.map
264
+ //# sourceMappingURL=chunk-ACVINY5F.cjs.map
265
+ //# sourceMappingURL=chunk-ACVINY5F.cjs.map
@@ -0,0 +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-ACVINY5F.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(\"engine\");\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,5 +1,5 @@
1
1
  import { getFileHeader } from './chunk-7R23HVGQ.js';
2
- import { PowerlinesAPIContext } from './chunk-NRH2VGE4.js';
2
+ import { PowerlinesAPIContext } from './chunk-72NPPPRF.js';
3
3
  import { isPluginConfig, isPlugin, isPluginConfigTuple, isPluginConfigObject, checkDedupe } from './chunk-VN2OA25X.js';
4
4
  import { writeMetaFile } from './chunk-45D4XIOK.js';
5
5
  import { createProgram } from './chunk-ZLWW2MXD.js';
@@ -790,32 +790,13 @@ ${formatTypes(types)}
790
790
  }) {
791
791
  this.context.log(LogLevelLabel.INFO, "\u{1F4E6} Building the Powerlines project");
792
792
  await this.prepare(inlineConfig);
793
- await this.#executeEnvironments(async (context) => {
794
- await this.callHook("build", {
795
- environment: context,
796
- order: "pre"
797
- });
798
- await this.callHook("build", {
799
- environment: context,
800
- order: "normal"
801
- });
802
- if (context.config.output.buildPath !== context.config.output.outputPath) {
803
- const sourcePath = appendPath(context.config.output.buildPath, context.workspaceConfig.workspaceRoot);
804
- const destinationPath = joinPaths(appendPath(context.config.output.outputPath, context.workspaceConfig.workspaceRoot), "dist");
805
- if (sourcePath !== destinationPath) {
806
- context.log(LogLevelLabel.INFO, `Copying build output files from project's build directory (${context.config.output.buildPath}) to the workspace's output directory (${context.config.output.outputPath}).`);
807
- await context.fs.copy(sourcePath, destinationPath);
808
- }
809
- }
810
- await Promise.all(context.config.output.assets.map(async (asset) => {
811
- context.log(LogLevelLabel.DEBUG, `Copying asset(s): ${chalk3.redBright(context.workspaceConfig.workspaceRoot === asset.input ? asset.glob : joinPaths(replacePath(asset.input, context.workspaceConfig.workspaceRoot), asset.glob))} -> ${chalk3.greenBright(joinPaths(replacePath(asset.output, context.workspaceConfig.workspaceRoot), asset.glob))} ${Array.isArray(asset.ignore) && asset.ignore.length > 0 ? ` (ignoring: ${asset.ignore.map((i) => chalk3.yellowBright(i)).join(", ")})` : ""}`);
812
- await context.fs.copy(asset, asset.output);
813
- }));
814
- await this.callHook("build", {
815
- environment: context,
816
- order: "post"
793
+ if (this.context.config.singleBuild) {
794
+ await this.#handleBuild(await this.#context.toEnvironment());
795
+ } else {
796
+ await this.#executeEnvironments(async (context) => {
797
+ await this.#handleBuild(context);
817
798
  });
818
- });
799
+ }
819
800
  this.context.log(LogLevelLabel.TRACE, "Powerlines build completed");
820
801
  }
821
802
  /**
@@ -904,6 +885,32 @@ ${formatTypes(types)}
904
885
  async [Symbol.asyncDispose]() {
905
886
  await this.finalize();
906
887
  }
888
+ async #handleBuild(context) {
889
+ await this.callHook("build", {
890
+ environment: context,
891
+ order: "pre"
892
+ });
893
+ await this.callHook("build", {
894
+ environment: context,
895
+ order: "normal"
896
+ });
897
+ if (context.config.output.buildPath !== context.config.output.outputPath) {
898
+ const sourcePath = appendPath(context.config.output.buildPath, context.workspaceConfig.workspaceRoot);
899
+ const destinationPath = joinPaths(appendPath(context.config.output.outputPath, context.workspaceConfig.workspaceRoot), "dist");
900
+ if (sourcePath !== destinationPath) {
901
+ context.log(LogLevelLabel.INFO, `Copying build output files from project's build directory (${context.config.output.buildPath}) to the workspace's output directory (${context.config.output.outputPath}).`);
902
+ await context.fs.copy(sourcePath, destinationPath);
903
+ }
904
+ }
905
+ await Promise.all(context.config.output.assets.map(async (asset) => {
906
+ context.log(LogLevelLabel.DEBUG, `Copying asset(s): ${chalk3.redBright(context.workspaceConfig.workspaceRoot === asset.input ? asset.glob : joinPaths(replacePath(asset.input, context.workspaceConfig.workspaceRoot), asset.glob))} -> ${chalk3.greenBright(joinPaths(replacePath(asset.output, context.workspaceConfig.workspaceRoot), asset.glob))} ${Array.isArray(asset.ignore) && asset.ignore.length > 0 ? ` (ignoring: ${asset.ignore.map((i) => chalk3.yellowBright(i)).join(", ")})` : ""}`);
907
+ await context.fs.copy(asset, asset.output);
908
+ }));
909
+ await this.callHook("build", {
910
+ environment: context,
911
+ order: "post"
912
+ });
913
+ }
907
914
  /**
908
915
  * Get the configured environments
909
916
  *
@@ -1180,5 +1187,5 @@ function createUnpluginFactory(variant, decorate) {
1180
1187
  __name(createUnpluginFactory, "createUnpluginFactory");
1181
1188
 
1182
1189
  export { createUnpluginFactory };
1183
- //# sourceMappingURL=chunk-TMQFJ5FK.js.map
1184
- //# sourceMappingURL=chunk-TMQFJ5FK.js.map
1190
+ //# sourceMappingURL=chunk-AEUGNAWZ.js.map
1191
+ //# sourceMappingURL=chunk-AEUGNAWZ.js.map