@powerlines/nx 0.11.222 → 0.11.224

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 (287) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/{src/base/base-executor.d.ts → base-executor-BKuqWAnc.d.mts} +14 -12
  3. package/dist/base-executor-BKuqWAnc.d.mts.map +1 -0
  4. package/dist/base-executor-CL9md5FK.d.cts +28 -0
  5. package/dist/base-executor-CL9md5FK.d.cts.map +1 -0
  6. package/dist/base-executor-DIVmWt0_.mjs +76 -0
  7. package/dist/base-executor-DIVmWt0_.mjs.map +1 -0
  8. package/dist/base-executor-hfeykVFL.cjs +83 -0
  9. package/dist/base-executor.schema-CH9f7UZz.d.cts +131 -0
  10. package/dist/base-executor.schema-CH9f7UZz.d.cts.map +1 -0
  11. package/dist/base-executor.schema-LJ14f-QU.d.mts +131 -0
  12. package/dist/base-executor.schema-LJ14f-QU.d.mts.map +1 -0
  13. package/dist/base-executor.untyped-Bet42T8_.mjs +139 -0
  14. package/dist/base-executor.untyped-Bet42T8_.mjs.map +1 -0
  15. package/dist/base-executor.untyped-DUgXmZji.cjs +144 -0
  16. package/dist/chunk-CbDLau6x.cjs +34 -0
  17. package/dist/constants-BHT2TeEj.cjs +39 -0
  18. package/dist/constants-DPeeG_si.mjs +34 -0
  19. package/dist/constants-DPeeG_si.mjs.map +1 -0
  20. package/dist/executor-9aTY5L1O.d.mts +155 -0
  21. package/dist/executor-9aTY5L1O.d.mts.map +1 -0
  22. package/dist/executor-BA-Xvw_2.cjs +23 -0
  23. package/dist/executor-BDu-MfKS.d.cts +155 -0
  24. package/dist/executor-BDu-MfKS.d.cts.map +1 -0
  25. package/dist/executor-BaJuosQ2.d.cts +139 -0
  26. package/dist/executor-BaJuosQ2.d.cts.map +1 -0
  27. package/dist/executor-BerELzzO.d.cts +165 -0
  28. package/dist/executor-BerELzzO.d.cts.map +1 -0
  29. package/dist/executor-C12a2R2m.d.mts +165 -0
  30. package/dist/executor-C12a2R2m.d.mts.map +1 -0
  31. package/dist/executor-CQoHBvIx.d.mts +155 -0
  32. package/dist/executor-CQoHBvIx.d.mts.map +1 -0
  33. package/dist/executor-CR4F9h0Q.mjs +13 -0
  34. package/dist/executor-CR4F9h0Q.mjs.map +1 -0
  35. package/dist/executor-CmOJDW7i.cjs +30 -0
  36. package/dist/executor-CsYeTG7f.d.mts +155 -0
  37. package/dist/executor-CsYeTG7f.d.mts.map +1 -0
  38. package/dist/executor-DXs-DQDq.cjs +23 -0
  39. package/dist/executor-DY3Q5btA.mjs +18 -0
  40. package/dist/executor-DY3Q5btA.mjs.map +1 -0
  41. package/dist/executor-DaM4shEF.d.mts +139 -0
  42. package/dist/executor-DaM4shEF.d.mts.map +1 -0
  43. package/dist/executor-DriX4F9a.mjs +13 -0
  44. package/dist/executor-DriX4F9a.mjs.map +1 -0
  45. package/dist/executor-DupYdy7P.cjs +23 -0
  46. package/dist/executor-_6Wimayo.d.cts +155 -0
  47. package/dist/executor-_6Wimayo.d.cts.map +1 -0
  48. package/dist/executor-dakLe5jY.mjs +13 -0
  49. package/dist/executor-dakLe5jY.mjs.map +1 -0
  50. package/dist/executor-gauQV_Qs.mjs +18 -0
  51. package/dist/executor-gauQV_Qs.mjs.map +1 -0
  52. package/dist/executor-q94V36zQ.d.cts +155 -0
  53. package/dist/executor-q94V36zQ.d.cts.map +1 -0
  54. package/dist/executor-tEMakUYi.cjs +30 -0
  55. package/dist/executors-C15iG1sF.mjs +1 -0
  56. package/dist/executors-D7478W2S.cjs +0 -0
  57. package/dist/executors-YbcSXKr5.d.mts +1 -0
  58. package/dist/executors-hX1C9GbI.d.cts +1 -0
  59. package/dist/executors.cjs +13 -0
  60. package/dist/executors.d.cts +9 -0
  61. package/dist/executors.d.mts +9 -11
  62. package/dist/executors.mjs +9 -9
  63. package/dist/generator-DeiwVUqC.mjs +11 -0
  64. package/dist/generator-DeiwVUqC.mjs.map +1 -0
  65. package/dist/generator-Dv37nXlF.d.cts +8 -0
  66. package/dist/generator-Dv37nXlF.d.cts.map +1 -0
  67. package/dist/generator-Uu2ErkQj.cjs +22 -0
  68. package/dist/generator-aA0eb35E.d.mts +8 -0
  69. package/dist/generator-aA0eb35E.d.mts.map +1 -0
  70. package/dist/generators-B8_tB0mD.d.cts +17 -0
  71. package/dist/generators-B8_tB0mD.d.cts.map +1 -0
  72. package/dist/generators-Bi9wzfNx.mjs +1 -0
  73. package/dist/generators-DymCAfYw.d.mts +17 -0
  74. package/dist/generators-DymCAfYw.d.mts.map +1 -0
  75. package/dist/generators-q39_jUCw.cjs +0 -0
  76. package/dist/generators.cjs +5 -0
  77. package/dist/generators.d.cts +3 -0
  78. package/dist/generators.d.mts +3 -19
  79. package/dist/generators.mjs +4 -3
  80. package/dist/index-BAMQksFF.d.mts +8 -0
  81. package/dist/index-BAMQksFF.d.mts.map +1 -0
  82. package/dist/index-C5yJ9lGj.d.cts +8 -0
  83. package/dist/index-C5yJ9lGj.d.cts.map +1 -0
  84. package/dist/index.cjs +21 -0
  85. package/dist/index.d.cts +13 -0
  86. package/dist/index.d.mts +13 -16
  87. package/dist/index.mjs +14 -14
  88. package/dist/plugin-A9gAUguP.cjs +12 -0
  89. package/dist/plugin-CODFOru1.d.cts +243 -0
  90. package/dist/plugin-CODFOru1.d.cts.map +1 -0
  91. package/dist/plugin-Dbr_Q4yi.mjs +8 -0
  92. package/dist/plugin-Dbr_Q4yi.mjs.map +1 -0
  93. package/dist/plugin-DpjoI0QS.d.mts +243 -0
  94. package/dist/plugin-DpjoI0QS.d.mts.map +1 -0
  95. package/dist/plugin-utilities-Ci8AHf-K.mjs +347 -0
  96. package/dist/plugin-utilities-Ci8AHf-K.mjs.map +1 -0
  97. package/dist/plugin-utilities-Ddlc3SiI.cjs +366 -0
  98. package/dist/src/base/base-executor.cjs +3 -0
  99. package/dist/src/base/base-executor.d.cts +3 -0
  100. package/dist/src/base/base-executor.d.mts +3 -26
  101. package/dist/src/base/base-executor.mjs +3 -3
  102. package/dist/src/base/base-executor.schema.d.cjs +0 -0
  103. package/dist/src/base/base-executor.schema.d.cts +2 -0
  104. package/dist/src/base/base-executor.schema.d.mts +2 -0
  105. package/dist/src/base/base-executor.untyped.cjs +3 -0
  106. package/dist/src/base/base-executor.untyped.d.cts +6 -0
  107. package/dist/src/base/base-executor.untyped.d.cts.map +1 -0
  108. package/dist/src/base/base-executor.untyped.d.mts +5 -3
  109. package/dist/src/base/base-executor.untyped.d.mts.map +1 -0
  110. package/dist/src/base/base-executor.untyped.mjs +3 -2
  111. package/dist/src/executors/build/executor.cjs +6 -0
  112. package/dist/src/executors/build/executor.d.cts +4 -0
  113. package/dist/src/executors/build/executor.d.mts +4 -7
  114. package/dist/src/executors/build/executor.mjs +4 -4
  115. package/dist/src/executors/build/untyped.cjs +26 -0
  116. package/dist/src/executors/build/untyped.d.cts +6 -0
  117. package/dist/src/executors/build/untyped.d.cts.map +1 -0
  118. package/dist/src/executors/build/untyped.d.mts +5 -3
  119. package/dist/src/executors/build/untyped.d.mts.map +1 -0
  120. package/dist/src/executors/build/untyped.mjs +23 -30
  121. package/dist/src/executors/build/untyped.mjs.map +1 -0
  122. package/dist/src/executors/clean/executor.cjs +6 -0
  123. package/dist/src/executors/clean/executor.d.cts +4 -0
  124. package/dist/src/executors/clean/executor.d.mts +4 -7
  125. package/dist/src/executors/clean/executor.mjs +4 -4
  126. package/dist/src/executors/clean/untyped.cjs +17 -0
  127. package/dist/src/executors/clean/untyped.d.cts +6 -0
  128. package/dist/src/executors/clean/untyped.d.cts.map +1 -0
  129. package/dist/src/executors/clean/untyped.d.mts +5 -3
  130. package/dist/src/executors/clean/untyped.d.mts.map +1 -0
  131. package/dist/src/executors/clean/untyped.mjs +12 -10
  132. package/dist/src/executors/clean/untyped.mjs.map +1 -0
  133. package/dist/src/executors/docs/executor.cjs +6 -0
  134. package/dist/src/executors/docs/executor.d.cts +4 -0
  135. package/dist/src/executors/docs/executor.d.mts +4 -7
  136. package/dist/src/executors/docs/executor.mjs +4 -4
  137. package/dist/src/executors/docs/untyped.cjs +18 -0
  138. package/dist/src/executors/docs/untyped.d.cts +6 -0
  139. package/dist/src/executors/docs/untyped.d.cts.map +1 -0
  140. package/dist/src/executors/docs/untyped.d.mts +5 -3
  141. package/dist/src/executors/docs/untyped.d.mts.map +1 -0
  142. package/dist/src/executors/docs/untyped.mjs +15 -13
  143. package/dist/src/executors/docs/untyped.mjs.map +1 -0
  144. package/dist/src/executors/lint/executor.cjs +6 -0
  145. package/dist/src/executors/lint/executor.d.cts +4 -0
  146. package/dist/src/executors/lint/executor.d.mts +4 -7
  147. package/dist/src/executors/lint/executor.mjs +4 -4
  148. package/dist/src/executors/lint/untyped.cjs +18 -0
  149. package/dist/src/executors/lint/untyped.d.cts +6 -0
  150. package/dist/src/executors/lint/untyped.d.cts.map +1 -0
  151. package/dist/src/executors/lint/untyped.d.mts +5 -3
  152. package/dist/src/executors/lint/untyped.d.mts.map +1 -0
  153. package/dist/src/executors/lint/untyped.mjs +15 -13
  154. package/dist/src/executors/lint/untyped.mjs.map +1 -0
  155. package/dist/src/executors/prepare/executor.cjs +6 -0
  156. package/dist/src/executors/prepare/executor.d.cts +4 -0
  157. package/dist/src/executors/prepare/executor.d.mts +4 -7
  158. package/dist/src/executors/prepare/executor.mjs +4 -4
  159. package/dist/src/executors/prepare/untyped.cjs +4 -0
  160. package/dist/src/executors/prepare/untyped.d.cts +6 -0
  161. package/dist/src/executors/prepare/untyped.d.cts.map +1 -0
  162. package/dist/src/executors/prepare/untyped.d.mts +5 -3
  163. package/dist/src/executors/prepare/untyped.d.mts.map +1 -0
  164. package/dist/src/executors/prepare/untyped.mjs +4 -3
  165. package/dist/src/generators/sync/generator.cjs +5 -0
  166. package/dist/src/generators/sync/generator.d.cts +2 -0
  167. package/dist/src/generators/sync/generator.d.mts +2 -6
  168. package/dist/src/generators/sync/generator.mjs +3 -2
  169. package/dist/src/generators/sync/untyped.cjs +23 -0
  170. package/dist/src/generators/sync/untyped.d.cts +6 -0
  171. package/dist/src/generators/sync/untyped.d.cts.map +1 -0
  172. package/dist/src/generators/sync/untyped.d.mts +5 -3
  173. package/dist/src/generators/sync/untyped.d.mts.map +1 -0
  174. package/dist/src/generators/sync/untyped.mjs +18 -16
  175. package/dist/src/generators/sync/untyped.mjs.map +1 -0
  176. package/dist/src/helpers/constants.cjs +3 -0
  177. package/dist/src/helpers/{constants.d.ts → constants.d.cts} +3 -1
  178. package/dist/src/helpers/constants.d.cts.map +1 -0
  179. package/dist/src/helpers/constants.d.mts +3 -1
  180. package/dist/src/helpers/constants.d.mts.map +1 -0
  181. package/dist/src/helpers/constants.mjs +3 -2
  182. package/dist/src/helpers/plugin-utilities.cjs +6 -0
  183. package/dist/src/helpers/plugin-utilities.d.cts +58 -0
  184. package/dist/src/helpers/plugin-utilities.d.cts.map +1 -0
  185. package/dist/src/helpers/plugin-utilities.d.mts +34 -31
  186. package/dist/src/helpers/plugin-utilities.d.mts.map +1 -0
  187. package/dist/src/helpers/plugin-utilities.mjs +4 -4
  188. package/dist/src/plugin/index.cjs +5 -0
  189. package/dist/src/plugin/index.d.cts +3 -0
  190. package/dist/src/plugin/index.d.mts +3 -6
  191. package/dist/src/plugin/index.mjs +5 -5
  192. package/dist/src/types/plugin.cjs +0 -0
  193. package/dist/src/types/plugin.d.cts +2 -0
  194. package/dist/src/types/plugin.d.mts +2 -241
  195. package/dist/src/types/plugin.mjs +1 -1
  196. package/dist/untyped-BIEzjl_J.mjs +27 -0
  197. package/dist/untyped-BIEzjl_J.mjs.map +1 -0
  198. package/dist/untyped-DKPJSDgJ.cjs +32 -0
  199. package/executors.json +1 -1
  200. package/generators.json +1 -1
  201. package/package.json +110 -93
  202. package/dist/chunk-23KFTIT2.mjs +0 -1
  203. package/dist/chunk-326QB2VK.mjs +0 -14
  204. package/dist/chunk-3BI2YVJ3.js +0 -156
  205. package/dist/chunk-3SNFDQEM.js +0 -26
  206. package/dist/chunk-4OMPO3GC.mjs +0 -154
  207. package/dist/chunk-5DJ7NANG.mjs +0 -15
  208. package/dist/chunk-5NTN2EU4.js +0 -18
  209. package/dist/chunk-7JSSYBGU.mjs +0 -15
  210. package/dist/chunk-ADMWJVSB.js +0 -374
  211. package/dist/chunk-GCIPEE4T.mjs +0 -28
  212. package/dist/chunk-IC47MFKB.mjs +0 -29
  213. package/dist/chunk-IOBDAGVL.js +0 -30
  214. package/dist/chunk-IQVSZEQ6.js +0 -31
  215. package/dist/chunk-JMPYKLTR.js +0 -18
  216. package/dist/chunk-JNVDFQTY.mjs +0 -4900
  217. package/dist/chunk-N2YKXZ5R.js +0 -2
  218. package/dist/chunk-NXR5JH7F.js +0 -10
  219. package/dist/chunk-O6YSETKJ.mjs +0 -4
  220. package/dist/chunk-O7Z4RX77.js +0 -4928
  221. package/dist/chunk-OFHFZ5IV.js +0 -18
  222. package/dist/chunk-PM55S4AK.mjs +0 -19
  223. package/dist/chunk-RLODK6TM.js +0 -281
  224. package/dist/chunk-RLYU2FOM.mjs +0 -366
  225. package/dist/chunk-SHUYVCID.js +0 -6
  226. package/dist/chunk-SQV3SFA4.mjs +0 -8
  227. package/dist/chunk-U4JIT4YZ.mjs +0 -19
  228. package/dist/chunk-UV4HQO3Y.mjs +0 -1
  229. package/dist/chunk-VYOHHZ4P.mjs +0 -15
  230. package/dist/chunk-W75JGXP2.mjs +0 -260
  231. package/dist/chunk-WUJKJGEW.js +0 -17
  232. package/dist/chunk-X666OUXC.js +0 -26
  233. package/dist/chunk-XO62WWX4.js +0 -2
  234. package/dist/executor-AQVlPFta.d.ts +0 -163
  235. package/dist/executor-BNmIhtpF.d.mts +0 -153
  236. package/dist/executor-C0A5mFLO.d.mts +0 -137
  237. package/dist/executor-Cep8-Y3A.d.mts +0 -153
  238. package/dist/executor-CkyahICv.d.ts +0 -137
  239. package/dist/executor-DOsxw-Ih.d.ts +0 -153
  240. package/dist/executor-DUQbjUVt.d.ts +0 -153
  241. package/dist/executor-O3MDQSFT.d.ts +0 -153
  242. package/dist/executor-U4mVkhQK.d.mts +0 -163
  243. package/dist/executor-Xt5qNzC5.d.mts +0 -153
  244. package/dist/executors.d.ts +0 -11
  245. package/dist/executors.js +0 -34
  246. package/dist/generators.d.ts +0 -19
  247. package/dist/generators.js +0 -16
  248. package/dist/index.d.ts +0 -16
  249. package/dist/index.js +0 -51
  250. package/dist/src/base/base-executor.js +0 -12
  251. package/dist/src/base/base-executor.schema.d.d.mts +0 -129
  252. package/dist/src/base/base-executor.schema.d.d.ts +0 -129
  253. package/dist/src/base/base-executor.schema.d.js +0 -2
  254. package/dist/src/base/base-executor.schema.d.mjs +0 -1
  255. package/dist/src/base/base-executor.untyped.d.ts +0 -5
  256. package/dist/src/base/base-executor.untyped.js +0 -10
  257. package/dist/src/executors/build/executor.d.ts +0 -7
  258. package/dist/src/executors/build/executor.js +0 -19
  259. package/dist/src/executors/build/untyped.d.ts +0 -5
  260. package/dist/src/executors/build/untyped.js +0 -37
  261. package/dist/src/executors/clean/executor.d.ts +0 -7
  262. package/dist/src/executors/clean/executor.js +0 -19
  263. package/dist/src/executors/clean/untyped.d.ts +0 -5
  264. package/dist/src/executors/clean/untyped.js +0 -19
  265. package/dist/src/executors/docs/executor.d.ts +0 -7
  266. package/dist/src/executors/docs/executor.js +0 -19
  267. package/dist/src/executors/docs/untyped.d.ts +0 -5
  268. package/dist/src/executors/docs/untyped.js +0 -20
  269. package/dist/src/executors/lint/executor.d.ts +0 -7
  270. package/dist/src/executors/lint/executor.js +0 -19
  271. package/dist/src/executors/lint/untyped.d.ts +0 -5
  272. package/dist/src/executors/lint/untyped.js +0 -20
  273. package/dist/src/executors/prepare/executor.d.ts +0 -7
  274. package/dist/src/executors/prepare/executor.js +0 -19
  275. package/dist/src/executors/prepare/untyped.d.ts +0 -5
  276. package/dist/src/executors/prepare/untyped.js +0 -11
  277. package/dist/src/generators/sync/generator.d.ts +0 -6
  278. package/dist/src/generators/sync/generator.js +0 -17
  279. package/dist/src/generators/sync/untyped.d.ts +0 -5
  280. package/dist/src/generators/sync/untyped.js +0 -25
  281. package/dist/src/helpers/constants.js +0 -11
  282. package/dist/src/helpers/plugin-utilities.d.ts +0 -55
  283. package/dist/src/helpers/plugin-utilities.js +0 -21
  284. package/dist/src/plugin/index.d.ts +0 -6
  285. package/dist/src/plugin/index.js +0 -14
  286. package/dist/src/types/plugin.d.ts +0 -241
  287. package/dist/src/types/plugin.js +0 -2
