@shell-shock/nx 0.0.43 → 0.0.47

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 (144) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +1 -1
  3. package/dist/{src/executors/lint/schema.d.ts → base/base-executor.schema.d.ts} +26 -13
  4. package/dist/{src/base → base}/base-executor.schema.json +40 -2
  5. package/dist/{base-executor-Tb7NcSc4.mjs → base-executor-DojAZA0w.mjs} +2 -2
  6. package/dist/base-executor-DojAZA0w.mjs.map +1 -0
  7. package/dist/{src/base-executor-B_1n4Nst.js → base-executor-KUL9jD5R.js} +1 -1
  8. package/dist/chunk-BCHjMept.mjs +3 -0
  9. package/dist/executors/build/executor.d.mts +34 -6
  10. package/dist/executors/build/executor.d.mts.map +1 -1
  11. package/dist/executors/build/executor.d.ts +34 -7
  12. package/dist/executors/build/executor.d.ts.map +1 -1
  13. package/dist/executors/build/executor.js +2 -4
  14. package/dist/executors/build/executor.mjs +2 -2
  15. package/dist/executors/build/executor.mjs.map +1 -1
  16. package/dist/executors/build/schema.d.ts +30 -1
  17. package/dist/executors/build/schema.json +40 -2
  18. package/dist/executors/clean/executor.d.mts +34 -6
  19. package/dist/executors/clean/executor.d.mts.map +1 -1
  20. package/dist/executors/clean/executor.d.ts +34 -7
  21. package/dist/executors/clean/executor.d.ts.map +1 -1
  22. package/dist/executors/clean/executor.js +2 -4
  23. package/dist/executors/clean/executor.mjs +2 -2
  24. package/dist/executors/clean/executor.mjs.map +1 -1
  25. package/dist/executors/clean/schema.d.ts +30 -1
  26. package/dist/executors/clean/schema.json +40 -2
  27. package/dist/executors/docs/executor.d.mts +34 -6
  28. package/dist/executors/docs/executor.d.mts.map +1 -1
  29. package/dist/executors/docs/executor.d.ts +34 -7
  30. package/dist/executors/docs/executor.d.ts.map +1 -1
  31. package/dist/executors/docs/executor.js +2 -4
  32. package/dist/executors/docs/executor.mjs +2 -2
  33. package/dist/executors/docs/executor.mjs.map +1 -1
  34. package/dist/executors/docs/schema.d.ts +30 -1
  35. package/dist/executors/docs/schema.json +40 -2
  36. package/dist/executors/lint/executor.d.mts +34 -6
  37. package/dist/executors/lint/executor.d.mts.map +1 -1
  38. package/dist/executors/lint/executor.d.ts +34 -7
  39. package/dist/executors/lint/executor.d.ts.map +1 -1
  40. package/dist/executors/lint/executor.js +2 -4
  41. package/dist/executors/lint/executor.mjs +2 -2
  42. package/dist/executors/lint/executor.mjs.map +1 -1
  43. package/dist/executors/lint/schema.d.ts +30 -1
  44. package/dist/executors/lint/schema.json +40 -2
  45. package/dist/executors/prepare/executor.d.mts +34 -6
  46. package/dist/executors/prepare/executor.d.mts.map +1 -1
  47. package/dist/executors/prepare/executor.d.ts +34 -7
  48. package/dist/executors/prepare/executor.d.ts.map +1 -1
  49. package/dist/executors/prepare/executor.js +2 -4
  50. package/dist/executors/prepare/executor.mjs +2 -2
  51. package/dist/executors/prepare/executor.mjs.map +1 -1
  52. package/dist/executors/prepare/schema.d.ts +30 -1
  53. package/dist/executors/prepare/schema.json +40 -2
  54. package/dist/index.d.mts +175 -2
  55. package/dist/index.d.mts.map +1 -0
  56. package/dist/index.d.ts +175 -2
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +1 -1
  59. package/dist/index.mjs +1 -1
  60. package/dist/index.mjs.map +1 -1
  61. package/dist/plugin/index.d.mts +242 -1
  62. package/dist/plugin/index.d.mts.map +1 -1
  63. package/dist/plugin/index.d.ts +242 -1
  64. package/dist/plugin/index.d.ts.map +1 -1
  65. package/dist/plugin/index.js +1221 -3
  66. package/dist/plugin/index.mjs +1191 -1
  67. package/dist/plugin/index.mjs.map +1 -1
  68. package/docs/api/base-executor.schema.md +31 -1
  69. package/docs/api/build/schema.md +31 -1
  70. package/docs/api/clean/schema.md +31 -1
  71. package/docs/api/docs/schema.md +31 -1
  72. package/docs/api/lint/schema.md +31 -1
  73. package/docs/api/prepare/schema.md +31 -1
  74. package/executors.json +10 -10
  75. package/package.json +49 -57
  76. package/dist/base-executor-5IKYZdSK.d.mts +0 -143
  77. package/dist/base-executor-5IKYZdSK.d.mts.map +0 -1
  78. package/dist/base-executor-B_1n4Nst.js +0 -104
  79. package/dist/base-executor-D8wAP52R.d.ts +0 -143
  80. package/dist/base-executor-D8wAP52R.d.ts.map +0 -1
  81. package/dist/base-executor-Tb7NcSc4.mjs.map +0 -1
  82. package/dist/src/base/base-executor.schema.d.ts +0 -128
  83. package/dist/src/base-executor-5IKYZdSK.d.mts +0 -143
  84. package/dist/src/base-executor-5IKYZdSK.d.mts.map +0 -1
  85. package/dist/src/base-executor-D8wAP52R.d.ts +0 -143
  86. package/dist/src/base-executor-D8wAP52R.d.ts.map +0 -1
  87. package/dist/src/base-executor-Tb7NcSc4.mjs +0 -66
  88. package/dist/src/base-executor-Tb7NcSc4.mjs.map +0 -1
  89. package/dist/src/executors/build/executor.d.mts +0 -140
  90. package/dist/src/executors/build/executor.d.mts.map +0 -1
  91. package/dist/src/executors/build/executor.d.ts +0 -140
  92. package/dist/src/executors/build/executor.d.ts.map +0 -1
  93. package/dist/src/executors/build/executor.js +0 -19
  94. package/dist/src/executors/build/executor.mjs +0 -17
  95. package/dist/src/executors/build/executor.mjs.map +0 -1
  96. package/dist/src/executors/build/schema.d.ts +0 -144
  97. package/dist/src/executors/build/schema.json +0 -163
  98. package/dist/src/executors/clean/executor.d.mts +0 -140
  99. package/dist/src/executors/clean/executor.d.mts.map +0 -1
  100. package/dist/src/executors/clean/executor.d.ts +0 -140
  101. package/dist/src/executors/clean/executor.d.ts.map +0 -1
  102. package/dist/src/executors/clean/executor.js +0 -14
  103. package/dist/src/executors/clean/executor.mjs +0 -13
  104. package/dist/src/executors/clean/executor.mjs.map +0 -1
  105. package/dist/src/executors/clean/schema.d.ts +0 -144
  106. package/dist/src/executors/clean/schema.json +0 -163
  107. package/dist/src/executors/docs/executor.d.mts +0 -140
  108. package/dist/src/executors/docs/executor.d.mts.map +0 -1
  109. package/dist/src/executors/docs/executor.d.ts +0 -140
  110. package/dist/src/executors/docs/executor.d.ts.map +0 -1
  111. package/dist/src/executors/docs/executor.js +0 -15
  112. package/dist/src/executors/docs/executor.mjs +0 -13
  113. package/dist/src/executors/docs/executor.mjs.map +0 -1
  114. package/dist/src/executors/docs/schema.d.ts +0 -144
  115. package/dist/src/executors/docs/schema.json +0 -163
  116. package/dist/src/executors/lint/executor.d.mts +0 -140
  117. package/dist/src/executors/lint/executor.d.mts.map +0 -1
  118. package/dist/src/executors/lint/executor.d.ts +0 -140
  119. package/dist/src/executors/lint/executor.d.ts.map +0 -1
  120. package/dist/src/executors/lint/executor.js +0 -15
  121. package/dist/src/executors/lint/executor.mjs +0 -13
  122. package/dist/src/executors/lint/executor.mjs.map +0 -1
  123. package/dist/src/executors/lint/schema.json +0 -163
  124. package/dist/src/executors/prepare/executor.d.mts +0 -140
  125. package/dist/src/executors/prepare/executor.d.mts.map +0 -1
  126. package/dist/src/executors/prepare/executor.d.ts +0 -140
  127. package/dist/src/executors/prepare/executor.d.ts.map +0 -1
  128. package/dist/src/executors/prepare/executor.js +0 -19
  129. package/dist/src/executors/prepare/executor.mjs +0 -17
  130. package/dist/src/executors/prepare/executor.mjs.map +0 -1
  131. package/dist/src/executors/prepare/schema.d.ts +0 -144
  132. package/dist/src/executors/prepare/schema.json +0 -163
  133. package/dist/src/index.d.mts +0 -2
  134. package/dist/src/index.d.ts +0 -2
  135. package/dist/src/index.js +0 -19
  136. package/dist/src/index.mjs +0 -18
  137. package/dist/src/index.mjs.map +0 -1
  138. package/dist/src/plugin/index.d.mts +0 -8
  139. package/dist/src/plugin/index.d.mts.map +0 -1
  140. package/dist/src/plugin/index.d.ts +0 -8
  141. package/dist/src/plugin/index.d.ts.map +0 -1
  142. package/dist/src/plugin/index.js +0 -9
  143. package/dist/src/plugin/index.mjs +0 -8
  144. package/dist/src/plugin/index.mjs.map +0 -1
