@storm-software/workspace-tools 1.270.2 → 1.271.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 (287) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +1 -1
  3. package/dist/chunk-4QYM3VS4.mjs +282 -0
  4. package/dist/{chunk-ZP76EMBE.js → chunk-FYXWAGK3.js} +97 -27
  5. package/dist/chunk-MJMN2T4N.mjs +166 -0
  6. package/dist/chunk-RZVF4LHT.js +282 -0
  7. package/dist/executors.js +3 -3
  8. package/dist/executors.mjs +2 -2
  9. package/dist/index.d.mts +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +3 -3
  12. package/dist/index.mjs +4 -4
  13. package/dist/src/executors/npm-publish/executor.js +3 -3
  14. package/dist/src/executors/npm-publish/executor.mjs +2 -2
  15. package/dist/src/generators/preset/files/LICENSE +201 -0
  16. package/dist/src/utils/index.d.mts +1 -1
  17. package/dist/src/utils/index.d.ts +1 -1
  18. package/dist/src/utils/index.js +2 -2
  19. package/dist/src/utils/index.mjs +3 -3
  20. package/dist/src/utils/pnpm-deps-update.d.mts +3 -3
  21. package/dist/src/utils/pnpm-deps-update.d.ts +3 -3
  22. package/dist/src/utils/pnpm-deps-update.js +2 -2
  23. package/dist/src/utils/pnpm-deps-update.mjs +3 -3
  24. package/docs/api/base/base-executor.schema.md +16 -0
  25. package/docs/api/base/base-generator.schema.md +15 -0
  26. package/docs/api/base/cargo-base-executor.schema.md +90 -0
  27. package/docs/api/base/typescript-build-executor.schema.md +126 -0
  28. package/docs/api/base/typescript-library-generator.schema.md +129 -0
  29. package/docs/api/executors/cargo-build/schema.md +89 -0
  30. package/docs/api/executors/cargo-check/schema.md +90 -0
  31. package/docs/api/executors/cargo-clippy/schema.md +99 -0
  32. package/docs/api/executors/cargo-doc/schema.md +130 -0
  33. package/docs/api/executors/cargo-format/schema.md +90 -0
  34. package/docs/api/executors/cargo-publish/schema.md +117 -0
  35. package/docs/api/executors/clean-package/schema.md +65 -0
  36. package/docs/api/executors/esbuild/schema.md +126 -0
  37. package/docs/api/executors/npm-publish/schema.md +64 -0
  38. package/docs/api/executors/size-limit/schema.md +25 -0
  39. package/docs/api/executors/typia/schema.md +46 -0
  40. package/docs/api/executors/unbuild/schema.md +222 -0
  41. package/docs/api/generators/browser-library/files/README.md +58 -0
  42. package/docs/api/generators/browser-library/schema.md +129 -0
  43. package/docs/api/generators/config-schema/schema.md +25 -0
  44. package/docs/api/generators/init/schema.md +15 -0
  45. package/docs/api/generators/neutral-library/files/README.md +58 -0
  46. package/docs/api/generators/neutral-library/schema.md +129 -0
  47. package/docs/api/generators/node-library/files/README.md +63 -0
  48. package/docs/api/generators/node-library/schema.md +129 -0
  49. package/docs/api/generators/preset/schema.md +110 -0
  50. package/docs/api/generators/release-version/schema.md +160 -0
  51. package/package.json +13 -35
  52. package/dist/chunk-CMH2A42G.js +0 -467
  53. package/dist/chunk-HMJTTE4A.mjs +0 -96
  54. package/dist/chunk-I54IKCIV.mjs +0 -467
  55. package/docs/executors/rollup.md +0 -88
  56. package/executors.ts +0 -23
  57. package/generators.ts +0 -14
  58. package/index.ts +0 -5
  59. package/project.json +0 -58
  60. package/src/base/base-executor.ts +0 -200
  61. package/src/base/base-executor.untyped.ts +0 -18
  62. package/src/base/base-generator.ts +0 -130
  63. package/src/base/base-generator.untyped.ts +0 -16
  64. package/src/base/cargo-base-executor.untyped.ts +0 -73
  65. package/src/base/index.ts +0 -8
  66. package/src/base/typescript-build-executor.untyped.ts +0 -153
  67. package/src/base/typescript-library-generator.ts +0 -415
  68. package/src/base/typescript-library-generator.untyped.ts +0 -106
  69. package/src/executors/cargo-build/executor.spec.ts +0 -18
  70. package/src/executors/cargo-build/executor.ts +0 -28
  71. package/src/executors/cargo-build/untyped.ts +0 -18
  72. package/src/executors/cargo-check/executor.spec.ts +0 -18
  73. package/src/executors/cargo-check/executor.ts +0 -27
  74. package/src/executors/cargo-check/untyped.ts +0 -11
  75. package/src/executors/cargo-clippy/executor.spec.ts +0 -18
  76. package/src/executors/cargo-clippy/executor.ts +0 -28
  77. package/src/executors/cargo-clippy/untyped.ts +0 -18
  78. package/src/executors/cargo-doc/executor.spec.ts +0 -18
  79. package/src/executors/cargo-doc/executor.ts +0 -39
  80. package/src/executors/cargo-doc/untyped.ts +0 -44
  81. package/src/executors/cargo-format/executor.spec.ts +0 -18
  82. package/src/executors/cargo-format/executor.ts +0 -28
  83. package/src/executors/cargo-format/untyped.ts +0 -11
  84. package/src/executors/cargo-publish/executor.spec.ts +0 -11
  85. package/src/executors/cargo-publish/executor.ts +0 -139
  86. package/src/executors/cargo-publish/untyped.ts +0 -33
  87. package/src/executors/clean-package/constants.ts +0 -99
  88. package/src/executors/clean-package/executor.spec.ts +0 -18
  89. package/src/executors/clean-package/executor.ts +0 -214
  90. package/src/executors/clean-package/types.ts +0 -6
  91. package/src/executors/clean-package/untyped.ts +0 -60
  92. package/src/executors/clean-package/utils.ts +0 -85
  93. package/src/executors/esbuild/executor.spec.ts +0 -11
  94. package/src/executors/esbuild/executor.ts +0 -67
  95. package/src/executors/esbuild/untyped.ts +0 -20
  96. package/src/executors/npm-publish/executor.spec.ts +0 -11
  97. package/src/executors/npm-publish/executor.ts +0 -680
  98. package/src/executors/npm-publish/untyped.ts +0 -56
  99. package/src/executors/size-limit/executor.spec.ts +0 -18
  100. package/src/executors/size-limit/executor.ts +0 -88
  101. package/src/executors/size-limit/untyped.ts +0 -22
  102. package/src/executors/typia/executor.ts +0 -54
  103. package/src/executors/typia/untyped.ts +0 -48
  104. package/src/executors/unbuild/executor.spec.ts +0 -11
  105. package/src/executors/unbuild/executor.ts +0 -136
  106. package/src/executors/unbuild/untyped.ts +0 -152
  107. package/src/generators/browser-library/generator.spec.ts +0 -20
  108. package/src/generators/browser-library/generator.ts +0 -109
  109. package/src/generators/browser-library/untyped.ts +0 -29
  110. package/src/generators/config-schema/generator.spec.ts +0 -20
  111. package/src/generators/config-schema/generator.ts +0 -90
  112. package/src/generators/config-schema/untyped.ts +0 -19
  113. package/src/generators/init/init.ts +0 -32
  114. package/src/generators/init/untyped.ts +0 -16
  115. package/src/generators/neutral-library/generator.spec.ts +0 -20
  116. package/src/generators/neutral-library/generator.ts +0 -81
  117. package/src/generators/neutral-library/untyped.ts +0 -29
  118. package/src/generators/node-library/generator.spec.ts +0 -20
  119. package/src/generators/node-library/generator.ts +0 -84
  120. package/src/generators/node-library/untyped.ts +0 -29
  121. package/src/generators/preset/files/.all-contributorsrc.template +0 -48
  122. package/src/generators/preset/files/.editorconfig +0 -454
  123. package/src/generators/preset/files/.env.template +0 -38
  124. package/src/generators/preset/files/.gitattributes +0 -52
  125. package/src/generators/preset/files/.github/.nvmrc +0 -1
  126. package/src/generators/preset/files/.github/CODEOWNERS +0 -3
  127. package/src/generators/preset/files/.github/CODE_OF_CONDUCT.md +0 -125
  128. package/src/generators/preset/files/.github/CONTRIBUTING.md.template +0 -15
  129. package/src/generators/preset/files/.github/FUNDING.yml +0 -3
  130. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/bug-report.yml.template +0 -102
  131. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/documentation.yml.template +0 -56
  132. package/src/generators/preset/files/.github/ISSUE_TEMPLATE/feature-request.yml.template +0 -60
  133. package/src/generators/preset/files/.github/PULL_REQUEST_TEMPLATE.md.template +0 -39
  134. package/src/generators/preset/files/.github/SECURITY.md +0 -9
  135. package/src/generators/preset/files/.github/codecov.yml +0 -29
  136. package/src/generators/preset/files/.github/dependabot.yml +0 -64
  137. package/src/generators/preset/files/.github/labels.yml +0 -84
  138. package/src/generators/preset/files/.github/renovate.json +0 -4
  139. package/src/generators/preset/files/.github/renovate.json.template +0 -63
  140. package/src/generators/preset/files/.github/stale.yml +0 -55
  141. package/src/generators/preset/files/.github/workflows/build-release.yml.template +0 -25
  142. package/src/generators/preset/files/.github/workflows/code-review.yml +0 -18
  143. package/src/generators/preset/files/.github/workflows/codeql.yml +0 -84
  144. package/src/generators/preset/files/.github/workflows/dependabot-update.yml +0 -32
  145. package/src/generators/preset/files/.github/workflows/git-guardian.yml +0 -23
  146. package/src/generators/preset/files/.github/workflows/greetings.yml +0 -31
  147. package/src/generators/preset/files/.github/workflows/labels.yml +0 -31
  148. package/src/generators/preset/files/.github/workflows/lock.yml +0 -26
  149. package/src/generators/preset/files/.log4brains.yml.template +0 -5
  150. package/src/generators/preset/files/.markdownlint.json +0 -155
  151. package/src/generators/preset/files/.verdaccio/config.yml.template +0 -40
  152. package/src/generators/preset/files/.vscode/README.md +0 -32
  153. package/src/generators/preset/files/.vscode/cspell.json +0 -3
  154. package/src/generators/preset/files/.vscode/extensions.json +0 -14
  155. package/src/generators/preset/files/.vscode/launch.json +0 -37
  156. package/src/generators/preset/files/.vscode/settings.json +0 -401
  157. package/src/generators/preset/files/.vscode/tasks.json +0 -4
  158. package/src/generators/preset/files/.whitesource +0 -14
  159. package/src/generators/preset/files/assets/diagrams/.gitkeep +0 -0
  160. package/src/generators/preset/files/assets/icons/dark/.gitkeep +0 -0
  161. package/src/generators/preset/files/assets/icons/light/.gitkeep +0 -0
  162. package/src/generators/preset/files/assets/logos/.gitkeep +0 -0
  163. package/src/generators/preset/files/docs/api-reference/.gitkeep +0 -0
  164. package/src/generators/preset/generator.spec.ts +0 -20
  165. package/src/generators/preset/generator.ts +0 -315
  166. package/src/generators/preset/untyped.ts +0 -88
  167. package/src/generators/release-version/generator.spec.ts +0 -20
  168. package/src/generators/release-version/generator.ts +0 -920
  169. package/src/generators/release-version/untyped.ts +0 -156
  170. package/src/plugins/rust/cargo-toml.ts +0 -434
  171. package/src/plugins/rust/index.ts +0 -1
  172. package/src/plugins/typescript/index.ts +0 -1
  173. package/src/plugins/typescript/project-config.ts +0 -564
  174. package/src/plugins/typescript/tsup.ts +0 -198
  175. package/src/types.ts +0 -130
  176. package/src/utils/apply-workspace-tokens.ts +0 -73
  177. package/src/utils/cargo.ts +0 -219
  178. package/src/utils/create-cli-options.ts +0 -23
  179. package/src/utils/get-project-configurations.ts +0 -27
  180. package/src/utils/index.ts +0 -12
  181. package/src/utils/lock-file.ts +0 -159
  182. package/src/utils/package-helpers.ts +0 -54
  183. package/src/utils/plugin-helpers.ts +0 -112
  184. package/src/utils/pnpm-deps-update.ts +0 -111
  185. package/src/utils/project-tags.ts +0 -162
  186. package/src/utils/toml.ts +0 -204
  187. package/src/utils/typia-transform.ts +0 -8
  188. package/src/utils/versions.ts +0 -19
  189. package/tsconfig.json +0 -30
  190. package/tsup.config.ts +0 -36
  191. /package/{src/generators/preset/files/LICENSE → LICENSE} +0 -0
  192. /package/{src → dist/src}/base/base-executor.schema.d.ts +0 -0
  193. /package/{src → dist/src}/base/base-executor.schema.json +0 -0
  194. /package/{src → dist/src}/base/base-executor.schema.md +0 -0
  195. /package/{src → dist/src}/base/base-generator.schema.d.ts +0 -0
  196. /package/{src → dist/src}/base/base-generator.schema.json +0 -0
  197. /package/{src → dist/src}/base/base-generator.schema.md +0 -0
  198. /package/{src → dist/src}/base/cargo-base-executor.schema.d.ts +0 -0
  199. /package/{src → dist/src}/base/cargo-base-executor.schema.json +0 -0
  200. /package/{src → dist/src}/base/cargo-base-executor.schema.md +0 -0
  201. /package/{src → dist/src}/base/typescript-build-executor.schema.d.ts +0 -0
  202. /package/{src → dist/src}/base/typescript-build-executor.schema.json +0 -0
  203. /package/{src → dist/src}/base/typescript-build-executor.schema.md +0 -0
  204. /package/{src → dist/src}/base/typescript-library-generator.schema.d.ts +0 -0
  205. /package/{src → dist/src}/base/typescript-library-generator.schema.json +0 -0
  206. /package/{src → dist/src}/base/typescript-library-generator.schema.md +0 -0
  207. /package/{src → dist/src}/executors/cargo-build/schema.d.ts +0 -0
  208. /package/{src → dist/src}/executors/cargo-build/schema.json +0 -0
  209. /package/{src → dist/src}/executors/cargo-build/schema.md +0 -0
  210. /package/{src → dist/src}/executors/cargo-check/schema.d.ts +0 -0
  211. /package/{src → dist/src}/executors/cargo-check/schema.json +0 -0
  212. /package/{src → dist/src}/executors/cargo-check/schema.md +0 -0
  213. /package/{src → dist/src}/executors/cargo-clippy/schema.d.ts +0 -0
  214. /package/{src → dist/src}/executors/cargo-clippy/schema.json +0 -0
  215. /package/{src → dist/src}/executors/cargo-clippy/schema.md +0 -0
  216. /package/{src → dist/src}/executors/cargo-doc/schema.d.ts +0 -0
  217. /package/{src → dist/src}/executors/cargo-doc/schema.json +0 -0
  218. /package/{src → dist/src}/executors/cargo-doc/schema.md +0 -0
  219. /package/{src → dist/src}/executors/cargo-format/schema.d.ts +0 -0
  220. /package/{src → dist/src}/executors/cargo-format/schema.json +0 -0
  221. /package/{src → dist/src}/executors/cargo-format/schema.md +0 -0
  222. /package/{src → dist/src}/executors/cargo-publish/schema.d.ts +0 -0
  223. /package/{src → dist/src}/executors/cargo-publish/schema.json +0 -0
  224. /package/{src → dist/src}/executors/cargo-publish/schema.md +0 -0
  225. /package/{src → dist/src}/executors/clean-package/schema.d.ts +0 -0
  226. /package/{src → dist/src}/executors/clean-package/schema.json +0 -0
  227. /package/{src → dist/src}/executors/clean-package/schema.md +0 -0
  228. /package/{src → dist/src}/executors/esbuild/schema.d.ts +0 -0
  229. /package/{src → dist/src}/executors/esbuild/schema.json +0 -0
  230. /package/{src → dist/src}/executors/esbuild/schema.md +0 -0
  231. /package/{src → dist/src}/executors/npm-publish/schema.d.ts +0 -0
  232. /package/{src → dist/src}/executors/npm-publish/schema.json +0 -0
  233. /package/{src → dist/src}/executors/npm-publish/schema.md +0 -0
  234. /package/{src → dist/src}/executors/size-limit/schema.d.ts +0 -0
  235. /package/{src → dist/src}/executors/size-limit/schema.json +0 -0
  236. /package/{src → dist/src}/executors/size-limit/schema.md +0 -0
  237. /package/{src → dist/src}/executors/typia/schema.d.ts +0 -0
  238. /package/{src → dist/src}/executors/typia/schema.json +0 -0
  239. /package/{src → dist/src}/executors/typia/schema.md +0 -0
  240. /package/{src → dist/src}/executors/unbuild/schema.d.ts +0 -0
  241. /package/{src → dist/src}/executors/unbuild/schema.json +0 -0
  242. /package/{src → dist/src}/executors/unbuild/schema.md +0 -0
  243. /package/{src → dist/src}/generators/browser-library/files/README.md +0 -0
  244. /package/{src → dist/src}/generators/browser-library/files/jest.config.ts +0 -0
  245. /package/{src → dist/src}/generators/browser-library/files/src/index.ts.template +0 -0
  246. /package/{src → dist/src}/generators/browser-library/files/tsconfig.spec.json +0 -0
  247. /package/{src → dist/src}/generators/browser-library/schema.d.ts +0 -0
  248. /package/{src → dist/src}/generators/browser-library/schema.json +0 -0
  249. /package/{src → dist/src}/generators/browser-library/schema.md +0 -0
  250. /package/{src → dist/src}/generators/config-schema/schema.d.ts +0 -0
  251. /package/{src → dist/src}/generators/config-schema/schema.json +0 -0
  252. /package/{src → dist/src}/generators/config-schema/schema.md +0 -0
  253. /package/{src → dist/src}/generators/init/schema.d.ts +0 -0
  254. /package/{src → dist/src}/generators/init/schema.json +0 -0
  255. /package/{src → dist/src}/generators/init/schema.md +0 -0
  256. /package/{src → dist/src}/generators/neutral-library/files/README.md +0 -0
  257. /package/{src → dist/src}/generators/neutral-library/files/jest.config.ts +0 -0
  258. /package/{src → dist/src}/generators/neutral-library/files/src/index.ts.template +0 -0
  259. /package/{src → dist/src}/generators/neutral-library/files/tsconfig.spec.json +0 -0
  260. /package/{src → dist/src}/generators/neutral-library/schema.d.ts +0 -0
  261. /package/{src → dist/src}/generators/neutral-library/schema.json +0 -0
  262. /package/{src → dist/src}/generators/neutral-library/schema.md +0 -0
  263. /package/{src → dist/src}/generators/node-library/files/README.md +0 -0
  264. /package/{src → dist/src}/generators/node-library/files/jest.config.ts +0 -0
  265. /package/{src → dist/src}/generators/node-library/files/src/index.ts.template +0 -0
  266. /package/{src → dist/src}/generators/node-library/files/tsconfig.spec.json +0 -0
  267. /package/{src → dist/src}/generators/node-library/schema.d.ts +0 -0
  268. /package/{src → dist/src}/generators/node-library/schema.json +0 -0
  269. /package/{src → dist/src}/generators/node-library/schema.md +0 -0
  270. /package/{src → dist/src}/generators/preset/files/README.md.template +0 -0
  271. /package/{src → dist/src}/generators/preset/files/docs/readme-templates/README.footer.md.template +0 -0
  272. /package/{src → dist/src}/generators/preset/files/docs/readme-templates/README.header.md.template +0 -0
  273. /package/{src → dist/src}/generators/preset/files/eslint.config.js.template +0 -0
  274. /package/{src → dist/src}/generators/preset/files/knip.json +0 -0
  275. /package/{src → dist/src}/generators/preset/files/lefthook.json +0 -0
  276. /package/{src → dist/src}/generators/preset/files/nx.json +0 -0
  277. /package/{src → dist/src}/generators/preset/files/pnpm-workspace.yaml +0 -0
  278. /package/{src → dist/src}/generators/preset/files/socket.yaml +0 -0
  279. /package/{src → dist/src}/generators/preset/files/storm.json.template +0 -0
  280. /package/{src → dist/src}/generators/preset/files/tsconfig.base.json.template +0 -0
  281. /package/{src → dist/src}/generators/preset/schema.d.ts +0 -0
  282. /package/{src → dist/src}/generators/preset/schema.json +0 -0
  283. /package/{src → dist/src}/generators/preset/schema.md +0 -0
  284. /package/{src → dist/src}/generators/release-version/schema.d.ts +0 -0
  285. /package/{src → dist/src}/generators/release-version/schema.json +0 -0
  286. /package/{src → dist/src}/generators/release-version/schema.md +0 -0
  287. /package/{src → dist/src}/plugins/typescript/untyped-schema.ts +0 -0
