@storm-software/workspace-tools 1.118.0 → 1.120.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 (51) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +43 -8
  3. package/declarations.d.ts +66 -0
  4. package/executors.json +5 -0
  5. package/index.js +11989 -5321
  6. package/meta.json +1 -1
  7. package/package.json +3 -1
  8. package/packages/config/src/schema.d.ts +2 -2
  9. package/packages/workspace-tools/index.d.ts +2 -0
  10. package/packages/workspace-tools/src/base/base-executor.d.ts +2 -4
  11. package/packages/workspace-tools/src/base/typescript-library-generator.d.ts +2 -14
  12. package/packages/workspace-tools/src/executors/clean-package/constants.d.ts +4 -0
  13. package/packages/workspace-tools/src/executors/clean-package/executor.d.ts +8 -0
  14. package/packages/workspace-tools/src/executors/clean-package/types.d.ts +8 -0
  15. package/packages/workspace-tools/src/executors/clean-package/utils.d.ts +4 -0
  16. package/packages/workspace-tools/src/executors/rolldown/executor.d.ts +1 -3
  17. package/packages/workspace-tools/src/executors/tsup/executor.d.ts +1 -3
  18. package/packages/workspace-tools/src/executors/tsup-browser/executor.d.ts +1 -3
  19. package/packages/workspace-tools/src/executors/tsup-neutral/executor.d.ts +1 -3
  20. package/packages/workspace-tools/src/executors/tsup-node/executor.d.ts +1 -3
  21. package/packages/workspace-tools/src/executors/typia/executor.d.ts +1 -3
  22. package/packages/workspace-tools/src/executors/unbuild/executor.d.ts +1 -3
  23. package/packages/workspace-tools/src/generators/browser-library/generator.d.ts +1 -1
  24. package/packages/workspace-tools/src/generators/neutral-library/generator.d.ts +1 -1
  25. package/packages/workspace-tools/src/generators/node-library/generator.d.ts +1 -1
  26. package/packages/workspace-tools/src/plugins/typescript/project-config.d.ts +1 -1
  27. package/packages/workspace-tools/src/utils/index.d.ts +1 -0
  28. package/packages/workspace-tools/src/utils/project-tags.d.ts +30 -0
  29. package/src/base/index.js +4 -2
  30. package/src/executors/clean-package/executor.js +80083 -0
  31. package/src/executors/clean-package/schema.d.ts +10 -0
  32. package/src/executors/clean-package/schema.json +41 -0
  33. package/src/executors/rolldown/executor.js +4 -2
  34. package/src/executors/tsup/executor.js +4 -2
  35. package/src/executors/tsup-browser/executor.js +4 -2
  36. package/src/executors/tsup-neutral/executor.js +4 -2
  37. package/src/executors/tsup-node/executor.js +4 -2
  38. package/src/executors/typia/executor.js +4 -2
  39. package/src/executors/unbuild/executor.js +4 -2
  40. package/src/generators/browser-library/generator.js +10 -3
  41. package/src/generators/config-schema/generator.js +2 -1
  42. package/src/generators/neutral-library/generator.js +2 -1
  43. package/src/generators/neutral-library/schema.d.ts +1 -1
  44. package/src/generators/node-library/generator.js +5 -2
  45. package/src/generators/preset/files/.github/workflows/dependabot-update.yml +32 -0
  46. package/src/generators/preset/generator.js +2 -1
  47. package/src/generators/release-version/generator.js +2 -1
  48. package/src/plugins/rust/index.js +90 -7
  49. package/src/plugins/typescript/index.js +100 -1
  50. package/src/utils/index.js +87 -1
  51. package/src/generators/preset/files/.github/workflows/dependabot-approve.yml +0 -24
@@ -29,6 +29,79 @@ var import_node_fs = require("node:fs");
29
29
  var import_node_path = require("node:path");
30
30
  var import_fileutils = require("nx/src/utils/fileutils");
31
31
  var import_package_json = require("nx/src/utils/package-json");
