@storm-software/projen 0.15.38 → 0.15.40

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  # Changelog for Storm Ops - Projen
4
4
 
5
+ ## [0.15.39](https://github.com/storm-software/storm-ops/releases/tag/projen%400.15.39) (2025-07-10)
6
+
7
+ ### Miscellaneous
8
+
9
+ - **monorepo:** Regenerate README markdown files
10
+ ([98723860a](https://github.com/storm-software/storm-ops/commit/98723860a))
11
+
12
+ ## [0.15.38](https://github.com/storm-software/storm-ops/releases/tag/projen%400.15.38) (2025-07-08)
13
+
14
+ ### Miscellaneous
15
+
16
+ - **monorepo:** Update README markdown files
17
+ ([a201e9178](https://github.com/storm-software/storm-ops/commit/a201e9178))
18
+
5
19
  ## [0.15.37](https://github.com/storm-software/storm-ops/releases/tag/projen%400.15.37) (2025-07-06)
6
20
 
7
21
  ### Miscellaneous
package/README.md CHANGED
@@ -21,7 +21,7 @@ This package is part of the <b>⚡Storm-Ops</b> monorepo. The Storm-Ops packages
21
21
 
22
22
  <h3 align="center">💻 Visit <a href="https://stormsoftware.com" target="_blank">stormsoftware.com</a> to stay up to date with this developer</h3><br />
23
23
 
24
- [![Version](https://img.shields.io/badge/version-0.15.37-1fb2a6.svg?style=for-the-badge&color=1fb2a6)](https://prettier.io/)&nbsp;[![Nx](https://img.shields.io/badge/Nx-17.0.2-lightgrey?style=for-the-badge&logo=nx&logoWidth=20&&color=1fb2a6)](http://nx.dev/)&nbsp;[![NextJs](https://img.shields.io/badge/Next.js-14.0.2-lightgrey?style=for-the-badge&logo=nextdotjs&logoWidth=20&color=1fb2a6)](https://nextjs.org/)&nbsp;[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge&logo=commitlint&color=1fb2a6)](http://commitizen.github.io/cz-cli/)&nbsp;![Semantic-Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge&color=1fb2a6)&nbsp;[![documented with Fumadocs](https://img.shields.io/badge/documented_with-fumadocs-success.svg?style=for-the-badge&logo=readthedocs&color=1fb2a6)](https://fumadocs.vercel.app/)&nbsp;![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/storm-software/storm-ops/cr.yml?style=for-the-badge&logo=github-actions&color=1fb2a6)
24
+ [![Version](https://img.shields.io/badge/version-0.15.39-1fb2a6.svg?style=for-the-badge&color=1fb2a6)](https://prettier.io/)&nbsp;[![Nx](https://img.shields.io/badge/Nx-17.0.2-lightgrey?style=for-the-badge&logo=nx&logoWidth=20&&color=1fb2a6)](http://nx.dev/)&nbsp;[![NextJs](https://img.shields.io/badge/Next.js-14.0.2-lightgrey?style=for-the-badge&logo=nextdotjs&logoWidth=20&color=1fb2a6)](https://nextjs.org/)&nbsp;[![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=for-the-badge&logo=commitlint&color=1fb2a6)](http://commitizen.github.io/cz-cli/)&nbsp;![Semantic-Release](https://img.shields.io/badge/%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg?style=for-the-badge&color=1fb2a6)&nbsp;[![documented with Fumadocs](https://img.shields.io/badge/documented_with-fumadocs-success.svg?style=for-the-badge&logo=readthedocs&color=1fb2a6)](https://fumadocs.vercel.app/)&nbsp;![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/storm-software/storm-ops/cr.yml?style=for-the-badge&logo=github-actions&color=1fb2a6)
25
25
 
26
26
  <!-- prettier-ignore-start -->
27
27
  <!-- markdownlint-disable -->
@@ -74,7 +74,6 @@ var STORM_DEFAULT_HOMEPAGE = "https://stormsoftware.com";
74
74
  var STORM_DEFAULT_CONTACT = "https://stormsoftware.com/contact";
75
75
  var STORM_DEFAULT_LICENSING = "https://stormsoftware.com/license";
76
76
  var STORM_DEFAULT_LICENSE = "Apache-2.0";
77
- var STORM_DEFAULT_RELEASE_BANNER = "https://public.storm-cdn.com/brand-banner.png";
78
77
  var STORM_DEFAULT_SOCIAL_TWITTER = "StormSoftwareHQ";
79
78
  var STORM_DEFAULT_SOCIAL_DISCORD = "https://discord.gg/MQ6YVzakM5";
80
79
  var STORM_DEFAULT_SOCIAL_TELEGRAM = "https://t.me/storm_software";
@@ -194,13 +193,13 @@ var WorkspaceBotConfigSchema = z.object({
194
193
  "The workspace's bot user's config used to automated various operations tasks"
195
194
  );
196
195
  var WorkspaceReleaseConfigSchema = z.object({
197
- banner: z.string().trim().default(STORM_DEFAULT_RELEASE_BANNER).describe(
196
+ banner: z.string().trim().optional().describe(
198
197
  "A URL to a banner image used to display the workspace's release"
199
198
  ),
200
199
  header: z.string().trim().optional().describe(
201
200
  "A header message appended to the start of the workspace's release notes"
202
201
  ),
203
- footer: z.string().trim().default(STORM_DEFAULT_RELEASE_FOOTER).describe(
202
+ footer: z.string().trim().optional().describe(
204
203
  "A footer message appended to the end of the workspace's release notes"
205
204
  )
206
205
  }).describe("The workspace's release config used during the release process");
@@ -1494,12 +1493,28 @@ var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot3, s
1494
1493
  }
1495
1494
  }
1496
1495
  const defaultConfig = await getPackageJsonConfig(_workspaceRoot);
1497
- result = applyDefaultConfig(
1498
- await stormWorkspaceConfigSchema.parseAsync(
1499
- _defu2.default.call(void 0, configEnv, configFile, defaultConfig)
1500
- )
1496
+ const configInput = _defu2.default.call(void 0,
1497
+ configEnv,
1498
+ configFile,
1499
+ defaultConfig
1501
1500
  );
1502
- result.workspaceRoot ??= _workspaceRoot;
1501
+ try {
1502
+ result = applyDefaultConfig(
1503
+ await stormWorkspaceConfigSchema.parseAsync(configInput)
1504
+ );
1505
+ result.workspaceRoot ??= _workspaceRoot;
1506
+ } catch (error) {
1507
+ throw new Error(
1508
+ `Failed to parse Storm Workspace configuration${_optionalChain([error, 'optionalAccess', _63 => _63.message]) ? `: ${error.message}` : ""}
1509
+
1510
+ Please ensure your configuration file is valid JSON and matches the expected schema. The current workspace configuration input is: ${formatLogMessage(
1511
+ configInput
1512
+ )}`,
1513
+ {
1514
+ cause: error
1515
+ }
1516
+ );
1517
+ }
1503
1518
  } else {
1504
1519
  result = _static_cache.data;
1505
1520
  }
@@ -1566,7 +1581,7 @@ var withRunExecutor = (name, executorFn, executorOptions = {}) => async (_option
1566
1581
  let options = _options;
1567
1582
  let config = {};
1568
1583
  try {
1569
- if (!_optionalChain([context, 'access', _63 => _63.projectsConfigurations, 'optionalAccess', _64 => _64.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
1584
+ if (!_optionalChain([context, 'access', _64 => _64.projectsConfigurations, 'optionalAccess', _65 => _65.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
1570
1585
  throw new Error(
1571
1586
  "The Build process failed because the context is not valid. Please run this command from a workspace."
1572
1587
  );
@@ -1589,7 +1604,7 @@ var withRunExecutor = (name, executorFn, executorOptions = {}) => async (_option
1589
1604
  );
1590
1605
  config = await getConfig(workspaceRoot3);
1591
1606
  }
1592
- if (_optionalChain([executorOptions, 'optionalAccess', _65 => _65.hooks, 'optionalAccess', _66 => _66.applyDefaultOptions])) {
1607
+ if (_optionalChain([executorOptions, 'optionalAccess', _66 => _66.hooks, 'optionalAccess', _67 => _67.applyDefaultOptions])) {
1593
1608
  writeDebug("Running the applyDefaultOptions hook...", config);
1594
1609
  options = await Promise.resolve(
1595
1610
  executorOptions.hooks.applyDefaultOptions(options, config)
@@ -1617,7 +1632,7 @@ ${formatLogMessage(tokenized)}
1617
1632
  `,
1618
1633
  config
1619
1634
  );
1620
- if (_optionalChain([executorOptions, 'optionalAccess', _67 => _67.hooks, 'optionalAccess', _68 => _68.preProcess])) {
1635
+ if (_optionalChain([executorOptions, 'optionalAccess', _68 => _68.hooks, 'optionalAccess', _69 => _69.preProcess])) {
1621
1636
  writeDebug("Running the preProcess hook...", config);
1622
1637
  await Promise.resolve(
1623
1638
  executorOptions.hooks.preProcess(tokenized, config)
@@ -1625,7 +1640,7 @@ ${formatLogMessage(tokenized)}
1625
1640
  writeDebug("Completed the preProcess hook", config);
1626
1641
  }
1627
1642
  const ret = executorFn(tokenized, context, config);
1628
- if (_isFunction2(_optionalChain([ret, 'optionalAccess', _69 => _69.next]))) {
1643
+ if (_isFunction2(_optionalChain([ret, 'optionalAccess', _70 => _70.next]))) {
1629
1644
  const asyncGen = ret;
1630
1645
  for await (const iter of asyncGen) {
1631
1646
  void iter;
@@ -1634,7 +1649,7 @@ ${formatLogMessage(tokenized)}
1634
1649
  const result = await Promise.resolve(
1635
1650
  ret
1636
1651
  );
1637
- if (result && (!result.success || result.error && _optionalChain([result, 'optionalAccess', _70 => _70.error, 'optionalAccess', _71 => _71.message]) && typeof _optionalChain([result, 'optionalAccess', _72 => _72.error, 'optionalAccess', _73 => _73.message]) === "string" && _optionalChain([result, 'optionalAccess', _74 => _74.error, 'optionalAccess', _75 => _75.name]) && typeof _optionalChain([result, 'optionalAccess', _76 => _76.error, 'optionalAccess', _77 => _77.name]) === "string")) {
1652
+ if (result && (!result.success || result.error && _optionalChain([result, 'optionalAccess', _71 => _71.error, 'optionalAccess', _72 => _72.message]) && typeof _optionalChain([result, 'optionalAccess', _73 => _73.error, 'optionalAccess', _74 => _74.message]) === "string" && _optionalChain([result, 'optionalAccess', _75 => _75.error, 'optionalAccess', _76 => _76.name]) && typeof _optionalChain([result, 'optionalAccess', _77 => _77.error, 'optionalAccess', _78 => _78.name]) === "string")) {
1638
1653
  writeTrace(
1639
1654
  `Failure determined by the ${name} executor
1640
1655
  ${formatLogMessage(result)}`,
@@ -1642,10 +1657,10 @@ ${formatLogMessage(result)}`,
1642
1657
  );
1643
1658
  console.error(result);
1644
1659
  throw new Error(`The ${name} executor failed to run`, {
1645
- cause: _optionalChain([result, 'optionalAccess', _78 => _78.error])
1660
+ cause: _optionalChain([result, 'optionalAccess', _79 => _79.error])
1646
1661
  });
1647
1662
  }
1648
- if (_optionalChain([executorOptions, 'optionalAccess', _79 => _79.hooks, 'optionalAccess', _80 => _80.postProcess])) {
1663
+ if (_optionalChain([executorOptions, 'optionalAccess', _80 => _80.hooks, 'optionalAccess', _81 => _81.postProcess])) {
1649
1664
  writeDebug("Running the postProcess hook...", config);
1650
1665
  await Promise.resolve(executorOptions.hooks.postProcess(config));
1651
1666
  writeDebug("Completed the postProcess hook", config);
@@ -1675,7 +1690,7 @@ ${formatLogMessage(result)}`,
1675
1690
  };
1676
1691
  var _isFunction2 = (value) => {
1677
1692
  try {
1678
- return value instanceof Function || typeof value === "function" || !!(_optionalChain([value, 'optionalAccess', _81 => _81.constructor]) && _optionalChain([value, 'optionalAccess', _82 => _82.call]) && _optionalChain([value, 'optionalAccess', _83 => _83.apply]));
1693
+ return value instanceof Function || typeof value === "function" || !!(_optionalChain([value, 'optionalAccess', _82 => _82.constructor]) && _optionalChain([value, 'optionalAccess', _83 => _83.call]) && _optionalChain([value, 'optionalAccess', _84 => _84.apply]));
1679
1694
  } catch (e) {
1680
1695
  return false;
1681
1696
  }
@@ -1743,10 +1758,10 @@ async function cargoCommand(...args) {
1743
1758
  }
1744
1759
  function cargoCommandSync(args = "", options) {
1745
1760
  const normalizedOptions = {
1746
- stdio: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _84 => _84.stdio]), () => ( "inherit")),
1761
+ stdio: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _85 => _85.stdio]), () => ( "inherit")),
1747
1762
  env: {
1748
1763
  ...process.env,
1749
- ..._optionalChain([options, 'optionalAccess', _85 => _85.env])
1764
+ ..._optionalChain([options, 'optionalAccess', _86 => _86.env])
1750
1765
  }
1751
1766
  };
1752
1767
  try {
@@ -1779,7 +1794,7 @@ function cargoMetadata() {
1779
1794
  }
1780
1795
  function runProcess(processCmd, ...args) {
1781
1796
  const metadata = cargoMetadata();
1782
- const targetDir = _nullishCoalesce(_optionalChain([metadata, 'optionalAccess', _86 => _86.target_directory]), () => ( _devkit.joinPathFragments.call(void 0, _devkit.workspaceRoot, "dist")));
1797
+ const targetDir = _nullishCoalesce(_optionalChain([metadata, 'optionalAccess', _87 => _87.target_directory]), () => ( _devkit.joinPathFragments.call(void 0, _devkit.workspaceRoot, "dist")));
1783
1798
  return new Promise((resolve2) => {
1784
1799
  if (process.env.VERCEL) {
1785
1800
  return resolve2({ success: true });
@@ -2080,7 +2095,7 @@ var addPackageDependencies = async (workspaceRoot3, projectRoot, projectName, pa
2080
2095
  );
2081
2096
  const localPackages = [];
2082
2097
  for (const project of projectDependencies.dependencies.filter(
2083
- (dep) => dep.node.type === "lib" && _optionalChain([dep, 'access', _87 => _87.node, 'access', _88 => _88.data, 'optionalAccess', _89 => _89.root]) !== projectRoot && _optionalChain([dep, 'access', _90 => _90.node, 'access', _91 => _91.data, 'optionalAccess', _92 => _92.root]) !== workspaceRoot3
2098
+ (dep) => dep.node.type === "lib" && _optionalChain([dep, 'access', _88 => _88.node, 'access', _89 => _89.data, 'optionalAccess', _90 => _90.root]) !== projectRoot && _optionalChain([dep, 'access', _91 => _91.node, 'access', _92 => _92.data, 'optionalAccess', _93 => _93.root]) !== workspaceRoot3
2084
2099
  )) {
2085
2100
  const projectNode = project.node;
2086
2101
  if (projectNode.data.root) {
@@ -2112,13 +2127,13 @@ var addPackageDependencies = async (workspaceRoot3, projectRoot, projectName, pa
2112
2127
  const projectJson = JSON.parse(projectJsonFile);
2113
2128
  const projectName2 = projectJson.name;
2114
2129
  const projectConfigurations = _projectgraph.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
2115
- if (!_optionalChain([projectConfigurations, 'optionalAccess', _93 => _93.projects, 'optionalAccess', _94 => _94[projectName2]])) {
2130
+ if (!_optionalChain([projectConfigurations, 'optionalAccess', _94 => _94.projects, 'optionalAccess', _95 => _95[projectName2]])) {
2116
2131
  throw new Error(
2117
2132
  "The Build process failed because the project does not have a valid configuration in the project.json file. Check if the file exists in the root of the project."
2118
2133
  );
2119
2134
  }
2120
- const implicitDependencies = _optionalChain([projectConfigurations, 'access', _95 => _95.projects, 'optionalAccess', _96 => _96[projectName2], 'access', _97 => _97.implicitDependencies, 'optionalAccess', _98 => _98.reduce, 'call', _99 => _99((ret, dep) => {
2121
- if (_optionalChain([projectConfigurations, 'access', _100 => _100.projects, 'optionalAccess', _101 => _101[dep]])) {
2135
+ const implicitDependencies = _optionalChain([projectConfigurations, 'access', _96 => _96.projects, 'optionalAccess', _97 => _97[projectName2], 'access', _98 => _98.implicitDependencies, 'optionalAccess', _99 => _99.reduce, 'call', _100 => _100((ret, dep) => {
2136
+ if (_optionalChain([projectConfigurations, 'access', _101 => _101.projects, 'optionalAccess', _102 => _102[dep]])) {
2122
2137
  const depPackageJsonPath = _chunkLP4I3FEYjs.joinPaths.call(void 0,
2123
2138
  workspaceRoot3,
2124
2139
  projectConfigurations.projects[dep].root,
@@ -2138,13 +2153,13 @@ var addPackageDependencies = async (workspaceRoot3, projectRoot, projectName, pa
2138
2153
  return ret;
2139
2154
  }, [])]);
2140
2155
  packageJson.dependencies = localPackages.reduce((ret, localPackage) => {
2141
- if (!ret[localPackage.name] && !_optionalChain([implicitDependencies, 'optionalAccess', _102 => _102.includes, 'call', _103 => _103(localPackage.name)]) && _optionalChain([packageJson, 'access', _104 => _104.devDependencies, 'optionalAccess', _105 => _105[localPackage.name]]) === void 0) {
2156
+ if (!ret[localPackage.name] && !_optionalChain([implicitDependencies, 'optionalAccess', _103 => _103.includes, 'call', _104 => _104(localPackage.name)]) && _optionalChain([packageJson, 'access', _105 => _105.devDependencies, 'optionalAccess', _106 => _106[localPackage.name]]) === void 0) {
2142
2157
  ret[localPackage.name] = `^${localPackage.version || "0.0.1"}`;
2143
2158
  }
2144
2159
  return ret;
2145
2160
  }, _nullishCoalesce(packageJson.dependencies, () => ( {})));
2146
2161
  packageJson.devDependencies = localPackages.reduce((ret, localPackage) => {
2147
- if (!ret[localPackage.name] && _optionalChain([implicitDependencies, 'optionalAccess', _106 => _106.includes, 'call', _107 => _107(localPackage.name)]) && _optionalChain([packageJson, 'access', _108 => _108.dependencies, 'optionalAccess', _109 => _109[localPackage.name]]) === void 0) {
2162
+ if (!ret[localPackage.name] && _optionalChain([implicitDependencies, 'optionalAccess', _107 => _107.includes, 'call', _108 => _108(localPackage.name)]) && _optionalChain([packageJson, 'access', _109 => _109.dependencies, 'optionalAccess', _110 => _110[localPackage.name]]) === void 0) {
2148
2163
  ret[localPackage.name] = `^${localPackage.version || "0.0.1"}`;
2149
2164
  }
2150
2165
  return ret;
@@ -2239,7 +2254,7 @@ var _createtaskgraph = require('nx/src/tasks-runner/create-task-graph');
2239
2254
 
2240
2255
  // ../esbuild/src/assets.ts
2241
2256
  async function copyBuildAssets(context) {
2242
- if (!_optionalChain([context, 'access', _110 => _110.result, 'optionalAccess', _111 => _111.errors, 'access', _112 => _112.length]) && _optionalChain([context, 'access', _113 => _113.options, 'access', _114 => _114.assets, 'optionalAccess', _115 => _115.length])) {
2257
+ if (!_optionalChain([context, 'access', _111 => _111.result, 'optionalAccess', _112 => _112.errors, 'access', _113 => _113.length]) && _optionalChain([context, 'access', _114 => _114.options, 'access', _115 => _115.assets, 'optionalAccess', _116 => _116.length])) {
2243
2258
  writeDebug(
2244
2259
  ` \u{1F4CB} Copying ${context.options.assets.length} asset files to output directory: ${context.outputPath}`,
2245
2260
  context.workspaceConfig
@@ -2348,7 +2363,7 @@ async function resolveContext(userOptions) {
2348
2363
  const projectJson = JSON.parse(projectJsonFile);
2349
2364
  const projectName = projectJson.name || userOptions.name;
2350
2365
  const projectConfigurations = _devkit.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
2351
- if (!_optionalChain([projectConfigurations, 'optionalAccess', _116 => _116.projects, 'optionalAccess', _117 => _117[projectName]])) {
2366
+ if (!_optionalChain([projectConfigurations, 'optionalAccess', _117 => _117.projects, 'optionalAccess', _118 => _118[projectName]])) {
2352
2367
  throw new Error(
2353
2368
  "The Build process failed because the project does not have a valid configuration in the project.json file. Check if the file exists in the root of the project."
2354
2369
  );
@@ -2646,7 +2661,7 @@ async function executeTsup(context) {
2646
2661
 
2647
2662
  // ../esbuild/src/build.ts
2648
2663
  async function reportResults(context) {
2649
- if (_optionalChain([context, 'access', _118 => _118.result, 'optionalAccess', _119 => _119.errors, 'access', _120 => _120.length]) === 0) {
2664
+ if (_optionalChain([context, 'access', _119 => _119.result, 'optionalAccess', _120 => _120.errors, 'access', _121 => _121.length]) === 0) {
2650
2665
  if (context.result.warnings.length > 0) {
2651
2666
  writeWarning(
2652
2667
  ` \u{1F6A7} The following warnings occurred during the build: ${context.result.warnings.map((warning) => warning.text).join("\n")}`,
@@ -2657,7 +2672,7 @@ async function reportResults(context) {
2657
2672
  ` \u{1F4E6} The ${context.options.name} build completed successfully`,
2658
2673
  context.workspaceConfig
2659
2674
  );
2660
- } else if (_optionalChain([context, 'access', _121 => _121.result, 'optionalAccess', _122 => _122.errors]) && _optionalChain([context, 'access', _123 => _123.result, 'optionalAccess', _124 => _124.errors, 'access', _125 => _125.length]) > 0) {
2675
+ } else if (_optionalChain([context, 'access', _122 => _122.result, 'optionalAccess', _123 => _123.errors]) && _optionalChain([context, 'access', _124 => _124.result, 'optionalAccess', _125 => _125.errors, 'access', _126 => _126.length]) > 0) {
2661
2676
  writeError(
2662
2677
  ` \u274C The ${context.options.name} build failed with the following errors: ${context.result.errors.map((error) => error.text).join("\n")}`,
2663
2678
  context.workspaceConfig
@@ -2736,16 +2751,16 @@ async function build2(options) {
2736
2751
  // ../workspace-tools/src/executors/esbuild/executor.ts
2737
2752
  async function esbuildExecutorFn(options, context, config) {
2738
2753
  writeInfo("\u{1F4E6} Running Storm ESBuild executor on the workspace", config);
2739
- if (!_optionalChain([context, 'access', _126 => _126.projectsConfigurations, 'optionalAccess', _127 => _127.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName] || !_optionalChain([context, 'access', _128 => _128.projectsConfigurations, 'access', _129 => _129.projects, 'access', _130 => _130[context.projectName], 'optionalAccess', _131 => _131.root])) {
2754
+ if (!_optionalChain([context, 'access', _127 => _127.projectsConfigurations, 'optionalAccess', _128 => _128.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName] || !_optionalChain([context, 'access', _129 => _129.projectsConfigurations, 'access', _130 => _130.projects, 'access', _131 => _131[context.projectName], 'optionalAccess', _132 => _132.root])) {
2740
2755
  throw new Error(
2741
2756
  "The Build process failed because the context is not valid. Please run this command from a workspace."
2742
2757
  );
2743
2758
  }
2744
2759
  await build2({
2745
2760
  ...options,
2746
- projectRoot: _optionalChain([context, 'access', _132 => _132.projectsConfigurations, 'access', _133 => _133.projects, 'optionalAccess', _134 => _134[context.projectName], 'access', _135 => _135.root]),
2761
+ projectRoot: _optionalChain([context, 'access', _133 => _133.projectsConfigurations, 'access', _134 => _134.projects, 'optionalAccess', _135 => _135[context.projectName], 'access', _136 => _136.root]),
2747
2762
  name: context.projectName,
2748
- sourceRoot: _optionalChain([context, 'access', _136 => _136.projectsConfigurations, 'access', _137 => _137.projects, 'optionalAccess', _138 => _138[context.projectName], 'optionalAccess', _139 => _139.sourceRoot]),
2763
+ sourceRoot: _optionalChain([context, 'access', _137 => _137.projectsConfigurations, 'access', _138 => _138.projects, 'optionalAccess', _139 => _139[context.projectName], 'optionalAccess', _140 => _140.sourceRoot]),
2749
2764
  format: options.format,
2750
2765
  platform: options.format
2751
2766
  });
@@ -2870,15 +2885,15 @@ var _esbuildwhy = require('@size-limit/esbuild-why'); var _esbuildwhy2 = _intero
2870
2885
  var _file = require('@size-limit/file'); var _file2 = _interopRequireDefault(_file);
2871
2886
  var _sizelimit = require('size-limit'); var _sizelimit2 = _interopRequireDefault(_sizelimit);
2872
2887
  async function sizeLimitExecutorFn(options, context, config) {
2873
- if (!_optionalChain([context, 'optionalAccess', _140 => _140.projectName]) || !_optionalChain([context, 'access', _141 => _141.projectsConfigurations, 'optionalAccess', _142 => _142.projects]) || !context.projectsConfigurations.projects[context.projectName]) {
2888
+ if (!_optionalChain([context, 'optionalAccess', _141 => _141.projectName]) || !_optionalChain([context, 'access', _142 => _142.projectsConfigurations, 'optionalAccess', _143 => _143.projects]) || !context.projectsConfigurations.projects[context.projectName]) {
2874
2889
  throw new Error(
2875
2890
  "The Size-Limit process failed because the context is not valid. Please run this command from a workspace."
2876
2891
  );
2877
2892
  }
2878
2893
  writeInfo(`\u{1F4CF} Running Size-Limit on ${context.projectName}`, config);
2879
2894
  _sizelimit2.default.call(void 0, [_file2.default, _esbuild3.default, _esbuildwhy2.default], {
2880
- checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context, 'access', _143 => _143.projectsConfigurations, 'access', _144 => _144.projects, 'access', _145 => _145[context.projectName], 'optionalAccess', _146 => _146.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0,
2881
- _nullishCoalesce(_optionalChain([context, 'access', _147 => _147.projectsConfigurations, 'access', _148 => _148.projects, 'access', _149 => _149[context.projectName], 'optionalAccess', _150 => _150.root]), () => ( "./")),
2895
+ checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context, 'access', _144 => _144.projectsConfigurations, 'access', _145 => _145.projects, 'access', _146 => _146[context.projectName], 'optionalAccess', _147 => _147.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0,
2896
+ _nullishCoalesce(_optionalChain([context, 'access', _148 => _148.projectsConfigurations, 'access', _149 => _149.projects, 'access', _150 => _150[context.projectName], 'optionalAccess', _151 => _151.root]), () => ( "./")),
2882
2897
  "src"
2883
2898
  )))
2884
2899
  }).then((result) => {
@@ -2950,7 +2965,7 @@ _chunkMWIFWHR4js.init_cjs_shims.call(void 0, );
2950
2965
  var _jiti = require('jiti');
2951
2966
  async function unbuildExecutorFn(options, context, config) {
2952
2967
  writeInfo("\u{1F4E6} Running Storm Unbuild executor on the workspace", config);
2953
- if (!_optionalChain([context, 'access', _151 => _151.projectsConfigurations, 'optionalAccess', _152 => _152.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
2968
+ if (!_optionalChain([context, 'access', _152 => _152.projectsConfigurations, 'optionalAccess', _153 => _153.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
2954
2969
  throw new Error(
2955
2970
  "The Build process failed because the context is not valid. Please run this command from a workspace root directory."
2956
2971
  );
@@ -3069,7 +3084,7 @@ var withRunGenerator = (name, generatorFn, generatorOptions = {
3069
3084
  );
3070
3085
  config = await getConfig(workspaceRoot3);
3071
3086
  }
3072
- if (_optionalChain([generatorOptions, 'optionalAccess', _153 => _153.hooks, 'optionalAccess', _154 => _154.applyDefaultOptions])) {
3087
+ if (_optionalChain([generatorOptions, 'optionalAccess', _154 => _154.hooks, 'optionalAccess', _155 => _155.applyDefaultOptions])) {
3073
3088
  writeDebug("Running the applyDefaultOptions hook...", config);
3074
3089
  options = await Promise.resolve(
3075
3090
  generatorOptions.hooks.applyDefaultOptions(options, config)
@@ -3086,7 +3101,7 @@ ${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${
3086
3101
  { workspaceRoot: tree.root, config },
3087
3102
  applyWorkspaceBaseTokens
3088
3103
  );
3089
- if (_optionalChain([generatorOptions, 'optionalAccess', _155 => _155.hooks, 'optionalAccess', _156 => _156.preProcess])) {
3104
+ if (_optionalChain([generatorOptions, 'optionalAccess', _156 => _156.hooks, 'optionalAccess', _157 => _157.preProcess])) {
3090
3105
  writeDebug("Running the preProcess hook...", config);
3091
3106
  await Promise.resolve(
3092
3107
  generatorOptions.hooks.preProcess(tokenized, config)
@@ -3097,15 +3112,15 @@ ${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${
3097
3112
  generatorFn(tree, tokenized, config)
3098
3113
  );
3099
3114
  if (result) {
3100
- if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _157 => _157.error, 'optionalAccess', _158 => _158.message]) && typeof _optionalChain([result, 'optionalAccess', _159 => _159.error, 'optionalAccess', _160 => _160.message]) === "string" && _optionalChain([result, 'optionalAccess', _161 => _161.error, 'optionalAccess', _162 => _162.name]) && typeof _optionalChain([result, 'optionalAccess', _163 => _163.error, 'optionalAccess', _164 => _164.name]) === "string") {
3115
+ if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _158 => _158.error, 'optionalAccess', _159 => _159.message]) && typeof _optionalChain([result, 'optionalAccess', _160 => _160.error, 'optionalAccess', _161 => _161.message]) === "string" && _optionalChain([result, 'optionalAccess', _162 => _162.error, 'optionalAccess', _163 => _163.name]) && typeof _optionalChain([result, 'optionalAccess', _164 => _164.error, 'optionalAccess', _165 => _165.name]) === "string") {
3101
3116
  throw new Error(`The ${name} generator failed to run`, {
3102
- cause: _optionalChain([result, 'optionalAccess', _165 => _165.error])
3117
+ cause: _optionalChain([result, 'optionalAccess', _166 => _166.error])
3103
3118
  });
3104
3119
  } else if (result.success && result.data) {
3105
3120
  return result;
3106
3121
  }
3107
3122
  }
3108
- if (_optionalChain([generatorOptions, 'optionalAccess', _166 => _166.hooks, 'optionalAccess', _167 => _167.postProcess])) {
3123
+ if (_optionalChain([generatorOptions, 'optionalAccess', _167 => _167.hooks, 'optionalAccess', _168 => _168.postProcess])) {
3109
3124
  writeDebug("Running the postProcess hook...", config);
3110
3125
  await Promise.resolve(generatorOptions.hooks.postProcess(config));
3111
3126
  writeDebug("Completed the postProcess hook", config);
@@ -3239,15 +3254,15 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3239
3254
  _devkit.addProjectConfiguration.call(void 0, tree, normalized.name, projectConfig);
3240
3255
  let repository = {
3241
3256
  type: "github",
3242
- url: _optionalChain([config, 'optionalAccess', _168 => _168.repository]) || `https://github.com/${(typeof _optionalChain([config, 'optionalAccess', _169 => _169.organization]) === "string" ? _optionalChain([config, 'optionalAccess', _170 => _170.organization]) : _optionalChain([config, 'optionalAccess', _171 => _171.organization, 'optionalAccess', _172 => _172.name])) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _173 => _173.namespace]) || _optionalChain([config, 'optionalAccess', _174 => _174.name]) || "repository"}.git`
3257
+ url: _optionalChain([config, 'optionalAccess', _169 => _169.repository]) || `https://github.com/${(typeof _optionalChain([config, 'optionalAccess', _170 => _170.organization]) === "string" ? _optionalChain([config, 'optionalAccess', _171 => _171.organization]) : _optionalChain([config, 'optionalAccess', _172 => _172.organization, 'optionalAccess', _173 => _173.name])) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _174 => _174.namespace]) || _optionalChain([config, 'optionalAccess', _175 => _175.name]) || "repository"}.git`
3243
3258
  };
3244
3259
  let description = options.description || "A package developed by Storm Software used to create modern, scalable web applications.";
3245
3260
  if (tree.exists("package.json")) {
3246
3261
  const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
3247
- if (_optionalChain([packageJson, 'optionalAccess', _175 => _175.repository])) {
3262
+ if (_optionalChain([packageJson, 'optionalAccess', _176 => _176.repository])) {
3248
3263
  repository = packageJson.repository;
3249
3264
  }
3250
- if (_optionalChain([packageJson, 'optionalAccess', _176 => _176.description])) {
3265
+ if (_optionalChain([packageJson, 'optionalAccess', _177 => _177.description])) {
3251
3266
  description = packageJson.description;
3252
3267
  }
3253
3268
  }
@@ -3302,9 +3317,9 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3302
3317
  _devkit.updateJson.call(void 0, tree, "package.json", (json) => ({
3303
3318
  ...json,
3304
3319
  pnpm: {
3305
- ..._optionalChain([json, 'optionalAccess', _177 => _177.pnpm]),
3320
+ ..._optionalChain([json, 'optionalAccess', _178 => _178.pnpm]),
3306
3321
  overrides: {
3307
- ..._optionalChain([json, 'optionalAccess', _178 => _178.pnpm, 'optionalAccess', _179 => _179.overrides]),
3322
+ ..._optionalChain([json, 'optionalAccess', _179 => _179.pnpm, 'optionalAccess', _180 => _180.overrides]),
3308
3323
  [_nullishCoalesce(normalized.importPath, () => ( ""))]: "workspace:*"
3309
3324
  }
3310
3325
  }
@@ -3322,10 +3337,10 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3322
3337
  ]);
3323
3338
  if (tree.exists("package.json")) {
3324
3339
  const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
3325
- if (_optionalChain([packageJson, 'optionalAccess', _180 => _180.repository])) {
3340
+ if (_optionalChain([packageJson, 'optionalAccess', _181 => _181.repository])) {
3326
3341
  repository = packageJson.repository;
3327
3342
  }
3328
- if (_optionalChain([packageJson, 'optionalAccess', _181 => _181.description])) {
3343
+ if (_optionalChain([packageJson, 'optionalAccess', _182 => _182.description])) {
3329
3344
  description = packageJson.description;
3330
3345
  }
3331
3346
  }
@@ -3362,22 +3377,22 @@ function getOutputPath(options) {
3362
3377
  function createProjectTsConfigJson(tree, options) {
3363
3378
  const tsconfig = {
3364
3379
  extends: options.rootProject ? void 0 : _js.getRelativePathToRootTsConfig.call(void 0, tree, options.projectRoot),
3365
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _182 => _182.tsconfigOptions]), () => ( {})),
3380
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _183 => _183.tsconfigOptions]), () => ( {})),
3366
3381
  compilerOptions: {
3367
3382
  ...options.rootProject ? _js.tsConfigBaseOptions : {},
3368
3383
  outDir: _chunkLP4I3FEYjs.joinPaths.call(void 0, _devkit.offsetFromRoot.call(void 0, options.projectRoot), "dist/out-tsc"),
3369
3384
  noEmit: true,
3370
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _183 => _183.tsconfigOptions, 'optionalAccess', _184 => _184.compilerOptions]), () => ( {}))
3385
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _184 => _184.tsconfigOptions, 'optionalAccess', _185 => _185.compilerOptions]), () => ( {}))
3371
3386
  },
3372
- files: [..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _185 => _185.tsconfigOptions, 'optionalAccess', _186 => _186.files]), () => ( []))],
3387
+ files: [..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _186 => _186.tsconfigOptions, 'optionalAccess', _187 => _187.files]), () => ( []))],
3373
3388
  include: [
3374
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _187 => _187.tsconfigOptions, 'optionalAccess', _188 => _188.include]), () => ( [])),
3389
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _188 => _188.tsconfigOptions, 'optionalAccess', _189 => _189.include]), () => ( [])),
3375
3390
  "src/**/*.ts",
3376
3391
  "src/**/*.js",
3377
3392
  "bin/**/*"
3378
3393
  ],
3379
3394
  exclude: [
3380
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _189 => _189.tsconfigOptions, 'optionalAccess', _190 => _190.exclude]), () => ( [])),
3395
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _190 => _190.tsconfigOptions, 'optionalAccess', _191 => _191.exclude]), () => ( [])),
3381
3396
  "jest.config.ts",