@@ -1,5 +1,1195 @@
1
- import { createNxPlugin } from "@powerlines/nx";
1
+ import "../chunk-BCHjMept.mjs";
2
+ import { isError } from "@stryke/type-checks/is-error";
3
+ import defu from "defu";
4
+ import { createNodesFromFiles } from "@nx/devkit";
5
+ import { withNamedInputs } from "@storm-software/workspace-tools/utils/nx-json";
6
+ import { getProjectConfigFromProjectRoot, getProjectRoot, getRoot } from "@storm-software/workspace-tools/utils/plugin-helpers";
7
+ import { addProjectTag, setDefaultProjectTags } from "@storm-software/workspace-tools/utils/project-tags";
8
+ import os from "node:os";
9
+ import path from "node:path";
10
+ import { existsSync } from "node:fs";
11
+ import { readFile } from "node:fs/promises";
12
+ import { murmurhash } from "@stryke/hash";
13
+ import { joinPaths } from "@stryke/path/join-paths";
14
+ import { camelCase } from "@stryke/string-format/camel-case";
15
+ import { kebabCase } from "@stryke/string-format/kebab-case";
16
+ import { titleCase } from "@stryke/string-format/title-case";
17
+ import { isSetObject } from "@stryke/type-checks/is-set-object";
18
+ import { isSetString } from "@stryke/type-checks/is-set-string";
19
+ import { createJiti } from "jiti";
20
+ import { readNxJson } from "nx/src/config/nx-json.js";
21
+ import { readTargetsFromPackageJson } from "nx/src/utils/package-json.js";
22
+ import { loadUserConfigFile } from "powerlines/config";
23
+ import { ROOT_HASH_LENGTH } from "powerlines/constants";
2
24
 