@@ -1,159 +0,0 @@
1
- import {
2
- output,
3
- readJsonFile,
4
- workspaceRoot,
5
- type CreateDependenciesContext,
6
- type CreateNodesContext,
7
- type PackageManager,
8
- type ProjectGraphExternalNode,
9
- type RawProjectGraphDependency,
10
- } from "@nx/devkit";
11
- import { existsSync } from "node:fs";
12
- import { join } from "node:path";
13
- import {
14
- getNpmLockfileDependencies,
15
- getNpmLockfileNodes,
16
- } from "nx/src/plugins/js/lock-file/npm-parser";
17
- import {
18
- getPnpmLockfileDependencies,
19
- getPnpmLockfileNodes,
20
- } from "nx/src/plugins/js/lock-file/pnpm-parser";
21
- import {
22
- getYarnLockfileDependencies,
23
- getYarnLockfileNodes,
24
- } from "nx/src/plugins/js/lock-file/yarn-parser";
25
-
26
- export const YARN_LOCK_FILE = "yarn.lock";
27
- export const NPM_LOCK_FILE = "package-lock.json";
28
- export const PNPM_LOCK_FILE = "pnpm-lock.yaml";
29
- export const LOCK_FILES = [YARN_LOCK_FILE, NPM_LOCK_FILE, PNPM_LOCK_FILE];
30
-
31
- export const YARN_LOCK_PATH = join(workspaceRoot, YARN_LOCK_FILE);
32
- export const NPM_LOCK_PATH = join(workspaceRoot, NPM_LOCK_FILE);
33
- export const PNPM_LOCK_PATH = join(workspaceRoot, PNPM_LOCK_FILE);
34
-
35
- /**
36
- * Parses lock file and maps dependencies and metadata to {@link LockFileGraph}
37
- */
38
- export function getLockFileNodes(
39
- packageManager: PackageManager,
40
- contents: string,
41
- lockFileHash: string,
42
- context: CreateNodesContext,
43
- ): Record<string, ProjectGraphExternalNode> {
44
- try {
45
- if (packageManager === "yarn") {
46
- const packageJson = readJsonFile(
47
- join(context.workspaceRoot, "package.json"),
48
- );
49
- return getYarnLockfileNodes(contents, lockFileHash, packageJson);
50
- }
51
- if (packageManager === "pnpm") {
52
- return getPnpmLockfileNodes(contents, lockFileHash);
53
- }
54
- if (packageManager === "npm") {
55
- return getNpmLockfileNodes(contents, lockFileHash);
56
- }
57
- } catch (e) {
58
- if (!isPostInstallProcess()) {
59
- output.error({
60
- title: `Failed to parse ${packageManager} lockfile`,
61
- bodyLines: errorBodyLines(e),
62
- });
63
- }
64
- throw e;
65
- }
66
- throw new Error(`Unknown package manager: ${packageManager}`);
67
- }
68
-
69
- /**
70
- * Parses lock file and maps dependencies and metadata to {@link LockFileGraph}
71
- */
72
- export function getLockFileDependencies(
73
- packageManager: PackageManager,
74
- contents: string,
75
- lockFileHash: string,
76
- context: CreateDependenciesContext,
77
- ): RawProjectGraphDependency[] {
78
- try {
79
- if (packageManager === "yarn") {
80
- return getYarnLockfileDependencies(contents, lockFileHash, context);
81
- }
82
- if (packageManager === "pnpm") {
83
- return getPnpmLockfileDependencies(contents, lockFileHash, context);
84
- }
85
- if (packageManager === "npm") {
86
- return getNpmLockfileDependencies(contents, lockFileHash, context);
87
- }
88
- } catch (e) {
89
- if (!isPostInstallProcess()) {
90
- output.error({
91
- title: `Failed to parse ${packageManager} lockfile`,
92
- bodyLines: errorBodyLines(e),
93
- });
94
- }
95
- throw e;
96
- }
97
- throw new Error(`Unknown package manager: ${packageManager}`);
98
- }
99
-
100
- export function lockFileExists(packageManager: PackageManager): boolean {
101
- if (packageManager === "yarn") {
102
- return existsSync(YARN_LOCK_PATH);
103
- }
104
- if (packageManager === "pnpm") {
105
- return existsSync(PNPM_LOCK_PATH);
106
- }
107
- if (packageManager === "npm") {
108
- return existsSync(NPM_LOCK_PATH);
109
- }
110
- throw new Error(
111
- `Unknown package manager ${packageManager} or lock file missing`,
112
- );
113
- }
114
-
115
- /**
116
- * Returns lock file name based on the detected package manager in the root
117
- * @param packageManager
118
- * @returns
119
- */
120
- export function getLockFileName(packageManager: PackageManager): string {
121
- if (packageManager === "yarn") {
122
- return YARN_LOCK_FILE;
123
- }
124
- if (packageManager === "pnpm") {
125
- return PNPM_LOCK_FILE;
126
- }
127
- if (packageManager === "npm") {
128
- return NPM_LOCK_FILE;
129
- }
130
- throw new Error(`Unknown package manager: ${packageManager}`);
131
- }
132
-
133
- // generate body lines for error message
134
- function errorBodyLines(
135
- originalError: Error,
136
- additionalInfo: string[] = [],
137
- ): string[] {
138
- const result = [
139
- "Please open an issue at `https://github.com/storm-software/storm-ops/issues/new?template=1-bug.yml` and provide a reproduction.",
140
- ...(additionalInfo as string[]),
141
- ];
142
-
143
- if (originalError.message) {
144
- result.push(`\nOriginal error: ${originalError.message}\n\n`);
145
- }
146
-
147
- if (originalError.stack) {
148
- result.push(originalError.stack);
149
- }
150
-
151
- return result;
152
- }
153
-
154
- function isPostInstallProcess(): boolean {
155
- return (
156
- process.env.npm_command === "install" &&
157
- process.env.npm_lifecycle_event === "postinstall"
158
- );
159
- }
@@ -1,54 +0,0 @@
1
- import {
2
- joinPathFragments,
3
- ProjectConfiguration,
4
- readJsonFile,
5
- } from "@nx/devkit";
6
- import { existsSync } from "node:fs";
7
- import type { PackageJson } from "nx/src/utils/package-json.js";
8
- import { isEqualProjectTag, ProjectTagConstants } from "./project-tags";
9
- import { CargoToml, parseCargoToml } from "./toml";
10
-
11
- export type PackageManagerType = "package.json" | "Cargo.toml";
12
- export const PackageManagerTypes = {
13
- PackageJson: "package.json" as PackageManagerType,
14
- CargoToml: "Cargo.toml" as PackageManagerType,
15
- };
16
-
17
- export type PackageInfo = {
18
- content: PackageJson | CargoToml;
19
- type: PackageManagerType;
20
- };
21
-
22
- export const getPackageInfo = (
23
- project: ProjectConfiguration,
24
- ): null | PackageInfo => {
25
- if (
26
- isEqualProjectTag(
27
- project,
28
- ProjectTagConstants.Language.TAG_ID,
29
- ProjectTagConstants.Language.RUST,
30
- ) &&
31
- existsSync(joinPathFragments(project.root, "Cargo.toml"))
32
- ) {
33
- return {
34
- type: "Cargo.toml",
35
- content: parseCargoToml(joinPathFragments(project.root, "Cargo.toml")),
36
- };
37
- } else if (
38
- isEqualProjectTag(
39
- project,
40
- ProjectTagConstants.Language.TAG_ID,
41
- ProjectTagConstants.Language.TYPESCRIPT,
42
- ) &&
43
- existsSync(joinPathFragments(project.root, "package.json"))
44
- ) {
45
- return {
46
- type: "package.json",
47
- content: readJsonFile(
48
- joinPathFragments(project.root, "package.json"),
49
- ) as PackageJson,
50
- };
51
- }
52
-
53
- return null;
54
- };
@@ -1,112 +0,0 @@
1
- import { ProjectConfiguration, readJsonFile } from "@nx/devkit";
2
- import defu from "defu";
3
- import { existsSync } from "node:fs";
4
- import { dirname, join } from "node:path";
5
- import { PackageJson } from "pkg-types";
6
- import { getProjectTag, ProjectTagConstants } from "./project-tags";
7
-
8
- export const getProjectPlatform = (
9
- project: ProjectConfiguration,
10
- ignoreTags = false,
11
- ): "node" | "neutral" | "browser" | "worker" => {
12
- const tsconfigJson = readJsonFile(join(project.root, "tsconfig.json"));
13
- if (!tsconfigJson) {
14
- throw new Error(`No tsconfig.json found in project root: ${project.root}`);
15
- }
16
-
17
- const packageJson = readJsonFile(join(project.root, "package.json"));
18
- if (!packageJson) {
19
- throw new Error(`No package.json found in project root: ${project.root}`);
20
- }
21
-
22
- let platformTag: string | undefined = undefined;
23
- if (!ignoreTags) {
24
- platformTag = getProjectTag(project, ProjectTagConstants.Platform.TAG_ID);
25
- }
26
-
27
- if (platformTag !== ProjectTagConstants.Platform.NEUTRAL) {
28
- const types = Array.isArray(tsconfigJson.compilerOptions?.types)
29
- ? tsconfigJson.compilerOptions.types
30
- : [];
31
-
32
- if (
33
- platformTag === ProjectTagConstants.Platform.WORKER ||
34
- types.some(
35
- (type) => type.toLowerCase() === "@cloudflare/workers-types",
36
- ) ||
37
- packageJson.devDependencies?.["@cloudflare/workers-types"] ||
38
- packageJson.devDependencies?.["wrangler"]
39
- ) {
40
- return "worker";
41
- }
42
-
43
- if (
44
- platformTag === ProjectTagConstants.Platform.NODE ||
45
- types?.some((type) => type.toLowerCase() === "node") ||
46
- packageJson.devDependencies?.["@types/node"]
47
- ) {
48
- return "node";
49
- }
50
-
51
- if (
52
- platformTag === ProjectTagConstants.Platform.BROWSER ||
53
- types?.some((type) => type.toLowerCase() === "dom") ||
54
- (packageJson.dependencies &&
55
- Object.keys(packageJson.dependencies).some((dependency) =>
56
- dependency.includes("react"),
57
- )) ||
58
- (packageJson.devDependencies &&
59
- Object.keys(packageJson.devDependencies).some((devDependency) =>
60
- devDependency.includes("react"),
61
- ))
62
- ) {
63
- return "browser";
64
- }
65
- }
66
-
67
- return "neutral";
68
- };
69
-
70
- export const getProjectConfigFromProjectJsonPath = (
71
- projectJsonPath: string,
72
- packageJson: PackageJson,
73
- ): ProjectConfiguration => {
74
- return getProjectConfigFromProjectRoot(dirname(projectJsonPath), packageJson);
75
- };
76
-
77
- export const getProjectConfigFromProjectRoot = (
78
- projectRoot: string,
79
- packageJson: PackageJson,
80
- ): ProjectConfiguration => {
81
- const { nx, name } = packageJson;
82
- const projectJson = readJsonFile(join(projectRoot, "project.json"));
83
-
84
- return defu(nx ?? {}, projectJson, {
85
- targets: {},
86
- tags: [],
87
- name,
88
- root: projectRoot,
89
- }) as ProjectConfiguration;
90
- };
91
-
92
- export const getProjectRoot = (
93
- configPath: string,
94
- workspaceRoot: string,
95
- ): string | null => {
96
- try {
97
- const root = dirname(configPath);
98
- const projectRoot = join(workspaceRoot, root);
99
-
100
- if (
101
- !existsSync(join(projectRoot, "package.json")) &&
102
- !existsSync(join(projectRoot, "project.json"))
103
- ) {
104
- return null;
105
- }
106
-
107
- return projectRoot;
108
- } catch (error_) {
109
- console.error(error_);
110
- return null;
111
- }
112
- };
@@ -1,111 +0,0 @@
1
- import { joinPaths } from "@storm-software/config-tools";
2
- import { existsSync } from "node:fs";
3
- import { readFile, writeFile } from "node:fs/promises";
4
- import { format } from "prettier";
5
- import readYamlFile from "read-yaml-file";
6
-
7
- let pnpmCatalog!: Record<string, string>;
8
-
9
- /**
10
- * Update package.json dependencies to use pnpm catalog versions
11
- *
12
- * @param packageRoot - The root of the package
13
- * @param workspaceRoot - The root of the workspace
14
- */
15
- export async function pnpmCatalogUpdate(
16
- packageRoot: string,
17
- workspaceRoot: string = process.cwd(),
18
- ) {
19
- if (!pnpmCatalog) {
20
- const pnpmWorkspacePath = joinPaths(workspaceRoot, "pnpm-workspace.yaml");
21
- if (!existsSync(pnpmWorkspacePath)) {
22
- console.warn(
23
- `No \`pnpm-workspace.yaml\` file found in workspace root (searching in: ${pnpmWorkspacePath}). Skipping pnpm catalog read for now.`,
24
- );
25
-
26
- return;
27
- }
28
-
29
- const pnpmWorkspaceYaml = await readYamlFile<{
30
- catalog: Record<string, string>;
31
- }>(pnpmWorkspacePath);
32
- console.info(
33
- `pnpmWorkspaceYaml: ${JSON.stringify(pnpmWorkspaceYaml ?? {})}`,
34
- );
35
-
36
- if (pnpmWorkspaceYaml?.catalog) {
37
- pnpmCatalog = pnpmWorkspaceYaml.catalog;
38
- } else {
39
- console.warn(
40
- `Found a \`pnpm-workspace.yaml\` file in the workspace root directory, but no pnpm catalog existed:
41
- File name: ${pnpmWorkspacePath}
42
- File contents: ${pnpmWorkspaceYaml ? JSON.stringify(pnpmWorkspaceYaml) : "EMPTY FILE"}`,
43
- );
44
- }
45
- }
46
-
47
- if (!pnpmCatalog) {
48
- console.warn(
49
- `No pnpm catalog found. Attempting to read from workspace root's \`pnpm-workspace.yaml\` file.`,
50
- );
51
- }
52
-
53
- const packageJsonPath = joinPaths(packageRoot, "package.json");
54
- const packageJsonFile = await readFile(packageJsonPath, "utf8");
55
- if (!packageJsonFile) {
56
- throw new Error(
57
- "No package.json file found in package root: " + packageRoot,
58
- );
59
- }
60
-
61
- const packageJson = JSON.parse(packageJsonFile);
62
- for (const dependencyType of [
63
- "dependencies",
64
- "devDependencies",
65
- "peerDependencies",
66
- ]) {
67
- const dependencies = packageJson[dependencyType];
68
- if (!dependencies) {
69
- continue;
70
- }
71
-
72
- for (const dependencyName of Object.keys(dependencies)) {
73
- if (dependencies[dependencyName] === "catalog:") {
74
- if (!pnpmCatalog) {
75
- throw new Error(
76
- `Dependency ${dependencyName} is marked as \`catalog:\`, but no catalog exists in the workspace root's \`pnpm-workspace.yaml\` file.`,
77
- );
78
- }
79
-
80
- const catalogVersion = pnpmCatalog[dependencyName];
81
- if (!catalogVersion) {
82
- throw new Error("Missing pnpm catalog version for " + dependencyName);
83
- }
84
-
85
- dependencies[dependencyName] = catalogVersion;
86
- } else if (dependencies[dependencyName].startsWith("catalog:")) {
87
- throw new Error("multiple named catalogs not supported");
88
- }
89
- }
90
- }
91
-
92
- return writeFile(
93
- packageJsonPath,
94
- await format(JSON.stringify(packageJson), {
95
- parser: "json",
96
- proseWrap: "always",
97
- trailingComma: "none",
98
- tabWidth: 2,
99
- semi: true,
100
- singleQuote: false,
101
- quoteProps: "as-needed",
102
- insertPragma: false,
103
- bracketSameLine: true,
104
- printWidth: 80,
105
- bracketSpacing: true,
106
- arrowParens: "avoid",
107
- endOfLine: "lf",
108
- plugins: ["prettier-plugin-pkg"],
109
- }),
110
- );
111
- }
@@ -1,162 +0,0 @@
1
- import { ProjectConfiguration } from "@nx/devkit";
2
- import {
3
- ProjectTagDistStyleValue,
4
- ProjectTagLanguageValue,
5
- ProjectTagPlatformValue,
6
- ProjectTagRegistryValue,
7
- ProjectTagTypeValue,
8
- ProjectTagVariant,
9
- } from "../types";
10
-
11
- export const ProjectTagConstants = {
12
- Language: {
13
- TAG_ID: "language" as ProjectTagVariant,
14
-
15
- TYPESCRIPT: "typescript" as ProjectTagLanguageValue,
16
- RUST: "rust" as ProjectTagLanguageValue,
17
- },
18
- ProjectType: {
19
- TAG_ID: "type" as ProjectTagVariant,
20
-
21
- LIBRARY: "library" as ProjectTagTypeValue,
22
- APPLICATION: "application" as ProjectTagTypeValue,
23
- },
24
- DistStyle: {
25
- TAG_ID: "dist-style" as ProjectTagVariant,
26
-
27
- NORMAL: "normal" as ProjectTagDistStyleValue,
28
- CLEAN: "clean" as ProjectTagDistStyleValue,
29
- },
30
- Provider: {
31
- TAG_ID: "provider" as ProjectTagVariant,
32
- },
33
- Platform: {
34
- TAG_ID: "platform" as ProjectTagVariant,
35
-
36
- NODE: "node" as ProjectTagPlatformValue,
37
- BROWSER: "browser" as ProjectTagPlatformValue,
38
- NEUTRAL: "neutral" as ProjectTagPlatformValue,
39
- WORKER: "worker" as ProjectTagPlatformValue,
40
- },
41
- Registry: {
42
- TAG_ID: "registry" as ProjectTagVariant,
43
-
44
- CARGO: "cargo" as ProjectTagRegistryValue,
45
- NPM: "npm" as ProjectTagRegistryValue,
46
- CONTAINER: "container" as ProjectTagRegistryValue,
47
- CYCLONE: "cyclone" as ProjectTagRegistryValue,
48
- },
49
- Plugin: {
50
- TAG_ID: "plugin" as ProjectTagVariant,
51
- },
52
- } as const;
53
-
54
- export const formatProjectTag = (variant: ProjectTagVariant, value: string) => {
55
- return `${variant}:${value}`;
56
- };
57
-
58
- export const hasProjectTag = (
59
- project: ProjectConfiguration,
60
- variant: ProjectTagVariant,
61
- ) => {
62
- project.tags = project.tags ?? [];
63
-
64
- const prefix = formatProjectTag(variant, "");
65
- return project.tags.some(
66
- (tag) => tag.startsWith(prefix) && tag.length > prefix.length,
67
- );
68
- };
69
-
70
- export const getProjectTag = (
71
- project: ProjectConfiguration,
72
- variant: ProjectTagVariant,
73
- ): string | undefined => {
74
- if (!hasProjectTag(project, variant)) {
75
- return undefined;
76
- }
77
-
78
- project.tags = project.tags ?? [];
79
- const prefix = formatProjectTag(variant, "");
80
- const tag = project.tags.find((tag) => tag.startsWith(prefix));
81
-
82
- return tag?.replace(prefix, "");
83
- };
84
-
85
- export const isEqualProjectTag = (
86
- project: ProjectConfiguration,
87
- variant: ProjectTagVariant,
88
- value: string,
89
- ): boolean => {
90
- const tag = getProjectTag(project, variant);
91
-
92
- return !!(tag && tag?.toUpperCase() === value.toUpperCase());
93
- };
94
-
95
- export const addProjectTag = (
96
- project: ProjectConfiguration,
97
- variant: ProjectTagVariant,
98
- value: string,
99
- options: {
100
- overwrite?: boolean;
101
- } = {
102
- overwrite: false,
103
- },
104
- ) => {
105
- project.tags = project.tags ?? [];
106
- if (options.overwrite || !hasProjectTag(project, variant)) {
107
- project.tags = project.tags.filter(
108
- (tag) => !tag.startsWith(formatProjectTag(variant, "")),
109
- );
110
- project.tags.push(formatProjectTag(variant, value));
111
- }
112
- };
113
-
114
- export const addPluginProjectTag = (
115
- project: ProjectConfiguration,
116
- plugin: string,
117
- ) => {
118
- project.tags = project.tags ?? [];
119
- project.tags.push(
120
- formatProjectTag(ProjectTagConstants.Plugin.TAG_ID, plugin),
121
- );
122
- };
123
-
124
- export const setDefaultProjectTags = (
125
- project: ProjectConfiguration,
126
- plugin?: string,
127
- ) => {
128
- project.tags = project.tags ?? [];
129
-
130
- addProjectTag(
131
- project,
132
- ProjectTagConstants.ProjectType.TAG_ID,
133
- project.projectType === "application"
134
- ? ProjectTagConstants.ProjectType.APPLICATION
135
- : ProjectTagConstants.ProjectType.LIBRARY,
136
- { overwrite: true },
137
- );
138
- addProjectTag(
139
- project,
140
- ProjectTagConstants.DistStyle.TAG_ID,
141
- project.targets && Object.keys(project.targets).includes("clean-package")
142
- ? ProjectTagConstants.DistStyle.CLEAN
143
- : ProjectTagConstants.DistStyle.NORMAL,
144
- { overwrite: true },
145
- );
146
- addProjectTag(
147
- project,
148
- ProjectTagConstants.Platform.TAG_ID,
149
- project.targets?.build?.options.platform === "node"
150
- ? ProjectTagConstants.Platform.NODE
151
- : project.targets?.build?.options.platform === "worker"
152
- ? ProjectTagConstants.Platform.WORKER
153
- : project.targets?.build?.options.platform === "browser"
154
- ? ProjectTagConstants.Platform.BROWSER
155
- : ProjectTagConstants.Platform.NEUTRAL,
156
- { overwrite: false },
157
- );
158
-
159
- if (plugin) {
160
- addPluginProjectTag(project, plugin);
161
- }
162
- };