create-krispya 0.16.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs CHANGED
@@ -9,7 +9,7 @@ const node_module = require('node:module');
9
9
  const node_path = require('node:path');
10
10
  const node_process = require('node:process');
11
11
  const undici = require('undici');
12
- const workspace = require('./shared/create-krispya.D7X3ZrTg.cjs');
12
+ const workspace = require('./shared/create-krispya.C0eXGXA9.cjs');
13
13
  const promises$1 = require('fs/promises');
14
14
  const fs = require('fs');
15
15
  const path = require('path');
@@ -1109,7 +1109,7 @@ async function handleFixCommand(options) {
1109
1109
  };
1110
1110
  files["biome.json"] = {
1111
1111
  type: "text",
1112
- content: JSON.stringify(biomeConfig, null, 2)
1112
+ content: workspace.renderJson(biomeConfig)
1113
1113
  };
1114
1114
  }
1115
1115
  for (const [filePath, file] of Object.entries(files)) {
@@ -1342,7 +1342,7 @@ async function planExpectedFiles(config) {
1342
1342
  };
1343
1343
  rootConfig["biome.json"] = {
1344
1344
  type: "text",
1345
- content: JSON.stringify(biomeConfig, null, 2)
1345
+ content: workspace.renderJson(biomeConfig)
1346
1346
  };
1347
1347
  }
1348
1348
  return {
@@ -1479,6 +1479,60 @@ function fileContentsEqual(filePath, currentContent, newContent) {
1479
1479
  }
1480
1480
  return currentContent === newContent;
1481
1481
  }
