@storm-software/projen 0.9.36 → 0.9.38

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.9.38](https://github.com/storm-software/storm-ops/releases/tag/projen%400.9.38) (2025-04-07)
6
+
7
+ ### Miscellaneous
8
+
9
+ - **monorepo:** Regenerate README markdown files
10
+ ([1ac4c6ad4](https://github.com/storm-software/storm-ops/commit/1ac4c6ad4))
11
+
12
+ ## [0.9.37](https://github.com/storm-software/storm-ops/releases/tag/projen%400.9.37) (2025-04-04)
13
+
14
+ ### Miscellaneous
15
+
16
+ - **monorepo:** Regenerate README markdown files
17
+ ([30c679ec1](https://github.com/storm-software/storm-ops/commit/30c679ec1))
18
+
5
19
  ## [0.9.36](https://github.com/storm-software/storm-ops/releases/tag/projen%400.9.36) (2025-04-02)
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.9.34-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.9.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)
25
25
 
26
26
  <!-- prettier-ignore-start -->
27
27
  <!-- markdownlint-disable -->
@@ -199,6 +199,10 @@ var WorkspaceDirectoryConfigSchema = _zod2.default.object({
199
199
  log: _zod2.default.string().trim().optional().describe("The directory used to store the environment's temp files"),
200
200
  build: _zod2.default.string().trim().default("dist").describe("The directory used to store the workspace's distributable files after a build (relative to the workspace root)")
201
201
  }).describe("Various directories used by the workspace to store data, cache, and configuration files");
202
+ var errorConfigSchema = _zod2.default.object({
203
+ codesFile: _zod2.default.string().trim().default(STORM_DEFAULT_RELEASE_BANNER).describe("The path to the workspace's error codes JSON file"),
204
+ url: _zod2.default.string().trim().url().optional().describe("A URL to a page that looks up the workspace's error messages given a specific error code")
205
+ }).describe("The workspace's error config used during the error process");
202
206
  var stormWorkspaceConfigSchema = _zod2.default.object({
203
207
  $schema: _zod2.default.string().trim().default("https://cdn.jsdelivr.net/npm/@storm-software/config/schemas/storm-workspace.schema.json").optional().nullish().describe("The URL to the JSON schema file that describes the Storm configuration file"),
204
208
  extends: ExtendsSchema.optional(),
@@ -217,6 +221,7 @@ var stormWorkspaceConfigSchema = _zod2.default.object({
217
221
  bot: WorkspaceBotConfigSchema,
218
222
  release: WorkspaceReleaseConfigSchema,
219
223
  account: WorkspaceAccountConfigSchema,
224
+ error: errorConfigSchema,
220
225
  mode: _zod2.default.enum([
221
226
  "development",
222
227
  "staging",
@@ -432,7 +437,10 @@ var getDefaultConfig = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, asyn
432
437
  license,
433
438
  homepage,
434
439
  docs: `${homepage || STORM_DEFAULT_HOMEPAGE}/docs`,
435
- licensing: `${homepage || STORM_DEFAULT_HOMEPAGE}/license`
440
+ licensing: `${homepage || STORM_DEFAULT_HOMEPAGE}/license`,
441
+ error: {
442
+ url: `${homepage || STORM_DEFAULT_HOMEPAGE}/errors`
443
+ }
436
444
  };
437
445
  }, "getDefaultConfig");
438
446
 
@@ -827,6 +835,10 @@ var getConfigEnv = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, () => {
827
835
  header: process.env[`${prefix}RELEASE_HEADER`] || void 0,
828
836
  footer: process.env[`${prefix}RELEASE_FOOTER`] || void 0
829
837
  },
838
+ error: {
839
+ codesFile: process.env[`${prefix}ERROR_CODES_FILE`] || void 0,
840
+ url: process.env[`${prefix}ERROR_URL`] || void 0
841
+ },
830
842
  account: {
831
843
  twitter: process.env[`${prefix}ACCOUNT_TWITTER`] || void 0,
832
844
  discord: process.env[`${prefix}ACCOUNT_DISCORD`] || void 0,
@@ -1001,6 +1013,10 @@ var setConfigEnv = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, (config)
1001
1013
  process.env[`${prefix}BOT_NAME`] = config.bot.name;
1002
1014
  process.env[`${prefix}BOT_EMAIL`] = config.bot.email;
1003
1015
  }
1016
+ if (config.error) {
1017
+ process.env[`${prefix}ERROR_CODES_FILE`] = config.error.codesFile;
1018
+ process.env[`${prefix}ERROR_URL`] = config.error.url;
1019
+ }
1004
1020
  if (config.release) {
1005
1021
  process.env[`${prefix}RELEASE_BANNER`] = config.release.banner;
1006
1022
  process.env[`${prefix}RELEASE_HEADER`] = config.release.header;
@@ -1131,7 +1147,7 @@ var setConfigEnv = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, (config)
1131
1147
  process.env[`${prefix}REGISTRY_CYCLONE`] = String(config.registry.cyclone);
1132
1148
  }
1133
1149
  if (config.registry.container) {
1134
- process.env[`${prefix}REGISTRY_CONTAINER`] = String(config.registry.cyclone);
1150
+ process.env[`${prefix}REGISTRY_CONTAINER`] = String(config.registry.container);
1135
1151
  }
1136
1152
  }
1137
1153
  if (config.logLevel) {
@@ -1865,58 +1881,6 @@ var addWorkspacePackageJsonFields = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call
1865
1881
  // ../build-tools/src/utilities/get-entry-points.ts
1866
1882
  _chunkWTMG7MTKjs.init_cjs_shims.call(void 0, );
1867
1883
 
1868
- var getEntryPoints = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, async (config, projectRoot, sourceRoot, entry, emitOnAll = false) => {
1869
- const workspaceRoot3 = config.workspaceRoot || findWorkspaceRoot();
1870
- const entryPoints = [];
1871
- if (entry) {
1872
- if (typeof entry === "string") {
1873
- entryPoints.push(entry);
1874
- } else if (Array.isArray(entry)) {
1875
- entryPoints.push(...entry);
1876
- } else {
1877
- entryPoints.push(...Object.values(entry));
1878
- }
1879
- }
1880
- if (emitOnAll) {
1881
- entryPoints.push(_chunk3DQG66DJjs.joinPaths.call(void 0, workspaceRoot3, sourceRoot || projectRoot, "**/*.{ts,tsx}"));
1882
- }
1883
- const results = await Promise.all(entryPoints.map(async (entryPoint) => {
1884
- const paths = [];
1885
- if (entryPoint.includes("*")) {
1886
- const files = await _glob.glob.call(void 0, entryPoint, {
1887
- withFileTypes: true,
1888
- ignore: [
1889
- "**/node_modules/**"
1890
- ]
1891
- });
1892
- paths.push(...files.reduce((ret, filePath) => {
1893
- const result = _chunk3DQG66DJjs.correctPaths.call(void 0, _chunk3DQG66DJjs.joinPaths.call(void 0, filePath.path, filePath.name).replaceAll(_chunk3DQG66DJjs.correctPaths.call(void 0, workspaceRoot3), "").replaceAll(_chunk3DQG66DJjs.correctPaths.call(void 0, projectRoot), ""));
1894
- if (result) {
1895
- writeDebug(`Trying to add entry point ${result} at "${_chunk3DQG66DJjs.joinPaths.call(void 0, filePath.path, filePath.name)}"`, config);
1896
- if (!paths.includes(result)) {
1897
- paths.push(result);
1898
- }
1899
- }
1900
- return ret;
1901
- }, []));
1902
- } else {
1903
- const result = _chunk3DQG66DJjs.correctPaths.call(void 0, entryPoint.replaceAll(_chunk3DQG66DJjs.correctPaths.call(void 0, workspaceRoot3), "").replaceAll(_chunk3DQG66DJjs.correctPaths.call(void 0, projectRoot), ""));
1904
- writeDebug(`Trying to add entry point ${result}"`, config);
1905
- if (!paths.includes(result)) {
1906
- paths.push(result);
1907
- }
1908
- }
1909
- return paths;
1910
- }));
1911
- return results.filter(Boolean).reduce((ret, result) => {
1912
- result.forEach((res) => {
1913
- if (res && !ret.includes(res)) {
1914
- ret.push(res);
1915
- }
1916
- });
1917
- return ret;
1918
- }, []);
1919
- }, "getEntryPoints");
1920
1884
 
1921
1885
  // ../build-tools/src/utilities/get-env.ts
1922
1886
  _chunkWTMG7MTKjs.init_cjs_shims.call(void 0, );
@@ -2365,10 +2329,10 @@ var tscPlugin = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, (options, r
2365
2329
  if (process.env.WATCH !== "true" && process.env.DEV !== "true") {
2366
2330
  await run(resolvedOptions.config, `pnpm exec tsc --project ${resolvedOptions.tsconfig}`, resolvedOptions.config.workspaceRoot);
2367
2331
  }
2368
- if (resolvedOptions.bundle && resolvedOptions.entryPoints && resolvedOptions.entryPoints.length > 0 && resolvedOptions.entryPoints[0] && resolvedOptions.entryPoints[0].endsWith(".ts")) {
2332
+ if (resolvedOptions.bundle && resolvedOptions.entryPoints && resolvedOptions.entryPoints.length > 0 && _optionalChain([resolvedOptions, 'access', _122 => _122.entryPoints, 'access', _123 => _123[0], 'optionalAccess', _124 => _124.in]) && resolvedOptions.entryPoints[0].in.endsWith(".ts")) {
2369
2333
  const sourceRoot = resolvedOptions.sourceRoot.replaceAll(resolvedOptions.projectRoot, "");
2370
2334
  const typeOutDir = resolvedOptions.outdir;
2371
- const entryPoint = resolvedOptions.entryPoints[0].replace(sourceRoot, "").replace(/\.ts$/, "");
2335
+ const entryPoint = resolvedOptions.entryPoints[0].in.replace(sourceRoot, "").replace(/\.ts$/, "");
2372
2336
  const bundlePath = _chunk3DQG66DJjs.joinPaths.call(void 0, resolvedOptions.outdir, entryPoint);
2373
2337
  let dtsPath;
2374
2338
  if (_fs.existsSync.call(void 0, _chunk3DQG66DJjs.joinPaths.call(void 0, resolvedOptions.config.workspaceRoot, typeOutDir, `${entryPoint}.d.ts`))) {
@@ -2391,7 +2355,7 @@ var tscPlugin = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, (options, r
2391
2355
  function getTypeDependencyPackageName(npmPackage) {
2392
2356
  if (npmPackage.startsWith("@")) {
2393
2357
  const [scope, name] = npmPackage.split("/");
2394
- return `@types/${_optionalChain([scope, 'optionalAccess', _122 => _122.slice, 'call', _123 => _123(1)])}__${name}`;
2358
+ return `@types/${_optionalChain([scope, 'optionalAccess', _125 => _125.slice, 'call', _126 => _126(1)])}__${name}`;
2395
2359
  }
2396
2360
  return `@types/${npmPackage}`;
2397
2361
  }
@@ -2561,6 +2525,85 @@ var shebangRenderer = {
2561
2525
  }
2562
2526
  };
2563
2527
 
2528
+ // ../esbuild/src/utilities/get-entry-points.ts
2529
+ _chunkWTMG7MTKjs.init_cjs_shims.call(void 0, );
2530
+
2531
+ var getEntryPoints = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, async (config, projectRoot, sourceRoot, entry, emitOnAll = false) => {
2532
+ const workspaceRoot3 = config.workspaceRoot || findWorkspaceRoot();
2533
+ const entryPoints = [];
2534
+ if (entry) {
2535
+ if (typeof entry === "string") {
2536
+ entryPoints.push({
2537
+ in: entry,
2538
+ out: entry
2539
+ });
2540
+ } else if (Array.isArray(entry)) {
2541
+ entryPoints.push(...entry.map((entry2) => ({
2542
+ in: entry2,
2543
+ out: entry2
2544
+ })));
2545
+ } else {
2546
+ entryPoints.push(...Object.entries(entry).map(([key, value]) => {
2547
+ if (typeof value === "string") {
2548
+ return {
2549
+ in: key,
2550
+ out: value
2551
+ };
2552
+ } else {
2553
+ return {
2554
+ in: key,
2555
+ out: key
2556
+ };
2557
+ }
2558
+ }));
2559
+ }
2560
+ }
2561
+ if (emitOnAll) {
2562
+ entryPoints.push({
2563
+ in: _chunk3DQG66DJjs.joinPaths.call(void 0, workspaceRoot3, sourceRoot || projectRoot, "**/*.{ts,tsx}"),
2564
+ out: _chunk3DQG66DJjs.joinPaths.call(void 0, workspaceRoot3, sourceRoot || projectRoot, "**/*.{ts,tsx}")
2565
+ });
2566
+ }
2567
+ const results = await Promise.all(entryPoints.map(async (entryPoint) => {
2568
+ const paths = [];
2569
+ if (entryPoint.in.includes("*")) {
2570
+ const files = await _glob.glob.call(void 0, entryPoint.in, {
2571
+ withFileTypes: true,
2572
+ ignore: [
2573
+ "**/node_modules/**"
2574
+ ]
2575
+ });
2576
+ paths.push(...files.reduce((ret, filePath) => {
2577
+ const result = _chunk3DQG66DJjs.correctPaths.call(void 0, _chunk3DQG66DJjs.joinPaths.call(void 0, filePath.path, filePath.name).replaceAll(_chunk3DQG66DJjs.correctPaths.call(void 0, workspaceRoot3), "").replaceAll(_chunk3DQG66DJjs.correctPaths.call(void 0, projectRoot), ""));
2578
+ if (result) {
2579
+ writeDebug(`Trying to add entry point ${result} at "${_chunk3DQG66DJjs.joinPaths.call(void 0, filePath.path, filePath.name)}"`, config);
2580
+ if (!paths.some((p) => p.in === result)) {
2581
+ paths.push({
2582
+ in: result,
2583
+ out: entryPoint.out.replace(entryPoint.in, result)
2584
+ });
2585
+ }
2586
+ }
2587
+ return ret;
2588
+ }, []));
2589
+ } else {
2590
+ writeDebug(`Trying to add entry point ${entryPoint}"`, config);
2591
+ if (!paths.some((p) => p.in === entryPoint.in)) {
2592
+ paths.push(entryPoint);
2593
+ }
2594
+ }
2595
+ return paths;
2596
+ }));
2597
+ return results.filter(Boolean).reduce((ret, result) => {
2598
+ result.forEach((res) => {
2599
+ if (res && !ret.some((p) => p.in === res.in)) {
2600
+ ret.push(res);
2601
+ }
2602
+ });
2603
+ return ret;
2604
+ }, []);
2605
+ }, "getEntryPoints");
2606
+
2564
2607
  // ../esbuild/src/utilities/helpers.ts
2565
2608
  _chunkWTMG7MTKjs.init_cjs_shims.call(void 0, );
2566
2609
  function handleSync(fn) {
@@ -2610,7 +2653,7 @@ function pipeSync(fn, ...fns) {
2610
2653
  return (...args) => {
2611
2654
  let result = fn(...args);
2612
2655
  for (let i = 0; result !== skip && i < fns.length; ++i) {
2613
- result = _optionalChain([fns, 'access', _124 => _124[i], 'optionalCall', _125 => _125(result)]);
2656
+ result = _optionalChain([fns, 'access', _127 => _127[i], 'optionalCall', _128 => _128(result)]);
2614
2657
  }
2615
2658
  return result;
2616
2659
  };
@@ -2620,7 +2663,7 @@ function pipeAsync(fn, ...fns) {
2620
2663
  return async (...args) => {
2621
2664
  let result = await fn(...args);
2622
2665
  for (let i = 0; result !== skip && i < fns.length; ++i) {
2623
- result = await _optionalChain([fns, 'access', _126 => _126[i], 'optionalCall', _127 => _127(result)]);
2666
+ result = await _optionalChain([fns, 'access', _129 => _129[i], 'optionalCall', _130 => _130(result)]);
2624
2667
  }
2625
2668
  return result;
2626
2669
  };
@@ -2650,7 +2693,7 @@ var resolveOptions = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, async
2650
2693
  const projectJson = JSON.parse(projectJsonFile);
2651
2694
  const projectName = projectJson.name;
2652
2695
  const projectConfigurations = _devkit.readProjectsConfigurationFromProjectGraph.call(void 0, projectGraph);
2653
- if (!_optionalChain([projectConfigurations, 'optionalAccess', _128 => _128.projects, 'optionalAccess', _129 => _129[projectName]])) {
2696
+ if (!_optionalChain([projectConfigurations, 'optionalAccess', _131 => _131.projects, 'optionalAccess', _132 => _132[projectName]])) {
2654
2697
  throw new Error("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.");
2655
2698
  }
2656
2699
  const options = _defu2.default.call(void 0, userOptions, DEFAULT_BUILD_OPTIONS);
@@ -2675,7 +2718,7 @@ var resolveOptions = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, async
2675
2718
  ...userOptions,
2676
2719
  tsconfig: _chunk3DQG66DJjs.joinPaths.call(void 0, projectRoot, userOptions.tsconfig ? userOptions.tsconfig.replace(projectRoot, "") : "tsconfig.json"),
2677
2720
  format: options.format || "cjs",
2678
- entryPoints: await getEntryPoints(config, projectRoot, projectJson.sourceRoot, _nullishCoalesce(userOptions.entry, () => ( "./src/index.ts")), userOptions.emitOnAll === true),
2721
+ entryPoints: await getEntryPoints(config, projectRoot, projectJson.sourceRoot, _nullishCoalesce(userOptions.entry, () => ( "./src/index.ts")), false),
2679
2722
  outdir: userOptions.outputPath || _chunk3DQG66DJjs.joinPaths.call(void 0, "dist", projectRoot),
2680
2723
  distDir: userOptions.distDir || "dist",
2681
2724
  plugins: [],
@@ -2690,7 +2733,6 @@ var resolveOptions = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, async
2690
2733
  metafile: userOptions.metafile !== false,
2691
2734
  generatePackageJson: userOptions.generatePackageJson !== false,
2692
2735
  clean: userOptions.clean !== false,
2693
- emitOnAll: userOptions.emitOnAll === true,
2694
2736
  assets: _nullishCoalesce(userOptions.assets, () => ( [])),
2695
2737
  injectShims: userOptions.injectShims !== true,
2696
2738
  bundle: userOptions.bundle !== false,
@@ -2757,19 +2799,13 @@ async function generatePackageJson(context2) {
2757
2799
  packageJson.exports ??= {};
2758
2800
  packageJson.exports["./package.json"] ??= "./package.json";
2759
2801
  packageJson.exports["."] ??= `.${context2.options.distDir ? `/${context2.options.distDir}` : ""}/index.js`;
2760
- let entryPoints = [
2802
+ const entryPoints = [
2761
2803
  {
2762
2804
  in: "./src/index.ts",
2763
2805
  out: "./src/index.ts"
2764
2806
  }
2765
2807
  ];
2766
2808
  if (context2.options.entryPoints) {
2767
- if (Array.isArray(context2.options.entryPoints)) {
2768
- entryPoints = context2.options.entryPoints.map((entryPoint) => typeof entryPoint === "string" ? {
2769
- in: entryPoint,
2770
- out: entryPoint
2771
- } : entryPoint);
2772
- }
2773
2809
  for (const entryPoint of entryPoints) {
2774
2810
  const split = entryPoint.out.split(".");
2775
2811
  split.pop();
@@ -2838,7 +2874,6 @@ async function executeEsBuild(context2) {
2838
2874
  delete options.clean;
2839
2875
  delete options.debug;
2840
2876
  delete options.generatePackageJson;
2841
- delete options.emitOnAll;
2842
2877
  delete options.distDir;
2843
2878
  delete options.includeSrc;
2844
2879
  delete options.verbose;
@@ -2851,7 +2886,10 @@ async function executeEsBuild(context2) {
2851
2886
  delete options.injectShims;
2852
2887
  delete options.external;
2853
2888
  writeTrace(`Run esbuild (${context2.options.name}) with the following options:
2854
- ${formatLogMessage(options)}`, context2.options.config);
2889
+ ${formatLogMessage({
2890
+ ...options,
2891
+ define: "<Hidden>"
2892
+ })}`, context2.options.config);
2855
2893
  const result = await esbuild2.build(options);
2856
2894
  await esbuild2.stop();
2857
2895
  if (result.metafile) {
@@ -2863,7 +2901,7 @@ ${formatLogMessage(options)}`, context2.options.config);
2863
2901
  }
2864
2902
  _chunkWTMG7MTKjs.__name.call(void 0, executeEsBuild, "executeEsBuild");
2865
2903
  async function copyBuildAssets(context2) {
2866
- if (_optionalChain([context2, 'access', _130 => _130.result, 'optionalAccess', _131 => _131.errors, 'access', _132 => _132.length]) === 0) {
2904
+ if (_optionalChain([context2, 'access', _133 => _133.result, 'optionalAccess', _134 => _134.errors, 'access', _135 => _135.length]) === 0) {
2867
2905
  writeDebug(` \u{1F4CB} Copying asset files to output directory: ${context2.options.outdir}`, context2.options.config);
2868
2906
  const stopwatch = getStopwatch(`${context2.options.name} asset copy`);
2869
2907
  await copyAssets(context2.options.config, _nullishCoalesce(context2.options.assets, () => ( [])), context2.options.outdir, context2.options.projectRoot, context2.options.sourceRoot, true, false);
@@ -2873,7 +2911,7 @@ async function copyBuildAssets(context2) {
2873
2911
  }
2874
2912
  _chunkWTMG7MTKjs.__name.call(void 0, copyBuildAssets, "copyBuildAssets");
2875
2913
  async function reportResults(context2) {
2876
- if (_optionalChain([context2, 'access', _133 => _133.result, 'optionalAccess', _134 => _134.errors, 'access', _135 => _135.length]) === 0) {
2914
+ if (_optionalChain([context2, 'access', _136 => _136.result, 'optionalAccess', _137 => _137.errors, 'access', _138 => _138.length]) === 0) {
2877
2915
  if (context2.result.warnings.length > 0) {
2878
2916
  writeWarning(` \u{1F6A7} The following warnings occurred during the build: ${context2.result.warnings.map((warning) => warning.text).join("\n")}`, context2.options.config);
2879
2917
  }
@@ -2974,14 +3012,14 @@ var watch = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, (context2, opti
2974
3012
  // ../workspace-tools/src/executors/esbuild/executor.ts
2975
3013
  async function esbuildExecutorFn(options, context2, config) {
2976
3014
  writeInfo("\u{1F4E6} Running Storm ESBuild executor on the workspace", config);
2977
- if (!_optionalChain([context2, 'access', _136 => _136.projectsConfigurations, 'optionalAccess', _137 => _137.projects]) || !context2.projectName || !context2.projectsConfigurations.projects[context2.projectName] || !_optionalChain([context2, 'access', _138 => _138.projectsConfigurations, 'access', _139 => _139.projects, 'access', _140 => _140[context2.projectName], 'optionalAccess', _141 => _141.root])) {
3015
+ if (!_optionalChain([context2, 'access', _139 => _139.projectsConfigurations, 'optionalAccess', _140 => _140.projects]) || !context2.projectName || !context2.projectsConfigurations.projects[context2.projectName] || !_optionalChain([context2, 'access', _141 => _141.projectsConfigurations, 'access', _142 => _142.projects, 'access', _143 => _143[context2.projectName], 'optionalAccess', _144 => _144.root])) {
2978
3016
  throw new Error("The Build process failed because the context is not valid. Please run this command from a workspace.");
2979
3017
  }
2980
3018
  await build3({
2981
3019
  ...options,
2982
- projectRoot: _optionalChain([context2, 'access', _142 => _142.projectsConfigurations, 'access', _143 => _143.projects, 'optionalAccess', _144 => _144[context2.projectName], 'access', _145 => _145.root]),
3020
+ projectRoot: _optionalChain([context2, 'access', _145 => _145.projectsConfigurations, 'access', _146 => _146.projects, 'optionalAccess', _147 => _147[context2.projectName], 'access', _148 => _148.root]),
2983
3021
  projectName: context2.projectName,
2984
- sourceRoot: _optionalChain([context2, 'access', _146 => _146.projectsConfigurations, 'access', _147 => _147.projects, 'optionalAccess', _148 => _148[context2.projectName], 'optionalAccess', _149 => _149.sourceRoot]),
3022
+ sourceRoot: _optionalChain([context2, 'access', _149 => _149.projectsConfigurations, 'access', _150 => _150.projects, 'optionalAccess', _151 => _151[context2.projectName], 'optionalAccess', _152 => _152.sourceRoot]),
2985
3023
  format: options.format,
2986
3024
  platform: options.format
2987
3025
  });
@@ -3027,7 +3065,7 @@ var _esbuildwhy = require('@size-limit/esbuild-why'); var _esbuildwhy2 = _intero
3027
3065
  var _file = require('@size-limit/file'); var _file2 = _interopRequireDefault(_file);
3028
3066
  var _sizelimit = require('size-limit'); var _sizelimit2 = _interopRequireDefault(_sizelimit);
3029
3067
  async function sizeLimitExecutorFn(options, context2, config) {
3030
- if (!_optionalChain([context2, 'optionalAccess', _150 => _150.projectName]) || !_optionalChain([context2, 'access', _151 => _151.projectsConfigurations, 'optionalAccess', _152 => _152.projects]) || !context2.projectsConfigurations.projects[context2.projectName]) {
3068
+ if (!_optionalChain([context2, 'optionalAccess', _153 => _153.projectName]) || !_optionalChain([context2, 'access', _154 => _154.projectsConfigurations, 'optionalAccess', _155 => _155.projects]) || !context2.projectsConfigurations.projects[context2.projectName]) {
3031
3069
  throw new Error("The Size-Limit process failed because the context is not valid. Please run this command from a workspace.");
3032
3070
  }
3033
3071
  writeInfo(`\u{1F4CF} Running Size-Limit on ${context2.projectName}`, config);
@@ -3036,7 +3074,7 @@ async function sizeLimitExecutorFn(options, context2, config) {
3036
3074
  _esbuild3.default,
3037
3075
  _esbuildwhy2.default
3038
3076
  ], {
3039
- checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context2, 'access', _153 => _153.projectsConfigurations, 'access', _154 => _154.projects, 'access', _155 => _155[context2.projectName], 'optionalAccess', _156 => _156.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0, _nullishCoalesce(_optionalChain([context2, 'access', _157 => _157.projectsConfigurations, 'access', _158 => _158.projects, 'access', _159 => _159[context2.projectName], 'optionalAccess', _160 => _160.root]), () => ( "./")), "src")))
3077
+ checks: _nullishCoalesce(_nullishCoalesce(options.entry, () => ( _optionalChain([context2, 'access', _156 => _156.projectsConfigurations, 'access', _157 => _157.projects, 'access', _158 => _158[context2.projectName], 'optionalAccess', _159 => _159.sourceRoot]))), () => ( _devkit.joinPathFragments.call(void 0, _nullishCoalesce(_optionalChain([context2, 'access', _160 => _160.projectsConfigurations, 'access', _161 => _161.projects, 'access', _162 => _162[context2.projectName], 'optionalAccess', _163 => _163.root]), () => ( "./")), "src")))
3040
3078
  }).then((result) => {
3041
3079
  writeInfo(`\u{1F4CF} ${context2.projectName} Size-Limit result: ${JSON.stringify(result)}`, config);
3042
3080
  });
@@ -3097,7 +3135,7 @@ _chunkWTMG7MTKjs.init_cjs_shims.call(void 0, );
3097
3135
  var _jiti = require('jiti');
3098
3136
  async function unbuildExecutorFn(options, context2, config) {
3099
3137
  writeInfo("\u{1F4E6} Running Storm Unbuild executor on the workspace", config);
3100
- if (!_optionalChain([context2, 'access', _161 => _161.projectsConfigurations, 'optionalAccess', _162 => _162.projects]) || !context2.projectName || !context2.projectsConfigurations.projects[context2.projectName]) {
3138
+ if (!_optionalChain([context2, 'access', _164 => _164.projectsConfigurations, 'optionalAccess', _165 => _165.projects]) || !context2.projectName || !context2.projectsConfigurations.projects[context2.projectName]) {
3101
3139
  throw new Error("The Build process failed because the context is not valid. Please run this command from a workspace root directory.");
3102
3140
  }
3103
3141
  if (!context2.projectsConfigurations.projects[context2.projectName].root) {
@@ -3185,7 +3223,7 @@ var withRunGenerator = /* @__PURE__ */ _chunkWTMG7MTKjs.__name.call(void 0, (nam
3185
3223
  - workspaceRoot: ${workspaceRoot3}`, config);
3186
3224
  config = await getConfig(workspaceRoot3);
3187
3225
  }
3188
- if (_optionalChain([generatorOptions, 'optionalAccess', _163 => _163.hooks, 'optionalAccess', _164 => _164.applyDefaultOptions])) {
3226
+ if (_optionalChain([generatorOptions, 'optionalAccess', _166 => _166.hooks, 'optionalAccess', _167 => _167.applyDefaultOptions])) {
3189
3227
  writeDebug("Running the applyDefaultOptions hook...", config);
3190
3228
  options = await Promise.resolve(generatorOptions.hooks.applyDefaultOptions(options, config));
3191
3229
  writeDebug("Completed the applyDefaultOptions hook", config);
@@ -3196,22 +3234,22 @@ ${Object.keys(_nullishCoalesce(options, () => ( {}))).map((key) => ` - ${key}=${
3196
3234
  workspaceRoot: tree.root,
3197
3235
  config
3198
3236
  }, applyWorkspaceBaseTokens);
3199
- if (_optionalChain([generatorOptions, 'optionalAccess', _165 => _165.hooks, 'optionalAccess', _166 => _166.preProcess])) {
3237
+ if (_optionalChain([generatorOptions, 'optionalAccess', _168 => _168.hooks, 'optionalAccess', _169 => _169.preProcess])) {
3200
3238
  writeDebug("Running the preProcess hook...", config);
3201
3239
  await Promise.resolve(generatorOptions.hooks.preProcess(tokenized, config));
3202
3240
  writeDebug("Completed the preProcess hook", config);
3203
3241
  }
3204
3242
  const result = await Promise.resolve(generatorFn(tree, tokenized, config));
3205
3243
  if (result) {
3206
- if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _167 => _167.error, 'optionalAccess', _168 => _168.message]) && typeof _optionalChain([result, 'optionalAccess', _169 => _169.error, 'optionalAccess', _170 => _170.message]) === "string" && _optionalChain([result, 'optionalAccess', _171 => _171.error, 'optionalAccess', _172 => _172.name]) && typeof _optionalChain([result, 'optionalAccess', _173 => _173.error, 'optionalAccess', _174 => _174.name]) === "string") {
3244
+ if (result.success === false || result.error && _optionalChain([result, 'optionalAccess', _170 => _170.error, 'optionalAccess', _171 => _171.message]) && typeof _optionalChain([result, 'optionalAccess', _172 => _172.error, 'optionalAccess', _173 => _173.message]) === "string" && _optionalChain([result, 'optionalAccess', _174 => _174.error, 'optionalAccess', _175 => _175.name]) && typeof _optionalChain([result, 'optionalAccess', _176 => _176.error, 'optionalAccess', _177 => _177.name]) === "string") {
3207
3245
  throw new Error(`The ${name} generator failed to run`, {
3208
- cause: _optionalChain([result, 'optionalAccess', _175 => _175.error])
3246
+ cause: _optionalChain([result, 'optionalAccess', _178 => _178.error])
3209
3247
  });
3210
3248
  } else if (result.success && result.data) {
3211
3249
  return result;
3212
3250
  }
3213
3251
  }
3214
- if (_optionalChain([generatorOptions, 'optionalAccess', _176 => _176.hooks, 'optionalAccess', _177 => _177.postProcess])) {
3252
+ if (_optionalChain([generatorOptions, 'optionalAccess', _179 => _179.hooks, 'optionalAccess', _180 => _180.postProcess])) {
3215
3253
  writeDebug("Running the postProcess hook...", config);
3216
3254
  await Promise.resolve(generatorOptions.hooks.postProcess(config));
3217
3255
  writeDebug("Completed the postProcess hook", config);
@@ -3380,15 +3418,15 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3380
3418
  _devkit.addProjectConfiguration.call(void 0, tree, normalized.name, projectConfig);
3381
3419
  let repository = {
3382
3420
  type: "github",
3383
- url: _optionalChain([config, 'optionalAccess', _178 => _178.repository]) || `https://github.com/${_optionalChain([config, 'optionalAccess', _179 => _179.organization]) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _180 => _180.namespace]) || _optionalChain([config, 'optionalAccess', _181 => _181.name]) || "repository"}.git`
3421
+ url: _optionalChain([config, 'optionalAccess', _181 => _181.repository]) || `https://github.com/${_optionalChain([config, 'optionalAccess', _182 => _182.organization]) || "storm-software"}/${_optionalChain([config, 'optionalAccess', _183 => _183.namespace]) || _optionalChain([config, 'optionalAccess', _184 => _184.name]) || "repository"}.git`
3384
3422
  };
3385
3423
  let description = options.description || "A package developed by Storm Software used to create modern, scalable web applications.";
3386
3424
  if (tree.exists("package.json")) {
3387
3425
  const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
3388
- if (_optionalChain([packageJson, 'optionalAccess', _182 => _182.repository])) {
3426
+ if (_optionalChain([packageJson, 'optionalAccess', _185 => _185.repository])) {
3389
3427
  repository = packageJson.repository;
3390
3428
  }
3391
- if (_optionalChain([packageJson, 'optionalAccess', _183 => _183.description])) {
3429
+ if (_optionalChain([packageJson, 'optionalAccess', _186 => _186.description])) {
3392
3430
  description = packageJson.description;
3393
3431
  }
3394
3432
  }
@@ -3443,9 +3481,9 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3443
3481
  _devkit.updateJson.call(void 0, tree, "package.json", (json) => ({
3444
3482
  ...json,
3445
3483
  pnpm: {
3446
- ..._optionalChain([json, 'optionalAccess', _184 => _184.pnpm]),
3484
+ ..._optionalChain([json, 'optionalAccess', _187 => _187.pnpm]),
3447
3485
  overrides: {
3448
- ..._optionalChain([json, 'optionalAccess', _185 => _185.pnpm, 'optionalAccess', _186 => _186.overrides]),
3486
+ ..._optionalChain([json, 'optionalAccess', _188 => _188.pnpm, 'optionalAccess', _189 => _189.overrides]),
3449
3487
  [_nullishCoalesce(normalized.importPath, () => ( ""))]: "workspace:*"
3450
3488
  }
3451
3489
  }
@@ -3459,10 +3497,10 @@ async function typeScriptLibraryGeneratorFn(tree, options, config) {
3459
3497
  ]);
3460
3498
  if (tree.exists("package.json")) {
3461
3499
  const packageJson = _devkit.readJson.call(void 0, tree, "package.json");
3462
- if (_optionalChain([packageJson, 'optionalAccess', _187 => _187.repository])) {
3500
+ if (_optionalChain([packageJson, 'optionalAccess', _190 => _190.repository])) {
3463
3501
  repository = packageJson.repository;
3464
3502
  }
3465
- if (_optionalChain([packageJson, 'optionalAccess', _188 => _188.description])) {
3503
+ if (_optionalChain([packageJson, 'optionalAccess', _191 => _191.description])) {
3466
3504
  description = packageJson.description;
3467
3505
  }
3468
3506
  }
@@ -3510,24 +3548,24 @@ _chunkWTMG7MTKjs.__name.call(void 0, getOutputPath, "getOutputPath");
3510
3548
  function createProjectTsConfigJson(tree, options) {
3511
3549
  const tsconfig = {
3512
3550
  extends: options.rootProject ? void 0 : _js.getRelativePathToRootTsConfig.call(void 0, tree, options.projectRoot),
3513
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _189 => _189.tsconfigOptions]), () => ( {})),
3551
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _192 => _192.tsconfigOptions]), () => ( {})),
3514
3552
  compilerOptions: {
3515
3553
  ...options.rootProject ? _js.tsConfigBaseOptions : {},
3516
3554
  outDir: _chunk3DQG66DJjs.joinPaths.call(void 0, _devkit.offsetFromRoot.call(void 0, options.projectRoot), "dist/out-tsc"),
3517
3555
  noEmit: true,
3518
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _190 => _190.tsconfigOptions, 'optionalAccess', _191 => _191.compilerOptions]), () => ( {}))
3556
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _193 => _193.tsconfigOptions, 'optionalAccess', _194 => _194.compilerOptions]), () => ( {}))
3519
3557
  },
3520
3558
  files: [
3521
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _192 => _192.tsconfigOptions, 'optionalAccess', _193 => _193.files]), () => ( []))
3559
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _195 => _195.tsconfigOptions, 'optionalAccess', _196 => _196.files]), () => ( []))
3522
3560
  ],
3523
3561
  include: [
3524
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _194 => _194.tsconfigOptions, 'optionalAccess', _195 => _195.include]), () => ( [])),
3562
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _197 => _197.tsconfigOptions, 'optionalAccess', _198 => _198.include]), () => ( [])),
3525
3563
  "src/**/*.ts",
3526
3564
  "src/**/*.js",
3527
3565
  "bin/**/*"
3528
3566
  ],
3529
3567
  exclude: [
3530
- ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _196 => _196.tsconfigOptions, 'optionalAccess', _197 => _197.exclude]), () => ( [])),
3568
+ ..._nullishCoalesce(_optionalChain([options, 'optionalAccess', _199 => _199.tsconfigOptions, 'optionalAccess', _200 => _200.exclude]), () => ( [])),
3531
3569
  "jest.config.ts",
3532
3570
  "src/**/*.spec.ts",
3533
3571
  "src/**/*.test.ts"
@@ -3538,8 +3576,8 @@ function createProjectTsConfigJson(tree, options) {
3538
3576
  _chunkWTMG7MTKjs.__name.call(void 0, createProjectTsConfigJson, "createProjectTsConfigJson");
3539
3577
  async function normalizeOptions(tree, options, config) {
3540
3578
  let importPath = options.importPath;
3541
- if (!importPath && _optionalChain([config, 'optionalAccess', _198 => _198.namespace])) {
3542
- importPath = `@${_optionalChain([config, 'optionalAccess', _199 => _199.namespace])}/${options.name}`;
3579
+ if (!importPath && _optionalChain([config, 'optionalAccess', _201 => _201.namespace])) {
3580
+ importPath = `@${_optionalChain([config, 'optionalAccess', _202 => _202.namespace])}/${options.name}`;
3543
3581
  }
3544
3582
  if (options.publishable) {
3545
3583
  if (!importPath) {
@@ -3672,7 +3710,7 @@ async function configSchemaGeneratorFn(tree, options, config) {
3672
3710
  name: "StormWorkspaceConfiguration"
3673
3711
  });
3674
3712
  writeTrace(jsonSchema, config);
3675
- const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(_nullishCoalesce(_optionalChain([config, 'optionalAccess', _200 => _200.workspaceRoot]), () => ( findWorkspaceRoot())), _optionalChain([options, 'access', _201 => _201.outputFile, 'optionalAccess', _202 => _202.startsWith, 'call', _203 => _203("./")]) ? "" : "./");
3713
+ const outputPath = options.outputFile.replaceAll("{workspaceRoot}", "").replaceAll(_nullishCoalesce(_optionalChain([config, 'optionalAccess', _203 => _203.workspaceRoot]), () => ( findWorkspaceRoot())), _optionalChain([options, 'access', _204 => _204.outputFile, 'optionalAccess', _205 => _205.startsWith, 'call', _206 => _206("./")]) ? "" : "./");
3676
3714
  writeTrace(`\u{1F4DD} Writing Storm Configuration JSON Schema to "${outputPath}"`, config);
3677
3715
  _devkit.writeJson.call(void 0, tree, outputPath, jsonSchema, {
3678
3716
  spaces: 2
@@ -200,6 +200,10 @@ var WorkspaceDirectoryConfigSchema = z.object({
200
200
  log: z.string().trim().optional().describe("The directory used to store the environment's temp files"),
201
201
  build: z.string().trim().default("dist").describe("The directory used to store the workspace's distributable files after a build (relative to the workspace root)")
202
202
  }).describe("Various directories used by the workspace to store data, cache, and configuration files");
203
+ var errorConfigSchema = z.object({
204
+ codesFile: z.string().trim().default(STORM_DEFAULT_RELEASE_BANNER).describe("The path to the workspace's error codes JSON file"),
205
+ url: z.string().trim().url().optional().describe("A URL to a page that looks up the workspace's error messages given a specific error code")
206
+ }).describe("The workspace's error config used during the error process");
203
207
  var stormWorkspaceConfigSchema = z.object({
204
208
  $schema: z.string().trim().default("https://cdn.jsdelivr.net/npm/@storm-software/config/schemas/storm-workspace.schema.json").optional().nullish().describe("The URL to the JSON schema file that describes the Storm configuration file"),
205
209
  extends: ExtendsSchema.optional(),
@@ -218,6 +222,7 @@ var stormWorkspaceConfigSchema = z.object({
218
222
  bot: WorkspaceBotConfigSchema,
219
223
  release: WorkspaceReleaseConfigSchema,
220
224
  account: WorkspaceAccountConfigSchema,
225
+ error: errorConfigSchema,
221
226
  mode: z.enum([
222
227
  "development",
223
228
  "staging",
@@ -433,7 +438,10 @@ var getDefaultConfig = /* @__PURE__ */ __name(async (root) => {
433
438
  license,
434
439
  homepage,
435
440
  docs: `${homepage || STORM_DEFAULT_HOMEPAGE}/docs`,
436
- licensing: `${homepage || STORM_DEFAULT_HOMEPAGE}/license`
441
+ licensing: `${homepage || STORM_DEFAULT_HOMEPAGE}/license`,
442
+ error: {
443
+ url: `${homepage || STORM_DEFAULT_HOMEPAGE}/errors`
444
+ }
437
445
  };
438
446
  }, "getDefaultConfig");
439
447
 
@@ -828,6 +836,10 @@ var getConfigEnv = /* @__PURE__ */ __name(() => {
828
836
  header: process.env[`${prefix}RELEASE_HEADER`] || void 0,
829
837
  footer: process.env[`${prefix}RELEASE_FOOTER`] || void 0
830
838
  },
839
+ error: {
840
+ codesFile: process.env[`${prefix}ERROR_CODES_FILE`] || void 0,
841
+ url: process.env[`${prefix}ERROR_URL`] || void 0
842
+ },
831
843
  account: {
832
844
  twitter: process.env[`${prefix}ACCOUNT_TWITTER`] || void 0,
833
845
  discord: process.env[`${prefix}ACCOUNT_DISCORD`] || void 0,
@@ -1002,6 +1014,10 @@ var setConfigEnv = /* @__PURE__ */ __name((config) => {
1002
1014
  process.env[`${prefix}BOT_NAME`] = config.bot.name;
1003
1015
  process.env[`${prefix}BOT_EMAIL`] = config.bot.email;
1004
1016
  }
1017
+ if (config.error) {
1018
+ process.env[`${prefix}ERROR_CODES_FILE`] = config.error.codesFile;
1019
+ process.env[`${prefix}ERROR_URL`] = config.error.url;
1020
+ }
1005
1021
  if (config.release) {
1006
1022
  process.env[`${prefix}RELEASE_BANNER`] = config.release.banner;
1007
1023
  process.env[`${prefix}RELEASE_HEADER`] = config.release.header;
@@ -1132,7 +1148,7 @@ var setConfigEnv = /* @__PURE__ */ __name((config) => {
1132
1148
  process.env[`${prefix}REGISTRY_CYCLONE`] = String(config.registry.cyclone);
1133
1149
  }
1134
1150
  if (config.registry.container) {
1135
- process.env[`${prefix}REGISTRY_CONTAINER`] = String(config.registry.cyclone);
1151
+ process.env[`${prefix}REGISTRY_CONTAINER`] = String(config.registry.container);
1136
1152
  }
1137
1153
  }
1138
1154
  if (config.logLevel) {
@@ -1866,58 +1882,6 @@ var addWorkspacePackageJsonFields = /* @__PURE__ */ __name(async (config, projec
1866
1882
  // ../build-tools/src/utilities/get-entry-points.ts
1867
1883
  init_esm_shims();
1868
1884
  import { glob as glob2 } from "glob";
1869
- var getEntryPoints = /* @__PURE__ */ __name(async (config, projectRoot, sourceRoot, entry, emitOnAll = false) => {
1870
- const workspaceRoot3 = config.workspaceRoot || findWorkspaceRoot();
1871
- const entryPoints = [];
1872
- if (entry) {
1873
- if (typeof entry === "string") {
1874
- entryPoints.push(entry);
1875
- } else if (Array.isArray(entry)) {
1876
- entryPoints.push(...entry);
1877
- } else {
1878
- entryPoints.push(...Object.values(entry));
1879
- }
1880
- }
1881
- if (emitOnAll) {
1882
- entryPoints.push(joinPaths(workspaceRoot3, sourceRoot || projectRoot, "**/*.{ts,tsx}"));
1883
- }
1884
- const results = await Promise.all(entryPoints.map(async (entryPoint) => {
1885
- const paths = [];
1886
- if (entryPoint.includes("*")) {
1887
- const files = await glob2(entryPoint, {
1888
- withFileTypes: true,
1889
- ignore: [
1890
- "**/node_modules/**"
1891
- ]
1892
- });
1893
- paths.push(...files.reduce((ret, filePath) => {
1894
- const result = correctPaths(joinPaths(filePath.path, filePath.name).replaceAll(correctPaths(workspaceRoot3), "").replaceAll(correctPaths(projectRoot), ""));
1895
- if (result) {
1896
- writeDebug(`Trying to add entry point ${result} at "${joinPaths(filePath.path, filePath.name)}"`, config);
1897
- if (!paths.includes(result)) {
1898
- paths.push(result);
1899
- }
1900
- }
1901
- return ret;
1902
- }, []));
1903
- } else {
1904
- const result = correctPaths(entryPoint.replaceAll(correctPaths(workspaceRoot3), "").replaceAll(correctPaths(projectRoot), ""));
1905
- writeDebug(`Trying to add entry point ${result}"`, config);
1906
- if (!paths.includes(result)) {
1907
- paths.push(result);
1908
- }
1909
- }
1910
- return paths;
1911
- }));
1912
- return results.filter(Boolean).reduce((ret, result) => {
1913
- result.forEach((res) => {
1914
- if (res && !ret.includes(res)) {
1915
- ret.push(res);
1916
- }
1917
- });
1918
- return ret;
1919
- }, []);
1920
- }, "getEntryPoints");
1921
1885
 
1922
1886
  // ../build-tools/src/utilities/get-env.ts
1923
1887
  init_esm_shims();
@@ -2366,10 +2330,10 @@ var tscPlugin = /* @__PURE__ */ __name((options, resolvedOptions) => ({
2366
2330
  if (process.env.WATCH !== "true" && process.env.DEV !== "true") {
2367
2331
  await run(resolvedOptions.config, `pnpm exec tsc --project ${resolvedOptions.tsconfig}`, resolvedOptions.config.workspaceRoot);
2368
2332
  }
2369
- if (resolvedOptions.bundle && resolvedOptions.entryPoints && resolvedOptions.entryPoints.length > 0 && resolvedOptions.entryPoints[0] && resolvedOptions.entryPoints[0].endsWith(".ts")) {
2333
+ if (resolvedOptions.bundle && resolvedOptions.entryPoints && resolvedOptions.entryPoints.length > 0 && resolvedOptions.entryPoints[0]?.in && resolvedOptions.entryPoints[0].in.endsWith(".ts")) {
2370
2334
  const sourceRoot = resolvedOptions.sourceRoot.replaceAll(resolvedOptions.projectRoot, "");
2371
2335
  const typeOutDir = resolvedOptions.outdir;
2372
- const entryPoint = resolvedOptions.entryPoints[0].replace(sourceRoot, "").replace(/\.ts$/, "");
2336
+ const entryPoint = resolvedOptions.entryPoints[0].in.replace(sourceRoot, "").replace(/\.ts$/, "");
2373
2337
  const bundlePath = joinPaths(resolvedOptions.outdir, entryPoint);
2374
2338
  let dtsPath;
2375
2339
  if (existsSync5(joinPaths(resolvedOptions.config.workspaceRoot, typeOutDir, `${entryPoint}.d.ts`))) {
@@ -2562,6 +2526,85 @@ var shebangRenderer = {
2562
2526
  }
2563
2527
  };
2564
2528
 
2529
+ // ../esbuild/src/utilities/get-entry-points.ts
2530
+ init_esm_shims();
2531
+ import { glob as glob3 } from "glob";
2532
+ var getEntryPoints = /* @__PURE__ */ __name(async (config, projectRoot, sourceRoot, entry, emitOnAll = false) => {
2533
+ const workspaceRoot3 = config.workspaceRoot || findWorkspaceRoot();
2534
+ const entryPoints = [];
2535
+ if (entry) {
2536
+ if (typeof entry === "string") {
2537
+ entryPoints.push({
2538
+ in: entry,
2539
+ out: entry
2540
+ });
2541
+ } else if (Array.isArray(entry)) {
2542
+ entryPoints.push(...entry.map((entry2) => ({
2543
+ in: entry2,
2544
+ out: entry2
2545
+ })));
2546
+ } else {
2547
+ entryPoints.push(...Object.entries(entry).map(([key, value]) => {
2548
+ if (typeof value === "string") {
2549
+ return {
2550
+ in: key,
2551
+ out: value
2552
+ };
2553
+ } else {
2554
+ return {
2555
+ in: key,
2556
+ out: key
2557
+ };
2558
+ }
2559
+ }));
2560
+ }
2561
+ }
2562
+ if (emitOnAll) {
2563
+ entryPoints.push({
2564
+ in: joinPaths(workspaceRoot3, sourceRoot || projectRoot, "**/*.{ts,tsx}"),
2565
+ out: joinPaths(workspaceRoot3, sourceRoot || projectRoot, "**/*.{ts,tsx}")
2566
+ });
2567
+ }
2568
+ const results = await Promise.all(entryPoints.map(async (entryPoint) => {
2569
+ const paths = [];
2570
+ if (entryPoint.in.includes("*")) {
2571
+ const files = await glob3(entryPoint.in, {
2572
+ withFileTypes: true,
2573
+ ignore: [
2574
+ "**/node_modules/**"
2575
+ ]
2576
+ });
2577
+ paths.push(...files.reduce((ret, filePath) => {
2578
+ const result = correctPaths(joinPaths(filePath.path, filePath.name).replaceAll(correctPaths(workspaceRoot3), "").replaceAll(correctPaths(projectRoot), ""));
2579
+ if (result) {
2580
+ writeDebug(`Trying to add entry point ${result} at "${joinPaths(filePath.path, filePath.name)}"`, config);
2581
+ if (!paths.some((p) => p.in === result)) {
2582
+ paths.push({
2583
+ in: result,
2584
+ out: entryPoint.out.replace(entryPoint.in, result)
2585
+ });
2586
+ }
2587
+ }
2588
+ return ret;
2589
+ }, []));
2590
+ } else {
2591
+ writeDebug(`Trying to add entry point ${entryPoint}"`, config);
2592
+ if (!paths.some((p) => p.in === entryPoint.in)) {
2593
+ paths.push(entryPoint);
2594
+ }
2595
+ }
2596
+ return paths;
2597
+ }));
2598
+ return results.filter(Boolean).reduce((ret, result) => {
2599
+ result.forEach((res) => {
2600
+ if (res && !ret.some((p) => p.in === res.in)) {
2601
+ ret.push(res);
2602
+ }
2603
+ });
2604
+ return ret;
2605
+ }, []);
2606
+ }, "getEntryPoints");
2607
+
2565
2608
  // ../esbuild/src/utilities/helpers.ts
2566
2609
  init_esm_shims();
2567
2610
  function handleSync(fn) {
@@ -2676,7 +2719,7 @@ var resolveOptions = /* @__PURE__ */ __name(async (userOptions) => {
2676
2719
  ...userOptions,
2677
2720
  tsconfig: joinPaths(projectRoot, userOptions.tsconfig ? userOptions.tsconfig.replace(projectRoot, "") : "tsconfig.json"),
2678
2721
  format: options.format || "cjs",
2679
- entryPoints: await getEntryPoints(config, projectRoot, projectJson.sourceRoot, userOptions.entry ?? "./src/index.ts", userOptions.emitOnAll === true),
2722
+ entryPoints: await getEntryPoints(config, projectRoot, projectJson.sourceRoot, userOptions.entry ?? "./src/index.ts", false),
2680
2723
  outdir: userOptions.outputPath || joinPaths("dist", projectRoot),
2681
2724
  distDir: userOptions.distDir || "dist",
2682
2725
  plugins: [],
@@ -2691,7 +2734,6 @@ var resolveOptions = /* @__PURE__ */ __name(async (userOptions) => {
2691
2734
  metafile: userOptions.metafile !== false,
2692
2735
  generatePackageJson: userOptions.generatePackageJson !== false,
2693
2736
  clean: userOptions.clean !== false,
2694
- emitOnAll: userOptions.emitOnAll === true,
2695
2737
  assets: userOptions.assets ?? [],
2696
2738
  injectShims: userOptions.injectShims !== true,
2697
2739
  bundle: userOptions.bundle !== false,
@@ -2758,19 +2800,13 @@ async function generatePackageJson(context2) {
2758
2800
  packageJson.exports ??= {};
2759
2801
  packageJson.exports["./package.json"] ??= "./package.json";
2760
2802
  packageJson.exports["."] ??= `.${context2.options.distDir ? `/${context2.options.distDir}` : ""}/index.js`;
2761
- let entryPoints = [
2803
+ const entryPoints = [
2762
2804
  {
2763
2805
  in: "./src/index.ts",
2764
2806
  out: "./src/index.ts"
2765
2807
  }
2766
2808
  ];
2767
2809
  if (context2.options.entryPoints) {
2768
- if (Array.isArray(context2.options.entryPoints)) {
2769
- entryPoints = context2.options.entryPoints.map((entryPoint) => typeof entryPoint === "string" ? {
2770
- in: entryPoint,
2771
- out: entryPoint
2772
- } : entryPoint);
2773
- }
2774
2810
  for (const entryPoint of entryPoints) {
2775
2811
  const split = entryPoint.out.split(".");
2776
2812
  split.pop();
@@ -2839,7 +2875,6 @@ async function executeEsBuild(context2) {
2839
2875
  delete options.clean;
2840
2876
  delete options.debug;
2841
2877
  delete options.generatePackageJson;
2842
- delete options.emitOnAll;
2843
2878
  delete options.distDir;
2844
2879
  delete options.includeSrc;
2845
2880
  delete options.verbose;
@@ -2852,7 +2887,10 @@ async function executeEsBuild(context2) {
2852
2887
  delete options.injectShims;
2853
2888
  delete options.external;
2854
2889
  writeTrace(`Run esbuild (${context2.options.name}) with the following options:
2855
- ${formatLogMessage(options)}`, context2.options.config);
2890
+ ${formatLogMessage({
2891
+ ...options,
2892
+ define: "<Hidden>"
2893
+ })}`, context2.options.config);
2856
2894
  const result = await esbuild2.build(options);
2857
2895
  await esbuild2.stop();
2858
2896
  if (result.metafile) {
@@ -1,3 +1,3 @@
1
- export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-7riJfK5Q.mjs';
1
+ export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-C8HQYf7T.mjs';
2
2
  import '@nx/devkit';
3
3
  import 'zod';
@@ -1,3 +1,3 @@
1
- export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-7riJfK5Q.js';
1
+ export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-C8HQYf7T.js';
2
2
  import '@nx/devkit';
3
3
  import 'zod';
@@ -1,9 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('./chunk-3Y6AMHJ5.js');
2
2
 
3
3
 
4
- var _chunkIHAOUZIDjs = require('./chunk-IHAOUZID.js');
4
+ var _chunkJHKTV4AJjs = require('./chunk-JHKTV4AJ.js');
5
5
  require('./chunk-3DQG66DJ.js');
6
6
  require('./chunk-WTMG7MTK.js');
7
7
 
8
8
 
9
- exports.initGeneratorFn = _chunkIHAOUZIDjs.initGeneratorFn;
9
+ exports.initGeneratorFn = _chunkJHKTV4AJjs.initGeneratorFn;
@@ -1,7 +1,7 @@
1
1
  import "./chunk-M432POFH.mjs";
2
2
  import {
3
3
  initGeneratorFn
4
- } from "./chunk-QHXRKXW6.mjs";
4
+ } from "./chunk-WCN64HFB.mjs";
5
5
  import "./chunk-TTG4YCRZ.mjs";
6
6
  import "./chunk-MC42JFGZ.mjs";
7
7
  export {
@@ -64,6 +64,16 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
64
64
  slack?: string | undefined;
65
65
  medium?: string | undefined;
66
66
  }>;
67
+ error: z.ZodObject<{
68
+ codesFile: z.ZodDefault<z.ZodString>;
69
+ url: z.ZodOptional<z.ZodString>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ codesFile: string;
72
+ url?: string | undefined;
73
+ }, {
74
+ codesFile?: string | undefined;
75
+ url?: string | undefined;
76
+ }>;
67
77
  mode: z.ZodDefault<z.ZodEnum<["development", "staging", "production"]>>;
68
78
  workspaceRoot: z.ZodDefault<z.ZodString>;
69
79
  externalPackagePatterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
@@ -857,6 +867,10 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
857
867
  slack: string;
858
868
  medium: string;
859
869
  };
870
+ error: {
871
+ codesFile: string;
872
+ url?: string | undefined;
873
+ };
860
874
  mode: "development" | "staging" | "production";
861
875
  workspaceRoot: string;
862
876
  externalPackagePatterns: string[];
@@ -872,7 +886,7 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
872
886
  packageManager: "npm" | "yarn" | "pnpm" | "bun";
873
887
  timezone: string;
874
888
  locale: string;
875
- logLevel: "success" | "info" | "fatal" | "silent" | "error" | "warn" | "debug" | "trace" | "all";
889
+ logLevel: "success" | "info" | "fatal" | "error" | "silent" | "warn" | "debug" | "trace" | "all";
876
890
  registry: {
877
891
  github?: string | undefined;
878
892
  npm?: string | undefined;
@@ -1054,6 +1068,10 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
1054
1068
  slack?: string | undefined;
1055
1069
  medium?: string | undefined;
1056
1070
  };
1071
+ error: {
1072
+ codesFile?: string | undefined;
1073
+ url?: string | undefined;
1074
+ };
1057
1075
  directories: {
1058
1076
  cache?: string | undefined;
1059
1077
  data?: string | undefined;
@@ -1230,7 +1248,7 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
1230
1248
  packageManager?: "npm" | "yarn" | "pnpm" | "bun" | undefined;
1231
1249
  timezone?: string | undefined;
1232
1250
  locale?: string | undefined;
1233
- logLevel?: "success" | "info" | "fatal" | "silent" | "error" | "warn" | "debug" | "trace" | "all" | undefined;
1251
+ logLevel?: "success" | "info" | "fatal" | "error" | "silent" | "warn" | "debug" | "trace" | "all" | undefined;
1234
1252
  skipConfigLogging?: boolean | undefined;
1235
1253
  registry?: {
1236
1254
  github?: string | undefined;
@@ -64,6 +64,16 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
64
64
  slack?: string | undefined;
65
65
  medium?: string | undefined;
66
66
  }>;
67
+ error: z.ZodObject<{
68
+ codesFile: z.ZodDefault<z.ZodString>;
69
+ url: z.ZodOptional<z.ZodString>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ codesFile: string;
72
+ url?: string | undefined;
73
+ }, {
74
+ codesFile?: string | undefined;
75
+ url?: string | undefined;
76
+ }>;
67
77
  mode: z.ZodDefault<z.ZodEnum<["development", "staging", "production"]>>;
68
78
  workspaceRoot: z.ZodDefault<z.ZodString>;
69
79
  externalPackagePatterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
@@ -857,6 +867,10 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
857
867
  slack: string;
858
868
  medium: string;
859
869
  };
870
+ error: {
871
+ codesFile: string;
872
+ url?: string | undefined;
873
+ };
860
874
  mode: "development" | "staging" | "production";
861
875
  workspaceRoot: string;
862
876
  externalPackagePatterns: string[];
@@ -872,7 +886,7 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
872
886
  packageManager: "npm" | "yarn" | "pnpm" | "bun";
873
887
  timezone: string;
874
888
  locale: string;
875
- logLevel: "success" | "info" | "fatal" | "silent" | "error" | "warn" | "debug" | "trace" | "all";
889
+ logLevel: "success" | "info" | "fatal" | "error" | "silent" | "warn" | "debug" | "trace" | "all";
876
890
  registry: {
877
891
  github?: string | undefined;
878
892
  npm?: string | undefined;
@@ -1054,6 +1068,10 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
1054
1068
  slack?: string | undefined;
1055
1069
  medium?: string | undefined;
1056
1070
  };
1071
+ error: {
1072
+ codesFile?: string | undefined;
1073
+ url?: string | undefined;
1074
+ };
1057
1075
  directories: {
1058
1076
  cache?: string | undefined;
1059
1077
  data?: string | undefined;
@@ -1230,7 +1248,7 @@ declare const stormWorkspaceConfigSchema: z.ZodObject<{
1230
1248
  packageManager?: "npm" | "yarn" | "pnpm" | "bun" | undefined;
1231
1249
  timezone?: string | undefined;
1232
1250
  locale?: string | undefined;
1233
- logLevel?: "success" | "info" | "fatal" | "silent" | "error" | "warn" | "debug" | "trace" | "all" | undefined;
1251
+ logLevel?: "success" | "info" | "fatal" | "error" | "silent" | "warn" | "debug" | "trace" | "all" | undefined;
1234
1252
  skipConfigLogging?: boolean | undefined;
1235
1253
  registry?: {
1236
1254
  github?: string | undefined;
package/dist/index.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-7riJfK5Q.mjs';
1
+ export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-C8HQYf7T.mjs';
2
2
  import '@nx/devkit';
3
3
  import 'zod';
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-7riJfK5Q.js';
1
+ export { I as InitGeneratorSchema, i as initGeneratorFn } from './index-C8HQYf7T.js';
2
2
  import '@nx/devkit';
3
3
  import 'zod';
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  var _chunkZ2UXMCUYjs = require('./chunk-Z2UXMCUY.js');
5
5
 
6
6
 
7
- var _chunkIHAOUZIDjs = require('./chunk-IHAOUZID.js');
7
+ var _chunkJHKTV4AJjs = require('./chunk-JHKTV4AJ.js');
8
8
  require('./chunk-3DQG66DJ.js');
9
9
 
10
10
 
@@ -16,10 +16,10 @@ var _chunkWTMG7MTKjs = require('./chunk-WTMG7MTK.js');
16
16
  // index.ts
17
17
  var index_exports = {};
18
18
  _chunkWTMG7MTKjs.__export.call(void 0, index_exports, {
19
- initGeneratorFn: () => _chunkIHAOUZIDjs.initGeneratorFn
19
+ initGeneratorFn: () => _chunkJHKTV4AJjs.initGeneratorFn
20
20
  });
21
21
  _chunkWTMG7MTKjs.init_cjs_shims.call(void 0, );
22
22
  _chunkWTMG7MTKjs.__reExport.call(void 0, index_exports, _chunkWTMG7MTKjs.__toESM.call(void 0, _chunkZ2UXMCUYjs.require_components.call(void 0, )));
23
23
 
24
24
 
25
- exports.initGeneratorFn = _chunkIHAOUZIDjs.initGeneratorFn;
25
+ exports.initGeneratorFn = _chunkJHKTV4AJjs.initGeneratorFn;
package/dist/index.mjs CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-WXKORI6N.mjs";
5
5
  import {
6
6
  initGeneratorFn
7
- } from "./chunk-QHXRKXW6.mjs";
7
+ } from "./chunk-WCN64HFB.mjs";
8
8
  import "./chunk-TTG4YCRZ.mjs";
9
9
  import {
10
10
  __export,
@@ -1,3 +1,3 @@
1
1
  import '@nx/devkit';
2
- export { _ as default, i as initGeneratorFn } from '../../../index-7riJfK5Q.mjs';
2
+ export { _ as default, i as initGeneratorFn } from '../../../index-C8HQYf7T.mjs';
3
3
  import 'zod';
@@ -1,3 +1,3 @@
1
1
  import '@nx/devkit';
2
- export { _ as default, i as initGeneratorFn } from '../../../index-7riJfK5Q.js';
2
+ export { _ as default, i as initGeneratorFn } from '../../../index-C8HQYf7T.js';
3
3
  import 'zod';
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkIHAOUZIDjs = require('../../../chunk-IHAOUZID.js');
4
+ var _chunkJHKTV4AJjs = require('../../../chunk-JHKTV4AJ.js');
5
5
  require('../../../chunk-3DQG66DJ.js');
6
6
  require('../../../chunk-WTMG7MTK.js');
7
7
 
8
8
 
9
9
 
10
- exports.default = _chunkIHAOUZIDjs.generator_default; exports.initGeneratorFn = _chunkIHAOUZIDjs.initGeneratorFn;
10
+ exports.default = _chunkJHKTV4AJjs.generator_default; exports.initGeneratorFn = _chunkJHKTV4AJjs.initGeneratorFn;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generator_default,
3
3
  initGeneratorFn
4
- } from "../../../chunk-QHXRKXW6.mjs";
4
+ } from "../../../chunk-WCN64HFB.mjs";
5
5
  import "../../../chunk-TTG4YCRZ.mjs";
6
6
  import "../../../chunk-MC42JFGZ.mjs";
7
7
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storm-software/projen",
3
- "version": "0.9.36",
3
+ "version": "0.9.38",
4
4
  "type": "commonjs",
5
5
  "description": "Tools for managing Projen configuration automation within a Nx workspace.",
6
6
  "repository": {