@storm-software/workspace-tools 1.269.0 → 1.270.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README.md +2 -1
  3. package/dist/chunk-A7JGVU4P.js +468 -0
  4. package/dist/chunk-SRN4D7WO.mjs +468 -0
  5. package/dist/executors.js +2 -2
  6. package/dist/executors.mjs +1 -1
  7. package/dist/index.js +2 -2
  8. package/dist/index.mjs +1 -1
  9. package/dist/src/executors/npm-publish/executor.js +2 -2
  10. package/dist/src/executors/npm-publish/executor.mjs +1 -1
  11. package/docs/executors/rollup.md +88 -0
  12. package/executors.ts +23 -0
  13. package/generators.ts +14 -0
  14. package/index.ts +5 -0
  15. package/package.json +4 -4
  16. package/project.json +58 -0
  17. package/src/base/base-executor.ts +200 -0
  18. package/src/base/base-executor.untyped.ts +18 -0
  19. package/src/base/base-generator.ts +130 -0
  20. package/src/base/base-generator.untyped.ts +16 -0
  21. package/src/base/cargo-base-executor.untyped.ts +73 -0
  22. package/src/base/index.ts +8 -0
  23. package/src/base/typescript-build-executor.untyped.ts +153 -0
  24. package/src/base/typescript-library-generator.ts +415 -0
  25. package/src/base/typescript-library-generator.untyped.ts +106 -0
  26. package/src/executors/cargo-build/executor.spec.ts +18 -0
  27. package/src/executors/cargo-build/executor.ts +28 -0
  28. package/src/executors/cargo-build/untyped.ts +18 -0
  29. package/src/executors/cargo-check/executor.spec.ts +18 -0
  30. package/src/executors/cargo-check/executor.ts +27 -0
  31. package/src/executors/cargo-check/untyped.ts +11 -0
  32. package/src/executors/cargo-clippy/executor.spec.ts +18 -0
  33. package/src/executors/cargo-clippy/executor.ts +28 -0
  34. package/src/executors/cargo-clippy/untyped.ts +18 -0
  35. package/src/executors/cargo-doc/executor.spec.ts +18 -0
  36. package/src/executors/cargo-doc/executor.ts +39 -0
  37. package/src/executors/cargo-doc/untyped.ts +44 -0
  38. package/src/executors/cargo-format/executor.spec.ts +18 -0
  39. package/src/executors/cargo-format/executor.ts +28 -0
  40. package/src/executors/cargo-format/untyped.ts +11 -0
  41. package/src/executors/cargo-publish/executor.spec.ts +11 -0
  42. package/src/executors/cargo-publish/executor.ts +139 -0
  43. package/src/executors/cargo-publish/untyped.ts +33 -0
  44. package/src/executors/clean-package/constants.ts +99 -0
  45. package/src/executors/clean-package/executor.spec.ts +18 -0
  46. package/src/executors/clean-package/executor.ts +214 -0
  47. package/src/executors/clean-package/types.ts +6 -0
  48. package/src/executors/clean-package/untyped.ts +60 -0
  49. package/src/executors/clean-package/utils.ts +85 -0
  50. package/src/executors/esbuild/executor.spec.ts +11 -0
  51. package/src/executors/esbuild/executor.ts +67 -0
  52. package/src/executors/esbuild/untyped.ts +20 -0
  53. package/src/executors/npm-publish/executor.spec.ts +11 -0
  54. package/src/executors/npm-publish/executor.ts +681 -0
  55. package/src/executors/npm-publish/untyped.ts +56 -0
  56. package/src/executors/size-limit/executor.spec.ts +18 -0
  57. package/src/executors/size-limit/executor.ts +88 -0
  58. package/src/executors/size-limit/untyped.ts +22 -0
  59. package/src/executors/typia/executor.ts +54 -0
  60. package/src/executors/typia/untyped.ts +48 -0
  61. package/src/executors/unbuild/executor.spec.ts +11 -0
  62. package/src/executors/unbuild/executor.ts +136 -0
  63. package/src/executors/unbuild/untyped.ts +152 -0
  64. package/src/generators/browser-library/generator.spec.ts +20 -0
  65. package/src/generators/browser-library/generator.ts +109 -0
  66. package/src/generators/browser-library/untyped.ts +29 -0
  67. package/src/generators/config-schema/generator.spec.ts +20 -0
  68. package/src/generators/config-schema/generator.ts +90 -0
  69. package/src/generators/config-schema/untyped.ts +19 -0
  70. package/src/generators/init/init.ts +32 -0
  71. package/src/generators/init/untyped.ts +16 -0
  72. package/src/generators/neutral-library/generator.spec.ts +20 -0
  73. package/src/generators/neutral-library/generator.ts +81 -0
  74. package/src/generators/neutral-library/untyped.ts +29 -0
  75. package/src/generators/node-library/generator.spec.ts +20 -0
  76. package/src/generators/node-library/generator.ts +84 -0
  77. package/src/generators/node-library/untyped.ts +29 -0
  78. package/src/generators/preset/files/.all-contributorsrc.template +48 -0
  79. package/src/generators/preset/files/.editorconfig +454 -0
  80. package/src/generators/preset/files/.env.template +38 -0
  81. package/src/generators/preset/files/.gitattributes +52 -0
  82. package/src/generators/preset/files/.github/.nvmrc +1 -0
  83. package/src/generators/preset/files/.github/CODEOWNERS +3 -0
  84. package/src/generators/preset/files/.github/CODE_OF_CONDUCT.md +125 -0
  85. package/src/generators/preset/files/.github/CONTRIBUTING.md.template +15 -0
  86. package/src/generators/preset/files/.github/FUNDING.yml +3 -0
  87. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/bug-report.yml.template +102 -0
  88. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/documentation.yml.template +56 -0
  89. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/feature-request.yml.template +60 -0
  90. package/src/generators/preset/files/.github/PULL_REQUEST_TEMPLATE.md.template +39 -0
  91. package/src/generators/preset/files/.github/SECURITY.md +9 -0
  92. package/src/generators/preset/files/.github/codecov.yml +29 -0
  93. package/src/generators/preset/files/.github/dependabot.yml +64 -0
  94. package/src/generators/preset/files/.github/labels.yml +84 -0
  95. package/src/generators/preset/files/.github/renovate.json +4 -0
  96. package/src/generators/preset/files/.github/renovate.json.template +63 -0
  97. package/src/generators/preset/files/.github/stale.yml +55 -0
  98. package/src/generators/preset/files/.github/workflows/build-release.yml.template +25 -0
  99. package/src/generators/preset/files/.github/workflows/code-review.yml +18 -0
  100. package/src/generators/preset/files/.github/workflows/codeql.yml +84 -0
  101. package/src/generators/preset/files/.github/workflows/dependabot-update.yml +32 -0
  102. package/src/generators/preset/files/.github/workflows/git-guardian.yml +23 -0
  103. package/src/generators/preset/files/.github/workflows/greetings.yml +31 -0
  104. package/src/generators/preset/files/.github/workflows/labels.yml +31 -0
  105. package/src/generators/preset/files/.github/workflows/lock.yml +26 -0
  106. package/src/generators/preset/files/.log4brains.yml.template +5 -0
  107. package/src/generators/preset/files/.markdownlint.json +155 -0
  108. package/src/generators/preset/files/.verdaccio/config.yml.template +40 -0
  109. package/src/generators/preset/files/.vscode/README.md +32 -0
  110. package/src/generators/preset/files/.vscode/cspell.json +3 -0
  111. package/src/generators/preset/files/.vscode/extensions.json +14 -0
  112. package/src/generators/preset/files/.vscode/launch.json +37 -0
  113. package/src/generators/preset/files/.vscode/settings.json +401 -0
  114. package/src/generators/preset/files/.vscode/tasks.json +4 -0
  115. package/src/generators/preset/files/.whitesource +14 -0
  116. package/src/generators/preset/files/assets/diagrams/.gitkeep +0 -0
  117. package/src/generators/preset/files/assets/icons/dark/.gitkeep +0 -0
  118. package/src/generators/preset/files/assets/icons/light/.gitkeep +0 -0
  119. package/src/generators/preset/files/assets/logos/.gitkeep +0 -0
  120. package/src/generators/preset/files/docs/api-reference/.gitkeep +0 -0
  121. package/src/generators/preset/generator.spec.ts +20 -0
  122. package/src/generators/preset/generator.ts +315 -0
  123. package/src/generators/preset/untyped.ts +88 -0
  124. package/src/generators/release-version/generator.spec.ts +20 -0
  125. package/src/generators/release-version/generator.ts +920 -0
  126. package/src/generators/release-version/untyped.ts +156 -0
  127. package/src/plugins/rust/cargo-toml.ts +434 -0
  128. package/src/plugins/rust/index.ts +1 -0
  129. package/src/plugins/typescript/index.ts +1 -0
  130. package/src/plugins/typescript/project-config.ts +564 -0
  131. package/src/plugins/typescript/tsup.ts +198 -0
  132. package/src/types.ts +130 -0
  133. package/src/utils/apply-workspace-tokens.ts +73 -0
  134. package/src/utils/cargo.ts +219 -0
  135. package/src/utils/create-cli-options.ts +23 -0
  136. package/src/utils/get-project-configurations.ts +27 -0
  137. package/src/utils/index.ts +12 -0
  138. package/src/utils/lock-file.ts +159 -0
  139. package/src/utils/package-helpers.ts +54 -0
  140. package/src/utils/plugin-helpers.ts +112 -0
  141. package/src/utils/pnpm-deps-update.ts +111 -0
  142. package/src/utils/project-tags.ts +162 -0
  143. package/src/utils/toml.ts +204 -0
  144. package/src/utils/typia-transform.ts +8 -0
  145. package/src/utils/versions.ts +19 -0
  146. package/tsconfig.json +30 -0
  147. package/tsup.config.ts +36 -0
  148. package/dist/chunk-62LQXZNY.js +0 -282
  149. package/dist/chunk-F3VG4R53.mjs +0 -282
  150. package/dist/src/generators/preset/files/LICENSE +0 -201
  151. package/docs/api/base/base-executor.schema.md +0 -16
  152. package/docs/api/base/base-generator.schema.md +0 -15
  153. package/docs/api/base/cargo-base-executor.schema.md +0 -90
  154. package/docs/api/base/typescript-build-executor.schema.md +0 -126
  155. package/docs/api/base/typescript-library-generator.schema.md +0 -129
  156. package/docs/api/executors/cargo-build/schema.md +0 -89
  157. package/docs/api/executors/cargo-check/schema.md +0 -90
  158. package/docs/api/executors/cargo-clippy/schema.md +0 -99
  159. package/docs/api/executors/cargo-doc/schema.md +0 -130
  160. package/docs/api/executors/cargo-format/schema.md +0 -90
  161. package/docs/api/executors/cargo-publish/schema.md +0 -117
  162. package/docs/api/executors/clean-package/schema.md +0 -65
  163. package/docs/api/executors/esbuild/schema.md +0 -126
  164. package/docs/api/executors/npm-publish/schema.md +0 -64
  165. package/docs/api/executors/size-limit/schema.md +0 -25
  166. package/docs/api/executors/typia/schema.md +0 -46
  167. package/docs/api/executors/unbuild/schema.md +0 -222
  168. package/docs/api/generators/browser-library/files/README.md +0 -58
  169. package/docs/api/generators/browser-library/schema.md +0 -129
  170. package/docs/api/generators/config-schema/schema.md +0 -25
  171. package/docs/api/generators/init/schema.md +0 -15
  172. package/docs/api/generators/neutral-library/files/README.md +0 -58
  173. package/docs/api/generators/neutral-library/schema.md +0 -129
  174. package/docs/api/generators/node-library/files/README.md +0 -63
  175. package/docs/api/generators/node-library/schema.md +0 -129
  176. package/docs/api/generators/preset/schema.md +0 -110
  177. package/docs/api/generators/release-version/schema.md +0 -160
  178. /package/{dist/src → src}/base/base-executor.schema.d.ts +0 -0
  179. /package/{dist/src → src}/base/base-executor.schema.json +0 -0
  180. /package/{dist/src → src}/base/base-executor.schema.md +0 -0
  181. /package/{dist/src → src}/base/base-generator.schema.d.ts +0 -0
  182. /package/{dist/src → src}/base/base-generator.schema.json +0 -0
  183. /package/{dist/src → src}/base/base-generator.schema.md +0 -0
  184. /package/{dist/src → src}/base/cargo-base-executor.schema.d.ts +0 -0
  185. /package/{dist/src → src}/base/cargo-base-executor.schema.json +0 -0
  186. /package/{dist/src → src}/base/cargo-base-executor.schema.md +0 -0
  187. /package/{dist/src → src}/base/typescript-build-executor.schema.d.ts +0 -0
  188. /package/{dist/src → src}/base/typescript-build-executor.schema.json +0 -0
  189. /package/{dist/src → src}/base/typescript-build-executor.schema.md +0 -0
  190. /package/{dist/src → src}/base/typescript-library-generator.schema.d.ts +0 -0
  191. /package/{dist/src → src}/base/typescript-library-generator.schema.json +0 -0
  192. /package/{dist/src → src}/base/typescript-library-generator.schema.md +0 -0
  193. /package/{dist/src → src}/executors/cargo-build/schema.d.ts +0 -0
  194. /package/{dist/src → src}/executors/cargo-build/schema.json +0 -0
  195. /package/{dist/src → src}/executors/cargo-build/schema.md +0 -0
  196. /package/{dist/src → src}/executors/cargo-check/schema.d.ts +0 -0
  197. /package/{dist/src → src}/executors/cargo-check/schema.json +0 -0
  198. /package/{dist/src → src}/executors/cargo-check/schema.md +0 -0
  199. /package/{dist/src → src}/executors/cargo-clippy/schema.d.ts +0 -0
  200. /package/{dist/src → src}/executors/cargo-clippy/schema.json +0 -0
  201. /package/{dist/src → src}/executors/cargo-clippy/schema.md +0 -0
  202. /package/{dist/src → src}/executors/cargo-doc/schema.d.ts +0 -0
  203. /package/{dist/src → src}/executors/cargo-doc/schema.json +0 -0
  204. /package/{dist/src → src}/executors/cargo-doc/schema.md +0 -0
  205. /package/{dist/src → src}/executors/cargo-format/schema.d.ts +0 -0
  206. /package/{dist/src → src}/executors/cargo-format/schema.json +0 -0
  207. /package/{dist/src → src}/executors/cargo-format/schema.md +0 -0
  208. /package/{dist/src → src}/executors/cargo-publish/schema.d.ts +0 -0
  209. /package/{dist/src → src}/executors/cargo-publish/schema.json +0 -0
  210. /package/{dist/src → src}/executors/cargo-publish/schema.md +0 -0
  211. /package/{dist/src → src}/executors/clean-package/schema.d.ts +0 -0
  212. /package/{dist/src → src}/executors/clean-package/schema.json +0 -0
  213. /package/{dist/src → src}/executors/clean-package/schema.md +0 -0
  214. /package/{dist/src → src}/executors/esbuild/schema.d.ts +0 -0
  215. /package/{dist/src → src}/executors/esbuild/schema.json +0 -0
  216. /package/{dist/src → src}/executors/esbuild/schema.md +0 -0
  217. /package/{dist/src → src}/executors/npm-publish/schema.d.ts +0 -0
  218. /package/{dist/src → src}/executors/npm-publish/schema.json +0 -0
  219. /package/{dist/src → src}/executors/npm-publish/schema.md +0 -0
  220. /package/{dist/src → src}/executors/size-limit/schema.d.ts +0 -0
  221. /package/{dist/src → src}/executors/size-limit/schema.json +0 -0
  222. /package/{dist/src → src}/executors/size-limit/schema.md +0 -0
  223. /package/{dist/src → src}/executors/typia/schema.d.ts +0 -0
  224. /package/{dist/src → src}/executors/typia/schema.json +0 -0
  225. /package/{dist/src → src}/executors/typia/schema.md +0 -0
  226. /package/{dist/src → src}/executors/unbuild/schema.d.ts +0 -0
  227. /package/{dist/src → src}/executors/unbuild/schema.json +0 -0
  228. /package/{dist/src → src}/executors/unbuild/schema.md +0 -0
  229. /package/{dist/src → src}/generators/browser-library/files/README.md +0 -0
  230. /package/{dist/src → src}/generators/browser-library/files/jest.config.ts +0 -0
  231. /package/{dist/src → src}/generators/browser-library/files/src/index.ts.template +0 -0
  232. /package/{dist/src → src}/generators/browser-library/files/tsconfig.spec.json +0 -0
  233. /package/{dist/src → src}/generators/browser-library/schema.d.ts +0 -0
  234. /package/{dist/src → src}/generators/browser-library/schema.json +0 -0
  235. /package/{dist/src → src}/generators/browser-library/schema.md +0 -0
  236. /package/{dist/src → src}/generators/config-schema/schema.d.ts +0 -0
  237. /package/{dist/src → src}/generators/config-schema/schema.json +0 -0
  238. /package/{dist/src → src}/generators/config-schema/schema.md +0 -0
  239. /package/{dist/src → src}/generators/init/schema.d.ts +0 -0
  240. /package/{dist/src → src}/generators/init/schema.json +0 -0
  241. /package/{dist/src → src}/generators/init/schema.md +0 -0
  242. /package/{dist/src → src}/generators/neutral-library/files/README.md +0 -0
  243. /package/{dist/src → src}/generators/neutral-library/files/jest.config.ts +0 -0
  244. /package/{dist/src → src}/generators/neutral-library/files/src/index.ts.template +0 -0
  245. /package/{dist/src → src}/generators/neutral-library/files/tsconfig.spec.json +0 -0
  246. /package/{dist/src → src}/generators/neutral-library/schema.d.ts +0 -0
  247. /package/{dist/src → src}/generators/neutral-library/schema.json +0 -0
  248. /package/{dist/src → src}/generators/neutral-library/schema.md +0 -0
  249. /package/{dist/src → src}/generators/node-library/files/README.md +0 -0
  250. /package/{dist/src → src}/generators/node-library/files/jest.config.ts +0 -0
  251. /package/{dist/src → src}/generators/node-library/files/src/index.ts.template +0 -0
  252. /package/{dist/src → src}/generators/node-library/files/tsconfig.spec.json +0 -0
  253. /package/{dist/src → src}/generators/node-library/schema.d.ts +0 -0
  254. /package/{dist/src → src}/generators/node-library/schema.json +0 -0
  255. /package/{dist/src → src}/generators/node-library/schema.md +0 -0
  256. /package/{LICENSE → src/generators/preset/files/LICENSE} +0 -0
  257. /package/{dist/src → src}/generators/preset/files/README.md.template +0 -0
  258. /package/{dist/src → src}/generators/preset/files/docs/readme-templates/README.footer.md.template +0 -0
  259. /package/{dist/src → src}/generators/preset/files/docs/readme-templates/README.header.md.template +0 -0
  260. /package/{dist/src → src}/generators/preset/files/eslint.config.js.template +0 -0
  261. /package/{dist/src → src}/generators/preset/files/knip.json +0 -0
  262. /package/{dist/src → src}/generators/preset/files/lefthook.json +0 -0
  263. /package/{dist/src → src}/generators/preset/files/nx.json +0 -0
  264. /package/{dist/src → src}/generators/preset/files/pnpm-workspace.yaml +0 -0
  265. /package/{dist/src → src}/generators/preset/files/socket.yaml +0 -0
  266. /package/{dist/src → src}/generators/preset/files/storm.json.template +0 -0
  267. /package/{dist/src → src}/generators/preset/files/tsconfig.base.json.template +0 -0
  268. /package/{dist/src → src}/generators/preset/schema.d.ts +0 -0
  269. /package/{dist/src → src}/generators/preset/schema.json +0 -0
  270. /package/{dist/src → src}/generators/preset/schema.md +0 -0
  271. /package/{dist/src → src}/generators/release-version/schema.d.ts +0 -0
  272. /package/{dist/src → src}/generators/release-version/schema.json +0 -0
  273. /package/{dist/src → src}/generators/release-version/schema.md +0 -0
  274. /package/{dist/src → src}/plugins/typescript/untyped-schema.ts +0 -0