@@ -0,0 +1,347 @@
1
+ import { t as CONFIG_INPUTS } from "./constants-DPeeG_si.mjs";
2
+ import defu from "defu";
3
+ import "@storm-software/config-tools/logger";
4
+ import { isError } from "@stryke/type-checks/is-error";
5
+ import { createNodesFromFiles } from "@nx/devkit";
6
+ import { withNamedInputs } from "@storm-software/workspace-tools/utils/nx-json";
7
+ import { getProjectConfigFromProjectRoot, getProjectRoot, getRoot } from "@storm-software/workspace-tools/utils/plugin-helpers";
8
+ import { addProjectTag, setDefaultProjectTags } from "@storm-software/workspace-tools/utils/project-tags";
9
+ import { getEnvPaths } from "@stryke/env/get-env-paths";
10
+ import { existsSync } from "@stryke/fs/exists";
11
+ import { murmurhash } from "@stryke/hash/murmurhash";
12
+ import { joinPaths } from "@stryke/path/join-paths";
13
+ import { kebabCase } from "@stryke/string-format/kebab-case";
14
+ import { titleCase } from "@stryke/string-format/title-case";
15
+ import { isSetObject } from "@stryke/type-checks/is-set-object";
16
+ import { createJiti } from "jiti";
17
+ import { readFile } from "node:fs/promises";
18
+ import { readNxJson as readNxJson$1 } from "nx/src/config/nx-json.js";
19
+ import { readTargetsFromPackageJson } from "nx/src/utils/package-json.js";
20
+ import "@storm-software/config-tools/get-config";
21
+ import { appendPath } from "@stryke/path/append";
22
+ import { replacePath } from "@stryke/path/replace";
23
+ import { isFunction } from "@stryke/type-checks/is-function";
24
+ import { loadConfig } from "c12";
25
+ import "@stryke/convert/parse-type-definition";
26
+ import "@stryke/convert/to-array";
27
+ import "@stryke/helpers/get-unique";
28
+ import "@stryke/path/is-type";
29
+ import "@stryke/type-checks/is-object";
30
+ import "@stryke/type-checks/is-regexp";
31
+ import "@stryke/type-checks/is-set-string";
32
+ import "@stryke/type-checks/is-string";
33
+ import "@stryke/path/join";
34
+ import "@storm-software/config-tools/types";
35
+ import "@storm-software/config-tools/utilities/colors";
36
+ import "@stryke/helpers/noop";
37
+ import "chalk";
38
+ import "@stryke/fs/list-files";
39
+ import "@stryke/path/is-parent-path";
40
+ import "prettier";
41
+ import "@stryke/fs/read-file";
42
+ import "magic-string";
43
+ import Diff from "diff-match-patch";
44
+ import "@stryke/fs/write-file";
45
+
46
+ //#region ../core/src/lib/config.ts
47
+ /**
48
+ * Loads the user configuration file for the project.
49
+ *
50
+ * @param projectRoot - The root directory of the project.
51
+ * @param workspaceRoot - The root directory of the workspace.
52
+ * @param jiti - An instance of Jiti to resolve modules from
53
+ * @param command - The {@link PowerlinesCommand} string associated with the current running process
54
+ * @param mode - The mode in which the project is running (default is "production").
55
+ * @param configFile - An optional path to a specific configuration file.
56
+ * @param framework - The framework name to use for default configuration file names.
57
+ * @returns A promise that resolves to the resolved user configuration.
58
+ */
59
+ async function loadUserConfigFile(projectRoot, workspaceRoot, jiti, command, mode = "production", configFile, framework = "powerlines") {
60
+ let resolvedUserConfig = {};
61
+ let resolvedUserConfigFile;
62
+ if (configFile) resolvedUserConfigFile = existsSync(replacePath(configFile, projectRoot)) ? replacePath(configFile, projectRoot) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), replacePath(configFile, projectRoot))) ? joinPaths(appendPath(projectRoot, workspaceRoot), replacePath(configFile, projectRoot)) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), configFile)) ? joinPaths(appendPath(projectRoot, workspaceRoot), configFile) : void 0;
63
+ if (!resolvedUserConfigFile) resolvedUserConfigFile = existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.ts`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.ts`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.js`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.js`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.mts`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.mts`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.mjs`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.${mode}.config.mjs`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.ts`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.ts`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.js`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.js`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.mts`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.mts`) : existsSync(joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.mjs`)) ? joinPaths(appendPath(projectRoot, workspaceRoot), `${framework}.config.mjs`) : void 0;
64
+ if (resolvedUserConfigFile) {
65
+ const resolved = await jiti.import(jiti.esmResolve(resolvedUserConfigFile));
66
+ if (resolved) {
67
+ let config = {};
68
+ if (isFunction(resolved)) config = await Promise.resolve(resolved({
69
+ command,
70
+ mode,
71
+ isSsrBuild: false,
72
+ isPreview: false
73
+ }));
74
+ if (isSetObject(config)) resolvedUserConfig = {
75
+ ...config,
76
+ config,
77
+ configFile: resolvedUserConfigFile
78
+ };
79
+ }
80
+ }
81
+ const result = await loadConfig({
82
+ cwd: projectRoot,
83
+ name: framework,
84
+ envName: mode,
85
+ globalRc: true,
86
+ packageJson: true,
87
+ dotenv: true,
88
+ jiti
89
+ });
90
+ return defu(resolvedUserConfig, isSetObject(result?.config) ? {
91
+ ...result.config,
92
+ ...result
93
+ } : {});
94
+ }
95
+
96
+ //#endregion
97
+ //#region ../core/src/lib/constants/meta.ts
98
+ const ROOT_HASH_LENGTH = 45;
99
+
100
+ //#endregion
101
+ //#region ../core/src/lib/utilities/source-map.ts
102
+ const dmp = new Diff();
103
+
104
+ //#endregion
105
+ //#region src/helpers/plugin-utilities.ts
106
+ /**
107
+ * Generates Nx input strings for the Powerlines configuration file, replacing the `{framework}` placeholder with the specified framework name.
108
+ *
109
+ * @param framework - The framework name to use in the input strings
110
+ * @returns An array of Nx input strings for the configuration file
111
+ */
112
+ function getNxTargetInputs(framework) {
113
+ return CONFIG_INPUTS.map((input) => input.replace("{framework}", framework));
114
+ }
115
+ /**
116
+ * Generates Nx input strings for the Powerlines configuration file, replacing the `{framework}` placeholder with the specified framework name.
117
+ *
118
+ * @param framework - The framework name to use in the input strings
119
+ * @returns An array of Nx input strings for the configuration file
120
+ */
121
+ function getNxPluginInputs(framework) {
122
+ return `**/{${getNxTargetInputs(framework).map((input) => input.replace("{projectRoot}/", "")).join(",")}}`;
123
+ }
124
+ /**
125
+ * Creates an Nx plugin that integrates Powerlines into the Nx build process.
126
+ *
127
+ * @param opts - Options for creating the Nx plugin
128
+ * @returns A CreateNodesV2 function that can be used as an Nx plugin
129
+ */
130
+ function createNxPlugin(opts) {
131
+ const framework = opts?.framework || "powerlines";
132
+ const title = `${titleCase(framework)} Nx Plugin`;
133
+ try {
134
+ const name = opts?.name || `${framework}/nx/plugin`;
135
+ const artifactsFolder = opts?.artifactsFolder || `{projectRoot}/.${framework}`;
136
+ const targetInputs = getNxTargetInputs(framework);
137
+ const pluginInputs = getNxPluginInputs(framework);
138
+ return [pluginInputs, async (configFiles, options, contextV2) => {
139
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Initializing the ${title} for the following inputs: ${pluginInputs}`);
140
+ const envPaths = getEnvPaths({
141
+ orgId: "storm-software",
142
+ appId: framework,
143
+ workspaceRoot: contextV2.workspaceRoot
144
+ });
145
+ if (!envPaths.cache) throw new Error("The cache directory could not be determined.");
146
+ const nxJson = readNxJson$1(contextV2.workspaceRoot);
147
+ const resolver = createJiti(contextV2.workspaceRoot, {
148
+ debug: !!options?.debug,
149
+ interopDefault: true,
150
+ fsCache: joinPaths(envPaths.cache, "nx-plugin", murmurhash(contextV2.workspaceRoot, { maxLength: ROOT_HASH_LENGTH }), "jiti"),
151
+ moduleCache: true
152
+ });
153
+ return createNodesFromFiles(async (configFile, _, context) => {
154
+ try {
155
+ const projectRoot = getProjectRoot(configFile, contextV2.workspaceRoot);
156
+ if (!projectRoot) {
157
+ console.error(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - package.json and ${framework} configuration files (i.e. ${framework}.config.ts) must be located in the project root directory: ${configFile}`);
158
+ return {};
159
+ }
160
+ const root = getRoot(projectRoot, context);
161
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Loading ${framework} user configuration for project in root directory ${projectRoot}.`);
162
+ const userConfig = await loadUserConfigFile(projectRoot, contextV2.workspaceRoot, resolver, "build", "development", configFile, framework);
163
+ if (!existsSync(joinPaths(contextV2.workspaceRoot, projectRoot, "package.json"))) {
164
+ if (options?.verboseOutput) console.warn(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Cannot find \`package.json\` file in the project's root directory (path: "${joinPaths(contextV2.workspaceRoot, projectRoot)}"). Skipping project configuration.`);
165
+ return {};
166
+ }
167
+ const packageJsonContent = await readFile(joinPaths(contextV2.workspaceRoot, projectRoot, "package.json"), "utf8");
168
+ if (!packageJsonContent) {
169
+ if (options?.verboseOutput) console.warn(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - No package.json file found for project in root directory ${projectRoot}`);
170
+ return {};
171
+ }
172
+ const packageJson = JSON.parse(packageJsonContent);
173
+ if (!userConfig.configFile && !packageJson?.storm) {
174
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Skipping ${projectRoot} - no ${framework} configuration found for project in root directory.`);
175
+ return {};
176
+ }
177
+ const projectConfig = getProjectConfigFromProjectRoot(projectRoot, packageJson);
178
+ if (!projectConfig) {
179
+ if (options?.verboseOutput) console.warn(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - No project configuration found for project in root directory ${projectRoot}`);
180
+ return {};
181
+ }
182
+ const targets = readTargetsFromPackageJson(packageJson, nxJson, projectRoot, context.workspaceRoot);
183
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Preparing Nx targets for project in root directory ${projectRoot}.`);
184
+ if (options?.clean !== false && !targets[options?.clean?.targetName || "clean"]) targets[options?.clean?.targetName || "clean"] = {
185
+ cache: true,
186
+ inputs: Array.isArray(options?.clean?.inputs) ? options.clean.inputs : withNamedInputs(targetInputs, [options?.clean?.inputs || "typescript"]),
187
+ outputs: options?.clean?.outputs,
188
+ executor: options?.clean?.executor || `@${framework}/nx:${options?.clean?.targetName || "clean"}`,
189
+ dependsOn: options?.clean?.dependsOn ?? [`^${options?.clean?.targetName || "clean"}`],
190
+ defaultConfiguration: options?.clean?.defaultConfiguration || "production",
191
+ options: {
192
+ outputPath: userConfig.output?.outputPath || "dist/{projectRoot}",
193
+ projectType: projectConfig.projectType || userConfig.projectType,
194
+ autoInstall: userConfig.autoInstall
195
+ },
196
+ configurations: {
197
+ production: { mode: "production" },
198
+ test: { mode: "test" },
199
+ development: {
200
+ mode: "development",
201
+ skipCache: true
202
+ }
203
+ }
204
+ };
205
+ if (options?.prepare !== false && !targets[options?.prepare?.targetName || "prepare"]) targets[options?.prepare?.targetName || "prepare"] = {
206
+ cache: true,
207
+ inputs: Array.isArray(options?.prepare?.inputs) ? options.prepare.inputs : withNamedInputs(targetInputs, [options?.prepare?.inputs || "typescript"]),
208
+ outputs: options?.prepare?.outputs ?? [artifactsFolder],
209
+ executor: options?.prepare?.executor || `@${framework}/nx:${options?.prepare?.targetName || "prepare"}`,
210
+ dependsOn: options?.prepare?.dependsOn ?? [`^${options?.prepare?.targetName || "build"}`, options?.clean !== false && `${options?.clean?.targetName || "clean"}`].filter(Boolean),
211
+ defaultConfiguration: options?.prepare?.defaultConfiguration || "production",
212
+ options: {
213
+ input: userConfig.input,
214
+ projectType: projectConfig.projectType || userConfig.projectType,
215
+ autoInstall: userConfig.autoInstall,
216
+ skipCache: userConfig.skipCache
217
+ },
218
+ configurations: {
219
+ production: { mode: "production" },
220
+ test: { mode: "test" },
221
+ development: {
222
+ mode: "development",
223
+ skipCache: true
224
+ }
225
+ }
226
+ };
227
+ if (options?.build !== false && !targets[options?.build?.targetName || "build"]) targets[options?.build?.targetName || "build"] = {
228
+ cache: true,
229
+ inputs: Array.isArray(options?.build?.inputs) ? options.build.inputs : withNamedInputs(targetInputs, [options?.build?.inputs || "typescript"]),
230
+ outputs: options?.build?.outputs ?? ["{options.outputPath}"],
231
+ executor: options?.build?.executor || `@${framework}/nx:${options?.build?.targetName || "build"}`,
232
+ dependsOn: options?.build?.dependsOn ?? [`^${options?.build?.targetName || "build"}`, userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"].filter(Boolean),
233
+ defaultConfiguration: options?.build?.defaultConfiguration || "production",
234
+ options: {
235
+ input: userConfig.input,
236
+ outputPath: userConfig.output?.outputPath || "dist/{projectRoot}",
237
+ projectType: projectConfig.projectType || userConfig.projectType,
238
+ autoInstall: userConfig.autoInstall,
239
+ skipCache: userConfig.skipCache
240
+ },
241
+ configurations: {
242
+ production: { mode: "production" },
243
+ test: { mode: "test" },
244
+ development: {
245
+ mode: "development",
246
+ skipCache: true
247
+ }
248
+ }
249
+ };
250
+ if (options?.lint !== false && !targets[options?.lint?.targetName || "lint"]) targets[options?.lint?.targetName || "lint"] = {
251
+ cache: true,
252
+ inputs: Array.isArray(options?.lint?.inputs) ? options.lint.inputs : withNamedInputs([...targetInputs, artifactsFolder], options?.lint?.inputs ? [options.lint.inputs] : ["linting", "typescript"]),
253
+ outputs: options?.lint?.outputs ?? ["{options.outputPath}"],
254
+ executor: options?.lint?.executor || `@${framework}/nx:${options?.lint?.targetName || "lint"}`,
255
+ dependsOn: options?.lint?.dependsOn ?? [`^${options?.lint?.targetName || "lint"}`, userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"].filter(Boolean),
256
+ defaultConfiguration: options?.lint?.defaultConfiguration || "production",
257
+ options: {
258
+ input: userConfig.input,
259
+ projectType: projectConfig.projectType || userConfig.projectType,
260
+ autoInstall: userConfig.autoInstall,
261
+ skipCache: userConfig.skipCache
262
+ },
263
+ configurations: {
264
+ production: { mode: "production" },
265
+ test: { mode: "test" },
266
+ development: {
267
+ mode: "development",
268
+ skipCache: true
269
+ }
270
+ }
271
+ };
272
+ if (options?.docs !== false && !targets[options?.docs?.targetName || "docs"]) targets[options?.docs?.targetName || "docs"] = {
273
+ cache: true,
274
+ inputs: Array.isArray(options?.docs?.inputs) ? options.docs.inputs : withNamedInputs([...targetInputs, artifactsFolder], options?.docs?.inputs ? [options.docs.inputs] : ["documentation", "typescript"]),
275
+ outputs: options?.docs?.outputs ?? ["{options.outputPath}"],
276
+ executor: options?.docs?.executor || `@${framework}/nx:${options?.docs?.targetName || "docs"}`,
277
+ dependsOn: options?.docs?.dependsOn ?? [
278
+ `^${options?.docs?.targetName || "docs"}`,
279
+ options?.build !== false && `${options?.build?.targetName || "build"}`,
280
+ userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"
281
+ ].filter(Boolean),
282
+ defaultConfiguration: options?.docs?.defaultConfiguration || "production",
283
+ options: {
284
+ input: userConfig.input,
285
+ projectType: projectConfig.projectType || userConfig.projectType,
286
+ autoInstall: userConfig.autoInstall,
287
+ skipCache: userConfig.skipCache
288
+ },
289
+ configurations: {
290
+ production: { mode: "production" },
291
+ test: { mode: "test" },
292
+ development: {
293
+ mode: "development",
294
+ skipCache: true
295
+ }
296
+ }
297
+ };
298
+ if (options?.deploy !== false && !targets[options?.deploy?.targetName || "deploy"]) targets[options?.deploy?.targetName || "deploy"] = {
299
+ inputs: Array.isArray(options?.deploy?.inputs) ? options.deploy.inputs : withNamedInputs([...targetInputs, artifactsFolder], options?.deploy?.inputs ? [options.deploy.inputs] : ["documentation", "typescript"]),
300
+ outputs: options?.deploy?.outputs ?? ["{options.outputPath}"],
301
+ executor: options?.deploy?.executor || `@${framework}/nx:${options?.deploy?.targetName || "deploy"}`,
302
+ dependsOn: options?.deploy?.dependsOn ?? [
303
+ `^${options?.deploy?.targetName || "deploy"}`,
304
+ options?.build !== false && `${options?.build?.targetName || "build"}`,
305
+ userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"
306
+ ].filter(Boolean),
307
+ defaultConfiguration: options?.deploy?.defaultConfiguration || "production",
308
+ options: {
309
+ input: userConfig.input,
310
+ projectType: projectConfig.projectType || userConfig.projectType,
311
+ autoInstall: userConfig.autoInstall,
312
+ skipCache: userConfig.skipCache
313
+ },
314
+ configurations: {
315
+ production: { mode: "production" },
316
+ test: { mode: "test" },
317
+ development: {
318
+ mode: "development",
319
+ skipCache: true
320
+ }
321
+ }
322
+ };
323
+ setDefaultProjectTags(projectConfig, name);
324
+ addProjectTag(projectConfig, framework, projectConfig.projectType || userConfig.projectType || "library", { overwrite: true });
325
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Completed preparing Nx configuration for project in root directory ${projectRoot}.`);
326
+ return { projects: { [root]: defu(projectConfig, {
327
+ name: kebabCase(userConfig.name),
328
+ projectType: userConfig.projectType || "library",
329
+ root,
330
+ sourceRoot: joinPaths(root, "src"),
331
+ targets
332
+ }) } };
333
+ } catch (error) {
334
+ console.error(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - ${isError(error) ? error.message : "Unknown fatal error"}`);
335
+ throw new Error(`The ${title} failed to process the project configuration for file ${configFile}. See previous logs for more details.`, { cause: error instanceof Error ? error : void 0 });
336
+ }
337
+ }, configFiles, options, contextV2);
338
+ }];
339
+ } catch (error) {
340
+ console.error(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - ${isError(error) ? error.message : "Unknown fatal error during plugin initialization"}`);
341
+ throw new Error(`Failed to initialize the ${title}. See previous logs for more details.`, { cause: error instanceof Error ? error : void 0 });
342
+ }
343
+ }
344
+
345
+ //#endregion
346
+ export { getNxPluginInputs as n, getNxTargetInputs as r, createNxPlugin as t };
347
+ //# sourceMappingURL=plugin-utilities-Ci8AHf-K.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-utilities-Ci8AHf-K.mjs","names":["resolvedUserConfig: Partial<ParsedUserConfig>","resolvedUserConfigFile: string | undefined","loadConfigC12","readNxJson","packageJson: PackageJson","targets: ProjectConfiguration[\"targets\"]"],"sources":["../../core/src/lib/config.ts","../../core/src/lib/constants/meta.ts","../../core/src/lib/utilities/source-map.ts","../src/helpers/plugin-utilities.ts"],"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 { getWorkspaceConfig } from \"@storm-software/config-tools/get-config\";\nimport { existsSync } from \"@stryke/fs/exists\";\nimport { appendPath } from \"@stryke/path/append\";\nimport { joinPaths } from \"@stryke/path/join-paths\";\nimport { replacePath } from \"@stryke/path/replace\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { loadConfig as loadConfigC12 } from \"c12\";\nimport defu from \"defu\";\nimport type { Jiti } from \"jiti\";\nimport type {\n ParsedUserConfig,\n PowerlinesCommand,\n UserConfig,\n WorkspaceConfig\n} from \"../types/config\";\nimport { AnyUserConfig } from \"../types/config\";\nimport { Context } from \"../types/context\";\n\nexport type PartiallyResolvedContext<TContext extends Context = Context> = Omit<\n TContext,\n \"config\" | \"tsconfig\" | \"entry\" | \"fs\" | \"compiler\" | \"unimport\"\n> &\n Partial<TContext> & {\n config: TContext[\"config\"];\n };\n\n/**\n * Loads the workspace configuration.\n *\n * @param workspaceRoot - The root directory of the workspace.\n * @param cwd - The current working directory to start searching from.\n * @returns A promise that resolves to the loaded workspace configuration.\n */\nexport async function loadWorkspaceConfig(\n workspaceRoot: string,\n cwd: string\n): Promise<WorkspaceConfig> {\n return defu(\n {\n workspaceRoot\n },\n await getWorkspaceConfig(true, {\n cwd,\n workspaceRoot,\n useDefault: true\n })\n );\n}\n\n/**\n * Loads the user configuration file for the project.\n *\n * @param projectRoot - The root directory of the project.\n * @param workspaceRoot - The root directory of the workspace.\n * @param jiti - An instance of Jiti to resolve modules from\n * @param command - The {@link PowerlinesCommand} string associated with the current running process\n * @param mode - The mode in which the project is running (default is \"production\").\n * @param configFile - An optional path to a specific configuration file.\n * @param framework - The framework name to use for default configuration file names.\n * @returns A promise that resolves to the resolved user configuration.\n */\nexport async function loadUserConfigFile(\n projectRoot: string,\n workspaceRoot: string,\n jiti: Jiti,\n command?: PowerlinesCommand,\n mode = \"production\",\n configFile?: string,\n framework = \"powerlines\"\n): Promise<ParsedUserConfig> {\n let resolvedUserConfig: Partial<ParsedUserConfig> = {};\n\n let resolvedUserConfigFile: string | undefined;\n if (configFile) {\n resolvedUserConfigFile = existsSync(replacePath(configFile, projectRoot))\n ? replacePath(configFile, projectRoot)\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n replacePath(configFile, projectRoot)\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n replacePath(configFile, projectRoot)\n )\n : existsSync(\n joinPaths(appendPath(projectRoot, workspaceRoot), configFile)\n )\n ? joinPaths(appendPath(projectRoot, workspaceRoot), configFile)\n : undefined;\n }\n\n if (!resolvedUserConfigFile) {\n resolvedUserConfigFile = existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.ts`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.ts`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.js`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.js`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.mts`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.mts`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.mjs`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.${mode}.config.mjs`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.ts`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.ts`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.js`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.js`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.mts`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.mts`\n )\n : existsSync(\n joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.mjs`\n )\n )\n ? joinPaths(\n appendPath(projectRoot, workspaceRoot),\n `${framework}.config.mjs`\n )\n : undefined;\n }\n\n if (resolvedUserConfigFile) {\n const resolved = await jiti.import(jiti.esmResolve(resolvedUserConfigFile));\n if (resolved) {\n let config = {};\n if (isFunction(resolved)) {\n config = await Promise.resolve(\n resolved({\n command,\n mode,\n isSsrBuild: false,\n isPreview: false\n })\n );\n }\n\n if (isSetObject(config)) {\n resolvedUserConfig = {\n ...config,\n config: config as UserConfig,\n configFile: resolvedUserConfigFile\n };\n }\n }\n }\n\n const result = await loadConfigC12({\n cwd: projectRoot,\n name: framework,\n envName: mode,\n globalRc: true,\n packageJson: true,\n dotenv: true,\n jiti\n });\n\n return defu(\n resolvedUserConfig,\n isSetObject(result?.config) ? { ...result.config, ...result } : {}\n ) as ParsedUserConfig;\n}\n\n/**\n * A type helper to make it easier to use `powerlines.config.ts` files.\n *\n * @remarks\n * The function accepts a direct {@link AnyUserConfig} object and returns it typed as a {@link UserConfig} object.\n */\nexport function defineConfig(config: AnyUserConfig): UserConfig {\n return config as any;\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\nexport const ROOT_HASH_LENGTH = 45;\nexport const CACHE_HASH_LENGTH = 62;\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 Diff from \"diff-match-patch\";\nimport type MagicString from \"magic-string\";\nimport type { TransformResult } from \"../../types/context\";\n\nconst dmp = new Diff();\n\n/**\n * Generate code with source map.\n *\n * @param code - The source code.\n * @param id - The file name.\n * @param transpiled - The transpiled code.\n * @returns The compiler result.\n */\nexport function generateSourceMap(\n code: MagicString,\n id: string,\n transpiled?: string\n): TransformResult | undefined {\n if (!transpiled) {\n return;\n }\n\n const diff = dmp.diff_main(code.toString(), transpiled);\n dmp.diff_cleanupSemantic(diff);\n\n let offset = 0;\n\n for (let index = 0; index < diff.length; index++) {\n if (diff[index]) {\n const [type, text] = diff[index]!;\n const textLength = text.length;\n\n switch (type) {\n case 0: {\n offset += textLength;\n break;\n }\n case 1: {\n code.prependLeft(offset, text);\n break;\n }\n case -1: {\n const next = diff.at(index + 1);\n\n if (next && next[0] === 1) {\n const replaceText = next[1];\n\n const firstNonWhitespaceIndexOfText = text.search(/\\S/);\n const offsetStart =\n offset + Math.max(firstNonWhitespaceIndexOfText, 0);\n\n code.update(offsetStart, offset + textLength, replaceText);\n index += 1;\n } else {\n code.remove(offset, offset + textLength);\n }\n\n offset += textLength;\n\n break;\n }\n }\n }\n }\n\n if (!code.hasChanged()) {\n return;\n }\n\n return {\n code: code.toString(),\n map: code.generateMap({\n source: id,\n file: `${id}.map`,\n includeContent: true\n })\n };\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\n/* eslint-disable no-console */\n\nimport type { CreateNodesResultV2, CreateNodesV2 } from \"@nx/devkit\";\nimport { createNodesFromFiles } from \"@nx/devkit\";\nimport type { ProjectTagVariant } from \"@storm-software/workspace-tools/types\";\nimport { withNamedInputs } from \"@storm-software/workspace-tools/utils/nx-json\";\nimport {\n getProjectConfigFromProjectRoot,\n getProjectRoot,\n getRoot\n} from \"@storm-software/workspace-tools/utils/plugin-helpers\";\nimport {\n addProjectTag,\n setDefaultProjectTags\n} from \"@storm-software/workspace-tools/utils/project-tags\";\nimport { getEnvPaths } from \"@stryke/env/get-env-paths\";\nimport { existsSync } from \"@stryke/fs/exists\";\nimport { murmurhash } from \"@stryke/hash/murmurhash\";\nimport { joinPaths } from \"@stryke/path/join-paths\";\nimport { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isError } from \"@stryke/type-checks/is-error\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport type { PackageJson } from \"@stryke/types/package-json\";\nimport defu from \"defu\";\nimport { createJiti } from \"jiti\";\nimport { readFile } from \"node:fs/promises\";\nimport { readNxJson } from \"nx/src/config/nx-json.js\";\nimport type {\n ProjectConfiguration,\n TargetConfiguration\n} from \"nx/src/config/workspace-json-project-json.js\";\nimport type { PackageJson as PackageJsonNx } from \"nx/src/utils/package-json.js\";\nimport { readTargetsFromPackageJson } from \"nx/src/utils/package-json.js\";\nimport { loadUserConfigFile } from \"powerlines/config\";\nimport { ROOT_HASH_LENGTH } from \"powerlines/utils\";\nimport { NxPluginOptions } from \"../types/plugin\";\nimport { CONFIG_INPUTS } from \"./constants\";\n\n/**\n * Generates Nx input strings for the Powerlines configuration file, replacing the `{framework}` placeholder with the specified framework name.\n *\n * @param framework - The framework name to use in the input strings\n * @returns An array of Nx input strings for the configuration file\n */\nexport function getNxTargetInputs(framework: string): string[] {\n return CONFIG_INPUTS.map(input => input.replace(\"{framework}\", framework));\n}\n\n/**\n * Generates Nx input strings for the Powerlines configuration file, replacing the `{framework}` placeholder with the specified framework name.\n *\n * @param framework - The framework name to use in the input strings\n * @returns An array of Nx input strings for the configuration file\n */\nexport function getNxPluginInputs(framework: string): string {\n return `**/{${getNxTargetInputs(framework)\n .map(input => input.replace(\"{projectRoot}/\", \"\"))\n .join(\",\")}}`;\n}\n\nexport interface CreateNxPluginOptions {\n /**\n * The name of the Nx plugin to create\n *\n * @remarks\n * This will be used in logging and project tagging.\n *\n * @defaultValue \"\\{framework\\}/plugin/nx\"\n */\n name?: string;\n\n /**\n * The folder where the generated runtime artifacts will be located\n *\n * @remarks\n * This folder will contain all runtime artifacts and builtins generated during the \"prepare\" phase.\n *\n * @defaultValue \"\\{projectRoot\\}/.powerlines\"\n */\n artifactsFolder?: string;\n\n /**\n * A string identifier that allows a child framework or tool to identify itself when using Powerlines.\n *\n * @remarks\n * If no values are provided for {@link OutputConfig.dts | output.dts} or {@link OutputConfig.artifactsFolder | output.artifactsFolder}, this value will be used as the default.\n *\n * @defaultValue \"powerlines\"\n */\n framework?: string;\n}\n\n/**\n * Creates an Nx plugin that integrates Powerlines into the Nx build process.\n *\n * @param opts - Options for creating the Nx plugin\n * @returns A CreateNodesV2 function that can be used as an Nx plugin\n */\nexport function createNxPlugin<\n TOptions extends NxPluginOptions = NxPluginOptions\n>(opts?: CreateNxPluginOptions): CreateNodesV2<TOptions> {\n const framework = opts?.framework || \"powerlines\";\n const title = `${titleCase(framework)} Nx Plugin`;\n\n try {\n const name = opts?.name || `${framework}/nx/plugin`;\n const artifactsFolder =\n opts?.artifactsFolder || `{projectRoot}/.${framework}`;\n\n const targetInputs = getNxTargetInputs(framework);\n const pluginInputs = getNxPluginInputs(framework);\n\n return [\n pluginInputs,\n async (configFiles, options, contextV2): Promise<CreateNodesResultV2> => {\n if (options?.verboseOutput) {\n console.debug(\n `[${title}] - ${new Date().toISOString()} - Initializing the ${title} for the following inputs: ${pluginInputs}`\n );\n }\n\n const envPaths = getEnvPaths({\n orgId: \"storm-software\",\n appId: framework,\n workspaceRoot: contextV2.workspaceRoot\n });\n if (!envPaths.cache) {\n throw new Error(\"The cache directory could not be determined.\");\n }\n\n const nxJson = readNxJson(contextV2.workspaceRoot);\n const resolver = createJiti(contextV2.workspaceRoot, {\n debug: !!options?.debug,\n interopDefault: true,\n fsCache: joinPaths(\n envPaths.cache,\n \"nx-plugin\",\n murmurhash(contextV2.workspaceRoot, {\n maxLength: ROOT_HASH_LENGTH\n }),\n \"jiti\"\n ),\n moduleCache: true\n });\n\n return createNodesFromFiles(\n async (configFile, _, context) => {\n try {\n const projectRoot = getProjectRoot(\n configFile,\n contextV2.workspaceRoot\n );\n if (!projectRoot) {\n console.error(\n `[${title}] - ${new Date().toISOString()} - package.json and ${\n framework\n } configuration files (i.e. ${\n framework\n }.config.ts) must be located in the project root directory: ${\n configFile\n }`\n );\n\n return {};\n }\n\n const root = getRoot(projectRoot, context);\n\n if (options?.verboseOutput) {\n console.debug(\n `[${title}] - ${new Date().toISOString()} - Loading ${\n framework\n } user configuration for project in root directory ${\n projectRoot\n }.`\n );\n }\n\n const userConfig = await loadUserConfigFile(\n projectRoot,\n contextV2.workspaceRoot,\n resolver,\n \"build\",\n \"development\",\n configFile,\n framework\n );\n\n if (\n !existsSync(\n joinPaths(\n contextV2.workspaceRoot,\n projectRoot,\n \"package.json\"\n )\n )\n ) {\n if (options?.verboseOutput) {\n console.warn(\n `[${\n title\n }] - ${new Date().toISOString()} - Cannot find \\`package.json\\` file in the project's root directory (path: \"${joinPaths(\n contextV2.workspaceRoot,\n projectRoot\n )}\"). Skipping project configuration.`\n );\n }\n\n return {};\n }\n\n const packageJsonContent = await readFile(\n joinPaths(contextV2.workspaceRoot, projectRoot, \"package.json\"),\n \"utf8\"\n );\n if (!packageJsonContent) {\n if (options?.verboseOutput) {\n console.warn(\n `[${title}] - ${new Date().toISOString()} - No package.json file found for project in root directory ${projectRoot}`\n );\n }\n\n return {};\n }\n\n const packageJson: PackageJson = JSON.parse(packageJsonContent);\n if (!userConfig.configFile && !packageJson?.storm) {\n if (options?.verboseOutput) {\n console.debug(\n `[${title}] - ${new Date().toISOString()} - Skipping ${projectRoot} - no ${\n framework\n } configuration found for project in root directory.`\n );\n }\n\n return {};\n }\n\n const projectConfig = getProjectConfigFromProjectRoot(\n projectRoot,\n packageJson\n );\n if (!projectConfig) {\n if (options?.verboseOutput) {\n console.warn(\n `[${title}] - ${new Date().toISOString()} - No project configuration found for project in root directory ${\n projectRoot\n }`\n );\n }\n\n return {};\n }\n\n const targets: ProjectConfiguration[\"targets\"] =\n readTargetsFromPackageJson(\n packageJson as PackageJsonNx,\n nxJson,\n projectRoot,\n context.workspaceRoot\n );\n\n if (options?.verboseOutput) {\n console.debug(\n `[${title}] - ${new Date().toISOString()} - Preparing Nx targets for project in root directory ${\n projectRoot\n }.`\n );\n }\n\n if (\n options?.clean !== false &&\n !targets[options?.clean?.targetName || \"clean\"]\n ) {\n targets[options?.clean?.targetName || \"clean\"] = {\n cache: true,\n inputs: Array.isArray(options?.clean?.inputs)\n ? options.clean.inputs\n : withNamedInputs(targetInputs, [\n options?.clean?.inputs || \"typescript\"\n ]),\n outputs: options?.clean?.outputs,\n executor:\n options?.clean?.executor ||\n `@${framework}/nx:${options?.clean?.targetName || \"clean\"}`,\n dependsOn: options?.clean?.dependsOn ?? [\n `^${options?.clean?.targetName || \"clean\"}`\n ],\n defaultConfiguration:\n options?.clean?.defaultConfiguration || \"production\",\n options: {\n outputPath:\n userConfig.output?.outputPath || \"dist/{projectRoot}\",\n projectType:\n projectConfig.projectType || userConfig.projectType,\n autoInstall: userConfig.autoInstall\n },\n configurations: {\n production: {\n mode: \"production\"\n },\n test: {\n mode: \"test\"\n },\n development: {\n mode: \"development\",\n skipCache: true\n }\n }\n };\n }\n\n if (\n options?.prepare !== false &&\n !targets[options?.prepare?.targetName || \"prepare\"]\n ) {\n targets[options?.prepare?.targetName || \"prepare\"] = {\n cache: true,\n inputs: Array.isArray(options?.prepare?.inputs)\n ? options.prepare.inputs\n : withNamedInputs(targetInputs, [\n options?.prepare?.inputs || \"typescript\"\n ]),\n outputs: options?.prepare?.outputs ?? [artifactsFolder],\n executor:\n options?.prepare?.executor ||\n `@${framework}/nx:${options?.prepare?.targetName || \"prepare\"}`,\n dependsOn:\n options?.prepare?.dependsOn ??\n ([\n `^${options?.prepare?.targetName || \"build\"}`,\n options?.clean !== false &&\n `${options?.clean?.targetName || \"clean\"}`\n ].filter(Boolean) as string[]),\n defaultConfiguration:\n options?.prepare?.defaultConfiguration || \"production\",\n options: {\n input: userConfig.input,\n projectType:\n projectConfig.projectType || userConfig.projectType,\n autoInstall: userConfig.autoInstall,\n skipCache: userConfig.skipCache\n },\n configurations: {\n production: {\n mode: \"production\"\n },\n test: {\n mode: \"test\"\n },\n development: {\n mode: \"development\",\n skipCache: true\n }\n }\n };\n }\n\n if (\n options?.build !== false &&\n !targets[options?.build?.targetName || \"build\"]\n ) {\n targets[options?.build?.targetName || \"build\"] = {\n cache: true,\n inputs: Array.isArray(options?.build?.inputs)\n ? options.build.inputs\n : withNamedInputs(targetInputs, [\n options?.build?.inputs || \"typescript\"\n ]),\n outputs: options?.build?.outputs ?? [\"{options.outputPath}\"],\n executor:\n options?.build?.executor ||\n `@${framework}/nx:${options?.build?.targetName || \"build\"}`,\n dependsOn:\n options?.build?.dependsOn ??\n ([\n `^${options?.build?.targetName || \"build\"}`,\n userConfig.skipCache\n ? undefined\n : isSetObject(options?.prepare) &&\n options?.prepare?.targetName\n ? options?.prepare?.targetName\n : \"prepare\"\n ].filter(Boolean) as TargetConfiguration[\"dependsOn\"]),\n defaultConfiguration:\n options?.build?.defaultConfiguration || \"production\",\n options: {\n input: userConfig.input,\n outputPath:\n userConfig.output?.outputPath || \"dist/{projectRoot}\",\n projectType:\n projectConfig.projectType || userConfig.projectType,\n autoInstall: userConfig.autoInstall,\n skipCache: userConfig.skipCache\n },\n configurations: {\n production: {\n mode: \"production\"\n },\n test: {\n mode: \"test\"\n },\n development: {\n mode: \"development\",\n skipCache: true\n }\n }\n };\n }\n\n if (\n options?.lint !== false &&\n !targets[options?.lint?.targetName || \"lint\"]\n ) {\n targets[options?.lint?.targetName || \"lint\"] = {\n cache: true,\n inputs: Array.isArray(options?.lint?.inputs)\n ? options.lint.inputs\n : withNamedInputs(\n [...targetInputs, artifactsFolder],\n options?.lint?.inputs\n ? [options.lint.inputs]\n : [\"linting\", \"typescript\"]\n ),\n outputs: options?.lint?.outputs ?? [\"{options.outputPath}\"],\n executor:\n options?.lint?.executor ||\n `@${framework}/nx:${options?.lint?.targetName || \"lint\"}`,\n dependsOn:\n options?.lint?.dependsOn ??\n ([\n `^${options?.lint?.targetName || \"lint\"}`,\n userConfig.skipCache\n ? undefined\n : isSetObject(options?.prepare) &&\n options?.prepare?.targetName\n ? options?.prepare?.targetName\n : \"prepare\"\n ].filter(Boolean) as TargetConfiguration[\"dependsOn\"]),\n defaultConfiguration:\n options?.lint?.defaultConfiguration || \"production\",\n options: {\n input: userConfig.input,\n projectType:\n projectConfig.projectType || userConfig.projectType,\n autoInstall: userConfig.autoInstall,\n skipCache: userConfig.skipCache\n },\n configurations: {\n production: {\n mode: \"production\"\n },\n test: {\n mode: \"test\"\n },\n development: {\n mode: \"development\",\n skipCache: true\n }\n }\n };\n }\n\n if (\n options?.docs !== false &&\n !targets[options?.docs?.targetName || \"docs\"]\n ) {\n targets[options?.docs?.targetName || \"docs\"] = {\n cache: true,\n inputs: Array.isArray(options?.docs?.inputs)\n ? options.docs.inputs\n : withNamedInputs(\n [...targetInputs, artifactsFolder],\n options?.docs?.inputs\n ? [options.docs.inputs]\n : [\"documentation\", \"typescript\"]\n ),\n outputs: options?.docs?.outputs ?? [\"{options.outputPath}\"],\n executor:\n options?.docs?.executor ||\n `@${framework}/nx:${options?.docs?.targetName || \"docs\"}`,\n dependsOn:\n options?.docs?.dependsOn ??\n ([\n `^${options?.docs?.targetName || \"docs\"}`,\n options?.build !== false &&\n `${options?.build?.targetName || \"build\"}`,\n userConfig.skipCache\n ? undefined\n : isSetObject(options?.prepare) &&\n options?.prepare?.targetName\n ? options?.prepare?.targetName\n : \"prepare\"\n ].filter(Boolean) as TargetConfiguration[\"dependsOn\"]),\n defaultConfiguration:\n options?.docs?.defaultConfiguration || \"production\",\n options: {\n input: userConfig.input,\n projectType:\n projectConfig.projectType || userConfig.projectType,\n autoInstall: userConfig.autoInstall,\n skipCache: userConfig.skipCache\n },\n configurations: {\n production: {\n mode: \"production\"\n },\n test: {\n mode: \"test\"\n },\n development: {\n mode: \"development\",\n skipCache: true\n }\n }\n };\n }\n\n if (\n options?.deploy !== false &&\n !targets[options?.deploy?.targetName || \"deploy\"]\n ) {\n targets[options?.deploy?.targetName || \"deploy\"] = {\n inputs: Array.isArray(options?.deploy?.inputs)\n ? options.deploy.inputs\n : withNamedInputs(\n [...targetInputs, artifactsFolder],\n options?.deploy?.inputs\n ? [options.deploy.inputs]\n : [\"documentation\", \"typescript\"]\n ),\n outputs: options?.deploy?.outputs ?? [\"{options.outputPath}\"],\n executor:\n options?.deploy?.executor ||\n `@${framework}/nx:${options?.deploy?.targetName || \"deploy\"}`,\n dependsOn:\n options?.deploy?.dependsOn ??\n ([\n `^${options?.deploy?.targetName || \"deploy\"}`,\n options?.build !== false &&\n `${options?.build?.targetName || \"build\"}`,\n userConfig.skipCache\n ? undefined\n : isSetObject(options?.prepare) &&\n options?.prepare?.targetName\n ? options?.prepare?.targetName\n : \"prepare\"\n ].filter(Boolean) as TargetConfiguration[\"dependsOn\"]),\n defaultConfiguration:\n options?.deploy?.defaultConfiguration || \"production\",\n options: {\n input: userConfig.input,\n projectType:\n projectConfig.projectType || userConfig.projectType,\n autoInstall: userConfig.autoInstall,\n skipCache: userConfig.skipCache\n },\n configurations: {\n production: {\n mode: \"production\"\n },\n test: {\n mode: \"test\"\n },\n development: {\n mode: \"development\",\n skipCache: true\n }\n }\n };\n }\n\n setDefaultProjectTags(projectConfig, name);\n addProjectTag(\n projectConfig,\n framework as ProjectTagVariant,\n projectConfig.projectType ||\n userConfig.projectType ||\n \"library\",\n {\n overwrite: true\n }\n );\n\n if (options?.verboseOutput) {\n console.debug(\n `[${\n title\n }] - ${new Date().toISOString()} - Completed preparing Nx configuration for project in root directory ${projectRoot}.`\n );\n }\n\n return {\n projects: {\n [root]: defu(projectConfig, {\n name: kebabCase(userConfig.name)!,\n projectType: userConfig.projectType || \"library\",\n root,\n sourceRoot: joinPaths(root, \"src\"),\n targets\n })\n }\n };\n } catch (error) {\n console.error(\n `[${title}] - ${new Date().toISOString()} - ${\n isError(error) ? error.message : \"Unknown fatal error\"\n }`\n );\n\n throw new Error(\n `The ${\n title\n } failed to process the project configuration for file ${\n configFile\n }. See previous logs for more details.`,\n {\n cause: error instanceof Error ? error : undefined\n }\n );\n }\n },\n configFiles,\n options,\n contextV2\n );\n }\n ];\n } catch (error) {\n console.error(\n `[${title}] - ${new Date().toISOString()} - ${\n isError(error)\n ? error.message\n : \"Unknown fatal error during plugin initialization\"\n }`\n );\n\n throw new Error(\n `Failed to initialize the ${title}. See previous logs for more details.`,\n {\n cause: error instanceof Error ? error : undefined\n }\n );\n }\n}\n"],"mappings":"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"}