3382
3397
  "src/**/*.spec.ts",
3383
3398
  "src/**/*.test.ts"
@@ -3387,8 +3402,8 @@ function createProjectTsConfigJson(tree, options) {
3387
3402
  }
3388
3403
  async function normalizeOptions(tree, options, config) {
3389
3404
  let importPath = options.importPath;
3390
- if (!importPath && _optionalChain([config, 'optionalAccess', _191 => _191.namespace])) {
3391
- importPath = `@${_optionalChain([config, 'optionalAccess', _192 => _192.namespace])}/${options.name}`;
3405
+ if (!importPath && _optionalChain([config, 'optionalAccess', _192 => _192.namespace])) {
3406
+ importPath = `@${_optionalChain([config, 'optionalAccess', _193 => _193.namespace])}/${options.name}`;
3392
3407
  }
3393
3408
  if (options.publishable) {
3394
3409
  if (!importPath) {
@@ -3553,7 +3568,7 @@ async function configSchemaGeneratorFn(tree, options, config) {
3553
3568
  );
3554
3569
  }
3555
3570
  const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(
3556
- _nullishCoalesce(_optionalChain([config, 'optionalAccess', _193 => _193.workspaceRoot]), () => ( findWorkspaceRoot())),
3571
+ _nullishCoalesce(_optionalChain([config, 'optionalAccess', _194 => _194.workspaceRoot]), () => ( findWorkspaceRoot())),
3557
3572
  options.outputFile.startsWith("./") ? "" : "./"
3558
3573
  );
3559
3574
  writeTrace(
@@ -75,7 +75,6 @@ var STORM_DEFAULT_HOMEPAGE = "https://stormsoftware.com";
75
75
  var STORM_DEFAULT_CONTACT = "https://stormsoftware.com/contact";
76
76
  var STORM_DEFAULT_LICENSING = "https://stormsoftware.com/license";
77
77
  var STORM_DEFAULT_LICENSE = "Apache-2.0";
78
- var STORM_DEFAULT_RELEASE_BANNER = "https://public.storm-cdn.com/brand-banner.png";
79
78
  var STORM_DEFAULT_SOCIAL_TWITTER = "StormSoftwareHQ";
80
79
  var STORM_DEFAULT_SOCIAL_DISCORD = "https://discord.gg/MQ6YVzakM5";
81
80
  var STORM_DEFAULT_SOCIAL_TELEGRAM = "https://t.me/storm_software";
@@ -195,13 +194,13 @@ var WorkspaceBotConfigSchema = z.object({
195
194
  "The workspace's bot user's config used to automated various operations tasks"
196
195
  );
197
196
  var WorkspaceReleaseConfigSchema = z.object({
198
- banner: z.string().trim().default(STORM_DEFAULT_RELEASE_BANNER).describe(
197
+ banner: z.string().trim().optional().describe(
199
198
  "A URL to a banner image used to display the workspace's release"
200
199
  ),
201
200
  header: z.string().trim().optional().describe(
202
201
  "A header message appended to the start of the workspace's release notes"
203
202
  ),
204
- footer: z.string().trim().default(STORM_DEFAULT_RELEASE_FOOTER).describe(
203
+ footer: z.string().trim().optional().describe(
205
204
  "A footer message appended to the end of the workspace's release notes"
206
205
  )
207
206
  }).describe("The workspace's release config used during the release process");
@@ -1495,12 +1494,28 @@ var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot3, s
1495
1494
  }
1496
1495
  }
1497
1496
  const defaultConfig = await getPackageJsonConfig(_workspaceRoot);
1498
- result = applyDefaultConfig(
1499
- await stormWorkspaceConfigSchema.parseAsync(
1500
- defu2(configEnv, configFile, defaultConfig)
1501
- )
1497
+ const configInput = defu2(
1498
+ configEnv,
1499
+ configFile,
1500
+ defaultConfig
1502
1501
  );
1503
- result.workspaceRoot ??= _workspaceRoot;
1502
+ try {
1503
+ result = applyDefaultConfig(
1504
+ await stormWorkspaceConfigSchema.parseAsync(configInput)
1505
+ );
1506
+ result.workspaceRoot ??= _workspaceRoot;
1507
+ } catch (error) {
1508
+ throw new Error(
1509
+ `Failed to parse Storm Workspace configuration${error?.message ? `: ${error.message}` : ""}
1510
+
1511
+ Please ensure your configuration file is valid JSON and matches the expected schema. The current workspace configuration input is: ${formatLogMessage(
1512
+ configInput
1513
+ )}`,
1514
+ {
1515
+ cause: error
1516
+ }
1517
+ );
1518
+ }
1504
1519
  } else {
1505
1520
  result = _static_cache.data;
1506
1521
  }
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-3MCIDYYV.js');
2
2
 
3
3
 
4
- var _chunkCRNDD7VZjs = require('./chunk-CRNDD7VZ.js');
4
+ var _chunkSD5X3BL2js = require('./chunk-SD5X3BL2.js');
5
5
  require('./chunk-LP4I3FEY.js');
6
6
  require('./chunk-MWIFWHR4.js');
7
7
 
8
8
 
9
- exports.initGeneratorFn = _chunkCRNDD7VZjs.initGeneratorFn;
9
+ exports.initGeneratorFn = _chunkSD5X3BL2js.initGeneratorFn;
@@ -1,7 +1,7 @@
1
1
  import "./chunk-5UXDEQBC.mjs";
2
2
  import {
3
3
  initGeneratorFn
4
- } from "./chunk-U3ZJDZBV.mjs";
4
+ } from "./chunk-XU2WXX6A.mjs";
5
5
  import "./chunk-IYQFGVQK.mjs";
6
6
  import "./chunk-ULH77QLV.mjs";
7
7
  export {
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  var _chunkKFR27Y3Kjs = require('./chunk-KFR27Y3K.js');
5
5
 
6
6
 
7
- var _chunkCRNDD7VZjs = require('./chunk-CRNDD7VZ.js');
7
+ var _chunkSD5X3BL2js = require('./chunk-SD5X3BL2.js');
8
8
  require('./chunk-LP4I3FEY.js');
9
9
 
10
10
 
@@ -16,10 +16,10 @@ var _chunkMWIFWHR4js = require('./chunk-MWIFWHR4.js');
16
16
  // index.ts
17
17
  var index_exports = {};
18
18
  _chunkMWIFWHR4js.__export.call(void 0, index_exports, {
19
- initGeneratorFn: () => _chunkCRNDD7VZjs.initGeneratorFn
19
+ initGeneratorFn: () => _chunkSD5X3BL2js.initGeneratorFn
20
20
  });
21
21
  _chunkMWIFWHR4js.init_cjs_shims.call(void 0, );
22
22
  _chunkMWIFWHR4js.__reExport.call(void 0, index_exports, _chunkMWIFWHR4js.__toESM.call(void 0, _chunkKFR27Y3Kjs.require_components.call(void 0, )));
23
23
 
24
24
 
25
- exports.initGeneratorFn = _chunkCRNDD7VZjs.initGeneratorFn;
25
+ exports.initGeneratorFn = _chunkSD5X3BL2js.initGeneratorFn;
package/dist/index.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-PQKN2KBC.mjs";
5
5
  import {
6
6
  initGeneratorFn
7
- } from "./chunk-U3ZJDZBV.mjs";
7
+ } from "./chunk-XU2WXX6A.mjs";
8
8
  import "./chunk-IYQFGVQK.mjs";
9
9
  import {
10
10
  __export,
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkCRNDD7VZjs = require('../../../chunk-CRNDD7VZ.js');
4
+ var _chunkSD5X3BL2js = require('../../../chunk-SD5X3BL2.js');
5
5
  require('../../../chunk-LP4I3FEY.js');
6
6
  require('../../../chunk-MWIFWHR4.js');
7
7
 
8
8
 
9
9
 
10
- exports.default = _chunkCRNDD7VZjs.generator_default; exports.initGeneratorFn = _chunkCRNDD7VZjs.initGeneratorFn;
10
+ exports.default = _chunkSD5X3BL2js.generator_default; exports.initGeneratorFn = _chunkSD5X3BL2js.initGeneratorFn;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generator_default,
3
3
  initGeneratorFn
4
- } from "../../../chunk-U3ZJDZBV.mjs";
4
+ } from "../../../chunk-XU2WXX6A.mjs";
5
5
  import "../../../chunk-IYQFGVQK.mjs";
6
6
  import "../../../chunk-ULH77QLV.mjs";
7
7
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storm-software/projen",
3
- "version": "0.15.38",
3
+ "version": "0.15.40",
4
4
  "type": "commonjs",
5
5
  "description": "Tools for managing Projen configuration automation within a Nx workspace.",
6
6
  "repository": {
@@ -142,5 +142,5 @@
142
142
  "publishConfig": { "access": "public" },
143
143
  "executors": "./executors.json",
144
144
  "generators": "./generators.json",
145
- "gitHead": "dbe7708d23dd5fd8289baed4045d6580b4067496"
145
+ "gitHead": "a8ed9927e278fdcef751286a496cea6a4727208a"
146
146
  }