@@ -0,0 +1,56 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+
3
+ export default defineUntypedSchema({
4
+ $schema: {
5
+ id: "NpmPublishExecutorSchema",
6
+ title: "Npm Publish Executor",
7
+ description: "A type definition for a Npm Publish executor schema"
8
+ },
9
+ packageRoot: {
10
+ $schema: {
11
+ title: "Package Root",
12
+ type: "string",
13
+ format: "path",
14
+ description: "The path to the package root"
15
+ }
16
+ },
17
+ registry: {
18
+ $schema: {
19
+ title: "Registry",
20
+ type: "string",
21
+ description: "The registry to publish to"
22
+ },
23
+ $default: "https://registry.npmjs.org/"
24
+ },
25
+ tag: {
26
+ $schema: {
27
+ title: "Tag",
28
+ type: "string",
29
+ description: "The tag to publish with"
30
+ },
31
+ $default: "latest"
32
+ },
33
+ otp: {
34
+ $schema: {
35
+ title: "One Time Password",
36
+ type: "number",
37
+ description: "The one time password"
38
+ }
39
+ },
40
+ dryRun: {
41
+ $schema: {
42
+ title: "Dry Run",
43
+ type: "boolean",
44
+ description: "Perform a dry run"
45
+ },
46
+ $default: false
47
+ },
48
+ firstRelease: {
49
+ $schema: {
50
+ title: "First Release",
51
+ type: "boolean",
52
+ description: "Publish the first release"
53
+ },
54
+ $default: false
55
+ }
56
+ });
@@ -0,0 +1,18 @@
1
+ import { ExecutorContext } from "@nx/devkit";
2
+
3
+ import executor from "./executor";
4
+ import { SizeLimitExecutorSchema } from "./schema.d";
5
+
6
+ const options: SizeLimitExecutorSchema = {};
7
+ const context: ExecutorContext = {
8
+ root: "",
9
+ cwd: process.cwd(),
10
+ isVerbose: false,
11
+ };
12
+
13
+ describe("SizeLimit Executor", () => {
14
+ it("can run", async () => {
15
+ const output = await executor(options, context);
16
+ expect(output.success).toBe(true);
17
+ });
18
+ });
@@ -0,0 +1,88 @@
1
+ import type { ExecutorContext } from "@nx/devkit";
2
+ import { joinPathFragments } from "@nx/devkit";
3
+ import esBuildPlugin from "@size-limit/esbuild";
4
+ import esBuildWhyPlugin from "@size-limit/esbuild-why";
5
+ import filePlugin from "@size-limit/file";
6
+ import type { StormWorkspaceConfig } from "@storm-software/config";
7
+ import { writeInfo } from "@storm-software/config-tools";
8
+ import sizeLimit from "size-limit";
9
+ import { withRunExecutor } from "../../base/base-executor";
10
+ import type { SizeLimitExecutorSchema } from "./schema.d";
11
+
12
+ // export default [
13
+ // {
14
+ // async finally(config, check) {
15
+ // let { esbuildVisualizerFile } = check;
16
+
17
+ // if (esbuildVisualizerFile) {
18
+ // await open(esbuildVisualizerFile);
19
+ // }
20
+ // },
21
+
22
+ // name: "@size-limit/esbuild-why",
23
+ // async step81(config, check) {
24
+ // if (config.why && check.esbuildMetafile) {
25
+ // let result = await visualizer(check.esbuildMetafile);
26
+ // let file = join(config.saveBundle ?? "", getReportName(config, check));
27
+ // check.esbuildVisualizerFile = file;
28
+ // writeFileSync(file, result);
29
+ // }
30
+ // }
31
+ // }
32
+ // ];
33
+
34
+ export async function sizeLimitExecutorFn(
35
+ options: SizeLimitExecutorSchema,
36
+ context: ExecutorContext,
37
+ config?: StormWorkspaceConfig
38
+ ) {
39
+ if (
40
+ !context?.projectName ||
41
+ !context.projectsConfigurations?.projects ||
42
+ !context.projectsConfigurations.projects[context.projectName]
43
+ ) {
44
+ throw new Error(
45
+ "The Size-Limit process failed because the context is not valid. Please run this command from a workspace."
46
+ );
47
+ }
48
+
49
+ writeInfo(`📏 Running Size-Limit on ${context.projectName}`, config);
50
+
51
+ sizeLimit([filePlugin, esBuildPlugin, esBuildWhyPlugin], {
52
+ checks:
53
+ options.entry ??
54
+ context.projectsConfigurations.projects[context.projectName]
55
+ ?.sourceRoot ??
56
+ joinPathFragments(
57
+ context.projectsConfigurations.projects[context.projectName]?.root ??
58
+ "./",
59
+ "src"
60
+ )
61
+ }).then(result => {
62
+ writeInfo(
63
+ `📏 ${context.projectName} Size-Limit result: ${JSON.stringify(result)}`,
64
+ config
65
+ );
66
+ });
67
+
68
+ return {
69
+ success: true
70
+ };
71
+ }
72
+
73
+ export default withRunExecutor<SizeLimitExecutorSchema>(
74
+ "Size-Limit Performance Test Executor",
75
+ sizeLimitExecutorFn,
76
+ {
77
+ skipReadingConfig: false,
78
+ hooks: {
79
+ applyDefaultOptions: (
80
+ options: SizeLimitExecutorSchema
81
+ ): SizeLimitExecutorSchema => {
82
+ // options.entry ??= "{sourceRoot}/index.ts";
83
+
84
+ return options;
85
+ }
86
+ }
87
+ }
88
+ );
@@ -0,0 +1,22 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import baseExecutorSchema from "../../base/base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...baseExecutorSchema,
6
+ $schema: {
7
+ id: "SizeLimitExecutorSchema",
8
+ title: "Size Limit Executor",
9
+ description: "A type definition for a Size Limit executor schema",
10
+ },
11
+ entry: {
12
+ $schema: {
13
+ title: "Entry",
14
+ type: "array",
15
+ description: "The path to the entry file",
16
+ items: {
17
+ type: "string",
18
+ format: "path",
19
+ },
20
+ },
21
+ },
22
+ });
@@ -0,0 +1,54 @@
1
+ import type { ExecutorContext } from "@nx/devkit";
2
+ import type { StormWorkspaceConfig } from "@storm-software/config";
3
+ import { writeInfo } from "@storm-software/config-tools/logger/console";
4
+ import { removeSync } from "fs-extra";
5
+ import { TypiaProgrammer } from "typia/lib/programmers/TypiaProgrammer.js";
6
+ import { withRunExecutor } from "../../base/base-executor";
7
+ import type { TypiaExecutorSchema } from "./schema.d";
8
+
9
+ export async function typiaExecutorFn(
10
+ options: TypiaExecutorSchema,
11
+ _: ExecutorContext,
12
+ config: StormWorkspaceConfig
13
+ ) {
14
+ if (options.clean !== false) {
15
+ writeInfo(`🧹 Cleaning output path: ${options.outputPath}`, config);
16
+ removeSync(options.outputPath);
17
+ }
18
+
19
+ await Promise.all(
20
+ options.entry!.map(entry => {
21
+ writeInfo(`🚀 Running Typia on entry: ${entry}`, config);
22
+
23
+ return TypiaProgrammer.build({
24
+ input: entry,
25
+ output: options.outputPath!,
26
+ project: options.tsconfig!
27
+ });
28
+ })
29
+ );
30
+
31
+ return {
32
+ success: true
33
+ };
34
+ }
35
+
36
+ export default withRunExecutor<TypiaExecutorSchema>(
37
+ "Typia runtime validation generator",
38
+ typiaExecutorFn,
39
+ {
40
+ skipReadingConfig: false,
41
+ hooks: {
42
+ applyDefaultOptions: (
43
+ options: TypiaExecutorSchema
44
+ ): TypiaExecutorSchema => {
45
+ options.entry ??= ["{sourceRoot}/index.ts"];
46
+ options.outputPath ??= "{sourceRoot}/__generated__/typia";
47
+ options.tsconfig ??= "{projectRoot}/tsconfig.json";
48
+ options.clean ??= true;
49
+
50
+ return options;
51
+ }
52
+ }
53
+ }
54
+ );
@@ -0,0 +1,48 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import baseExecutorSchema from "../../base/base-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...baseExecutorSchema,
6
+ $schema: {
7
+ id: "TypiaExecutorSchema",
8
+ title: "Typia Executor",
9
+ description: "A type definition for a Typia executor schema",
10
+ required: ["entry", "tsconfig", "outputPath"],
11
+ },
12
+ entry: {
13
+ $schema: {
14
+ title: "Entry File(s)",
15
+ format: "path",
16
+ type: "array",
17
+ description: "The entry file or files to build",
18
+ items: { type: "string" },
19
+ },
20
+ $default: ["{sourceRoot}/index.ts"],
21
+ },
22
+ tsconfig: {
23
+ $schema: {
24
+ title: "TSConfig Path",
25
+ type: "string",
26
+ format: "path",
27
+ description: "The path to the tsconfig file",
28
+ },
29
+ $default: "{projectRoot}/tsconfig.json",
30
+ },
31
+ outputPath: {
32
+ $schema: {
33
+ title: "Output Path",
34
+ type: "string",
35
+ format: "path",
36
+ description: "The output path for the build",
37
+ },
38
+ $default: "{sourceRoot}/__generated__/typia",
39
+ },
40
+ clean: {
41
+ $schema: {
42
+ title: "Clean",
43
+ type: "boolean",
44
+ description: "Clean the output directory before building",
45
+ },
46
+ $default: true,
47
+ },
48
+ });
@@ -0,0 +1,11 @@
1
+ import executor from "./executor";
2
+ import { UnbuildExecutorSchema } from "./schema.d";
3
+
4
+ const options: UnbuildExecutorSchema = {};
5
+
6
+ describe("Unbuild Executor", () => {
7
+ it("can run", async () => {
8
+ const output = await executor(options);
9
+ expect(output.success).toBe(true);
10
+ });
11
+ });
@@ -0,0 +1,136 @@
1
+ import type { ExecutorContext } from "@nx/devkit";
2
+ import type { StormWorkspaceConfig } from "@storm-software/config";
3
+ import { writeInfo } from "@storm-software/config-tools/logger/console";
4
+ import { joinPaths } from "@storm-software/config-tools/utilities/correct-paths";
5
+ import { UnbuildOptions } from "@storm-software/unbuild";
6
+ import { defu } from "defu";
7
+ import { createJiti } from "jiti";
8
+ import { withRunExecutor } from "../../base/base-executor";
9
+ import type { UnbuildExecutorSchema } from "./schema.d";
10
+
11
+ type StormUnbuildModule = {
12
+ build: (opts: UnbuildOptions) => Promise<void>;
13
+ };
14
+
15
+ export async function unbuildExecutorFn(
16
+ options: UnbuildExecutorSchema,
17
+ context: ExecutorContext,
18
+ config: StormWorkspaceConfig
19
+ ) {
20
+ writeInfo("📦 Running Storm Unbuild executor on the workspace", config);
21
+
22
+ // #region Prepare build context variables
23
+
24
+ if (
25
+ !context.projectsConfigurations?.projects ||
26
+ !context.projectName ||
27
+ !context.projectsConfigurations.projects[context.projectName]
28
+ ) {
29
+ throw new Error(
30
+ "The Build process failed because the context is not valid. Please run this command from a workspace root directory."
31
+ );
32
+ }
33
+
34
+ if (!context.projectsConfigurations.projects[context.projectName]!.root) {
35
+ throw new Error(
36
+ "The Build process failed because the project root is not valid. Please run this command from a workspace root directory."
37
+ );
38
+ }
39
+
40
+ if (
41
+ !context.projectsConfigurations.projects[context.projectName]!.sourceRoot
42
+ ) {
43
+ throw new Error(
44
+ "The Build process failed because the project's source root is not valid. Please run this command from a workspace root directory."
45
+ );
46
+ }
47
+
48
+ const jiti = createJiti(config.workspaceRoot, {
49
+ fsCache: config.skipCache
50
+ ? false
51
+ : joinPaths(
52
+ config.workspaceRoot,
53
+ config.directories.cache || "node_modules/.cache/storm",
54
+ "jiti"
55
+ ),
56
+ interopDefault: true
57
+ });
58
+
59
+ const stormUnbuild = await jiti.import<StormUnbuildModule>(
60
+ jiti.esmResolve("@storm-software/unbuild/build")
61
+ );
62
+
63
+ // #endregion Prepare build context variables
64
+
65
+ await stormUnbuild.build(
66
+ defu(
67
+ {
68
+ ...options,
69
+ projectRoot:
70
+ context.projectsConfigurations.projects![context.projectName]!.root,
71
+ projectName: context.projectName,
72
+ sourceRoot:
73
+ context.projectsConfigurations.projects![context.projectName]!
74
+ .sourceRoot,
75
+ platform: options.platform as UnbuildOptions["platform"]
76
+ },
77
+ {
78
+ stubOptions: {
79
+ jiti: {
80
+ fsCache: config.skipCache
81
+ ? false
82
+ : joinPaths(
83
+ config.workspaceRoot,
84
+ config.directories.cache || "node_modules/.cache/storm",
85
+ "jiti"
86
+ )
87
+ }
88
+ },
89
+ rollup: {
90
+ emitCJS: true,
91
+ watch: false,
92
+ dts: {
93
+ respectExternal: true
94
+ },
95
+ esbuild: {
96
+ target: options.target,
97
+ format: "esm",
98
+ platform: options.platform,
99
+ minify: options.minify ?? !options.debug,
100
+ sourcemap: options.sourcemap ?? options.debug,
101
+ treeShaking: options.treeShaking
102
+ }
103
+ }
104
+ }
105
+ ) as UnbuildOptions
106
+ );
107
+
108
+ // #endregion Run the build process
109
+
110
+ return {
111
+ success: true
112
+ };
113
+ }
114
+
115
+ export default withRunExecutor<UnbuildExecutorSchema>(
116
+ "TypeScript Unbuild build",
117
+ unbuildExecutorFn,
118
+ {
119
+ skipReadingConfig: false,
120
+ hooks: {
121
+ applyDefaultOptions: async (
122
+ options: UnbuildExecutorSchema,
123
+ config?: StormWorkspaceConfig | undefined
124
+ ) => {
125
+ options.debug ??= false;
126
+ options.treeShaking ??= true;
127
+ options.buildOnly ??= false;
128
+ options.platform ??= "neutral";
129
+ options.entry ??= ["{sourceRoot}"];
130
+ options.tsconfig ??= "{projectRoot}/tsconfig.json";
131
+
132
+ return options;
133
+ }
134
+ }
135
+ }
136
+ );
@@ -0,0 +1,152 @@
1
+ import { defineUntypedSchema } from "untyped";
2
+ import typescriptBuildExecutorSchema from "../../base/typescript-build-executor.untyped";
3
+
4
+ export default defineUntypedSchema({
5
+ ...typescriptBuildExecutorSchema,
6
+ $schema: {
7
+ id: "UnbuildExecutorSchema",
8
+ title: "Unbuild Executor",
9
+ description: "A type definition for a unbuild executor schema",
10
+ required: ["name", "entry"]
11
+ },
12
+ name: {
13
+ $schema: {
14
+ title: "Name",
15
+ type: "string",
16
+ description: "The name of the project/build"
17
+ },
18
+ $default: "{projectName}"
19
+ },
20
+ entry: {
21
+ $schema: {
22
+ title: "Input Directory",
23
+ format: "path",
24
+ type: "array",
25
+ description: "The directory to use as input for the build",
26
+ items: { type: "string" }
27
+ },
28
+ $default: ["{sourceRoot}"]
29
+ },
30
+ outputPath: {
31
+ $schema: {
32
+ title: "Output Path",
33
+ type: "string",
34
+ format: "path",
35
+ description: "The output path for the build"
36
+ }
37
+ },
38
+ treeShaking: {
39
+ $schema: {
40
+ title: "Tree Shaking",
41
+ type: "boolean",
42
+ description: "Enable tree shaking"
43
+ },
44
+ $default: true
45
+ },
46
+ watch: {
47
+ $schema: {
48
+ title: "Watch",
49
+ type: "boolean",
50
+ description: "Watch for changes"
51
+ },
52
+ $default: false
53
+ },
54
+ clean: {
55
+ $schema: {
56
+ title: "Clean",
57
+ type: "boolean",
58
+ description: "Clean the output directory before building"
59
+ },
60
+ $default: true
61
+ },
62
+ stub: {
63
+ $schema: {
64
+ title: "Stub",
65
+ type: "boolean",
66
+ description: "Stub the output"
67
+ },
68
+ $default: false
69
+ },
70
+ buildOnly: {
71
+ $schema: {
72
+ title: "Build Only",
73
+ type: "boolean",
74
+ description:
75
+ "Should the build process skip generating a package.json and copying assets"
76
+ },
77
+ $default: false
78
+ },
79
+ watchOptions: {
80
+ $schema: {
81
+ title: "Watch Options",
82
+ type: "object",
83
+ description: "Watch options"
84
+ },
85
+ $default: {}
86
+ },
87
+ stubOptions: {
88
+ $schema: {
89
+ title: "Stub Options",
90
+ type: "object",
91
+ description: "Stub options"
92
+ },
93
+ $default: {
94
+ jiti: {
95
+ cache: "node_modules/.cache/storm"
96
+ }
97
+ }
98
+ },
99
+ dependencies: {
100
+ $schema: {
101
+ title: "Dependencies",
102
+ type: "array",
103
+ description: "The dependencies to install",
104
+ items: {
105
+ type: "string"
106
+ }
107
+ }
108
+ },
109
+ peerDependencies: {
110
+ $schema: {
111
+ title: "Peer Dependencies",
112
+ type: "array",
113
+ description: "The peer dependencies to install",
114
+ items: {
115
+ type: "string"
116
+ }
117
+ }
118
+ },
119
+ devDependencies: {
120
+ $schema: {
121
+ title: "Dev Dependencies",
122
+ type: "array",
123
+ description: "The dev dependencies to install",
124
+ items: {
125
+ type: "string"
126
+ }
127
+ }
128
+ },
129
+ alias: {
130
+ $schema: {
131
+ title: "Alias",
132
+ type: "object",
133
+ tsType: "Record<string, string>",
134
+ description: "The alias to use"
135
+ }
136
+ },
137
+ replace: {
138
+ $schema: {
139
+ title: "Replace",
140
+ type: "object",
141
+ tsType: "Record<string, string>",
142
+ description: "The replace to use"
143
+ }
144
+ },
145
+ rollup: {
146
+ $schema: {
147
+ title: "Rollup",
148
+ type: "object",
149
+ description: "The rollup options"
150
+ }
151
+ }
152
+ });
@@ -0,0 +1,20 @@
1
+ import { Tree, readProjectConfiguration } from "@nx/devkit";
2
+ import { createTreeWithEmptyWorkspace } from "@nx/devkit/testing";
3
+
4
+ import { browserLibraryGenerator } from "./generator";
5
+ import { BrowserLibraryGeneratorSchema } from "./schema.d";
6
+
7
+ describe("browser-library generator", () => {
8
+ let tree: Tree;
9
+ const options: BrowserLibraryGeneratorSchema = { name: "test" };
10
+
11
+ beforeEach(() => {
12
+ tree = createTreeWithEmptyWorkspace();
13
+ });
14
+
15
+ it("should run successfully", async () => {
16
+ await browserLibraryGenerator(tree, options);
17
+ const config = readProjectConfiguration(tree, "test");
18
+ expect(config).toBeDefined();
19
+ });
20
+ });