25
+ //#region ../../node_modules/.pnpm/@powerlines+nx@0.11.296_55935fe12b20e8a57a8bedd62bd3dd6b/node_modules/@powerlines/nx/dist/src/helpers/constants.mjs
26
+ /**
27
+ * A list of Nx input strings that describe the Powerlines configuration file
28
+ */
29
+ const CONFIG_INPUTS = [
30
+ "{projectRoot}/{framework}.json",
31
+ "{projectRoot}/{framework}.*.json",
32
+ "{projectRoot}/{framework}.jsonc",
33
+ "{projectRoot}/{framework}.*.jsonc",
34
+ "{projectRoot}/{framework}.json5",
35
+ "{projectRoot}/{framework}.*.json5",
36
+ "{projectRoot}/{framework}.yaml",
37
+ "{projectRoot}/{framework}.*.yaml",
38
+ "{projectRoot}/{framework}.yml",
39
+ "{projectRoot}/{framework}.*.yml",
40
+ "{projectRoot}/{framework}.toml",
41
+ "{projectRoot}/{framework}.*.toml",
42
+ "{projectRoot}/{framework}.config.js",
43
+ "{projectRoot}/{framework}.*.config.js",
44
+ "{projectRoot}/{framework}.config.cjs",
45
+ "{projectRoot}/{framework}.*.config.cjs",
46
+ "{projectRoot}/{framework}.config.mjs",
47
+ "{projectRoot}/{framework}.*.config.mjs",
48
+ "{projectRoot}/{framework}.config.ts",
49
+ "{projectRoot}/{framework}.*.config.ts",
50
+ "{projectRoot}/{framework}.config.cts",
51
+ "{projectRoot}/{framework}.*.config.cts",
52
+ "{projectRoot}/{framework}.config.mts",
53
+ "{projectRoot}/{framework}.*.config.mts"
54
+ ];
55
+
56
+ //#endregion
57
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/path/src/regex.mjs
58
+ const DRIVE_LETTER_START_REGEX = /^[A-Z]:\//i;
59
+ const DRIVE_LETTER_REGEX = /^[A-Z]:$/i;
60
+ const UNC_REGEX = /^[/\\]{2}/;
61
+ const ABSOLUTE_PATH_REGEX = /^[/\\](?![/\\])|^[/\\]{2}(?!\.)|^~[/\\]|^[A-Z]:[/\\]/i;
62
+
63
+ //#endregion
64
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/path/src/slash.mjs
65
+ /**
66
+ * Replace backslash to slash
67
+ *
68
+ * @param path - The string to replace
69
+ * @returns The string with replaced backslashes
70
+ */
71
+ function slash(path) {
72
+ if (path.startsWith("\\\\?\\")) return path;
73
+ return path.replace(/\\/g, "/");
74
+ }
75
+
76
+ //#endregion
77
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/path/src/is-type.mjs
78
+ /**
79
+ * Check if the path is an absolute path.
80
+ *
81
+ * @param path - The path to check
82
+ * @returns An indicator specifying if the path is an absolute path
83
+ */
84
+ function isAbsolutePath(path) {
85
+ return ABSOLUTE_PATH_REGEX.test(slash(path));
86
+ }
87
+ /**
88
+ * Check if the path is an absolute path.
89
+ *
90
+ * @remarks
91
+ * This is an alias for {@link isAbsolutePath}.
92
+ *
93
+ * @param path - The path to check
94
+ * @returns An indicator specifying if the path is an absolute path
95
+ */
96
+ function isAbsolute(path) {
97
+ return isAbsolutePath(path);
98
+ }
99
+
100
+ //#endregion
101
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/path/src/join-paths.mjs
102
+ function normalizeWindowsPath(input = "") {
103
+ if (!input) return input;
104
+ return input.replace(/\\/g, "/").replace(DRIVE_LETTER_START_REGEX, (r) => r.toUpperCase());
105
+ }
106
+ function correctPaths(path) {
107
+ if (!path || path.length === 0) return ".";
108
+ path = normalizeWindowsPath(path);
109
+ const isUNCPath = path.match(UNC_REGEX);
110
+ const isPathAbsolute = isAbsolute(path);
111
+ const trailingSeparator = path[path.length - 1] === "/";
112
+ path = normalizeString(path, !isPathAbsolute);
113
+ if (path.length === 0) {
114
+ if (isPathAbsolute) return "/";
115
+ return trailingSeparator ? "./" : ".";
116
+ }
117
+ if (trailingSeparator) path += "/";
118
+ if (DRIVE_LETTER_REGEX.test(path)) path += "/";
119
+ if (isUNCPath) {
120
+ if (!isPathAbsolute) return `//./${path}`;
121
+ return `//${path}`;
122
+ }
123
+ return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;
124
+ }
125
+ /**
126
+ * Joins all given path segments together using the platform-specific separator as a delimiter.
127
+ *
128
+ * @remarks
129
+ * Multiple segments can be provided as separate arguments. The resulting path is normalized to remove any redundant or unnecessary segments.
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * import { joinPaths } from 'stryke/path';
134
+ *
135
+ * const fullPath = joinPaths('folder1', 'folder2', '..', 'folder3', 'file.txt');
136
+ * console.log(fullPath); // Output: 'folder1/folder3/file.txt'
137
+ *
138
+ * const absolutePath = joinPaths('/root', 'folder', '.', 'subfolder', 'file.txt');
139
+ * console.log(absolutePath); // Output: '/root/folder/subfolder/file.txt'
140
+ *
141
+ * const windowsPath = joinPaths('C:\\', 'Users', 'Public', '..', 'Documents', 'file.txt');
142
+ * console.log(windowsPath); // Output: 'C:/Users/Documents/file.txt'
143
+ *
144
+ * const uncPath = joinPaths('\\\\Server\\Share', 'Folder', 'File.txt');
145
+ * console.log(uncPath); // Output: '//Server/Share/Folder/File.txt'
146
+ * ```
147
+ *
148
+ * @param segments - The path segments to join.
149
+ * @returns The joined and normalized path string.
150
+ */
151
+ function joinPaths$1(...segments) {
152
+ let result = "";
153
+ for (const segment of segments) if (segment && slash(segment).replaceAll(/\//g, "") !== ".") {
154
+ if (result) if (slash(segment).replaceAll(/\//g, "") === "..") result = slash(result).replace(/\/+$/, "").replace(/\/*[^/]+$/, "");
155
+ else result = `${slash(result).replace(/\/+$/, "")}/${slash(segment).replace(/^\/+/, "")}`;
156
+ else if (slash(segment).replaceAll(/\//g, "") !== "..") result = segment;
157
+ }
158
+ return correctPaths(result);
159
+ }
160
+ /**
161
+ * Resolves a string path, resolving '.' and '.' segments and allowing paths above the root.
162
+ *
163
+ * @param path - The path to normalize.
164
+ * @param allowAboveRoot - Whether to allow the resulting path to be above the root directory.
165
+ * @returns the normalized path string.
166
+ */
167
+ function normalizeString(path, allowAboveRoot) {
168
+ let res = "";
169
+ let lastSegmentLength = 0;
170
+ let lastSlash = -1;
171
+ let dots = 0;
172
+ let char = null;
173
+ for (let index = 0; index <= path.length; ++index) {
174
+ if (index < path.length) char = path[index];
175
+ else if (char === "/") break;
176
+ else char = "/";
177
+ if (char === "/") {
178
+ if (lastSlash === index - 1 || dots === 1) {} else if (dots === 2) {
179
+ if (res.length < 2 || lastSegmentLength !== 2 || res[res.length - 1] !== "." || res[res.length - 2] !== ".") {
180
+ if (res.length > 2) {
181
+ const lastSlashIndex = res.lastIndexOf("/");
182
+ if (lastSlashIndex === -1) {
183
+ res = "";
184
+ lastSegmentLength = 0;
185
+ } else {
186
+ res = res.slice(0, lastSlashIndex);
187
+ lastSegmentLength = res.length - 1 - res.lastIndexOf("/");
188
+ }
189
+ lastSlash = index;
190
+ dots = 0;
191
+ continue;
192
+ } else if (res.length > 0) {
193
+ res = "";
194
+ lastSegmentLength = 0;
195
+ lastSlash = index;
196
+ dots = 0;
197
+ continue;
198
+ }
199
+ }
200
+ if (allowAboveRoot) {
201
+ res += res.length > 0 ? "/.." : "..";
202
+ lastSegmentLength = 2;
203
+ }
204
+ } else {
205
+ if (res.length > 0) res += `/${path.slice(lastSlash + 1, index)}`;
206
+ else res = path.slice(lastSlash + 1, index);
207
+ lastSegmentLength = index - lastSlash - 1;
208
+ }
209
+ lastSlash = index;
210
+ dots = 0;
211
+ } else if (char === "." && dots !== -1) ++dots;
212
+ else dots = -1;
213
+ }
214
+ return res;
215
+ }
216
+
217
+ //#endregion
218
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/acronyms.mjs
219
+ /**
220
+ * A running list of common acronyms and their meanings.
221
+ *
222
+ * @remarks
223
+ * This list is not exhaustive and may be updated over time.
224
+ */
225
+ const ACRONYMS = {
226
+ "2D": {
227
+ description: "Two-Dimensional",
228
+ display: "2d"
229
+ },
230
+ "3D": {
231
+ description: "Three-Dimensional",
232
+ display: "3d"
233
+ },
234
+ "4D": {
235
+ description: "Four-Dimensional",
236
+ display: "4d"
237
+ },
238
+ "5G": { description: "Fifth Generation (mobile networks)" },
239
+ "6G": { description: "Sixth Generation (mobile networks)" },
240
+ "7G": { description: "Seventh Generation (mobile networks)" },
241
+ "8G": { description: "Eighth Generation (mobile networks)" },
242
+ ACID: { description: "Atomicity, Consistency, Isolation, Durability" },
243
+ AITA: { description: "Am I The Asshole" },
244
+ AES: { description: "Advanced Encryption Standard" },
245
+ AI: { description: "Artificial Intelligence" },
246
+ AJAX: { description: "Asynchronous JavaScript and XML" },
247
+ API: { description: "Application Programming Interface" },
248
+ AR: { description: "Augmented Reality" },
249
+ ASCII: { description: "American Standard Code for Information Interchange" },
250
+ ATF: { description: "Bureau of Alcohol, Tobacco, Firearms and Explosives" },
251
+ ATM: { description: "Automated Teller Machine" },
252
+ B2B: { description: "Business to Business" },
253
+ B2C: { description: "Business to Consumer" },
254
+ BATFE: { description: "Bureau of Alcohol, Tobacco, Firearms and Explosives" },
255
+ BFF: { description: "Best Friends Forever" },
256
+ BFFS: { description: "Best Friends Forever (plural)" },
257
+ BI: { description: "Business Intelligence" },
258
+ BIOS: { description: "Basic Input/Output System" },
259
+ BGP: { description: "Border Gateway Protocol" },
260
+ BOM: { description: "Bill of Materials / Byte Order Mark" },
261
+ BSON: { description: "Binary JSON" },
262
+ BYOD: { description: "Bring Your Own Device" },
263
+ C2C: { description: "Consumer to Consumer" },
264
+ CAGR: { description: "Compound Annual Growth Rate" },
265
+ CAPTCHA: { description: "Completely Automated Public Turing test to tell Computers and Humans Apart" },
266
+ CCTV: { description: "Closed-Circuit Television" },
267
+ CD: { description: "Continuous Delivery / Compact Disc" },
268
+ CDN: { description: "Content Delivery Network" },
269
+ CDP: { description: "Customer Data Platform" },
270
+ CDT: { description: "Central Daylight Time" },
271
+ CIA: { description: "Central Intelligence Agency" },
272
+ CI: { description: "Continuous Integration" },
273
+ "CI/CD": { description: "Continuous Integration/Continuous Delivery" },
274
+ CIAM: { description: "Customer Identity and Access Management" },
275
+ CICD: {
276
+ description: "Continuous Integration Continuous Delivery",
277
+ display: "CI/CD"
278
+ },
279
+ CLI: { description: "Command Line Interface" },
280
+ CMDB: { description: "Configuration Management Database" },
281
+ CORS: { description: "Cross-Origin Resource Sharing" },
282
+ CPA: { description: "Certified Public Accountant" },
283
+ CPU: { description: "Central Processing Unit" },
284
+ CRUD: { description: "Create, Read, Update, Delete" },
285
+ CSR: { description: "Certificate Signing Request / Corporate Social Responsibility" },
286
+ CSS: { description: "Cascading Style Sheets" },
287
+ CST: { description: "Central Standard Time" },
288
+ CTA: { description: "Call To Action" },
289
+ CWD: { description: "Current Working Directory" },
290
+ CX: { description: "Customer Experience" },
291
+ DAG: { description: "Directed Acyclic Graph" },
292
+ DBMS: { description: "Database Management System" },
293
+ DDOS: {
294
+ description: "Distributed Denial of Service",
295
+ display: "DDoS"
296
+ },
297
+ DEA: { description: "Drug Enforcement Administration" },
298
+ DEVENV: {
299
+ description: "Devenv",
300
+ display: "Devenv"
301
+ },
302
+ DEVOPS: {
303
+ description: "Development Operations",
304
+ display: "DevOps"
305
+ },
306
+ DHS: { description: "Department of Homeland Security" },
307
+ DEST: { description: "Destination" },
308
+ DESTDIR: { description: "Destination Directory" },
309
+ DESTPATH: { description: "Destination Path" },
310
+ DIRENV: {
311
+ description: "DirEnv",
312
+ display: "DirEnv"
313
+ },
314
+ DNC: { description: "Democratic National Committee / Do Not Call" },
315
+ DNS: { description: "Domain Name System" },
316
+ DNSSEC: { description: "Domain Name System Security Extensions" },
317
+ DOD: {
318
+ description: "Department of Defense",
319
+ display: "DoD"
320
+ },
321
+ DOJ: {
322
+ description: "Department of Justice",
323
+ display: "DoJ"
324
+ },
325
+ DOM: { description: "Document Object Model" },
326
+ DOT: {
327
+ description: "Department of Transportation",
328
+ display: "DoT"
329
+ },
330
+ DOTENV: {
331
+ description: "Dotenv (.env)",
332
+ display: "Dotenv"
333
+ },
334
+ DR: { description: "Disaster Recovery" },
335
+ DRM: { description: "Digital Rights Management" },
336
+ DSN: { description: "Data Source Name" },
337
+ DWH: { description: "Data Warehouse" },
338
+ E2E: { description: "End to End" },
339
+ EAI: { description: "Enterprise Application Integration" },
340
+ EDT: { description: "Eastern Daylight Time" },
341
+ EEA: { description: "European Economic Area" },
342
+ EKS: { description: "Elastic Kubernetes Service" },
343
+ EOF: { description: "End Of File" },
344
+ EOD: { description: "End Of Day / Explosive Ordnance Disposal" },
345
+ EPA: { description: "Environmental Protection Agency" },
346
+ ER: { description: "Emergency Room / Entity Relationship" },
347
+ EST: { description: "Eastern Standard Time" },
348
+ ETC: { description: "Et Cetera" },
349
+ ETL: { description: "Extract, Transform, Load" },
350
+ EULA: { description: "End User License Agreement" },
351
+ FAAS: {
352
+ description: "Function as a Service",
353
+ display: "FaaS"
354
+ },
355
+ FAQ: {
356
+ description: "Frequently Asked Questions",
357
+ display: "FAQs"
358
+ },
359
+ FAQS: { description: "Frequently Asked Questions" },
360
+ FBI: { description: "Federal Bureau of Investigation" },
361
+ FCC: { description: "Federal Communications Commission" },
362
+ FDA: { description: "Food and Drug Administration" },
363
+ FIDO: { description: "Fast IDentity Online" },
364
+ FLOTUS: { description: "First Lady of the United States" },
365
+ FQDN: { description: "Fully Qualified Domain Name" },
366
+ FTC: { description: "Federal Trade Commission" },
367
+ FTP: { description: "File Transfer Protocol" },
368
+ GC: { description: "Garbage Collection" },
369
+ GCP: { description: "Google Cloud Platform" },
370
+ GDPR: { description: "General Data Protection Regulation" },
371
+ GMT: { description: "Greenwich Mean Time" },
372
+ GOP: { description: "Grand Old Party" },
373
+ GPU: { description: "Graphics Processing Unit" },
374
+ GUID: { description: "Globally Unique Identifier" },
375
+ GUI: { description: "Graphical User Interface" },
376
+ GZIP: { description: "GNU Zip" },
377
+ HCI: { description: "Human Computer Interaction / Hyper-Converged Infrastructure" },
378
+ HDD: { description: "Hard Disk Drive" },
379
+ HDFS: { description: "Hadoop Distributed File System" },
380
+ HHS: { description: "Health and Human Services" },
381
+ HIPAA: { description: "Health Insurance Portability and Accountability Act" },
382
+ HMAC: { description: "Hash-based Message Authentication Code" },
383
+ HOTP: { description: "HMAC-based One-Time Password" },
384
+ HSM: { description: "Hardware Security Module" },
385
+ HTML: { description: "HyperText Markup Language" },
386
+ HTTP: { description: "HyperText Transfer Protocol (HTTP)" },
387
+ "HTTP/2": { description: "HyperText Transfer Protocol Version 2 (HTTP/2)" },
388
+ "HTTP/2.0": {
389
+ description: "HyperText Transfer Protocol Version 2 (HTTP/2)",
390
+ display: "HTTP2"
391
+ },
392
+ "HTTP/3": { description: "HyperText Transfer Protocol Version 3 (HTTP/3)" },
393
+ "HTTP/3.0": {
394
+ description: "HyperText Transfer Protocol Version 3 (HTTP/3)",
395
+ display: "HTTP3"
396
+ },
397
+ HTTP2: {
398
+ description: "HyperText Transfer Protocol Version 2 (HTTP/2)",
399
+ display: "HTTP2"
400
+ },
401
+ "HTTP2.0": {
402
+ description: "HyperText Transfer Protocol Version 2 (HTTP/2)",
403
+ display: "HTTP2"
404
+ },
405
+ HTTP3: {
406
+ description: "HyperText Transfer Protocol Version 3 (HTTP/3)",
407
+ display: "HTTP3"
408
+ },
409
+ "HTTP3.0": {
410
+ description: "HyperText Transfer Protocol Version 3 (HTTP/3)",
411
+ display: "HTTP3"
412
+ },
413
+ HTTPS: { description: "HyperText Transfer Protocol Secure (HTTPS)" },
414
+ "HTTPS/2": { description: "HyperText Transfer Protocol Secure Version 2 (HTTPS/2)" },
415
+ "HTTPS/2.0": {
416
+ description: "HyperText Transfer Protocol Secure Version 2 (HTTPS/2)",
417
+ display: "HTTPS2"
418
+ },
419
+ "HTTPS/3": { description: "HyperText Transfer Protocol Secure Version 3 (HTTPS/3)" },
420
+ "HTTPS/3.0": {
421
+ description: "HyperText Transfer Protocol Secure Version 3 (HTTPS/3)",
422
+ display: "HTTPS3"
423
+ },
424
+ HTTPS2: {
425
+ description: "HyperText Transfer Protocol Secure Version 2 (HTTPS/2)",
426
+ display: "HTTPS2"
427
+ },
428
+ "HTTPS2.0": {
429
+ description: "HyperText Transfer Protocol Secure Version 2 (HTTPS/2)",
430
+ display: "HTTPS2"
431
+ },
432
+ HTTPS3: {
433
+ description: "HyperText Transfer Protocol Secure Version 3 (HTTPS/3)",
434
+ display: "HTTPS3"
435
+ },
436
+ "HTTPS3.0": {
437
+ description: "HyperText Transfer Protocol Secure Version 3 (HTTPS/3)",
438
+ display: "HTTPS3"
439
+ },
440
+ IAAS: {
441
+ description: "Infrastructure as a Service",
442
+ display: "IaaS"
443
+ },
444
+ IAM: { description: "Identity and Access Management" },
445
+ IAMM: { description: "Identity and Access Management and Monitoring" },
446
+ IAMT: { description: "Identity and Access Management Tool" },
447
+ ID: {
448
+ description: "Identifier",
449
+ display: "Id"
450
+ },
451
+ IFTTT: { description: "If This Then That" },
452
+ IMAP: { description: "Internet Message Access Protocol" },
453
+ IO: { description: "Input/Output" },
454
+ IP: { description: "Internet Protocol" },
455
+ IPFS: { description: "InterPlanetary File System" },
456
+ IPS: { description: "Intrusion Prevention System" },
457
+ ISO: { description: "International Organization for Standardization" },
458
+ IQ: {
459
+ description: "Intelligence Quotient",
460
+ display: "IQ"
461
+ },
462
+ IOT: {
463
+ description: "Internet of Things",
464
+ display: "IoT"
465
+ },
466
+ JSON: { description: "JavaScript Object Notation" },
467
+ JSONP: { description: "JSON with Padding" },
468
+ JWT: { description: "JSON Web Token" },
469
+ K8S: {
470
+ description: "Kubernetes",
471
+ display: "K8s"
472
+ },
473
+ KMS: { description: "Key Management Service" },
474
+ KPI: { description: "Key Performance Indicator" },
475
+ KV: { description: "Key Value" },
476
+ LAN: { description: "Local Area Network" },
477
+ LHS: { description: "Left Hand Side" },
478
+ LPGA: { description: "Ladies Professional Golf Association" },
479
+ LXC: { description: "Linux Containers" },
480
+ MDT: { description: "Mountain Daylight Time" },
481
+ MFA: { description: "Multi-Factor Authentication" },
482
+ ML: { description: "Machine Learning" },
483
+ MLB: { description: "Major League Baseball" },
484
+ MLOps: { description: "Machine Learning Operations" },
485
+ MPA: { description: "Multi-Page Application" },
486
+ MST: { description: "Mountain Standard Time" },
487
+ MVC: { description: "Model View Controller" },
488
+ MVP: { description: "Minimum Viable Product / Most Valuable Player" },
489
+ NAIA: { description: "National Association of Intercollegiate Athletics" },
490
+ NAS: { description: "Network Attached Storage" },
491
+ NASA: { description: "National Aeronautics and Space Administration" },
492
+ NASCAR: { description: "National Association for Stock Car Auto Racing" },
493
+ NAT: { description: "Network Address Translation" },
494
+ NBA: { description: "National Basketball Association" },
495
+ NCAA: { description: "National Collegiate Athletic Association" },
496
+ NDA: { description: "Non-Disclosure Agreement" },
497
+ NFS: { description: "Network File System" },
498
+ NHL: { description: "National Hockey League" },
499
+ NIST: { description: "National Institute of Standards and Technology" },
500
+ NLP: { description: "Natural Language Processing" },
501
+ NPS: { description: "Net Promoter Score" },
502
+ NRA: { description: "National Rifle Association" },
503
+ NSFW: { description: "Not Safe For Work" },
504
+ NX: {
505
+ description: "Nx",
506
+ display: "Nx"
507
+ },
508
+ OCR: { description: "Optical Character Recognition" },
509
+ OEM: { description: "Original Equipment Manufacturer" },
510
+ OKR: { description: "Objectives and Key Results" },
511
+ OLAP: { description: "Online Analytical Processing" },
512
+ OLTP: { description: "Online Transaction Processing" },
513
+ OOP: { description: "Object Oriented Programming" },
514
+ ORM: { description: "Object Relational Mapping" },
515
+ OS: { description: "Operating System" },
516
+ OSINT: { description: "Open Source Intelligence" },
517
+ OSS: { description: "Open Source Software" },
518
+ OTP: { description: "One-Time Password" },
519
+ P2P: { description: "Peer to Peer" },
520
+ PAAS: {
521
+ description: "Platform as a Service",
522
+ display: "PaaS"
523
+ },
524
+ PCI: { description: "Payment Card Industry" },
525
+ PDP: { description: "Policy Decision Point / Product Detail Page" },
526
+ PDT: { description: "Pacific Daylight Time" },
527
+ PGA: { description: "Professional Golfers' Association" },
528
+ POTUS: { description: "President of the United States" },
529
+ PP: { description: "Pages / PayPal / Percentage Points" },
530
+ PST: { description: "Pacific Standard Time" },
531
+ PTO: { description: "Paid Time Off / Power Take-Off" },
532
+ PKI: { description: "Public Key Infrastructure" },
533
+ PWA: { description: "Progressive Web App" },
534
+ PX: { description: "Pixel" },
535
+ QA: { description: "Quality Assurance" },
536
+ R2: { description: "R2" },
537
+ RAID: { description: "Redundant Array of Independent Disks" },
538
+ RAM: { description: "Random Access Memory" },
539
+ RDS: { description: "Relational Database Service" },
540
+ REST: { description: "Representational State Transfer" },
541
+ RHS: { description: "Right Hand Side" },
542
+ ROI: { description: "Return on Investment" },
543
+ RPC: { description: "Remote Procedure Call" },
544
+ RPA: { description: "Robotic Process Automation" },
545
+ RSC: { description: "React Server Components" },
546
+ RSS: { description: "Really Simple Syndication" },
547
+ RUM: { description: "Real User Monitoring" },
548
+ S3: { description: "Simple Storage Service (S3)" },
549
+ SAN: { description: "Storage Area Network" },
550
+ SASE: { description: "Secure Access Service Edge" },
551
+ SCOTUS: { description: "Supreme Court of the United States" },
552
+ SDLC: { description: "Software Development Life Cycle" },
553
+ SDK: { description: "Software Development Kit" },
554
+ SEC: { description: "Securities and Exchange Commission" },
555
+ SEO: { description: "Search Engine Optimization" },
556
+ SFTP: { description: "SSH File Transfer Protocol / Secure File Transfer Protocol" },
557
+ SIEM: { description: "Security Information and Event Management" },
558
+ SLA: { description: "Service Level Agreement" },
559
+ SMB: { description: "Server Message Block / Small and Medium Business" },
560
+ SMTP: { description: "Simple Mail Transfer Protocol" },
561
+ SOAP: { description: "Simple Object Access Protocol" },
562
+ SOA: { description: "Service Oriented Architecture" },
563
+ SOC: { description: "Security Operations Center / System on Chip" },
564
+ SPA: { description: "Single Page Application" },
565
+ SPDY: { description: "Speedy (pronounced \"SPeeDY\")" },
566
+ SPF: { description: "Sender Policy Framework" },
567
+ SQL: { description: "Structured Query Language" },
568
+ SRC: { description: "Source" },
569
+ SRCDIR: { description: "Source Directory" },
570
+ SRCPATH: { description: "Source Path" },
571
+ SRV: { description: "Service" },
572
+ SRE: { description: "Site Reliability Engineering" },
573
+ SSH: { description: "Secure Shell" },
574
+ SSDL: { description: "Secure Software Development Lifecycle" },
575
+ SSG: { description: "Static Site Generation" },
576
+ SSR: { description: "Server Side Rendering" },
577
+ SSO: { description: "Single Sign-On" },
578
+ SSL: { description: "Secure Sockets Layer" },
579
+ TDD: { description: "Test Driven Development" },
580
+ TLD: { description: "Top Level Domain" },
581
+ TLS: { description: "Transport Layer Security" },
582
+ "TLS1.3": { description: "Transport Layer Security 1.3" },
583
+ TOR: { description: "The Onion Router" },
584
+ TOTP: { description: "Time-based One-Time Password" },
585
+ TRPC: { description: "TypeScript Remote Procedure Call" },
586
+ TSA: { description: "Transportation Security Administration" },
587
+ TTL: { description: "Time To Live" },
588
+ UDP: { description: "User Datagram Protocol" },
589
+ UI: { description: "User Interface" },
590
+ UID: { description: "Unique Identifier" },
591
+ URI: { description: "Uniform Resource Identifier" },
592
+ URL: { description: "Uniform Resource Locator" },
593
+ USOPC: { description: "United States Olympic & Paralympic Committee" },
594
+ USPS: { description: "United States Postal Service" },
595
+ USTA: { description: "United States Tennis Association" },
596
+ UTF: { description: "Unicode Transformation Format" },
597
+ UTC: { description: "Coordinated Universal Time" },
598
+ UUID: { description: "Universally Unique Identifier" },
599
+ UX: { description: "User Experience" },
600
+ VM: { description: "Virtual Machine" },
601
+ VLAN: { description: "Virtual Local Area Network" },
602
+ VPN: { description: "Virtual Private Network" },
603
+ VPPA: { description: "Video Privacy Protection Act" },
604
+ VR: { description: "Virtual Reality" },
605
+ WAF: { description: "Web Application Firewall" },
606
+ WAN: { description: "Wide Area Network" },
607
+ WNBA: { description: "Women's National Basketball Association" },
608
+ WLAN: { description: "Wireless Local Area Network" },
609
+ WPA: { description: "Wi-Fi Protected Access" },
610
+ WPA2: { description: "Wi-Fi Protected Access II" },
611
+ WPA3: { description: "Wi-Fi Protected Access III" },
612
+ WWW: { description: "World Wide Web" },
613
+ WYSIWYG: { description: "What You See Is What You Get" },
614
+ XACML: { description: "eXtensible Access Control Markup Language" },
615
+ XDG: { description: "Cross-Desktop Group" },
616
+ XML: { description: "eXtensible Markup Language" },
617
+ XSRF: { description: "Cross-Site Request Forgery" },
618
+ XSS: { description: "Cross-Site Scripting" },
619
+ XR: { description: "Extended Reality" },
620
+ YAML: { description: "YAML Ain't Markup Language" },
621
+ YMCA: { description: "Young Men's Christian Association" },
622
+ YWCA: { description: "Young Women's Christian Association" },
623
+ ZTA: { description: "Zero Trust Architecture" }
624
+ };
625
+ Object.fromEntries(Object.entries(ACRONYMS).map(([key, value]) => [key, value.display ?? key]));
626
+ Object.fromEntries(Object.entries(ACRONYMS).map(([key, value]) => [key, value.description]));
627
+
628
+ //#endregion
629
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/combine.mjs
630
+ /**
631
+ * Combine two strings with a space in between.
632
+ *
633
+ * @param acc - The accumulated string.
634
+ * @param str - The string to add.
635
+ * @returns The combined string.
636
+ */
637
+ function combine(acc, str) {
638
+ return `${acc} ${str}`;
639
+ }
640
+
641
+ //#endregion
642
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/decamelize.mjs
643
+ /**
644
+ * Convert a camelCase or PascalCase string to a snake_case string.
645
+ *
646
+ * @param value - The camelCase or PascalCase string to convert.
647
+ * @returns The converted snake_case string.
648
+ */
649
+ function decamelize(value) {
650
+ return value.replace(/([a-z\d])([A-Z])/g, "$1_$2").replace(/([A-Z]+)([A-Z][a-z\d]+)/g, "$1_$2").toLowerCase();
651
+ }
652
+
653
+ //#endregion
654
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/articles.mjs
655
+ const ARTICLES = [
656
+ "a",
657
+ "an",
658
+ "the"
659
+ ];
660
+
661
+ //#endregion
662
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/conjunctions.mjs
663
+ const CONJUNCTIONS = [
664
+ "and",
665
+ "that",
666
+ "but",
667
+ "or",
668
+ "as",
669
+ "if",
670
+ "when",
671
+ "than",
672
+ "because",
673
+ "while",
674
+ "where",
675
+ "after",
676
+ "so",
677
+ "though",
678
+ "since",
679
+ "until",
680
+ "whether",
681
+ "before",
682
+ "although",
683
+ "nor",
684
+ "like",
685
+ "once",
686
+ "unless",
687
+ "now",
688
+ "except"
689
+ ];
690
+
691
+ //#endregion
692
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/prepositions.mjs
693
+ const PREPOSITIONS = [
694
+ "about",
695
+ "above",
696
+ "across",
697
+ "after",
698
+ "against",
699
+ "along",
700
+ "among",
701
+ "around",
702
+ "at",
703
+ "because of",
704
+ "before",
705
+ "behind",
706
+ "below",
707
+ "beneath",
708
+ "beside",
709
+ "besides",
710
+ "between",
711
+ "beyond",
712
+ "but",
713
+ "by",
714
+ "concerning",
715
+ "despite",
716
+ "down",
717
+ "during",
718
+ "except",
719
+ "excepting",
720
+ "for",
721
+ "from",
722
+ "in",
723
+ "in front of",
724
+ "inside",
725
+ "in spite of",
726
+ "instead of",
727
+ "into",
728
+ "like",
729
+ "near",
730
+ "of",
731
+ "off",
732
+ "on",
733
+ "onto",
734
+ "out",
735
+ "outside",
736
+ "over",
737
+ "past",
738
+ "regarding",
739
+ "since",
740
+ "through",
741
+ "throughout",
742
+ "to",
743
+ "toward",
744
+ "under",
745
+ "underneath",
746
+ "until",
747
+ "up",
748
+ "upon",
749
+ "up to",
750
+ "with",
751
+ "within",
752
+ "without",
753
+ "with regard to",
754
+ "with respect to"
755
+ ];
756
+
757
+ //#endregion
758
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/special-cases.mjs
759
+ const SPECIAL_CASES = [
760
+ "2FA",
761
+ "4K",
762
+ "5K",
763
+ "8K",
764
+ "AGI",
765
+ "BI",
766
+ "ChatGPT",
767
+ "CTA",
768
+ "DateTime",
769
+ "FMS",
770
+ "GitHub",
771
+ "GPT",
772
+ "HD",
773
+ "IBMid",
774
+ "IDs",
775
+ "iMac",
776
+ "IMAX",
777
+ "iOS",
778
+ "iPad",
779
+ "iPhone",
780
+ "iPod",
781
+ "LDAP",
782
+ "LinkedIn",
783
+ "LLM",
784
+ "macOS",
785
+ "McDonalds",
786
+ "MCP",
787
+ "ML",
788
+ "MySQL",
789
+ "NLG",
790
+ "NLP",
791
+ "NLU",
792
+ "OpenAI",
793
+ "PDFs",
794
+ "PIM",
795
+ "PEFT",
796
+ "pH",
797
+ "PostgreSQL",
798
+ "SEO",
799
+ "TTS",
800
+ "UHD",
801
+ "UUID",
802
+ "XSS",
803
+ "YouTube",
804
+ "CSpell",
805
+ "ESLint"
806
+ ];
807
+
808
+ //#endregion
809
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/format-special-cases.mjs
810
+ /**
811
+ * Handle special words in a title.
812
+ *
813
+ * @see https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case
814
+ *
815
+ * @param value - The word to handle
816
+ * @param index - The index of the word in the title
817
+ * @param words - The full title as an array of words
818
+ * @returns The formatted word
819
+ */
820
+ function formatSpecialCases(value, index, words, options) {
821
+ const lowercaseStr = value.toLowerCase();
822
+ const uppercaseStr = value.toUpperCase();
823
+ for (const special of SPECIAL_CASES) if (special.toLowerCase() === lowercaseStr) return special;
824
+ if (ACRONYMS[uppercaseStr]) return options?.useDescriptions !== false ? ACRONYMS[uppercaseStr].description : ACRONYMS[uppercaseStr].display || uppercaseStr;
825
+ if (index === 0) return value;
826
+ if (index === words.length - 1) return value;
827
+ if (value.length >= 4) return value;
828
+ if (PREPOSITIONS.includes(lowercaseStr)) return lowercaseStr;
829
+ if (CONJUNCTIONS.includes(lowercaseStr)) return lowercaseStr;
830
+ if (ARTICLES.includes(lowercaseStr)) return lowercaseStr;
831
+ return value;
832
+ }
833
+
834
+ //#endregion
835
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/upper-case-first.mjs
836
+ /**
837
+ * Upper case the first character of an input string.
838
+ *
839
+ * @remarks
840
+ * "Thisisanexample"
841
+ *
842
+ * @param input - The input string.
843
+ * @returns The capitalized string.
844
+ */
845
+ function upperCaseFirst(input) {
846
+ return input ? input.charAt(0).toUpperCase() + input.slice(1) : input;
847
+ }
848
+
849
+ //#endregion
850
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/string-format/src/title-case.mjs
851
+ /**
852
+ * Convert a string to title case.
853
+ *
854
+ * @param input - The input string to convert.
855
+ * @param options - Options for formatting special cases.
856
+ * @returns The title cased string.
857
+ */
858
+ function titleCase$1(input, options) {
859
+ return input?.split(/\s+-\s+/).map((segment) => decamelize(segment).split(/[\s\-_]/).map(upperCaseFirst).map((value) => options?.expandAcronyms ? ACRONYMS[value]?.description || value : value).map((value, index, array) => formatSpecialCases(value, index, array, options)).reduce(combine)).join(" - ");
860
+ }
861
+
862
+ //#endregion
863
+ //#region ../../node_modules/.pnpm/@stryke+env@0.20.80_@types+picomatch@4.0.2_nx@22.6.1_@swc-node+register@1.11.1_@swc+cor_41216bf7e00b4911311d60ce1beade8c/node_modules/@stryke/env/dist/get-env-paths.mjs
864
+ const homedir = os.homedir();
865
+ const tmpdir = os.tmpdir();
866
+ const macos = (orgId) => {
867
+ const library = joinPaths$1(homedir, "Library");
868
+ return {
869
+ data: joinPaths$1(library, "Application Support", orgId),
870
+ config: joinPaths$1(library, "Preferences", orgId),
871
+ cache: joinPaths$1(library, "Caches", orgId),
872
+ log: joinPaths$1(library, "Logs", orgId),
873
+ temp: joinPaths$1(tmpdir, orgId)
874
+ };
875
+ };
876
+ const windows = (orgId) => {
877
+ const appData = process.env.APPDATA || joinPaths$1(homedir, "AppData", "Roaming");
878
+ const localAppData = process.env.LOCALAPPDATA || joinPaths$1(homedir, "AppData", "Local");
879
+ const windowsFormattedOrgId = titleCase$1(orgId).trim().replace(/\s+/g, "");
880
+ return {
881
+ data: joinPaths$1(localAppData, windowsFormattedOrgId, "Data"),
882
+ config: joinPaths$1(appData, windowsFormattedOrgId, "Config"),
883
+ cache: joinPaths$1(localAppData, "Cache", orgId),
884
+ log: joinPaths$1(localAppData, windowsFormattedOrgId, "Log"),
885
+ temp: joinPaths$1(tmpdir, orgId)
886
+ };
887
+ };
888
+ const linux = (orgId) => {
889
+ const username = path.basename(homedir);
890
+ return {
891
+ data: joinPaths$1(process.env.XDG_DATA_HOME || joinPaths$1(homedir, ".local", "share"), orgId),
892
+ config: joinPaths$1(process.env.XDG_CONFIG_HOME || joinPaths$1(homedir, ".config"), orgId),
893
+ cache: joinPaths$1(process.env.XDG_CACHE_HOME || joinPaths$1(homedir, ".cache"), orgId),
894
+ log: joinPaths$1(process.env.XDG_STATE_HOME || joinPaths$1(homedir, ".local", "state"), orgId),
895
+ temp: process.env.DEVENV_RUNTIME || process.env.XDG_RUNTIME_DIR ? joinPaths$1(process.env.DEVENV_RUNTIME || process.env.XDG_RUNTIME_DIR, orgId) : joinPaths$1(tmpdir, username, orgId)
896
+ };
897
+ };
898
+ /**
899
+ * Get paths for storing things like data, config, logs, and cache in the current runtime environment.
900
+ *
901
+ * @remarks
902
+ * On macOS, directories are generally created in `~/Library/Application Support/<name>`.
903
+ * On Windows, directories are generally created in `%AppData%/<name>`.
904
+ * On Linux, directories are generally created in `~/.config/<name>` - this is determined via the [XDG Base Directory spec](https://specifications.freedesktop.org/basedir-spec/latest/).
905
+ *
906
+ * If the `STORM_DATA_DIR`, `STORM_CONFIG_DIR`, `STORM_CACHE_DIR`, `STORM_LOG_DIR`, or `STORM_TEMP_DIR` environment variables are set, they will be used instead of the default paths.
907
+ *
908
+ * @param options - Parameters used to determine the specific paths for the current project/runtime environment
909
+ * @returns An object containing the various paths for the runtime environment
910
+ */
911
+ function getEnvPaths(options = {}) {
912
+ let orgId = options.orgId || "storm-software";
913
+ if (!orgId) throw new Error("You need to provide an orgId to the `getEnvPaths` function");
914
+ if (options.suffix) orgId += `-${typeof options.suffix === "string" ? options.suffix : "nodejs"}`;
915
+ let result = {};
916
+ if (process.platform === "darwin") result = macos(orgId);
917
+ else if (process.platform === "win32") result = windows(orgId);
918
+ else result = linux(orgId);
919
+ if (process.env.STORM_DATA_DIR) result.data = process.env.STORM_DATA_DIR;
920
+ else if (process.env.STORM_CONFIG_DIR) result.config = process.env.STORM_CONFIG_DIR;
921
+ else if (process.env.STORM_CACHE_DIR) result.cache = process.env.STORM_CACHE_DIR;
922
+ else if (process.env.STORM_LOG_DIR) result.log = process.env.STORM_LOG_DIR;
923
+ else if (process.env.STORM_TEMP_DIR) result.temp = process.env.STORM_TEMP_DIR;
924
+ if (options.workspaceRoot) {
925
+ result.cache ??= joinPaths$1(options.workspaceRoot, "node_modules", ".cache", orgId);
926
+ result.temp ??= joinPaths$1(options.workspaceRoot, "tmp", orgId);
927
+ result.log ??= joinPaths$1(result.temp, "logs");
928
+ result.config ??= joinPaths$1(options.workspaceRoot, ".config", orgId);
929
+ }
930
+ return Object.keys(result).reduce((ret, key) => {
931
+ if (result[key]) {
932
+ const filePath = result[key];
933
+ ret[key] = options.appId && options.appId !== options.orgId && options.appId !== options.nestedDir ? joinPaths$1(filePath, options.appId) : filePath;
934
+ if (options.nestedDir && options.nestedDir !== options.orgId && options.nestedDir !== options.appId) ret[key] = joinPaths$1(ret[key], options.nestedDir);
935
+ }
936
+ return ret;
937
+ }, {});
938
+ }
939
+
940
+ //#endregion
941
+ //#region ../../node_modules/.pnpm/@stryke+fs@0.33.63_nx@22.6.1_@swc-node+register@1.11.1_@swc+core@1.15.18_@swc+helpers@0_c7d5763b9f424f5f33bc33dcc935ce61/node_modules/@stryke/fs/dist/exists.mjs
942
+ /**
943
+ * Check if a file exists
944
+ *
945
+ * @param filePath - The file path to check
946
+ * @returns An indicator specifying if the file exists
947
+ */
948
+ function existsSync$1(filePath) {
949
+ return existsSync(filePath);
950
+ }
951
+
952
+ //#endregion
953
+ //#region ../../node_modules/.pnpm/@powerlines+nx@0.11.296_55935fe12b20e8a57a8bedd62bd3dd6b/node_modules/@powerlines/nx/dist/src/helpers/plugin-utilities.mjs
954
+ /**
955
+ * Generates Nx input strings for the Powerlines configuration file, replacing the `{framework}` placeholder with the specified framework name.
956
+ *
957
+ * @param framework - The framework name to use in the input strings
958
+ * @returns An array of Nx input strings for the configuration file
959
+ */
960
+ function getNxTargetInputs(framework) {
961
+ return CONFIG_INPUTS.map((input) => input.replace("{framework}", framework));
962
+ }
963
+ /**
964
+ * Generates Nx input strings for the Powerlines configuration file, replacing the `{framework}` placeholder with the specified framework name.
965
+ *
966
+ * @param framework - The framework name to use in the input strings
967
+ * @returns An array of Nx input strings for the configuration file
968
+ */
969
+ function getNxPluginInputs(framework) {
970
+ return `**/{${getNxTargetInputs(framework).map((input) => input.replace("{projectRoot}/", "")).join(",")}}`;
971
+ }
972
+ /**
973
+ * Creates an Nx plugin that integrates Powerlines into the Nx build process.
974
+ *
975
+ * @param opts - Options for creating the Nx plugin
976
+ * @returns A CreateNodesV2 function that can be used as an Nx plugin
977
+ */
978
+ function createNxPlugin(opts) {
979
+ const framework = opts?.framework || "powerlines";
980
+ const title = `${titleCase(framework)} Nx Plugin`;
981
+ try {
982
+ const name = opts?.name || `${framework}/nx/plugin`;
983
+ const artifactsFolder = opts?.artifactsFolder || `{projectRoot}/.${framework}`;
984
+ const targetInputs = getNxTargetInputs(framework);
985
+ const pluginInputs = getNxPluginInputs(framework);
986
+ return [pluginInputs, async (configFiles, options, contextV2) => {
987
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Initializing the ${title} for the following inputs: ${pluginInputs}`);
988
+ const envPaths = getEnvPaths({
989
+ orgId: "storm-software",
990
+ appId: framework,
991
+ workspaceRoot: contextV2.workspaceRoot
992
+ });
993
+ if (!envPaths.cache) throw new Error("The cache directory could not be determined.");
994
+ const nxJson = readNxJson(contextV2.workspaceRoot);
995
+ const resolver = createJiti(contextV2.workspaceRoot, {
996
+ debug: !!options?.debug,
997
+ interopDefault: true,
998
+ fsCache: joinPaths(envPaths.cache, "nx-plugin", murmurhash(contextV2.workspaceRoot, { maxLength: ROOT_HASH_LENGTH }), "jiti"),
999
+ moduleCache: true
1000
+ });
1001
+ return createNodesFromFiles(async (configFile, _, context) => {
1002
+ try {
1003
+ const projectRoot = getProjectRoot(configFile, contextV2.workspaceRoot);
1004
+ if (!projectRoot) {
1005
+ 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}`);
1006
+ return {};
1007
+ }
1008
+ const root = getRoot(projectRoot, context);
1009
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Loading ${framework} user configuration for project in root directory ${projectRoot}.`);
1010
+ let userConfig = {};
1011
+ try {
1012
+ userConfig = await loadUserConfigFile(projectRoot, contextV2.workspaceRoot, resolver, "build", "development", configFile, framework);
1013
+ } catch (error) {
1014
+ console.warn(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Failed to load user configuration for project in ${projectRoot} - ${isError(error) ? error.message : isSetString(error) ? error : "Unknown error"} \n\nThis error can occur if the project depends on another package in the workspace and the dependent package has not been built yet. To resolve this issue, please ensure that all dependent packages have been built successfully.`);
1015
+ }
1016
+ if (!existsSync$1(joinPaths(contextV2.workspaceRoot, projectRoot, "package.json"))) {
1017
+ 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.`);
1018
+ return {};
1019
+ }
1020
+ const packageJsonContent = await readFile(joinPaths(contextV2.workspaceRoot, projectRoot, "package.json"), "utf8");
1021
+ if (!packageJsonContent) {
1022
+ if (options?.verboseOutput) console.warn(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - No package.json file found for project in root directory ${projectRoot}`);
1023
+ return {};
1024
+ }
1025
+ const packageJson = JSON.parse(packageJsonContent);
1026
+ if (!userConfig.configFile && !packageJson?.[camelCase(framework)]) {
1027
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Skipping ${projectRoot} - no ${framework} configuration found for project in root directory.`);
1028
+ return {};
1029
+ }
1030
+ const projectConfig = getProjectConfigFromProjectRoot(projectRoot, packageJson);
1031
+ if (!projectConfig) {
1032
+ if (options?.verboseOutput) console.warn(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - No project configuration found for project in root directory ${projectRoot}`);
1033
+ return {};
1034
+ }
1035
+ const targets = readTargetsFromPackageJson(packageJson, nxJson, projectRoot, context.workspaceRoot);
1036
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Preparing Nx targets for project in root directory ${projectRoot}.`);
1037
+ if (options?.clean !== false && !targets[options?.clean?.targetName || "clean"]) targets[options?.clean?.targetName || "clean"] = {
1038
+ cache: true,
1039
+ inputs: Array.isArray(options?.clean?.inputs) ? options.clean.inputs : withNamedInputs(targetInputs, [options?.clean?.inputs || "typescript"]),
1040
+ outputs: options?.clean?.outputs,
1041
+ executor: options?.clean?.executor || `@${framework}/nx:${options?.clean?.targetName || "clean"}`,
1042
+ dependsOn: options?.clean?.dependsOn ?? [`^${options?.clean?.targetName || "clean"}`],
1043
+ defaultConfiguration: options?.clean?.defaultConfiguration || "production",
1044
+ options: {
1045
+ projectType: projectConfig.projectType,
1046
+ outputPath: `{workspaceRoot}/${projectRoot}/dist`,
1047
+ copyPath: `{workspaceRoot}/dist/${projectRoot}`
1048
+ },
1049
+ configurations: {
1050
+ production: { mode: "production" },
1051
+ test: { mode: "test" },
1052
+ development: {
1053
+ mode: "development",
1054
+ skipCache: true
1055
+ }
1056
+ }
1057
+ };
1058
+ if (options?.prepare !== false && !targets[options?.prepare?.targetName || "prepare"]) targets[options?.prepare?.targetName || "prepare"] = {
1059
+ cache: true,
1060
+ inputs: Array.isArray(options?.prepare?.inputs) ? options.prepare.inputs : withNamedInputs(targetInputs, [options?.prepare?.inputs || "typescript"]),
1061
+ outputs: options?.prepare?.outputs ?? [artifactsFolder],
1062
+ executor: options?.prepare?.executor || `@${framework}/nx:${options?.prepare?.targetName || "prepare"}`,
1063
+ dependsOn: options?.prepare?.dependsOn ?? [`^${options?.prepare?.targetName || "build"}`, options?.clean !== false && `${options?.clean?.targetName || "clean"}`].filter(Boolean),
1064
+ defaultConfiguration: options?.prepare?.defaultConfiguration || "production",
1065
+ options: {
1066
+ projectType: projectConfig.projectType,
1067
+ outputPath: `{workspaceRoot}/${projectRoot}/dist`,
1068
+ copyPath: `{workspaceRoot}/dist/${projectRoot}`
1069
+ },
1070
+ configurations: {
1071
+ production: { mode: "production" },
1072
+ test: { mode: "test" },
1073
+ development: {
1074
+ mode: "development",
1075
+ skipCache: true
1076
+ }
1077
+ }
1078
+ };
1079
+ if (options?.build !== false && !targets[options?.build?.targetName || "build"]) targets[options?.build?.targetName || "build"] = {
1080
+ cache: true,
1081
+ inputs: Array.isArray(options?.build?.inputs) ? options.build.inputs : withNamedInputs(targetInputs, [options?.build?.inputs || "typescript"]),
1082
+ outputs: options?.build?.outputs ?? ["{options.outputPath}"],
1083
+ executor: options?.build?.executor || `@${framework}/nx:${options?.build?.targetName || "build"}`,
1084
+ dependsOn: options?.build?.dependsOn ?? [`^${options?.build?.targetName || "build"}`, userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"].filter(Boolean),
1085
+ defaultConfiguration: options?.build?.defaultConfiguration || "production",
1086
+ options: {
1087
+ projectType: projectConfig.projectType,
1088
+ outputPath: `{workspaceRoot}/${projectRoot}/dist`,
1089
+ copyPath: `{workspaceRoot}/dist/${projectRoot}`
1090
+ },
1091
+ configurations: {
1092
+ production: { mode: "production" },
1093
+ test: { mode: "test" },
1094
+ development: {
1095
+ mode: "development",
1096
+ skipCache: true
1097
+ }
1098
+ }
1099
+ };
1100
+ if (options?.lint !== false && !targets[options?.lint?.targetName || "lint"]) targets[options?.lint?.targetName || "lint"] = {
1101
+ cache: true,
1102
+ inputs: Array.isArray(options?.lint?.inputs) ? options.lint.inputs : withNamedInputs([...targetInputs, artifactsFolder], options?.lint?.inputs ? [options.lint.inputs] : ["linting", "typescript"]),
1103
+ outputs: options?.lint?.outputs ?? ["{options.outputPath}"],
1104
+ executor: options?.lint?.executor || `@${framework}/nx:${options?.lint?.targetName || "lint"}`,
1105
+ dependsOn: options?.lint?.dependsOn ?? [`^${options?.lint?.targetName || "lint"}`, userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"].filter(Boolean),
1106
+ defaultConfiguration: options?.lint?.defaultConfiguration || "production",
1107
+ options: {
1108
+ projectType: projectConfig.projectType,
1109
+ outputPath: `{workspaceRoot}/${projectRoot}/dist`,
1110
+ copyPath: `{workspaceRoot}/dist/${projectRoot}`
1111
+ },
1112
+ configurations: {
1113
+ production: { mode: "production" },
1114
+ test: { mode: "test" },
1115
+ development: {
1116
+ mode: "development",
1117
+ skipCache: true
1118
+ }
1119
+ }
1120
+ };
1121
+ if (options?.docs !== false && !targets[options?.docs?.targetName || "docs"]) targets[options?.docs?.targetName || "docs"] = {
1122
+ cache: true,
1123
+ inputs: Array.isArray(options?.docs?.inputs) ? options.docs.inputs : withNamedInputs([...targetInputs, artifactsFolder], options?.docs?.inputs ? [options.docs.inputs] : ["documentation", "typescript"]),
1124
+ outputs: options?.docs?.outputs ?? ["{options.outputPath}"],
1125
+ executor: options?.docs?.executor || `@${framework}/nx:${options?.docs?.targetName || "docs"}`,
1126
+ dependsOn: options?.docs?.dependsOn ?? [
1127
+ `^${options?.docs?.targetName || "docs"}`,
1128
+ options?.build !== false && `${options?.build?.targetName || "build"}`,
1129
+ userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"
1130
+ ].filter(Boolean),
1131
+ defaultConfiguration: options?.docs?.defaultConfiguration || "production",
1132
+ options: {
1133
+ projectType: projectConfig.projectType,
1134
+ outputPath: `{workspaceRoot}/${projectRoot}/dist`,
1135
+ copyPath: `{workspaceRoot}/dist/${projectRoot}`
1136
+ },
1137
+ configurations: {
1138
+ production: { mode: "production" },
1139
+ test: { mode: "test" },
1140
+ development: {
1141
+ mode: "development",
1142
+ skipCache: true
1143
+ }
1144
+ }
1145
+ };
1146
+ if (options?.deploy !== false && !targets[options?.deploy?.targetName || "deploy"]) targets[options?.deploy?.targetName || "deploy"] = {
1147
+ inputs: Array.isArray(options?.deploy?.inputs) ? options.deploy.inputs : withNamedInputs([...targetInputs, artifactsFolder], options?.deploy?.inputs ? [options.deploy.inputs] : ["documentation", "typescript"]),
1148
+ outputs: options?.deploy?.outputs ?? ["{options.outputPath}"],
1149
+ executor: options?.deploy?.executor || `@${framework}/nx:${options?.deploy?.targetName || "deploy"}`,
1150
+ dependsOn: options?.deploy?.dependsOn ?? [
1151
+ `^${options?.deploy?.targetName || "deploy"}`,
1152
+ options?.build !== false && `${options?.build?.targetName || "build"}`,
1153
+ userConfig.skipCache ? void 0 : isSetObject(options?.prepare) && options?.prepare?.targetName ? options?.prepare?.targetName : "prepare"
1154
+ ].filter(Boolean),
1155
+ defaultConfiguration: options?.deploy?.defaultConfiguration || "production",
1156
+ options: {
1157
+ projectType: projectConfig.projectType,
1158
+ outputPath: `{workspaceRoot}/${projectRoot}/dist`,
1159
+ copyPath: `{workspaceRoot}/dist/${projectRoot}`
1160
+ },
1161
+ configurations: {
1162
+ production: { mode: "production" },
1163
+ test: { mode: "test" },
1164
+ development: {
1165
+ mode: "development",
1166
+ skipCache: true
1167
+ }
1168
+ }
1169
+ };
1170
+ setDefaultProjectTags(projectConfig, name);
1171
+ addProjectTag(projectConfig, framework, projectConfig.projectType || "library", { overwrite: true });
1172
+ if (options?.verboseOutput) console.debug(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Completed preparing Nx configuration for project in root directory ${projectRoot}.`);
1173
+ return { projects: { [root]: defu(projectConfig, {
1174
+ name: kebabCase(userConfig.name),
1175
+ projectType: projectConfig.projectType || "library",
1176
+ root,
1177
+ sourceRoot: joinPaths(root, "src"),
1178
+ targets
1179
+ }) } };
1180
+ } catch (error) {
1181
+ console.error(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - Failed to process the project configuration for file "${configFile}" - ${isError(error) ? error.message : isSetString(error) ? error : "Unknown fatal error"}`);
1182
+ return {};
1183
+ }
1184
+ }, configFiles, options, contextV2);
1185
+ }];
1186
+ } catch (error) {
1187
+ console.error(`[${title}] - ${(/* @__PURE__ */ new Date()).toISOString()} - ${isError(error) ? error.message : isSetString(error) ? error : "Unknown fatal error during plugin initialization"}`);
1188
+ throw new Error(`Failed to initialize the ${title} - ${isError(error) ? error.message : isSetString(error) ? error : "See previous logs for more details"}`, { cause: error instanceof Error ? error : void 0 });
1189
+ }
1190
+ }
1191
+
1192
+ //#endregion
3
1193
  //#region src/plugin/index.ts
4
1194
  const createNodesV2 = createNxPlugin({ framework: "shell-shock" });
5
1195