1482
+ function compareTextFileWithDisk(filePath, currentContent, expectedContent) {
1483
+ if (filePath === ".gitignore") {
1484
+ const merged = workspace.mergeGitignoreContent(currentContent, workspace.detectGitignoreVariant(expectedContent));
1485
+ if (fileContentsEqual(filePath, currentContent, merged.content)) {
1486
+ return {
1487
+ path: filePath,
1488
+ status: "unchanged",
1489
+ currentContent,
1490
+ newContent: currentContent,
1491
+ mergeSafe: merged.mergeSafe
1492
+ };
1493
+ }
1494
+ return {
1495
+ path: filePath,
1496
+ status: "modified",
1497
+ currentContent,
1498
+ newContent: merged.content,
1499
+ mergeSafe: merged.mergeSafe
1500
+ };
1501
+ }
1502
+ if (workspace.isManagedAiFilePath(filePath)) {
1503
+ const merged = workspace.mergeAiFileContent(currentContent, expectedContent);
1504
+ if (fileContentsEqual(filePath, currentContent, merged.content)) {
1505
+ return {
1506
+ path: filePath,
1507
+ status: "unchanged",
1508
+ currentContent,
1509
+ newContent: currentContent,
1510
+ mergeSafe: merged.mergeSafe
1511
+ };
1512
+ }
1513
+ return {
1514
+ path: filePath,
1515
+ status: "modified",
1516
+ currentContent,
1517
+ newContent: merged.content,
1518
+ mergeSafe: merged.mergeSafe
1519
+ };
1520
+ }
1521
+ if (fileContentsEqual(filePath, currentContent, expectedContent)) {
1522
+ return {
1523
+ path: filePath,
1524
+ status: "unchanged",
1525
+ currentContent,
1526
+ newContent: currentContent
1527
+ };
1528
+ }
1529
+ return {
1530
+ path: filePath,
1531
+ status: "modified",
1532
+ currentContent,
1533
+ newContent: expectedContent
1534
+ };
1535
+ }
1482
1536
  async function compareWithDisk(expected, root) {
1483
1537
  const categoryLabels = {
1484
1538
  "ai-files": "AI Files",
@@ -1500,21 +1554,7 @@ async function compareWithDisk(expected, root) {
1500
1554
  const newContent = file.content;
1501
1555
  if (await fileExists(fullPath)) {
1502
1556
  const currentContent = await promises$1.readFile(fullPath, "utf-8");
1503
- if (fileContentsEqual(filePath, currentContent, newContent)) {
1504
- changes.push({
1505
- path: filePath,
1506
- status: "unchanged",
1507
- currentContent,
1508
- newContent
1509
- });
1510
- } else {
1511
- changes.push({
1512
- path: filePath,
1513
- status: "modified",
1514
- currentContent,
1515
- newContent
1516
- });
1517
- }
1557
+ changes.push(compareTextFileWithDisk(filePath, currentContent, newContent));
1518
1558
  } else {
1519
1559
  changes.push({
1520
1560
  path: filePath,
@@ -1539,13 +1579,13 @@ async function compareWithDisk(expected, root) {
1539
1579
  category: "ai-files-update",
1540
1580
  label: categoryLabels["ai-files-update"],
1541
1581
  changes: modifiedAiFiles,
1542
- hasUserModifications: true
1582
+ hasUserModifications: modifiedAiFiles.some((change) => !change.mergeSafe)
1543
1583
  });
1544
1584
  }
1545
1585
  continue;
1546
1586
  }
1547
1587
  if (changes.length === 0) continue;
1548
- const hasUserModifications = changes.some((c) => c.status === "modified");
1588
+ const hasUserModifications = changes.some((c) => c.status === "modified" && !c.mergeSafe);
1549
1589
  categories.push({
1550
1590
  category,
1551
1591
  label: categoryLabels[category],
@@ -1710,8 +1750,7 @@ async function getPackageJsonScriptUpdates(root, config) {
1710
1750
  if (Object.keys(nextDevDependencies).length > 0 || pkg.devDependencies != null) {
1711
1751
  nextPackageJson.devDependencies = nextDevDependencies;
1712
1752
  }
1713
- const newContent = `${JSON.stringify(nextPackageJson, null, 2)}
1714
- `;
1753
+ const newContent = workspace.renderJson(nextPackageJson, { inlineArrays: false });
1715
1754
  return [
1716
1755
  {
1717
1756
  path: "package.json",
@@ -1751,8 +1790,7 @@ async function getPackageManagerConfigUpdates(root, config) {
1751
1790
  path: "package.json",
1752
1791
  status: "modified",
1753
1792
  currentContent,
1754
- newContent: `${JSON.stringify(nextPackageJson, null, 2)}
1755
- `
1793
+ newContent: workspace.renderJson(nextPackageJson, { inlineArrays: false })
1756
1794
  }
1757
1795
  ];
1758
1796
  }
@@ -1769,8 +1807,7 @@ function planSinglePackageOxlintConfig(config) {
1769
1807
  return {
1770
1808
  path,
1771
1809
  status: "added",
1772
- newContent: `${JSON.stringify(oxlintConfig, null, 2)}
1773
- `
1810
+ newContent: workspace.renderJson(oxlintConfig)
1774
1811
  };
1775
1812
  }
1776
1813
  async function getOxlintConfigReplacementUpdates(root, config) {
@@ -1972,10 +2009,12 @@ const UPDATE_CATEGORY_ORDER = [
1972
2009
  function isMergeUpdateCategory(category) {
1973
2010
  return category === "workspace-config" || category === "package-json";
1974
2011
  }
1975
- function getUpdateHint(category, status) {
1976
- if (status === "added") return "new file";
1977
- if (category === "package-json") return "merge update";
1978
- if (category === "workspace-config") return "merge update";
2012
+ function isMergeSafeChange(category, change) {
2013
+ return isMergeUpdateCategory(category) || change.mergeSafe === true;
2014
+ }
2015
+ function getUpdateHint(category, change) {
2016
+ if (change.status === "added") return "new file";
2017
+ if (isMergeSafeChange(category, change)) return "merge update";
1979
2018
  return "changed; overwrites if selected";
1980
2019
  }
1981
2020
  function isSelectableFileChange(change) {
@@ -1983,7 +2022,7 @@ function isSelectableFileChange(change) {
1983
2022
  }
1984
2023
  function getInitialUpdateSelections(category) {
1985
2024
  return category.changes.filter(
1986
- (change) => change.status === "added" || change.status === "modified" && isMergeUpdateCategory(category.category)
2025
+ (change) => change.status === "added" || change.status === "modified" && isMergeSafeChange(category.category, change)
1987
2026
  ).map((change) => change.path);
1988
2027
  }
1989
2028
  async function promptForUpdateSelections(category) {
@@ -1993,7 +2032,7 @@ async function promptForUpdateSelections(category) {
1993
2032
  options: selectableChanges.map((change) => ({
1994
2033
  value: change.path,
1995
2034
  label: change.path,
1996
- hint: getUpdateHint(category.category, change.status)
2035
+ hint: getUpdateHint(category.category, change)
1997
2036
  })),
1998
2037
  initialValues: getInitialUpdateSelections(category),
1999
2038
  required: false
@@ -2272,8 +2311,11 @@ async function processUpdateCategory(category, projectRoot, options) {
2272
2311
  console.log(formatFileChange(change));
2273
2312
  }
2274
2313
  console.log();
2275
- if (isMergeUpdateCategory(category.category)) {
2276
- changesToApply = [...newChanges, ...modifiedChanges];
2314
+ const mergeSafeModifiedChanges = modifiedChanges.filter(
2315
+ (change) => isMergeSafeChange(category.category, change)
2316
+ );
2317
+ if (mergeSafeModifiedChanges.length > 0) {
2318
+ changesToApply = [...newChanges, ...mergeSafeModifiedChanges];
2277
2319
  if (changesToApply.length > 0) {
2278
2320
  console.log(color__default.dim(" (--yes mode: applying merge updates)"));
2279
2321
  }
package/dist/cli.mjs CHANGED
@@ -7,7 +7,7 @@ import { createRequire } from 'node:module';
7
7
  import { resolve, join, dirname } from 'node:path';
8
8
  import { cwd } from 'node:process';
9
9
  import { fetch } from 'undici';
10
- import { g as getEngineName, a as getPackageManagerName, b as getBaseTemplate, s as shouldEnableReactCompiler, c as getLanguageFromTemplate, d as generateRandomName, e as getConfigStrategy, f as getAiPlatforms, A as ALL_AI_PLATFORMS, h as AI_PLATFORM_LABELS, i as AI_PLATFORM_HINTS, j as detectTooling, p as parsePackageManagerSpec, k as parseEngine, l as parseWorkspaceYamlContent, v as validateWorkspace, r as renderTypescriptConfigPackage, m as renderOxlintConfigPackage, n as renderEslintConfigPackage, o as renderOxfmtConfigPackage, q as renderPrettierConfigPackage, t as resolveMonorepoRootPackageVersions, u as getResolvedPackageVersion, w as renderVscodeFiles, x as renderAiFiles, y as renderVscodeFiles$1, z as renderEditorConfig, B as renderGitignore, C as toPrettierIgnoreContent, D as mergePackageJsonScripts, E as getPackageManagerProfile, F as renderPnpmWorkspaceConfig, G as renderViteConfig, H as packageJsonScripts, I as resolveDefaultPackageJsonScripts, J as formatResolvedPackageVersion, K as getSemverMajorString, L as formatPackageManager, M as renderOxlintConfig, N as resolvePackageManager, O as getSemverMajor, P as compareNumericSemver, Q as getPackageDirectoryName, R as planProject, S as resolveProjectPlanInput, T as validatePackageName, U as clearConfig, V as getConfigPath, W as resolveWorkspacePlanInput, X as planWorkspace } from './shared/create-krispya.DV9KI0bg.mjs';
10
+ import { g as getEngineName, a as getPackageManagerName, b as getBaseTemplate, s as shouldEnableReactCompiler, c as getLanguageFromTemplate, d as generateRandomName, e as getConfigStrategy, f as getAiPlatforms, A as ALL_AI_PLATFORMS, h as AI_PLATFORM_LABELS, i as AI_PLATFORM_HINTS, j as detectTooling, p as parsePackageManagerSpec, k as parseEngine, l as parseWorkspaceYamlContent, v as validateWorkspace, r as renderTypescriptConfigPackage, m as renderOxlintConfigPackage, n as renderEslintConfigPackage, o as renderOxfmtConfigPackage, q as renderPrettierConfigPackage, t as resolveMonorepoRootPackageVersions, u as getResolvedPackageVersion, w as renderJson, x as renderVscodeFiles, y as renderAiFiles, z as renderVscodeFiles$1, B as renderEditorConfig, C as renderGitignore, D as toPrettierIgnoreContent, E as mergePackageJsonScripts, F as getPackageManagerProfile, G as renderPnpmWorkspaceConfig, H as renderViteConfig, I as mergeGitignoreContent, J as detectGitignoreVariant, K as isManagedAiFilePath, L as mergeAiFileContent, M as packageJsonScripts, N as resolveDefaultPackageJsonScripts, O as formatResolvedPackageVersion, P as getSemverMajorString, Q as formatPackageManager, R as renderOxlintConfig, S as resolvePackageManager, T as getSemverMajor, U as compareNumericSemver, V as getPackageDirectoryName, W as planProject, X as resolveProjectPlanInput, Y as validatePackageName, Z as clearConfig, _ as getConfigPath, $ as resolveWorkspacePlanInput, a0 as planWorkspace } from './shared/create-krispya.DevK9Jek.mjs';
11
11
  import { readFile as readFile$1, mkdir as mkdir$1, writeFile as writeFile$1, access as access$1 } from 'fs/promises';
12
12
  import { constants as constants$1 } from 'fs';
13
13
  import { join as join$1, dirname as dirname$1 } from 'path';
@@ -1089,7 +1089,7 @@ async function handleFixCommand(options) {
1089
1089
  };
1090
1090
  files["biome.json"] = {
1091
1091
  type: "text",
1092
- content: JSON.stringify(biomeConfig, null, 2)
1092
+ content: renderJson(biomeConfig)
1093
1093
  };
1094
1094
  }
1095
1095
  for (const [filePath, file] of Object.entries(files)) {
@@ -1322,7 +1322,7 @@ async function planExpectedFiles(config) {
1322
1322
  };
1323
1323
  rootConfig["biome.json"] = {
1324
1324
  type: "text",
1325
- content: JSON.stringify(biomeConfig, null, 2)
1325
+ content: renderJson(biomeConfig)
1326
1326
  };
1327
1327
  }
1328
1328
  return {
@@ -1459,6 +1459,60 @@ function fileContentsEqual(filePath, currentContent, newContent) {
1459
1459
  }
1460
1460
  return currentContent === newContent;
1461
1461
  }
1462
+ function compareTextFileWithDisk(filePath, currentContent, expectedContent) {
1463
+ if (filePath === ".gitignore") {
1464
+ const merged = mergeGitignoreContent(currentContent, detectGitignoreVariant(expectedContent));
1465
+ if (fileContentsEqual(filePath, currentContent, merged.content)) {
1466
+ return {
1467
+ path: filePath,
1468
+ status: "unchanged",
1469
+ currentContent,
1470
+ newContent: currentContent,
1471
+ mergeSafe: merged.mergeSafe
1472
+ };
1473
+ }
1474
+ return {
1475
+ path: filePath,
1476
+ status: "modified",
1477
+ currentContent,
1478
+ newContent: merged.content,
1479
+ mergeSafe: merged.mergeSafe
1480
+ };
1481
+ }
1482
+ if (isManagedAiFilePath(filePath)) {
1483
+ const merged = mergeAiFileContent(currentContent, expectedContent);
1484
+ if (fileContentsEqual(filePath, currentContent, merged.content)) {
1485
+ return {
1486
+ path: filePath,
1487
+ status: "unchanged",
1488
+ currentContent,
1489
+ newContent: currentContent,
1490
+ mergeSafe: merged.mergeSafe
1491
+ };
1492
+ }
1493
+ return {
1494
+ path: filePath,
1495
+ status: "modified",
1496
+ currentContent,
1497
+ newContent: merged.content,
1498
+ mergeSafe: merged.mergeSafe
1499
+ };
1500
+ }
1501
+ if (fileContentsEqual(filePath, currentContent, expectedContent)) {
1502
+ return {
1503
+ path: filePath,
1504
+ status: "unchanged",
1505
+ currentContent,
1506
+ newContent: currentContent
1507
+ };
1508
+ }
1509
+ return {
1510
+ path: filePath,
1511
+ status: "modified",
1512
+ currentContent,
1513
+ newContent: expectedContent
1514
+ };
1515
+ }
1462
1516
  async function compareWithDisk(expected, root) {
1463
1517
  const categoryLabels = {
1464
1518
  "ai-files": "AI Files",
@@ -1480,21 +1534,7 @@ async function compareWithDisk(expected, root) {
1480
1534
  const newContent = file.content;
1481
1535
  if (await fileExists(fullPath)) {
1482
1536
  const currentContent = await readFile$1(fullPath, "utf-8");
1483
- if (fileContentsEqual(filePath, currentContent, newContent)) {
1484
- changes.push({
1485
- path: filePath,
1486
- status: "unchanged",
1487
- currentContent,
1488
- newContent
1489
- });
1490
- } else {
1491
- changes.push({
1492
- path: filePath,
1493
- status: "modified",
1494
- currentContent,
1495
- newContent
1496
- });
1497
- }
1537
+ changes.push(compareTextFileWithDisk(filePath, currentContent, newContent));
1498
1538
  } else {
1499
1539
  changes.push({
1500
1540
  path: filePath,
@@ -1519,13 +1559,13 @@ async function compareWithDisk(expected, root) {
1519
1559
  category: "ai-files-update",
1520
1560
  label: categoryLabels["ai-files-update"],
1521
1561
  changes: modifiedAiFiles,
1522
- hasUserModifications: true
1562
+ hasUserModifications: modifiedAiFiles.some((change) => !change.mergeSafe)
1523
1563
  });
1524
1564
  }
1525
1565
  continue;
1526
1566
  }
1527
1567
  if (changes.length === 0) continue;
1528
- const hasUserModifications = changes.some((c) => c.status === "modified");
1568
+ const hasUserModifications = changes.some((c) => c.status === "modified" && !c.mergeSafe);
1529
1569
  categories.push({
1530
1570
  category,
1531
1571
  label: categoryLabels[category],
@@ -1690,8 +1730,7 @@ async function getPackageJsonScriptUpdates(root, config) {
1690
1730
  if (Object.keys(nextDevDependencies).length > 0 || pkg.devDependencies != null) {
1691
1731
  nextPackageJson.devDependencies = nextDevDependencies;
1692
1732
  }
1693
- const newContent = `${JSON.stringify(nextPackageJson, null, 2)}
1694
- `;
1733
+ const newContent = renderJson(nextPackageJson, { inlineArrays: false });
1695
1734
  return [
1696
1735
  {
1697
1736
  path: "package.json",
@@ -1731,8 +1770,7 @@ async function getPackageManagerConfigUpdates(root, config) {
1731
1770
  path: "package.json",
1732
1771
  status: "modified",
1733
1772
  currentContent,
1734
- newContent: `${JSON.stringify(nextPackageJson, null, 2)}
1735
- `
1773
+ newContent: renderJson(nextPackageJson, { inlineArrays: false })
1736
1774
  }
1737
1775
  ];
1738
1776
  }
@@ -1749,8 +1787,7 @@ function planSinglePackageOxlintConfig(config) {
1749
1787
  return {
1750
1788
  path,
1751
1789
  status: "added",
1752
- newContent: `${JSON.stringify(oxlintConfig, null, 2)}
1753
- `
1790
+ newContent: renderJson(oxlintConfig)
1754
1791
  };
1755
1792
  }
1756
1793
  async function getOxlintConfigReplacementUpdates(root, config) {
@@ -1952,10 +1989,12 @@ const UPDATE_CATEGORY_ORDER = [
1952
1989
  function isMergeUpdateCategory(category) {
1953
1990
  return category === "workspace-config" || category === "package-json";
1954
1991
  }
1955
- function getUpdateHint(category, status) {
1956
- if (status === "added") return "new file";
1957
- if (category === "package-json") return "merge update";
1958
- if (category === "workspace-config") return "merge update";
1992
+ function isMergeSafeChange(category, change) {
1993
+ return isMergeUpdateCategory(category) || change.mergeSafe === true;
1994
+ }
1995
+ function getUpdateHint(category, change) {
1996
+ if (change.status === "added") return "new file";
1997
+ if (isMergeSafeChange(category, change)) return "merge update";
1959
1998
  return "changed; overwrites if selected";
1960
1999
  }
1961
2000
  function isSelectableFileChange(change) {
@@ -1963,7 +2002,7 @@ function isSelectableFileChange(change) {
1963
2002
  }
1964
2003
  function getInitialUpdateSelections(category) {
1965
2004
  return category.changes.filter(
1966
- (change) => change.status === "added" || change.status === "modified" && isMergeUpdateCategory(category.category)
2005
+ (change) => change.status === "added" || change.status === "modified" && isMergeSafeChange(category.category, change)
1967
2006
  ).map((change) => change.path);
1968
2007
  }
1969
2008
  async function promptForUpdateSelections(category) {
@@ -1973,7 +2012,7 @@ async function promptForUpdateSelections(category) {
1973
2012
  options: selectableChanges.map((change) => ({
1974
2013
  value: change.path,
1975
2014
  label: change.path,
1976
- hint: getUpdateHint(category.category, change.status)
2015
+ hint: getUpdateHint(category.category, change)
1977
2016
  })),
1978
2017
  initialValues: getInitialUpdateSelections(category),
1979
2018
  required: false
@@ -2252,8 +2291,11 @@ async function processUpdateCategory(category, projectRoot, options) {
2252
2291
  console.log(formatFileChange(change));
2253
2292
  }
2254
2293
  console.log();
2255
- if (isMergeUpdateCategory(category.category)) {
2256
- changesToApply = [...newChanges, ...modifiedChanges];
2294
+ const mergeSafeModifiedChanges = modifiedChanges.filter(
2295
+ (change) => isMergeSafeChange(category.category, change)
2296
+ );
2297
+ if (mergeSafeModifiedChanges.length > 0) {
2298
+ changesToApply = [...newChanges, ...mergeSafeModifiedChanges];
2257
2299
  if (changesToApply.length > 0) {
2258
2300
  console.log(color.dim(" (--yes mode: applying merge updates)"));
2259
2301
  }
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const workspace = require('./shared/create-krispya.D7X3ZrTg.cjs');
3
+ const workspace = require('./shared/create-krispya.C0eXGXA9.cjs');
4
4
  require('fs/promises');
5
5
  require('fs');
6
6
  require('path');
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- export { Y as DEFAULT_MINIMUM_RELEASE_AGE_MINUTES, Z as assignResolvedPackageVersion, U as clearConfig, P as compareNumericSemver, j as detectTooling, _ as formatEngine, $ as formatNodeTypesVersion, L as formatPackageManager, J as formatResolvedPackageVersion, d as generateRandomName, f as getAiPlatforms, b as getBaseTemplate, V as getConfigPath, e as getConfigStrategy, g as getEngineName, a0 as getEngineSpec, c as getLanguageFromTemplate, a1 as getLatestNodeVersion, a2 as getLatestNpmCliVersion, a3 as getLatestNpmMajorVersion, a4 as getLatestNpmMajorVersionAtOrBelow, a5 as getLatestNpmVersion, a6 as getLatestPnpmVersion, a7 as getLatestYarnVersion, Q as getPackageDirectoryName, a8 as getPackageFallbackVersion, a as getPackageManagerName, E as getPackageManagerProfile, a9 as getPackageManagerSpec, u as getResolvedPackageVersion, O as getSemverMajor, K as getSemverMajorString, aa as isPackageManagerName, ab as materializeJobs, ac as merge, k as parseEngine, p as parsePackageManagerSpec, l as parseWorkspaceYamlContent, R as planProject, X as planWorkspace, ad as projectPlanInputToOptions, F as renderPnpmWorkspaceConfig, ae as resolveEngine, t as resolveMonorepoRootPackageVersions, N as resolvePackageManager, af as resolvePackageManagerProfile, ag as resolvePackageVersions, ah as resolveProjectFacts, ai as resolveProjectPackageVersions, S as resolveProjectPlanInput, aj as resolveWorkspaceFacts, W as resolveWorkspacePlanInput, ak as setAiPlatforms, al as setConfigStrategy, s as shouldEnableReactCompiler, am as unique, T as validatePackageName, v as validateWorkspace, an as workspacePlanInputToMonorepoParams } from './shared/create-krispya.DV9KI0bg.mjs';
1
+ export { a1 as DEFAULT_MINIMUM_RELEASE_AGE_MINUTES, a2 as assignResolvedPackageVersion, Z as clearConfig, U as compareNumericSemver, j as detectTooling, a3 as formatEngine, a4 as formatNodeTypesVersion, Q as formatPackageManager, O as formatResolvedPackageVersion, d as generateRandomName, f as getAiPlatforms, b as getBaseTemplate, _ as getConfigPath, e as getConfigStrategy, g as getEngineName, a5 as getEngineSpec, c as getLanguageFromTemplate, a6 as getLatestNodeVersion, a7 as getLatestNpmCliVersion, a8 as getLatestNpmMajorVersion, a9 as getLatestNpmMajorVersionAtOrBelow, aa as getLatestNpmVersion, ab as getLatestPnpmVersion, ac as getLatestYarnVersion, V as getPackageDirectoryName, ad as getPackageFallbackVersion, a as getPackageManagerName, F as getPackageManagerProfile, ae as getPackageManagerSpec, u as getResolvedPackageVersion, T as getSemverMajor, P as getSemverMajorString, af as isPackageManagerName, ag as materializeJobs, ah as merge, k as parseEngine, p as parsePackageManagerSpec, l as parseWorkspaceYamlContent, W as planProject, a0 as planWorkspace, ai as projectPlanInputToOptions, G as renderPnpmWorkspaceConfig, aj as resolveEngine, t as resolveMonorepoRootPackageVersions, S as resolvePackageManager, ak as resolvePackageManagerProfile, al as resolvePackageVersions, am as resolveProjectFacts, an as resolveProjectPackageVersions, X as resolveProjectPlanInput, ao as resolveWorkspaceFacts, $ as resolveWorkspacePlanInput, ap as setAiPlatforms, aq as setConfigStrategy, s as shouldEnableReactCompiler, ar as unique, Y as validatePackageName, v as validateWorkspace, as as workspacePlanInputToMonorepoParams } from './shared/create-krispya.DevK9Jek.mjs';
2
2
  import 'fs/promises';
3
3
  import 'fs';
4
4
  import 'path';