@storm-software/projen 0.15.14 → 0.15.16

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,18 @@
2
2
 
3
3
  # Changelog for Storm Ops - Projen
4
4
 
5
+ ## [0.15.15](https://github.com/storm-software/storm-ops/releases/tag/projen%400.15.15) (2025-06-05)
6
+
7
+ ### Miscellaneous
8
+
9
+ - **monorepo:** Regenerate README markdown files
10
+
11
+ ## [0.15.14](https://github.com/storm-software/storm-ops/releases/tag/projen%400.15.14) (2025-06-05)
12
+
13
+ ### Miscellaneous
14
+
15
+ - **monorepo:** Update workspace packages and README markdown
16
+
5
17
  ## [0.15.13](https://github.com/storm-software/storm-ops/releases/tag/projen%400.15.13) (2025-05-29)
6
18
 
7
19
  ### 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.13-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.15-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 -->
@@ -2199,9 +2199,9 @@ var _createtaskgraph = require('nx/src/tasks-runner/create-task-graph');
2199
2199
 
2200
2200
  // ../esbuild/src/assets.ts
2201
2201
  async function copyBuildAssets(context) {
2202
- if (_optionalChain([context, 'access', _110 => _110.result, 'optionalAccess', _111 => _111.errors, 'access', _112 => _112.length]) === 0) {
2202
+ 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])) {
2203
2203
  writeDebug(
2204
- ` \u{1F4CB} Copying asset files to output directory: ${context.outputPath}`,
2204
+ ` \u{1F4CB} Copying ${context.options.assets.length} asset files to output directory: ${context.outputPath}`,
2205
2205
  context.workspaceConfig
2206
2206
  );
2207
2207
  const stopwatch = getStopwatch(`${context.options.name} asset copy`);
@@ -2240,7 +2240,6 @@ var _findworkspaceroot = require('nx/src/utils/find-workspace-root');
2240
2240
  // ../esbuild/src/config.ts
2241
2241
  _chunk3XVCD6PXjs.init_cjs_shims.call(void 0, );
2242
2242
  var DEFAULT_BUILD_OPTIONS = {
2243
- assets: [],
2244
2243
  platform: "node",
2245
2244
  target: "node22",
2246
2245
  format: "esm",
@@ -2310,7 +2309,7 @@ async function resolveContext(userOptions) {
2310
2309
  const projectJson = JSON.parse(projectJsonFile);
2311
2310
  const projectName = projectJson.name || userOptions.name;
2312
2311
  const projectConfigurations = _devkit.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
2313
- if (!_optionalChain([projectConfigurations, 'optionalAccess', _113 => _113.projects, 'optionalAccess', _114 => _114[projectName]])) {
2312
+ if (!_optionalChain([projectConfigurations, 'optionalAccess', _116 => _116.projects, 'optionalAccess', _117 => _117[projectName]])) {
2314
2313
  throw new Error(
2315
2314
  "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."
2316
2315
  );
@@ -2608,7 +2607,7 @@ async function executeTsup(context) {
2608
2607
 
2609
2608
  // ../esbuild/src/build.ts
2610
2609
  async function reportResults(context) {
2611
- if (_optionalChain([context, 'access', _115 => _115.result, 'optionalAccess', _116 => _116.errors, 'access', _117 => _117.length]) === 0) {
2610
+ if (_optionalChain([context, 'access', _118 => _118.result, 'optionalAccess', _119 => _119.errors, 'access', _120 => _120.length]) === 0) {
2612
2611
  if (context.result.warnings.length > 0) {
2613
2612
  writeWarning(
2614
2613
  ` \u{1F6A7} The following warnings occurred during the build: ${context.result.warnings.map((warning) => warning.text).join("\n")}`,
@@ -2619,7 +2618,7 @@ async function reportResults(context) {
2619
2618
  ` \u{1F4E6} The ${context.options.name} build completed successfully`,
2620
2619
  context.workspaceConfig
2621
2620
  );
2622
- } else if (_optionalChain([context, 'access', _118 => _118.result, 'optionalAccess', _119 => _119.errors]) && _optionalChain([context, 'access', _120 => _120.result, 'optionalAccess', _121 => _121.errors, 'access', _122 => _122.length]) > 0) {
2621
+ } 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) {
2623
2622
  writeError(
2624
2623
  ` \u274C The ${context.options.name} build failed with the following errors: ${context.result.errors.map((error) => error.text).join("\n")}`,
2625
2624
  context.workspaceConfig
@@ -2698,16 +2697,16 @@ async function build2(options) {
2698
2697
  // ../workspace-tools/src/executors/esbuild/executor.ts
2699
2698
  async function esbuildExecutorFn(options, context, config) {
2700
2699
  writeInfo("\u{1F4E6} Running Storm ESBuild executor on the workspace", config);
2701
- if (!_optionalChain([context, 'access', _123 => _123.projectsConfigurations, 'optionalAccess', _124 => _124.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName] || !_optionalChain([context, 'access', _125 => _125.projectsConfigurations, 'access', _126 => _126.projects, 'access', _127 => _127[context.projectName], 'optionalAccess', _128 => _128.root])) {
2700
+ 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])) {
2702
2701
  throw new Error(
2703
2702
  "The Build process failed because the context is not valid. Please run this command from a workspace."
2704
2703
  );
2705
2704
  }
2706
2705
  await build2({
2707
2706
  ...options,
2708
- projectRoot: _optionalChain([context, 'access', _129 => _129.projectsConfigurations, 'access', _130 => _130.projects, 'optionalAccess', _131 => _131[context.projectName], 'access', _132 => _132.root]),
2707
+ projectRoot: _optionalChain([context, 'access', _132 => _132.projectsConfigurations, 'access', _133 => _133.projects, 'optionalAccess', _134 => _134[context.projectName], 'access', _135 => _135.root]),
2709
2708
  name: context.projectName,
2710
- sourceRoot: _optionalChain([context, 'access', _133 => _133.projectsConfigurations, 'access', _134 => _134.projects, 'optionalAccess', _135 => _135[context.projectName], 'optionalAccess', _136 => _136.sourceRoot]),
2709
+ sourceRoot: _optionalChain([context, 'access', _136 => _136.projectsConfigurations, 'access', _137 => _137.projects, 'optionalAccess', _138 => _138[context.projectName], 'optionalAccess', _139 => _139.sourceRoot]),
2711
2710
  format: options.format,
2712
2711
  platform: options.format
2713
2712
  });
@@ -2759,15 +2758,15 @@ var _esbuildwhy = require('@size-limit/esbuild-why'); var _esbuildwhy2 = _intero
2759
2758
  var _file = require('@size-limit/file'); var _file2 = _interopRequireDefault(_file);
2760
2759
  var _sizelimit = require('size-limit'); var _sizelimit2 = _interopRequireDefault(_sizelimit);
2761
2760
  async function sizeLimitExecutorFn(options, context, config) {
2762
- if (!_optionalChain([context, 'optionalAccess', _137 => _137.projectName]) || !_optionalChain([context, 'access', _138 => _138.projectsConfigurations, 'optionalAccess', _139 => _139.projects]) || !context.projectsConfigurations.projects[context.projectName]) {
2761
+ if (!_optionalChain([context, 'optionalAccess', _140 => _140.projectName]) || !_optionalChain([context, 'access', _141 => _141.projectsConfigurations, 'optionalAccess', _142 => _142.projects]) || !context.projectsConfigurations.projects[context.projectName]) {
2763
2762
  throw new Error(
2764
2763
  "The Size-Limit process failed because the context is not valid. Please run this command from a workspace."
2765
2764
  );
2766
2765
  }
2767
2766
  writeInfo(`\u{1F4CF} Running Size-Limit on ${context.projectName}`, config);
2768
2767
  _sizelimit2.default.call(void 0, [_file2.default, _esbuild3.default, _esbuildwhy2.default], {
2769
- checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context, 'access', _140 => _140.projectsConfigurations, 'access', _141 => _141.projects, 'access', _142 => _142[context.projectName], 'optionalAccess', _143 => _143.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0,
2770
- _nullishCoalesce(_optionalChain([context, 'access', _144 => _144.projectsConfigurations, 'access', _145 => _145.projects, 'access', _146 => _146[context.projectName], 'optionalAccess', _147 => _147.root]), () => ( "./")),
2768
+ 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,
2769
+ _nullishCoalesce(_optionalChain([context, 'access', _147 => _147.projectsConfigurations, 'access', _148 => _148.projects, 'access', _149 => _149[context.projectName], 'optionalAccess', _150 => _150.root]), () => ( "./")),
2771
2770
  "src"
2772
2771
  )))
2773
2772
  }).then((result) => {
@@ -2839,7 +2838,7 @@ _chunk3XVCD6PXjs.init_cjs_shims.call(void 0, );
2839
2838
  var _jiti = require('jiti');
2840
2839
  async function unbuildExecutorFn(options, context, config) {
2841
2840
  writeInfo("\u{1F4E6} Running Storm Unbuild executor on the workspace", config);
2842
- if (!_optionalChain([context, 'access', _148 => _148.projectsConfigurations, 'optionalAccess', _149 => _149.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
2841
+ if (!_optionalChain([context, 'access', _151 => _151.projectsConfigurations, 'optionalAccess', _152 => _152.projects]) || !context.projectName || !context.projectsConfigurations.projects[context.projectName]) {
2843
2842
  throw new Error(
2844
2843
  "The Build process failed because the context is not valid. Please run this command from a workspace root directory."
2845
2844
  );
@@ -2958,7 +2957,7 @@ var withRunGenerator = (name, generatorFn, generatorOptions = {
2958
2957
  );
2959
2958
  config = await getConfig(workspaceRoot3);
2960
2959
  }
2961
- if (_optionalChain([generatorOptions, 'optionalAccess', _150 => _150.hooks, 'optionalAccess', _151 => _151.applyDefaultOptions])) {
2960
+ if (_optionalChain([generatorOptions, 'optionalAccess', _153 => _153.hooks, 'optionalAccess', _154 => _154.applyDefaultOptions])) {
2962
2961
  writeDebug("Running the applyDefaultOptions hook...", config);
2963
2962
  options = await Promise.resolve(
2964
2963
  generatorOptions.hooks.applyDefaultOptions(options, config)
@@ -2975,7 +2974,7 @@ ${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${
2975
2974
  { workspaceRoot: tree.root, config },
2976
2975
  applyWorkspaceBaseTokens
2977
2976
  );
2978
- if (_optionalChain([generatorOptions, 'optionalAccess', _152 => _152.hooks, 'optionalAccess', _153 => _153.preProcess])) {
2977
+ if (_optionalChain([generatorOptions, 'optionalAccess', _155 => _155.hooks, 'optionalAccess', _156 => _156.preProcess])) {
2979
2978
  writeDebug("Running the preProcess hook...", config);
2980
2979
  await Promise.resolve(
2981
2980
  generatorOptions.hooks.preProcess(tokenized, config)
@@ -2986,15 +2985,15 @@ ${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${
2986
2985
  generatorFn(tree, tokenized, config)
2987
2986
  );
2988
2987
  if (result) {
2989
- if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _154 => _154.error, 'optionalAccess', _155 => _155.message]) && typeof _optionalChain([result, 'optionalAccess', _156 => _156.error, 'optionalAccess', _157 => _157.message]) === "string" && _optionalChain([result, 'optionalAccess', _158 => _158.error, 'optionalAccess', _159 => _159.name]) && typeof _optionalChain([result, 'optionalAccess', _160 => _160.error, 'optionalAccess', _161 => _161.name]) === "string") {
2988
+ 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") {
2990
2989
  throw new Error(`The ${name} generator failed to run`, {
2991
- cause: _optionalChain([result, 'optionalAccess', _162 => _162.error])
2990
+ cause: _optionalChain([result, 'optionalAccess', _165 => _165.error])
2992
2991
  });
2993
2992
  } else if (result.success && result.data) {
2994
2993
  return result;
2995
2994
  }
2996
2995
  }
2997
- if (_optionalChain([generatorOptions, 'optionalAccess', _163 => _163.hooks, 'optionalAccess', _164 => _164.postProcess])) {
2996
+ if (_optionalChain([generatorOptions, 'optionalAccess', _166 => _166.hooks, 'optionalAccess', _167 => _167.postProcess])) {
2998
2997
  writeDebug("Running the postProcess hook...", config);
2999
2998
  await Promise.resolve(generatorOptions.hooks.postProcess(config));
3000
2999
  writeDebug("Completed the postProcess hook", config);
@@ -3189,15 +3188,15 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3189
3188
  _devkit.addProjectConfiguration.call(void 0, tree, normalized.name, projectConfig);
3190
3189
  let repository = {
3191
3190
  type: "github",
3192
- url: _optionalChain([config, 'optionalAccess', _165 => _165.repository]) || `https://github.com/${_optionalChain([config, 'optionalAccess', _166 => _166.organization]) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _167 => _167.namespace]) || _optionalChain([config, 'optionalAccess', _168 => _168.name]) || "repository"}.git`
3191
+ url: _optionalChain([config, 'optionalAccess', _168 => _168.repository]) || `https://github.com/${_optionalChain([config, 'optionalAccess', _169 => _169.organization]) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _170 => _170.namespace]) || _optionalChain([config, 'optionalAccess', _171 => _171.name]) || "repository"}.git`
3193
3192
  };
3194
3193
  let description = options.description || "A package developed by Storm Software used to create modern, scalable web applications.";
3195
3194
  if (tree.exists("package.json")) {
3196
3195
  const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
3197
- if (_optionalChain([packageJson, 'optionalAccess', _169 => _169.repository])) {
3196
+ if (_optionalChain([packageJson, 'optionalAccess', _172 => _172.repository])) {
3198
3197
  repository = packageJson.repository;
3199
3198
  }
3200
- if (_optionalChain([packageJson, 'optionalAccess', _170 => _170.description])) {
3199
+ if (_optionalChain([packageJson, 'optionalAccess', _173 => _173.description])) {
3201
3200
  description = packageJson.description;
3202
3201
  }
3203
3202
  }
@@ -3252,9 +3251,9 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3252
3251
  _devkit.updateJson.call(void 0, tree, "package.json", (json) => ({
3253
3252
  ...json,
3254
3253
  pnpm: {
3255
- ..._optionalChain([json, 'optionalAccess', _171 => _171.pnpm]),
3254
+ ..._optionalChain([json, 'optionalAccess', _174 => _174.pnpm]),
3256
3255
  overrides: {
3257
- ..._optionalChain([json, 'optionalAccess', _172 => _172.pnpm, 'optionalAccess', _173 => _173.overrides]),
3256
+ ..._optionalChain([json, 'optionalAccess', _175 => _175.pnpm, 'optionalAccess', _176 => _176.overrides]),
3258
3257
  [_nullishCoalesce(normalized.importPath, () => ( ""))]: "workspace:*"
3259
3258
  }
3260
3259
  }
@@ -3272,10 +3271,10 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3272
3271
  ]);
3273
3272
  if (tree.exists("package.json")) {
3274
3273
  const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
3275
- if (_optionalChain([packageJson, 'optionalAccess', _174 => _174.repository])) {
3274
+ if (_optionalChain([packageJson, 'optionalAccess', _177 => _177.repository])) {
3276
3275
  repository = packageJson.repository;
3277
3276
  }
3278
- if (_optionalChain([packageJson, 'optionalAccess', _175 => _175.description])) {
3277
+ if (_optionalChain([packageJson, 'optionalAccess', _178 => _178.description])) {
3279
3278
  description = packageJson.description;
3280
3279
  }
3281
3280
  }
@@ -3312,22 +3311,22 @@ function getOutputPath(options) {
3312
3311
  function createProjectTsConfigJson(tree, options) {
3313
3312
  const tsconfig = {
3314
3313
  extends: options.rootProject ? void 0 : _js.getRelativePathToRootTsConfig.call(void 0, tree, options.projectRoot),
3315
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _176 => _176.tsconfigOptions]), () => ( {})),
3314
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _179 => _179.tsconfigOptions]), () => ( {})),
3316
3315
  compilerOptions: {
3317
3316
  ...options.rootProject ? _js.tsConfigBaseOptions : {},
3318
3317
  outDir: _chunkEW6SOR65js.joinPaths.call(void 0, _devkit.offsetFromRoot.call(void 0, options.projectRoot), "dist/out-tsc"),
3319
3318
  noEmit: true,
3320
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _177 => _177.tsconfigOptions, 'optionalAccess', _178 => _178.compilerOptions]), () => ( {}))
3319
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _180 => _180.tsconfigOptions, 'optionalAccess', _181 => _181.compilerOptions]), () => ( {}))
3321
3320
  },
3322
- files: [..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _179 => _179.tsconfigOptions, 'optionalAccess', _180 => _180.files]), () => ( []))],
3321
+ files: [..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _182 => _182.tsconfigOptions, 'optionalAccess', _183 => _183.files]), () => ( []))],
3323
3322
  include: [
3324
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _181 => _181.tsconfigOptions, 'optionalAccess', _182 => _182.include]), () => ( [])),
3323
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _184 => _184.tsconfigOptions, 'optionalAccess', _185 => _185.include]), () => ( [])),
3325
3324
  "src/**/*.ts",
3326
3325
  "src/**/*.js",
3327
3326
  "bin/**/*"
3328
3327
  ],
3329
3328
  exclude: [
3330
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _183 => _183.tsconfigOptions, 'optionalAccess', _184 => _184.exclude]), () => ( [])),
3329
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _186 => _186.tsconfigOptions, 'optionalAccess', _187 => _187.exclude]), () => ( [])),
3331
3330
  "jest.config.ts",
3332
3331
  "src/**/*.spec.ts",
3333
3332
  "src/**/*.test.ts"
@@ -3337,8 +3336,8 @@ function createProjectTsConfigJson(tree, options) {
3337
3336
  }
3338
3337
  async function normalizeOptions(tree, options, config) {
3339
3338
  let importPath = options.importPath;
3340
- if (!importPath && _optionalChain([config, 'optionalAccess', _185 => _185.namespace])) {
3341
- importPath = `@${_optionalChain([config, 'optionalAccess', _186 => _186.namespace])}/${options.name}`;
3339
+ if (!importPath && _optionalChain([config, 'optionalAccess', _188 => _188.namespace])) {
3340
+ importPath = `@${_optionalChain([config, 'optionalAccess', _189 => _189.namespace])}/${options.name}`;
3342
3341
  }
3343
3342
  if (options.publishable) {
3344
3343
  if (!importPath) {
@@ -3495,8 +3494,8 @@ async function configSchemaGeneratorFn(tree, options, config) {
3495
3494
  });
3496
3495
  writeTrace(jsonSchema, config);
3497
3496
  const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(
3498
- _nullishCoalesce(_optionalChain([config, 'optionalAccess', _187 => _187.workspaceRoot]), () => ( findWorkspaceRoot())),
3499
- _optionalChain([options, 'access', _188 => _188.outputFile, 'optionalAccess', _189 => _189.startsWith, 'call', _190 => _190("./")]) ? "" : "./"
3497
+ _nullishCoalesce(_optionalChain([config, 'optionalAccess', _190 => _190.workspaceRoot]), () => ( findWorkspaceRoot())),
3498
+ _optionalChain([options, 'access', _191 => _191.outputFile, 'optionalAccess', _192 => _192.startsWith, 'call', _193 => _193("./")]) ? "" : "./"
3500
3499
  );
3501
3500
  writeTrace(
3502
3501
  `\u{1F4DD} Writing Storm Configuration JSON Schema to "${outputPath}"`,
@@ -2200,9 +2200,9 @@ import {
2200
2200
 
2201
2201
  // ../esbuild/src/assets.ts
2202
2202
  async function copyBuildAssets(context) {
2203
- if (context.result?.errors.length === 0) {
2203
+ if (!context.result?.errors.length && context.options.assets?.length) {
2204
2204
  writeDebug(
2205
- ` \u{1F4CB} Copying asset files to output directory: ${context.outputPath}`,
2205
+ ` \u{1F4CB} Copying ${context.options.assets.length} asset files to output directory: ${context.outputPath}`,
2206
2206
  context.workspaceConfig
2207
2207
  );
2208
2208
  const stopwatch = getStopwatch(`${context.options.name} asset copy`);
@@ -2241,7 +2241,6 @@ import { findWorkspaceRoot as findWorkspaceRoot2 } from "nx/src/utils/find-works
2241
2241
  // ../esbuild/src/config.ts
2242
2242
  init_esm_shims();
2243
2243
  var DEFAULT_BUILD_OPTIONS = {
2244
- assets: [],
2245
2244
  platform: "node",
2246
2245
  target: "node22",
2247
2246
  format: "esm",
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-HEQFBRVE.js');
2
2
 
3
3
 
4
- var _chunk5XQOM6EEjs = require('./chunk-5XQOM6EE.js');
4
+ var _chunkR3E5FDMCjs = require('./chunk-R3E5FDMC.js');
5
5
  require('./chunk-EW6SOR65.js');
6
6
  require('./chunk-3XVCD6PX.js');
7
7
 
8
8
 
9
- exports.initGeneratorFn = _chunk5XQOM6EEjs.initGeneratorFn;
9
+ exports.initGeneratorFn = _chunkR3E5FDMCjs.initGeneratorFn;
@@ -1,7 +1,7 @@
1
1
  import "./chunk-XM6I2VBY.mjs";
2
2
  import {
3
3
  initGeneratorFn
4
- } from "./chunk-3BB4FSYH.mjs";
4
+ } from "./chunk-SZFZP4BA.mjs";
5
5
  import "./chunk-3JMLZKJ6.mjs";
6
6
  import "./chunk-SAK3VUBP.mjs";
7
7
  export {
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  var _chunkMUTVIHVDjs = require('./chunk-MUTVIHVD.js');
5
5
 
6
6
 
7
- var _chunk5XQOM6EEjs = require('./chunk-5XQOM6EE.js');
7
+ var _chunkR3E5FDMCjs = require('./chunk-R3E5FDMC.js');
8
8
  require('./chunk-EW6SOR65.js');
9
9
 
10
10
 
@@ -16,10 +16,10 @@ var _chunk3XVCD6PXjs = require('./chunk-3XVCD6PX.js');
16
16
  // index.ts
17
17
  var index_exports = {};
18
18
  _chunk3XVCD6PXjs.__export.call(void 0, index_exports, {
19
- initGeneratorFn: () => _chunk5XQOM6EEjs.initGeneratorFn
19
+ initGeneratorFn: () => _chunkR3E5FDMCjs.initGeneratorFn
20
20
  });
21
21
  _chunk3XVCD6PXjs.init_cjs_shims.call(void 0, );
22
22
  _chunk3XVCD6PXjs.__reExport.call(void 0, index_exports, _chunk3XVCD6PXjs.__toESM.call(void 0, _chunkMUTVIHVDjs.require_components.call(void 0, )));
23
23
 
24
24
 
25
- exports.initGeneratorFn = _chunk5XQOM6EEjs.initGeneratorFn;
25
+ exports.initGeneratorFn = _chunkR3E5FDMCjs.initGeneratorFn;
package/dist/index.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-7VU4HV6B.mjs";
5
5
  import {
6
6
  initGeneratorFn
7
- } from "./chunk-3BB4FSYH.mjs";
7
+ } from "./chunk-SZFZP4BA.mjs";
8
8
  import "./chunk-3JMLZKJ6.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 _chunk5XQOM6EEjs = require('../../../chunk-5XQOM6EE.js');
4
+ var _chunkR3E5FDMCjs = require('../../../chunk-R3E5FDMC.js');
5
5
  require('../../../chunk-EW6SOR65.js');
6
6
  require('../../../chunk-3XVCD6PX.js');
7
7
 
8
8
 
9
9
 
10
- exports.default = _chunk5XQOM6EEjs.generator_default; exports.initGeneratorFn = _chunk5XQOM6EEjs.initGeneratorFn;
10
+ exports.default = _chunkR3E5FDMCjs.generator_default; exports.initGeneratorFn = _chunkR3E5FDMCjs.initGeneratorFn;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generator_default,
3
3
  initGeneratorFn
4
- } from "../../../chunk-3BB4FSYH.mjs";
4
+ } from "../../../chunk-SZFZP4BA.mjs";
5
5
  import "../../../chunk-3JMLZKJ6.mjs";
6
6
  import "../../../chunk-SAK3VUBP.mjs";
7
7
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storm-software/projen",
3
- "version": "0.15.14",
3
+ "version": "0.15.16",
4
4
  "type": "commonjs",
5
5
  "description": "Tools for managing Projen configuration automation within a Nx workspace.",
6
6
  "repository": {