32
+
33
+ // packages/workspace-tools/src/utils/project-tags.ts
34
+ var ProjectTagConstants = {
35
+ Language: {
36
+ TAG_ID: "language",
37
+ TYPESCRIPT: "typescript",
38
+ RUST: "rust"
39
+ },
40
+ ProjectType: {
41
+ TAG_ID: "type",
42
+ LIBRARY: "library",
43
+ APPLICATION: "application"
44
+ },
45
+ DistStyle: {
46
+ TAG_ID: "dist-style",
47
+ NORMAL: "normal",
48
+ CLEAN: "clean"
49
+ },
50
+ Provider: {
51
+ TAG_ID: "provider"
52
+ }
53
+ };
54
+ var formatProjectTag = (variant, value) => {
55
+ return `${variant}:${value}`;
56
+ };
57
+ var hasProjectTag = (project, variant) => {
58
+ project.tags = project.tags ?? [];
59
+ const prefix = formatProjectTag(variant, "");
60
+ return project.tags.some(
61
+ (tag) => tag.startsWith(prefix) && tag.length > prefix.length
62
+ );
63
+ };
64
+ var getProjectTag = (project, variant) => {
65
+ if (!hasProjectTag(project, variant)) {
66
+ return void 0;
67
+ }
68
+ project.tags = project.tags ?? [];
69
+ const prefix = formatProjectTag(variant, "");
70
+ const tag = project.tags.find((tag2) => tag2.startsWith(prefix));
71
+ return tag?.replace(prefix, "");
72
+ };
73
+ var isEqualProjectTag = (project, variant, value) => {
74
+ const tag = getProjectTag(project, variant);
75
+ return !!(tag && tag?.toUpperCase() === value.toUpperCase());
76
+ };
77
+ var addProjectTag = (project, variant, value, options = {
78
+ overwrite: false
79
+ }) => {
80
+ project.tags = project.tags ?? [];
81
+ if (options.overwrite || !hasProjectTag(project, variant)) {
82
+ project.tags = project.tags.filter(
83
+ (tag) => !tag.startsWith(formatProjectTag(variant, ""))
84
+ );
85
+ project.tags.push(formatProjectTag(variant, value));
86
+ }
87
+ };
88
+ var setDefaultProjectTags = (project) => {
89
+ project.tags = project.tags ?? [];
90
+ addProjectTag(
91
+ project,
92
+ ProjectTagConstants.ProjectType.TAG_ID,
93
+ project.projectType === "application" ? ProjectTagConstants.ProjectType.APPLICATION : ProjectTagConstants.ProjectType.LIBRARY,
94
+ { overwrite: true }
95
+ );
96
+ addProjectTag(
97
+ project,
98
+ ProjectTagConstants.DistStyle.TAG_ID,
99
+ project.targets && Object.keys(project.targets).includes("clean-package") ? ProjectTagConstants.DistStyle.CLEAN : ProjectTagConstants.DistStyle.NORMAL,
100
+ { overwrite: true }
101
+ );
102
+ };
103
+
104
+ // packages/workspace-tools/src/plugins/typescript/project-config.ts
32
105
  var name = "storm-software/typescript/project-config";
33
106
  var createNodes = [
34
107
  "{project.json,**/project.json}",
@@ -168,11 +241,37 @@ var createNodes = [
168
241
  executor: "@storm-software/workspace-tools:npm-publish",
169
242
  options: {}
170
243
  };
244
+ if (project.projectType === "application" || isEqualProjectTag(
245
+ project,
246
+ ProjectTagConstants.ProjectType.TAG_ID,
247
+ ProjectTagConstants.ProjectType.APPLICATION
248
+ ) || isEqualProjectTag(
249
+ project,
250
+ ProjectTagConstants.DistStyle.TAG_ID,
251
+ ProjectTagConstants.DistStyle.CLEAN
252
+ )) {
253
+ targets["clean-package"] = {
254
+ cache: false,
255
+ dependsOn: ["build"],
256
+ executor: "@storm-software/workspace-tools:clean-package",
257
+ options: {
258
+ cleanReadMe: true,
259
+ cleanComments: true
260
+ }
261
+ };
262
+ targets["nx-release-publish"].dependsOn = ["clean-package"];
263
+ }
171
264
  }
265
+ addProjectTag(
266
+ project,
267
+ ProjectTagConstants.Language.TAG_ID,
268
+ ProjectTagConstants.Language.TYPESCRIPT,
269
+ { overwrite: true }
270
+ );
271
+ setDefaultProjectTags(project);
172
272
  return project?.name ? {
173
273
  projects: {
174
274
  [project.name]: {
175
- tags: ["language:typescript"],
176
275
  ...project,
177
276
  targets,
178
277
  release: {
@@ -65395,7 +65395,7 @@ var init_schema = __esm({
65395
65395
  ci: z2.boolean().default(true).describe(
65396
65396
  "An indicator specifying if the current environment is a CI environment"
65397
65397
  ),
65398
- workspaceRoot: z2.string().trim().optional().describe("The root directory of the workspace"),
65398
+ workspaceRoot: z2.string().trim().default("").describe("The root directory of the workspace"),
65399
65399
  packageDirectory: z2.string().trim().optional().describe("The root directory of the package"),
65400
65400
  externalPackagePatterns: z2.array(z2.string()).default([]).describe(
65401
65401
  "The build will use these package patterns to determine if they should be external to the bundle"
@@ -68041,6 +68041,7 @@ var init_create_storm_config = __esm({
68041
68041
  ...config.colors
68042
68042
  }
68043
68043
  });
68044
+ result.workspaceRoot ??= defaultConfig.workspaceRoot ? defaultConfig.workspaceRoot : findWorkspaceRoot(workspaceRoot3);
68044
68045
  } else {
68045
68046
  result = _static_cache;
68046
68047
  }
@@ -296571,8 +296572,10 @@ __export(utils_exports, {
296571
296572
  NPM_LOCK_PATH: () => NPM_LOCK_PATH,
296572
296573
  PNPM_LOCK_FILE: () => PNPM_LOCK_FILE,
296573
296574
  PNPM_LOCK_PATH: () => PNPM_LOCK_PATH,
296575
+ ProjectTagConstants: () => ProjectTagConstants,
296574
296576
  YARN_LOCK_FILE: () => YARN_LOCK_FILE,
296575
296577
  YARN_LOCK_PATH: () => YARN_LOCK_PATH,
296578
+ addProjectTag: () => addProjectTag,
296576
296579
  applyWorkspaceExecutorTokens: () => applyWorkspaceExecutorTokens,
296577
296580
  cargoCommand: () => cargoCommand,
296578
296581
  cargoCommandSync: () => cargoCommandSync,
@@ -296581,12 +296584,16 @@ __export(utils_exports, {
296581
296584
  childProcess: () => childProcess2,
296582
296585
  createCliOptions: () => createCliOptions,
296583
296586
  eslintVersion: () => eslintVersion,
296587
+ formatProjectTag: () => formatProjectTag,
296584
296588
  getLockFileDependencies: () => getLockFileDependencies,
296585
296589
  getLockFileName: () => getLockFileName,
296586
296590
  getLockFileNodes: () => getLockFileNodes,
296587
296591
  getProjectConfiguration: () => getProjectConfiguration,
296588
296592
  getProjectConfigurations: () => getProjectConfigurations,
296593
+ getProjectTag: () => getProjectTag,
296589
296594
  getTypiaTransform: () => getTypiaTransform,
296595
+ hasProjectTag: () => hasProjectTag,
296596
+ isEqualProjectTag: () => isEqualProjectTag,
296590
296597
  isExternal: () => isExternal,
296591
296598
  lintStagedVersion: () => lintStagedVersion,
296592
296599
  lockFileExists: () => lockFileExists,
@@ -296602,6 +296609,7 @@ __export(utils_exports, {
296602
296609
  prettierVersion: () => prettierVersion,
296603
296610
  runProcess: () => runProcess,
296604
296611
  semanticReleaseVersion: () => semanticReleaseVersion,
296612
+ setDefaultProjectTags: () => setDefaultProjectTags,
296605
296613
  stringifyCargoToml: () => stringifyCargoToml,
296606
296614
  swcCliVersion: () => swcCliVersion,
296607
296615
  swcCoreVersion: () => swcCoreVersion,
@@ -299830,6 +299838,77 @@ function createCliOptions(obj) {
299830
299838
  }
299831
299839
  return args;
299832
299840
  }
299841
+
299842
+ // packages/workspace-tools/src/utils/project-tags.ts
299843
+ var ProjectTagConstants = {
299844
+ Language: {
299845
+ TAG_ID: "language",
299846
+ TYPESCRIPT: "typescript",
299847
+ RUST: "rust"
299848
+ },
299849
+ ProjectType: {
299850
+ TAG_ID: "type",
299851
+ LIBRARY: "library",
299852
+ APPLICATION: "application"
299853
+ },
299854
+ DistStyle: {
299855
+ TAG_ID: "dist-style",
299856
+ NORMAL: "normal",
299857
+ CLEAN: "clean"
299858
+ },
299859
+ Provider: {
299860
+ TAG_ID: "provider"
299861
+ }
299862
+ };
299863
+ var formatProjectTag = (variant, value2) => {
299864
+ return `${variant}:${value2}`;
299865
+ };
299866
+ var hasProjectTag = (project, variant) => {
299867
+ project.tags = project.tags ?? [];
299868
+ const prefix = formatProjectTag(variant, "");
299869
+ return project.tags.some(
299870
+ (tag) => tag.startsWith(prefix) && tag.length > prefix.length
299871
+ );
299872
+ };
299873
+ var getProjectTag = (project, variant) => {
299874
+ if (!hasProjectTag(project, variant)) {
299875
+ return void 0;
299876
+ }
299877
+ project.tags = project.tags ?? [];
299878
+ const prefix = formatProjectTag(variant, "");
299879
+ const tag = project.tags.find((tag2) => tag2.startsWith(prefix));
299880
+ return tag?.replace(prefix, "");
299881
+ };
299882
+ var isEqualProjectTag = (project, variant, value2) => {
299883
+ const tag = getProjectTag(project, variant);
299884
+ return !!(tag && tag?.toUpperCase() === value2.toUpperCase());
299885
+ };
299886
+ var addProjectTag = (project, variant, value2, options = {
299887
+ overwrite: false
299888
+ }) => {
299889
+ project.tags = project.tags ?? [];
299890
+ if (options.overwrite || !hasProjectTag(project, variant)) {
299891
+ project.tags = project.tags.filter(
299892
+ (tag) => !tag.startsWith(formatProjectTag(variant, ""))
299893
+ );
299894
+ project.tags.push(formatProjectTag(variant, value2));
299895
+ }
299896
+ };
299897
+ var setDefaultProjectTags = (project) => {
299898
+ project.tags = project.tags ?? [];
299899
+ addProjectTag(
299900
+ project,
299901
+ ProjectTagConstants.ProjectType.TAG_ID,
299902
+ project.projectType === "application" ? ProjectTagConstants.ProjectType.APPLICATION : ProjectTagConstants.ProjectType.LIBRARY,
299903
+ { overwrite: true }
299904
+ );
299905
+ addProjectTag(
299906
+ project,
299907
+ ProjectTagConstants.DistStyle.TAG_ID,
299908
+ project.targets && Object.keys(project.targets).includes("clean-package") ? ProjectTagConstants.DistStyle.CLEAN : ProjectTagConstants.DistStyle.NORMAL,
299909
+ { overwrite: true }
299910
+ );
299911
+ };
299833
299912
  // Annotate the CommonJS export names for ESM import in node:
299834
299913
  0 && (module.exports = {
299835
299914
  LOCK_FILES,
@@ -299837,8 +299916,10 @@ function createCliOptions(obj) {
299837
299916
  NPM_LOCK_PATH,
299838
299917
  PNPM_LOCK_FILE,
299839
299918
  PNPM_LOCK_PATH,
299919
+ ProjectTagConstants,
299840
299920
  YARN_LOCK_FILE,
299841
299921
  YARN_LOCK_PATH,
299922
+ addProjectTag,
299842
299923
  applyWorkspaceExecutorTokens,
299843
299924
  cargoCommand,
299844
299925
  cargoCommandSync,
@@ -299847,12 +299928,16 @@ function createCliOptions(obj) {
299847
299928
  childProcess,
299848
299929
  createCliOptions,
299849
299930
  eslintVersion,
299931
+ formatProjectTag,
299850
299932
  getLockFileDependencies,
299851
299933
  getLockFileName,
299852
299934
  getLockFileNodes,
299853
299935
  getProjectConfiguration,
299854
299936
  getProjectConfigurations,
299937
+ getProjectTag,
299855
299938
  getTypiaTransform,
299939
+ hasProjectTag,
299940
+ isEqualProjectTag,
299856
299941
  isExternal,
299857
299942
  lintStagedVersion,
299858
299943
  lockFileExists,
@@ -299868,6 +299953,7 @@ function createCliOptions(obj) {
299868
299953
  prettierVersion,
299869
299954
  runProcess,
299870
299955
  semanticReleaseVersion,
299956
+ setDefaultProjectTags,
299871
299957
  stringifyCargoToml,
299872
299958
  swcCliVersion,
299873
299959
  swcCoreVersion,
@@ -1,24 +0,0 @@
1
- # https://stackoverflow.com/q/70664840/590396
2
- name: Dependabot auto-approve
3
- on: pull_request_target
4
-
5
- permissions:
6
- contents: write
7
- pull-requests: write
8
-
9
- jobs:
10
- dependabot:
11
- runs-on: ubuntu-latest
12
- if: ${{ github.actor == 'dependabot[bot]' || github.actor == 'renovate[bot]' || github.actor == 'Stormie-Bot' }}
13
- steps:
14
- - name: Approve a PR
15
- run: gh pr review --approve "$PR_URL"
16
- env:
17
- PR_URL: ${{github.event.pull_request.html_url}}
18
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
19
-
20
- - name: Enable auto-merge for Dependabot PRs
21
- run: gh pr merge --auto --squash "$PR_URL"
22
- env:
23
- PR_URL: ${{github.event.pull_request.html_url}}
24
- GITHUB_TOKEN: ${{ secrets.STORM_BOT_GITHUB_TOKEN }}