@better-fullstack/types 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist/{defaults-DdEGPWbd.d.mts → defaults-CbLlpynl.d.mts} +2 -2
  2. package/dist/defaults-CbLlpynl.d.mts.map +1 -0
  3. package/dist/defaults.d.mts +3 -3
  4. package/dist/index.d.mts +6 -6
  5. package/dist/index.d.mts.map +1 -1
  6. package/dist/index.mjs +50 -4
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/json-schema.d.mts +670 -348
  9. package/dist/json-schema.d.mts.map +1 -1
  10. package/dist/json-schema.mjs +1 -1
  11. package/dist/{schemas-BMTIauzB.d.mts → schemas-BRAokgPa.d.mts} +964 -639
  12. package/dist/schemas-BRAokgPa.d.mts.map +1 -0
  13. package/dist/{schemas-CNrFm0ld.mjs → schemas-CtieNRfz.mjs} +55 -3
  14. package/dist/schemas-CtieNRfz.mjs.map +1 -0
  15. package/dist/schemas.d.mts +2 -2
  16. package/dist/schemas.mjs +2 -2
  17. package/dist/{stack-graph-DWpdF4s0.d.mts → stack-graph-BPw9KsNm.d.mts} +3 -3
  18. package/dist/stack-graph-BPw9KsNm.d.mts.map +1 -0
  19. package/dist/{stack-graph-BqmxkJKS.mjs → stack-graph-CXTiPofQ.mjs} +97 -20
  20. package/dist/stack-graph-CXTiPofQ.mjs.map +1 -0
  21. package/dist/stack-graph.d.mts +3 -3
  22. package/dist/stack-graph.mjs +2 -2
  23. package/dist/{stack-translation-CIt0ziI4.mjs → stack-translation-B-zArJLM.mjs} +202 -23
  24. package/dist/stack-translation-B-zArJLM.mjs.map +1 -0
  25. package/dist/{stack-translation-DyfJJgeD.d.mts → stack-translation-D7KkQm8W.d.mts} +16 -6
  26. package/dist/stack-translation-D7KkQm8W.d.mts.map +1 -0
  27. package/dist/stack-translation.d.mts +4 -4
  28. package/dist/stack-translation.mjs +3 -3
  29. package/dist/{types-BUQyhJDc.d.mts → types-Br0NsnBr.d.mts} +8 -3
  30. package/dist/types-Br0NsnBr.d.mts.map +1 -0
  31. package/dist/types.d.mts +3 -3
  32. package/package.json +1 -1
  33. package/dist/defaults-DdEGPWbd.d.mts.map +0 -1
  34. package/dist/schemas-BMTIauzB.d.mts.map +0 -1
  35. package/dist/schemas-CNrFm0ld.mjs.map +0 -1
  36. package/dist/stack-graph-BqmxkJKS.mjs.map +0 -1
  37. package/dist/stack-graph-DWpdF4s0.d.mts.map +0 -1
  38. package/dist/stack-translation-CIt0ziI4.mjs.map +0 -1
  39. package/dist/stack-translation-DyfJJgeD.d.mts.map +0 -1
  40. package/dist/types-BUQyhJDc.d.mts.map +0 -1
@@ -1,5 +1,5 @@
1
- import { $i as RUST_ORM_VALUES, $n as I18N_VALUES, $r as PYTHON_CLOUD_SDK_VALUES, A as CSS_FRAMEWORK_VALUES, An as GO_REALTIME_VALUES, Ar as MOBILE_PUSH_VALUES, At as ELIXIR_TESTING_VALUES, B as DOTNET_JOB_QUEUE_VALUES, Bi as RATE_LIMIT_VALUES, Ca as SHADCN_BASE_VALUES, Cn as GO_LOGGING_VALUES, Ct as ELIXIR_JOBS_VALUES, Da as SHADCN_RADIUS_VALUES, Dn as GO_ORM_VALUES, Dr as MOBILE_LIBRARIES_VALUES, Dt as ELIXIR_ORM_VALUES, Ea as SHADCN_ICON_LIBRARY_VALUES, En as GO_OBSERVABILITY_VALUES, Er as MOBILE_DEEP_LINKING_VALUES, Et as ELIXIR_OBSERVABILITY_VALUES, G as DOTNET_TESTING_VALUES, Ga as TESTING_VALUES, Gi as RUST_CACHING_VALUES, H as DOTNET_OBSERVABILITY_VALUES, Hi as RUNTIME_VALUES, Hr as OBSERVABILITY_VALUES, I as DOTNET_API_VALUES, Ji as RUST_FRONTEND_VALUES, Jr as PYTHON_AI_VALUES, K as DOTNET_VALIDATION_VALUES, Ki as RUST_CLI_VALUES, Kr as PACKAGE_MANAGER_VALUES, L as DOTNET_AUTH_VALUES, Mn as GO_TESTING_VALUES, Mr as MOBILE_TESTING_VALUES, Mt as ELIXIR_WEB_FRAMEWORK_VALUES, N as DATABASE_SETUP_VALUES, Nn as GO_VALIDATION_VALUES, Nr as MOBILE_UI_VALUES, Nt as EMAIL_VALUES, O as CMS_VALUES, Oa as SHADCN_STYLE_VALUES, On as GO_PROTO_TOOLING_VALUES, Or as MOBILE_NAVIGATION_VALUES, Ot as ELIXIR_QUALITY_VALUES, P as DATABASE_VALUES, Pn as GO_WEB_FRAMEWORK_VALUES, Qa as VERSION_CHANNEL_VALUES, Qi as RUST_OBSERVABILITY_VALUES, Qr as PYTHON_CLI_VALUES, R as DOTNET_CACHING_VALUES, Sa as SHADCN_BASE_COLOR_VALUES, Sn as GO_DI_VALUES, St as ELIXIR_I18N_VALUES, T as CACHING_VALUES, Ta as SHADCN_FONT_VALUES, Tn as GO_MIGRATIONS_VALUES, Tt as ELIXIR_LIBRARIES_VALUES, U as DOTNET_ORM_VALUES, Ui as RUST_API_VALUES, V as DOTNET_LIBRARIES_VALUES, Vi as REALTIME_VALUES, W as DOTNET_REALTIME_VALUES, Wi as RUST_AUTH_VALUES, Wr as ORM_VALUES, Xa as VALIDATION_VALUES, Xi as RUST_LOGGING_VALUES, Xr as PYTHON_AUTH_VALUES, Ya as UI_LIBRARY_VALUES, Yi as RUST_LIBRARIES_VALUES, Yr as PYTHON_API_VALUES, Za as VECTOR_DB_VALUES, Zi as RUST_MESSAGE_QUEUE_VALUES, Zr as PYTHON_CACHING_VALUES, _n as GO_API_VALUES, _t as ELIXIR_DEPLOY_VALUES, a as ANALYTICS_VALUES, ai as PYTHON_OBSERVABILITY_VALUES, ar as JAVA_AUTH_VALUES, ba as SEARCH_VALUES, bn as GO_CLI_VALUES, bt as ELIXIR_HTTP_SERVER_VALUES, c as API_VALUES, ci as PYTHON_QUALITY_VALUES, cn as FILE_STORAGE_VALUES, cr as JAVA_LIBRARIES_VALUES, d as AUTH_VALUES, di as PYTHON_TASK_QUEUE_VALUES, dr as JAVA_TESTING_LIBRARIES_VALUES, dt as EFFECT_VALUES, ea as RUST_REALTIME_VALUES, ei as PYTHON_DATA_VALUES, fi as PYTHON_TESTING_VALUES, fr as JAVA_WEB_FRAMEWORK_VALUES, ft as ELIXIR_API_VALUES, gt as ELIXIR_CLUSTERING_VALUES, ht as ELIXIR_CACHING_VALUES, i as AI_VALUES, ii as PYTHON_MESSAGE_QUEUE_VALUES, ir as JAVA_API_VALUES, jn as GO_TEMPLATING_VALUES, jr as MOBILE_STORAGE_VALUES, jt as ELIXIR_VALIDATION_VALUES, ka as STATE_MANAGEMENT_VALUES, kn as GO_QUALITY_VALUES, kr as MOBILE_OTA_VALUES, kt as ELIXIR_REALTIME_VALUES, l as APP_PLATFORM_ADDON_VALUES, li as PYTHON_REALTIME_VALUES, ln as FILE_UPLOAD_VALUES, lr as JAVA_LOGGING_VALUES, lt as ECOMMERCE_VALUES, mi as PYTHON_WEB_FRAMEWORK_VALUES, mt as ELIXIR_AUTH_VALUES, na as RUST_WEB_FRAMEWORK_VALUES, ni as PYTHON_HTTP_CLIENT_VALUES, no as WEB_DEPLOY_VALUES, o as ANIMATION_VALUES, oi as PYTHON_ORM_VALUES, or as JAVA_BUILD_TOOL_VALUES, pi as PYTHON_VALIDATION_VALUES, pr as JOB_QUEUE_VALUES, pt as ELIXIR_APPLICATION_FRAMEWORK_VALUES, q as DOTNET_WEB_FRAMEWORK_VALUES, qi as RUST_ERROR_HANDLING_VALUES, qr as PAYMENTS_VALUES, r as AI_DOCS_VALUES, ri as PYTHON_MEDIA_VALUES, ro as WORKSPACE_SHAPE_VALUES, si as PYTHON_PACKAGE_MANAGER_VALUES, sn as FEATURE_FLAGS_VALUES, sr as JAVA_LANGUAGE_VALUES, ta as RUST_TEMPLATING_VALUES, ti as PYTHON_GRAPHQL_VALUES, tr as INTEGRATIONS_VALUES, u as ASTRO_INTEGRATION_VALUES, ui as PYTHON_SERVER_VALUES, un as FORMS_VALUES, ur as JAVA_ORM_VALUES, vn as GO_AUTH_VALUES, vt as ELIXIR_DOCUMENTATION_VALUES, wa as SHADCN_COLOR_THEME_VALUES, wn as GO_MESSAGE_QUEUE_VALUES, wr as LOGGING_VALUES, wt as ELIXIR_JSON_VALUES, xa as SERVER_DEPLOY_VALUES, xn as GO_CONFIG_VALUES, xt as ELIXIR_HTTP_VALUES, yn as GO_CACHING_VALUES, yt as ELIXIR_EMAIL_VALUES, z as DOTNET_DEPLOY_VALUES } from "./schemas-CNrFm0ld.mjs";
2
- import { E as requiresChatSdkVercelAIForExamples, S as hasTauriCompatibleFrontend, _ as UI_LIBRARY_COMPATIBILITY, a as getAddonStackPartBinding, b as hasPWACompatibleFrontend, f as parseStackPartSpecs, h as validateStackParts, i as formatStackPartSpec, m as stackPartsToLegacyProjectConfigPartial, s as getStackPartCompatibilityIssueForPart, u as legacyProjectConfigToStackParts, v as getUnsupportedWebDeployFrontend, x as hasTanStackAICompatibleFrontend } from "./stack-graph-BqmxkJKS.mjs";
1
+ import { $i as RUST_CACHING_VALUES, A as CSS_FRAMEWORK_VALUES, Aa as SHADCN_BASE_COLOR_VALUES, An as GO_OBSERVABILITY_VALUES, At as ELIXIR_OBSERVABILITY_VALUES, B as DOTNET_DEPLOY_VALUES, Br as MOBILE_TESTING_VALUES, Cn as GO_CACHING_VALUES, Ct as ELIXIR_EMAIL_VALUES, Dn as GO_LOGGING_VALUES, Dt as ELIXIR_JOBS_VALUES, En as GO_DI_VALUES, Et as ELIXIR_I18N_VALUES, F as DATABASE_VALUES, Fa as SHADCN_RADIUS_VALUES, Fn as GO_TEMPLATING_VALUES, Fr as MOBILE_LIBRARIES_VALUES, Ft as ELIXIR_VALIDATION_VALUES, G as DOTNET_ORM_VALUES, H as DOTNET_JOB_QUEUE_VALUES, Ia as SHADCN_STYLE_VALUES, In as GO_TESTING_VALUES, Ir as MOBILE_NAVIGATION_VALUES, It as ELIXIR_WEB_FRAMEWORK_VALUES, J as DOTNET_VALIDATION_VALUES, Ji as RATE_LIMIT_VALUES, K as DOTNET_REALTIME_VALUES, L as DOTNET_API_VALUES, La as STATE_MANAGEMENT_VALUES, Ln as GO_VALIDATION_VALUES, Lr as MOBILE_OTA_VALUES, Lt as EMAIL_VALUES, Ma as SHADCN_COLOR_THEME_VALUES, Mn as GO_PROTO_TOOLING_VALUES, Mr as LOGGING_VALUES, Mt as ELIXIR_QUALITY_VALUES, N as DART_MOBILE_VALUES, Na as SHADCN_FONT_VALUES, Nn as GO_QUALITY_VALUES, Nt as ELIXIR_REALTIME_VALUES, O as CMS_VALUES, Oa as SEARCH_VALUES, On as GO_MESSAGE_QUEUE_VALUES, Or as KOTLIN_MOBILE_LIBRARIES_VALUES, Ot as ELIXIR_JSON_VALUES, P as DATABASE_SETUP_VALUES, Pa as SHADCN_ICON_LIBRARY_VALUES, Pn as GO_REALTIME_VALUES, Pr as MOBILE_DEEP_LINKING_VALUES, Pt as ELIXIR_TESTING_VALUES, Qi as RUST_AUTH_VALUES, Qr as ORM_VALUES, R as DOTNET_AUTH_VALUES, Ra as SWIFT_MOBILE_VALUES, Rn as GO_WEB_FRAMEWORK_VALUES, Rr as MOBILE_PUSH_VALUES, Si as PYTHON_WEB_FRAMEWORK_VALUES, Sn as GO_AUTH_VALUES, St as ELIXIR_DOCUMENTATION_VALUES, T as CACHING_VALUES, Tn as GO_CONFIG_VALUES, Tt as ELIXIR_HTTP_VALUES, U as DOTNET_LIBRARIES_VALUES, V as DOTNET_FRONTEND_VALUES, Vr as MOBILE_UI_VALUES, W as DOTNET_OBSERVABILITY_VALUES, Xi as RUNTIME_VALUES, Xr as OBSERVABILITY_VALUES, Y as DOTNET_WEB_FRAMEWORK_VALUES, Yi as REALTIME_VALUES, Zi as RUST_API_VALUES, _i as PYTHON_REALTIME_VALUES, _r as JOB_QUEUE_VALUES, _t as ELIXIR_APPLICATION_FRAMEWORK_VALUES, a as ANALYTICS_VALUES, aa as RUST_MESSAGE_QUEUE_VALUES, ai as PYTHON_CACHING_VALUES, ao as UI_LIBRARY_VALUES, ar as INTEGRATIONS_VALUES, bi as PYTHON_TESTING_VALUES, bt as ELIXIR_CLUSTERING_VALUES, c as API_VALUES, ca as RUST_REALTIME_VALUES, ci as PYTHON_DATA_VALUES, co as VERSION_CHANNEL_VALUES, cr as JAVA_API_VALUES, d as AUTH_VALUES, di as PYTHON_MEDIA_VALUES, dn as FEATURE_FLAGS_VALUES, dr as JAVA_LANGUAGE_VALUES, ea as RUST_CLI_VALUES, ei as PACKAGE_MANAGER_VALUES, fi as PYTHON_MESSAGE_QUEUE_VALUES, fn as FILE_STORAGE_VALUES, fo as WEB_DEPLOY_VALUES, fr as JAVA_LIBRARIES_VALUES, gi as PYTHON_QUALITY_VALUES, gr as JAVA_WEB_FRAMEWORK_VALUES, gt as ELIXIR_API_VALUES, hi as PYTHON_PACKAGE_MANAGER_VALUES, hr as JAVA_TESTING_LIBRARIES_VALUES, ht as EFFECT_VALUES, i as AI_VALUES, ia as RUST_LOGGING_VALUES, ii as PYTHON_AUTH_VALUES, ja as SHADCN_BASE_VALUES, jn as GO_ORM_VALUES, jt as ELIXIR_ORM_VALUES, ka as SERVER_DEPLOY_VALUES, kn as GO_MIGRATIONS_VALUES, kr as KOTLIN_MOBILE_VALUES, kt as ELIXIR_LIBRARIES_VALUES, l as APP_PLATFORM_ADDON_VALUES, la as RUST_TEMPLATING_VALUES, li as PYTHON_GRAPHQL_VALUES, lr as JAVA_AUTH_VALUES, mi as PYTHON_ORM_VALUES, mn as FORMS_VALUES, mr as JAVA_ORM_VALUES, na as RUST_FRONTEND_VALUES, ni as PYTHON_AI_VALUES, o as ANIMATION_VALUES, oa as RUST_OBSERVABILITY_VALUES, oi as PYTHON_CLI_VALUES, oo as VALIDATION_VALUES, pi as PYTHON_OBSERVABILITY_VALUES, pn as FILE_UPLOAD_VALUES, po as WORKSPACE_SHAPE_VALUES, pr as JAVA_LOGGING_VALUES, pt as ECOMMERCE_VALUES, q as DOTNET_TESTING_VALUES, r as AI_DOCS_VALUES, ra as RUST_LIBRARIES_VALUES, ri as PYTHON_API_VALUES, rr as I18N_VALUES, sa as RUST_ORM_VALUES, si as PYTHON_CLOUD_SDK_VALUES, so as VECTOR_DB_VALUES, ta as RUST_ERROR_HANDLING_VALUES, ti as PAYMENTS_VALUES, to as TESTING_VALUES, u as ASTRO_INTEGRATION_VALUES, ua as RUST_WEB_FRAMEWORK_VALUES, ui as PYTHON_HTTP_CLIENT_VALUES, ur as JAVA_BUILD_TOOL_VALUES, vi as PYTHON_SERVER_VALUES, vt as ELIXIR_AUTH_VALUES, wn as GO_CLI_VALUES, wt as ELIXIR_HTTP_SERVER_VALUES, xi as PYTHON_VALIDATION_VALUES, xn as GO_API_VALUES, xt as ELIXIR_DEPLOY_VALUES, yi as PYTHON_TASK_QUEUE_VALUES, yt as ELIXIR_CACHING_VALUES, z as DOTNET_CACHING_VALUES, zr as MOBILE_STORAGE_VALUES } from "./schemas-CtieNRfz.mjs";
2
+ import { E as requiresChatSdkVercelAIForExamples, S as hasTauriCompatibleFrontend, _ as UI_LIBRARY_COMPATIBILITY, a as getAddonStackPartBinding, b as hasPWACompatibleFrontend, f as parseStackPartSpecs, h as validateStackParts, i as formatStackPartSpec, m as stackPartsToLegacyProjectConfigPartial, s as getStackPartCompatibilityIssueForPart, u as legacyProjectConfigToStackParts, v as getUnsupportedWebDeployFrontend, x as hasTanStackAICompatibleFrontend } from "./stack-graph-CXTiPofQ.mjs";
3
3
  import { t as createCliDefaultProjectConfigBase } from "./defaults-BzWJP6p0.mjs";
4
4
 
5
5
  //#region src/capabilities.ts
@@ -306,6 +306,10 @@ const TYPESCRIPT_CATEGORY_ORDER = [
306
306
  ];
307
307
  const REACT_NATIVE_CATEGORY_ORDER = [
308
308
  "nativeFrontend",
309
+ "kotlinMobile",
310
+ "kotlinMobileLibraries",
311
+ "swiftMobile",
312
+ "dartMobile",
309
313
  "mobileNavigation",
310
314
  "mobileUI",
311
315
  "mobileStorage",
@@ -421,6 +425,7 @@ const JAVA_CATEGORY_ORDER = [
421
425
  "install"
422
426
  ];
423
427
  const DOTNET_CATEGORY_ORDER = [
428
+ "dotnetFrontend",
424
429
  "dotnetWebFramework",
425
430
  "dotnetOrm",
426
431
  "dotnetAuth",
@@ -501,6 +506,11 @@ function getCategoryDisplayName(categoryKey) {
501
506
  backendLibraries: "Effect Services",
502
507
  rustWebFramework: "Rust Web Framework",
503
508
  rustFrontend: "Rust Frontend (WASM)",
509
+ dotnetFrontend: ".NET Frontend",
510
+ kotlinMobile: "Kotlin Mobile",
511
+ kotlinMobileLibraries: "Kotlin Mobile Libraries",
512
+ swiftMobile: "Swift Mobile",
513
+ dartMobile: "Flutter / Dart Mobile",
504
514
  rustOrm: "Rust ORM / Database",
505
515
  rustApi: "Rust API Layer",
506
516
  rustCli: "Rust CLI Tools",
@@ -700,6 +710,7 @@ const MULTI_SELECT_CATEGORIES = new Set([
700
710
  "javaLibraries",
701
711
  "javaTestingLibraries",
702
712
  "mobileLibraries",
713
+ "kotlinMobileLibraries",
703
714
  "dotnetLibraries",
704
715
  "dotnetTesting",
705
716
  "dotnetObservability",
@@ -778,6 +789,11 @@ const CATEGORY_VALUE_IDS = {
778
789
  shadcnRadius: SHADCN_RADIUS_VALUES,
779
790
  rustWebFramework: RUST_WEB_FRAMEWORK_VALUES,
780
791
  rustFrontend: RUST_FRONTEND_VALUES,
792
+ dotnetFrontend: DOTNET_FRONTEND_VALUES,
793
+ kotlinMobile: KOTLIN_MOBILE_VALUES,
794
+ kotlinMobileLibraries: KOTLIN_MOBILE_LIBRARIES_VALUES,
795
+ swiftMobile: SWIFT_MOBILE_VALUES,
796
+ dartMobile: DART_MOBILE_VALUES,
781
797
  rustOrm: RUST_ORM_VALUES,
782
798
  rustApi: RUST_API_VALUES,
783
799
  rustCli: RUST_CLI_VALUES,
@@ -1258,6 +1274,28 @@ const EXACT_LABEL_OVERRIDES = {
1258
1274
  dioxus: "Dioxus",
1259
1275
  yew: "Yew"
1260
1276
  },
1277
+ dotnetFrontend: {
1278
+ "blazor-webassembly": "Blazor WebAssembly",
1279
+ "blazor-web-app": "Blazor Web App"
1280
+ },
1281
+ kotlinMobile: {
1282
+ "jetpack-compose": "Jetpack Compose",
1283
+ "compose-multiplatform": "Compose Multiplatform"
1284
+ },
1285
+ kotlinMobileLibraries: {
1286
+ "navigation-compose": "Navigation Compose",
1287
+ voyager: "Voyager",
1288
+ koin: "Koin",
1289
+ "ktor-client": "Ktor Client",
1290
+ "kotlinx-serialization-json": "Kotlinx Serialization JSON",
1291
+ datastore: "DataStore",
1292
+ coil: "Coil",
1293
+ mockk: "MockK",
1294
+ turbine: "Turbine",
1295
+ junit5: "JUnit 5"
1296
+ },
1297
+ swiftMobile: { swiftui: "SwiftUI" },
1298
+ dartMobile: { flutter: "Flutter" },
1261
1299
  rustOrm: {
1262
1300
  "sea-orm": "SeaORM",
1263
1301
  sqlx: "SQLx",
@@ -1514,6 +1552,7 @@ const EXACT_LABEL_OVERRIDES = {
1514
1552
  },
1515
1553
  javaWebFramework: {
1516
1554
  "spring-boot": "Spring Boot",
1555
+ ktor: "Ktor",
1517
1556
  quarkus: "Quarkus",
1518
1557
  micronaut: "Micronaut"
1519
1558
  },
@@ -1881,6 +1920,11 @@ const OPTION_CATEGORY_METADATA = {
1881
1920
  shadcnRadius: buildCategoryMetadata("shadcnRadius"),
1882
1921
  rustWebFramework: buildCategoryMetadata("rustWebFramework"),
1883
1922
  rustFrontend: buildCategoryMetadata("rustFrontend"),
1923
+ dotnetFrontend: buildCategoryMetadata("dotnetFrontend"),
1924
+ kotlinMobile: buildCategoryMetadata("kotlinMobile"),
1925
+ kotlinMobileLibraries: buildCategoryMetadata("kotlinMobileLibraries"),
1926
+ swiftMobile: buildCategoryMetadata("swiftMobile"),
1927
+ dartMobile: buildCategoryMetadata("dartMobile"),
1884
1928
  rustOrm: buildCategoryMetadata("rustOrm"),
1885
1929
  rustApi: buildCategoryMetadata("rustApi"),
1886
1930
  rustCli: buildCategoryMetadata("rustCli"),
@@ -2021,7 +2065,7 @@ const KOTLIN_UNSUPPORTED_JAVA_TESTING_LIBRARIES = new Set([
2021
2065
  ]);
2022
2066
  const KOTLIN_DROPPED_JAVA_LIBRARIES = new Set(["lombok", "mapstruct"]);
2023
2067
  function getKotlinJavaIncompatibilityReason(stack) {
2024
- if (stack.javaWebFramework !== "spring-boot") return "Kotlin sources are only wired for the Spring Boot scaffold";
2068
+ if (stack.javaWebFramework !== "spring-boot" && stack.javaWebFramework !== "ktor") return "Kotlin sources are only wired for the Spring Boot and Ktor scaffolds";
2025
2069
  if (!stack.javaBuildTool || stack.javaBuildTool === "none") return "Kotlin requires Maven or Gradle";
2026
2070
  if (stack.javaOrm === "jooq" || stack.javaOrm === "mybatis") return "The Kotlin scaffold supports Spring Data JPA or no ORM (jOOQ/MyBatis sources are Java-only)";
2027
2071
  if (stack.javaApi === "grpc" || stack.javaApi === "openapi-generator") return "The Kotlin scaffold supports Spring GraphQL or no API layer (gRPC/OpenAPI codegen paths are Java-only)";
@@ -3147,6 +3191,14 @@ const analyzeStackCompatibility = (stack) => {
3147
3191
  });
3148
3192
  }
3149
3193
  }
3194
+ if ((nextStack.kotlinMobile === void 0 || nextStack.kotlinMobile === "none") && (nextStack.kotlinMobileLibraries?.length ?? 0) > 0) {
3195
+ nextStack.kotlinMobileLibraries = [];
3196
+ changed = true;
3197
+ changes.push({
3198
+ category: "kotlinMobileLibraries",
3199
+ message: "Kotlin mobile libraries cleared (no Kotlin mobile app)"
3200
+ });
3201
+ }
3150
3202
  const styledComponentsFrontends = new Set([
3151
3203
  "tanstack-router",
3152
3204
  "react-router",
@@ -3839,7 +3891,7 @@ const getDisabledReason = (currentStack, category, optionId) => {
3839
3891
  if (kotlinBlocker) return kotlinBlocker;
3840
3892
  }
3841
3893
  if (currentStack.ecosystem === "java" && currentStack.javaLanguage === "kotlin") {
3842
- if (category === "javaWebFramework" && optionId !== "spring-boot") return "Kotlin sources are only wired for the Spring Boot scaffold";
3894
+ if (category === "javaWebFramework" && optionId !== "spring-boot" && optionId !== "ktor") return "Kotlin sources are only wired for the Spring Boot and Ktor scaffolds";
3843
3895
  if (category === "javaBuildTool" && optionId === "none") return "Kotlin requires Maven or Gradle";
3844
3896
  if (category === "javaOrm" && (optionId === "jooq" || optionId === "mybatis")) return "The Kotlin scaffold supports Spring Data JPA or no ORM (jOOQ/MyBatis sources are Java-only)";
3845
3897
  if (category === "javaApi" && (optionId === "grpc" || optionId === "openapi-generator")) return "The Kotlin scaffold supports Spring GraphQL or no API layer (gRPC/OpenAPI codegen paths are Java-only)";
@@ -5846,6 +5898,11 @@ const DEFAULT_STACK_SELECTION = {
5846
5898
  yolo: "false",
5847
5899
  rustWebFramework: "axum",
5848
5900
  rustFrontend: "none",
5901
+ dotnetFrontend: "none",
5902
+ kotlinMobile: "none",
5903
+ kotlinMobileLibraries: [],
5904
+ swiftMobile: "none",
5905
+ dartMobile: "none",
5849
5906
  rustOrm: "sea-orm",
5850
5907
  rustApi: "none",
5851
5908
  rustCli: "none",
@@ -6014,6 +6071,11 @@ const STACK_SELECTION_OPTION_CATEGORY_BY_KEY = {
6014
6071
  serverDeploy: "serverDeploy",
6015
6072
  rustWebFramework: "rustWebFramework",
6016
6073
  rustFrontend: "rustFrontend",
6074
+ dotnetFrontend: "dotnetFrontend",
6075
+ kotlinMobile: "kotlinMobile",
6076
+ kotlinMobileLibraries: "kotlinMobileLibraries",
6077
+ swiftMobile: "swiftMobile",
6078
+ dartMobile: "dartMobile",
6017
6079
  rustOrm: "rustOrm",
6018
6080
  rustApi: "rustApi",
6019
6081
  rustCli: "rustCli",
@@ -6197,6 +6259,11 @@ const STACK_SELECTION_URL_KEYS = {
6197
6259
  yolo: "yolo",
6198
6260
  rustWebFramework: "rwf",
6199
6261
  rustFrontend: "rfe",
6262
+ dotnetFrontend: "dnfe",
6263
+ kotlinMobile: "km",
6264
+ kotlinMobileLibraries: "kmlib",
6265
+ swiftMobile: "sm",
6266
+ dartMobile: "dm",
6200
6267
  rustOrm: "rorm",
6201
6268
  rustApi: "rapi",
6202
6269
  rustCli: "rcli",
@@ -6449,6 +6516,10 @@ const CLI_SCALAR_CONFIG_FIELDS = [
6449
6516
  ["shadcnRadius", "shadcnRadius"],
6450
6517
  ["rustWebFramework", "rustWebFramework"],
6451
6518
  ["rustFrontend", "rustFrontend"],
6519
+ ["dotnetFrontend", "dotnetFrontend"],
6520
+ ["kotlinMobile", "kotlinMobile"],
6521
+ ["swiftMobile", "swiftMobile"],
6522
+ ["dartMobile", "dartMobile"],
6452
6523
  ["rustOrm", "rustOrm"],
6453
6524
  ["rustApi", "rustApi"],
6454
6525
  ["rustCli", "rustCli"],
@@ -6539,6 +6610,7 @@ const CLI_NON_EMPTY_ARRAY_CONFIG_FIELDS = [
6539
6610
  const CLI_DEFINED_ARRAY_CONFIG_FIELDS = [
6540
6611
  ["aiDocs", "aiDocs"],
6541
6612
  ["mobileLibraries", "mobileLibraries"],
6613
+ ["kotlinMobileLibraries", "kotlinMobileLibraries"],
6542
6614
  ["rustLibraries", "rustLibraries"],
6543
6615
  ["pythonAi", "pythonAi"],
6544
6616
  ["javaLibraries", "javaLibraries"],
@@ -6693,7 +6765,7 @@ function processCliArrayOption(options) {
6693
6765
  return options.filter((item) => item !== "none");
6694
6766
  }
6695
6767
  function toUniqueNonNoneArray(values) {
6696
- return [...new Set(withoutNone(values))];
6768
+ return [...new Set(withoutNone(values ?? []))];
6697
6769
  }
6698
6770
  function formatArrayFlag(flag, values) {
6699
6771
  return `--${flag} ${toUniqueNonNoneArray(values).join(" ") || "none"}`;
@@ -6707,7 +6779,6 @@ function formatTypeScriptAddonsFlag(selection) {
6707
6779
  if (addons.length === 0) return "--addons none";
6708
6780
  return `--addons ${toUniqueNonNoneArray(addons).join(" ") || "none"}`;
6709
6781
  }
6710
- const GRAPH_TYPESCRIPT_FRONTEND_FLAG_KEYS = [["validation", "validation"], ["testing", "testing"]];
6711
6782
  const GRAPH_SHADCN_FLAG_KEYS = [
6712
6783
  ["shadcnBase", "shadcn-base"],
6713
6784
  ["shadcnStyle", "shadcn-style"],
@@ -6718,14 +6789,7 @@ const GRAPH_SHADCN_FLAG_KEYS = [
6718
6789
  ["shadcnRadius", "shadcn-radius"]
6719
6790
  ];
6720
6791
  const GRAPH_MOBILE_FLAG_KEYS = [];
6721
- const GRAPH_TYPESCRIPT_BACKEND_FLAG_KEYS = [["backendLibraries", "effect"]];
6722
- const GRAPH_SHARED_BACKEND_FLAG_KEYS = [
6723
- ["email", "email"],
6724
- ["observability", "observability"],
6725
- ["caching", "caching"],
6726
- ["rateLimit", "rate-limit"],
6727
- ["search", "search"]
6728
- ];
6792
+ const GRAPH_SHARED_BACKEND_FLAG_KEYS = [["rateLimit", "rate-limit"]];
6729
6793
  const GRAPH_ELIXIR_BACKEND_FLAG_KEYS = [["elixirJson", "elixir-json"]];
6730
6794
  function formatChangedStringFlag(selection, key, flag) {
6731
6795
  return selection[key] === DEFAULT_STACK_SELECTION[key] ? void 0 : `--${flag} ${selection[key]}`;
@@ -6768,7 +6832,10 @@ const GRAPH_TYPESCRIPT_BACKEND_PART_SELECTION_KEYS = [
6768
6832
  ["cms", "cms"],
6769
6833
  ["search", "search"],
6770
6834
  ["vectorDb", "vectorDb"],
6771
- ["fileStorage", "fileStorage"]
6835
+ ["fileStorage", "fileStorage"],
6836
+ ["backendLibraries", "effect"],
6837
+ ["validation", "validation"],
6838
+ ["testing", "testing"]
6772
6839
  ];
6773
6840
  const GRAPH_ELIXIR_BACKEND_PART_SELECTION_KEYS = [
6774
6841
  ["elixirRealtime", "realtime"],
@@ -6789,6 +6856,8 @@ const GRAPH_ELIXIR_BACKEND_PART_SELECTION_KEYS = [
6789
6856
  ];
6790
6857
  const GRAPH_DATABASE_PART_SELECTION_KEYS = [["dbSetup", "dbSetup"]];
6791
6858
  const GRAPH_MOBILE_PART_SELECTION_KEYS = [
6859
+ ["auth", "auth"],
6860
+ ["payments", "payments"],
6792
6861
  ["mobileNavigation", "navigation"],
6793
6862
  ["mobileUI", "ui"],
6794
6863
  ["mobileStorage", "storage"],
@@ -6798,10 +6867,17 @@ const GRAPH_MOBILE_PART_SELECTION_KEYS = [
6798
6867
  ["mobileDeepLinking", "deepLinking"]
6799
6868
  ];
6800
6869
  const GRAPH_MOBILE_ARRAY_PART_SELECTION_KEYS = [["mobileLibraries", "libraries"]];
6870
+ const GRAPH_KOTLIN_MOBILE_ARRAY_PART_SELECTION_KEYS = [["kotlinMobileLibraries", "libraries"]];
6801
6871
  const GRAPH_RUST_BACKEND_PART_SELECTION_KEYS = [
6802
6872
  ["rustCli", "cli"],
6803
6873
  ["rustLogging", "logging"],
6804
6874
  ["rustErrorHandling", "errorHandling"],
6875
+ ["rustRealtime", "realtime"],
6876
+ ["rustMessageQueue", "jobQueue"],
6877
+ ["rustObservability", "observability"],
6878
+ ["rustTemplating", "templating"],
6879
+ ["email", "email"],
6880
+ ["observability", "observability"],
6805
6881
  ["caching", "caching"],
6806
6882
  ["search", "search"],
6807
6883
  ["rustCaching", "caching"]
@@ -6818,10 +6894,20 @@ const GRAPH_PYTHON_BACKEND_PART_SELECTION_KEYS = [
6818
6894
  ["pythonServer", "server"],
6819
6895
  ["pythonPackageManager", "packageManager"],
6820
6896
  ["pythonMessageQueue", "messageQueue"],
6897
+ ["pythonCaching", "caching"],
6898
+ ["pythonRealtime", "realtime"],
6899
+ ["pythonObservability", "observability"],
6900
+ ["email", "email"],
6901
+ ["observability", "observability"],
6821
6902
  ["caching", "caching"],
6822
6903
  ["search", "search"]
6823
6904
  ];
6824
- const GRAPH_PYTHON_BACKEND_ARRAY_PART_SELECTION_KEYS = [["pythonAi", "ai"], ["pythonData", "data"]];
6905
+ const GRAPH_PYTHON_BACKEND_ARRAY_PART_SELECTION_KEYS = [
6906
+ ["pythonAi", "ai"],
6907
+ ["pythonTesting", "testing"],
6908
+ ["pythonCli", "cli"],
6909
+ ["pythonData", "data"]
6910
+ ];
6825
6911
  const GRAPH_GO_BACKEND_PART_SELECTION_KEYS = [
6826
6912
  ["goCli", "cli"],
6827
6913
  ["goLogging", "logging"],
@@ -6831,12 +6917,23 @@ const GRAPH_GO_BACKEND_PART_SELECTION_KEYS = [
6831
6917
  ["goTemplating", "templating"],
6832
6918
  ["goProtoTooling", "buildTool"],
6833
6919
  ["goDI", "libraries"],
6920
+ ["goRealtime", "realtime"],
6921
+ ["goMessageQueue", "jobQueue"],
6922
+ ["goCaching", "caching"],
6923
+ ["goConfig", "config"],
6924
+ ["goObservability", "observability"],
6925
+ ["email", "email"],
6926
+ ["observability", "observability"],
6834
6927
  ["caching", "caching"],
6835
6928
  ["search", "search"]
6836
6929
  ];
6930
+ const GRAPH_GO_BACKEND_ARRAY_PART_SELECTION_KEYS = [["goTesting", "testing"]];
6837
6931
  const GRAPH_JAVA_BACKEND_PART_SELECTION_KEYS = [
6838
6932
  ["javaLanguage", "language"],
6839
6933
  ["javaBuildTool", "buildTool"],
6934
+ ["javaLogging", "logging"],
6935
+ ["email", "email"],
6936
+ ["observability", "observability"],
6840
6937
  ["caching", "caching"],
6841
6938
  ["search", "search"]
6842
6939
  ];
@@ -6847,6 +6944,7 @@ const GRAPH_DOTNET_BACKEND_PART_SELECTION_KEYS = [
6847
6944
  ["dotnetApi", "api"],
6848
6945
  ["dotnetJobQueue", "jobQueue"],
6849
6946
  ["dotnetRealtime", "realtime"],
6947
+ ["dotnetValidation", "validation"],
6850
6948
  ["dotnetCaching", "caching"],
6851
6949
  ["dotnetDeploy", "deploy"]
6852
6950
  ];
@@ -6855,6 +6953,7 @@ const GRAPH_DOTNET_BACKEND_ARRAY_PART_SELECTION_KEYS = [
6855
6953
  ["dotnetObservability", "observability"],
6856
6954
  ["dotnetLibraries", "libraries"]
6857
6955
  ];
6956
+ const GRAPH_ELIXIR_BACKEND_ARRAY_PART_SELECTION_KEYS = [["elixirLibraries", "libraries"]];
6858
6957
  const GRAPH_TYPESCRIPT_FRONTEND_PART_CLI_KEYS = [
6859
6958
  ["webDeploy", "deploy"],
6860
6959
  ["cssFramework", "css"],
@@ -6864,7 +6963,9 @@ const GRAPH_TYPESCRIPT_FRONTEND_PART_CLI_KEYS = [
6864
6963
  ["animation", "animation"],
6865
6964
  ["fileUpload", "fileUpload"],
6866
6965
  ["i18n", "i18n"],
6867
- ["analytics", "analytics"]
6966
+ ["analytics", "analytics"],
6967
+ ["validation", "validation"],
6968
+ ["testing", "testing"]
6868
6969
  ];
6869
6970
  const GRAPH_TYPESCRIPT_BACKEND_PART_CLI_KEYS = [
6870
6971
  ["runtime", "runtime"],
@@ -6884,7 +6985,8 @@ const GRAPH_TYPESCRIPT_BACKEND_PART_CLI_KEYS = [
6884
6985
  ["cms", "cms"],
6885
6986
  ["search", "search"],
6886
6987
  ["vectorDb", "vectorDb"],
6887
- ["fileStorage", "fileStorage"]
6988
+ ["fileStorage", "fileStorage"],
6989
+ ["effect", "effect"]
6888
6990
  ];
6889
6991
  const GRAPH_ELIXIR_BACKEND_PART_CLI_KEYS = [
6890
6992
  ["elixirRealtime", "realtime"],
@@ -6905,6 +7007,8 @@ const GRAPH_ELIXIR_BACKEND_PART_CLI_KEYS = [
6905
7007
  ];
6906
7008
  const GRAPH_DATABASE_PART_CLI_KEYS = [["dbSetup", "dbSetup"]];
6907
7009
  const GRAPH_MOBILE_PART_CLI_KEYS = [
7010
+ ["auth", "auth"],
7011
+ ["payments", "payments"],
6908
7012
  ["mobileNavigation", "navigation"],
6909
7013
  ["mobileUI", "ui"],
6910
7014
  ["mobileStorage", "storage"],
@@ -6914,10 +7018,17 @@ const GRAPH_MOBILE_PART_CLI_KEYS = [
6914
7018
  ["mobileDeepLinking", "deepLinking"]
6915
7019
  ];
6916
7020
  const GRAPH_MOBILE_ARRAY_PART_CLI_KEYS = [["mobileLibraries", "libraries"]];
7021
+ const GRAPH_KOTLIN_MOBILE_ARRAY_PART_CLI_KEYS = [["kotlinMobileLibraries", "libraries"]];
6917
7022
  const GRAPH_RUST_BACKEND_PART_CLI_KEYS = [
6918
7023
  ["rustCli", "cli"],
6919
7024
  ["rustLogging", "logging"],
6920
7025
  ["rustErrorHandling", "errorHandling"],
7026
+ ["rustRealtime", "realtime"],
7027
+ ["rustMessageQueue", "jobQueue"],
7028
+ ["rustObservability", "observability"],
7029
+ ["rustTemplating", "templating"],
7030
+ ["email", "email"],
7031
+ ["observability", "observability"],
6921
7032
  ["caching", "caching"],
6922
7033
  ["search", "search"],
6923
7034
  ["rustCaching", "caching"]
@@ -6934,10 +7045,20 @@ const GRAPH_PYTHON_BACKEND_PART_CLI_KEYS = [
6934
7045
  ["pythonServer", "server"],
6935
7046
  ["pythonPackageManager", "packageManager"],
6936
7047
  ["pythonMessageQueue", "messageQueue"],
7048
+ ["pythonCaching", "caching"],
7049
+ ["pythonRealtime", "realtime"],
7050
+ ["pythonObservability", "observability"],
7051
+ ["email", "email"],
7052
+ ["observability", "observability"],
6937
7053
  ["caching", "caching"],
6938
7054
  ["search", "search"]
6939
7055
  ];
6940
- const GRAPH_PYTHON_BACKEND_ARRAY_PART_CLI_KEYS = [["pythonAi", "ai"], ["pythonData", "data"]];
7056
+ const GRAPH_PYTHON_BACKEND_ARRAY_PART_CLI_KEYS = [
7057
+ ["pythonAi", "ai"],
7058
+ ["pythonTesting", "testing"],
7059
+ ["pythonCli", "cli"],
7060
+ ["pythonData", "data"]
7061
+ ];
6941
7062
  const GRAPH_GO_BACKEND_PART_CLI_KEYS = [
6942
7063
  ["goCli", "cli"],
6943
7064
  ["goLogging", "logging"],
@@ -6947,11 +7068,22 @@ const GRAPH_GO_BACKEND_PART_CLI_KEYS = [
6947
7068
  ["goTemplating", "templating"],
6948
7069
  ["goProtoTooling", "buildTool"],
6949
7070
  ["goDI", "libraries"],
7071
+ ["goRealtime", "realtime"],
7072
+ ["goMessageQueue", "jobQueue"],
7073
+ ["goCaching", "caching"],
7074
+ ["goConfig", "config"],
7075
+ ["goObservability", "observability"],
7076
+ ["email", "email"],
7077
+ ["observability", "observability"],
6950
7078
  ["caching", "caching"],
6951
7079
  ["search", "search"]
6952
7080
  ];
7081
+ const GRAPH_GO_BACKEND_ARRAY_PART_CLI_KEYS = [["goTesting", "testing"]];
6953
7082
  const GRAPH_JAVA_BACKEND_PART_CLI_KEYS = [
6954
7083
  ["javaBuildTool", "buildTool"],
7084
+ ["javaLogging", "logging"],
7085
+ ["email", "email"],
7086
+ ["observability", "observability"],
6955
7087
  ["caching", "caching"],
6956
7088
  ["search", "search"]
6957
7089
  ];
@@ -6962,6 +7094,7 @@ const GRAPH_DOTNET_BACKEND_PART_CLI_KEYS = [
6962
7094
  ["dotnetApi", "api"],
6963
7095
  ["dotnetJobQueue", "jobQueue"],
6964
7096
  ["dotnetRealtime", "realtime"],
7097
+ ["dotnetValidation", "validation"],
6965
7098
  ["dotnetCaching", "caching"],
6966
7099
  ["dotnetDeploy", "deploy"]
6967
7100
  ];
@@ -6970,6 +7103,7 @@ const GRAPH_DOTNET_BACKEND_ARRAY_PART_CLI_KEYS = [
6970
7103
  ["dotnetObservability", "observability"],
6971
7104
  ["dotnetLibraries", "libraries"]
6972
7105
  ];
7106
+ const GRAPH_ELIXIR_BACKEND_ARRAY_PART_CLI_KEYS = [["elixirLibraries", "libraries"]];
6973
7107
  function getAddonScopedPartFields(addons) {
6974
7108
  return toUniqueNonNoneArray(addons ?? []).flatMap((addon) => {
6975
7109
  const binding = getAddonStackPartBinding(addon);
@@ -7053,6 +7187,13 @@ function getSelectionScopedPartFields(selection) {
7053
7187
  value: selection[key],
7054
7188
  allowMultiple: true
7055
7189
  })),
7190
+ ...GRAPH_KOTLIN_MOBILE_ARRAY_PART_SELECTION_KEYS.map(([key, role]) => ({
7191
+ ownerRole: "mobile",
7192
+ ecosystem: "kotlin",
7193
+ role,
7194
+ value: selection[key],
7195
+ allowMultiple: true
7196
+ })),
7056
7197
  ...GRAPH_RUST_BACKEND_PART_SELECTION_KEYS.map(([key, role]) => ({
7057
7198
  ownerRole: "backend",
7058
7199
  ecosystem: "rust",
@@ -7085,6 +7226,13 @@ function getSelectionScopedPartFields(selection) {
7085
7226
  role,
7086
7227
  value: selection[key]
7087
7228
  })),
7229
+ ...GRAPH_GO_BACKEND_ARRAY_PART_SELECTION_KEYS.map(([key, role]) => ({
7230
+ ownerRole: "backend",
7231
+ ecosystem: "go",
7232
+ role,
7233
+ value: selection[key],
7234
+ allowMultiple: true
7235
+ })),
7088
7236
  ...GRAPH_JAVA_BACKEND_PART_SELECTION_KEYS.map(([key, role]) => ({
7089
7237
  ownerRole: "backend",
7090
7238
  ecosystem: "java",
@@ -7111,6 +7259,13 @@ function getSelectionScopedPartFields(selection) {
7111
7259
  value: selection[key],
7112
7260
  allowMultiple: true
7113
7261
  })),
7262
+ ...GRAPH_ELIXIR_BACKEND_ARRAY_PART_SELECTION_KEYS.map(([key, role]) => ({
7263
+ ownerRole: "backend",
7264
+ ecosystem: "elixir",
7265
+ role,
7266
+ value: selection[key],
7267
+ allowMultiple: true
7268
+ })),
7114
7269
  ...GRAPH_DATABASE_PART_SELECTION_KEYS.map(([key, role]) => ({
7115
7270
  ownerRole: "database",
7116
7271
  ecosystem: "universal",
@@ -7166,6 +7321,13 @@ function getCliScopedPartFields(input) {
7166
7321
  value: getArrayValue(key),
7167
7322
  allowMultiple: true
7168
7323
  })),
7324
+ ...GRAPH_KOTLIN_MOBILE_ARRAY_PART_CLI_KEYS.map(([key, role]) => ({
7325
+ ownerRole: "mobile",
7326
+ ecosystem: "kotlin",
7327
+ role,
7328
+ value: getArrayValue(key),
7329
+ allowMultiple: true
7330
+ })),
7169
7331
  ...GRAPH_RUST_BACKEND_PART_CLI_KEYS.map(([key, role]) => ({
7170
7332
  ownerRole: "backend",
7171
7333
  ecosystem: "rust",
@@ -7198,6 +7360,13 @@ function getCliScopedPartFields(input) {
7198
7360
  role,
7199
7361
  value: getValue(key)
7200
7362
  })),
7363
+ ...GRAPH_GO_BACKEND_ARRAY_PART_CLI_KEYS.map(([key, role]) => ({
7364
+ ownerRole: "backend",
7365
+ ecosystem: "go",
7366
+ role,
7367
+ value: getArrayValue(key),
7368
+ allowMultiple: true
7369
+ })),
7201
7370
  ...GRAPH_JAVA_BACKEND_PART_CLI_KEYS.map(([key, role]) => ({
7202
7371
  ownerRole: "backend",
7203
7372
  ecosystem: "java",
@@ -7224,6 +7393,13 @@ function getCliScopedPartFields(input) {
7224
7393
  value: getArrayValue(key),
7225
7394
  allowMultiple: true
7226
7395
  })),
7396
+ ...GRAPH_ELIXIR_BACKEND_ARRAY_PART_CLI_KEYS.map(([key, role]) => ({
7397
+ ownerRole: "backend",
7398
+ ecosystem: "elixir",
7399
+ role,
7400
+ value: getArrayValue(key),
7401
+ allowMultiple: true
7402
+ })),
7227
7403
  ...GRAPH_DATABASE_PART_CLI_KEYS.map(([key, role]) => ({
7228
7404
  ownerRole: "database",
7229
7405
  ecosystem: "universal",
@@ -7423,6 +7599,11 @@ function buildProjectConfigBase(selection, projectName, relativePath, install) {
7423
7599
  fileStorage: stack.fileStorage,
7424
7600
  rustWebFramework: stack.rustWebFramework,
7425
7601
  rustFrontend: stack.rustFrontend,
7602
+ dotnetFrontend: stack.dotnetFrontend,
7603
+ kotlinMobile: stack.kotlinMobile,
7604
+ kotlinMobileLibraries: toUniqueNonNoneArray(stack.kotlinMobileLibraries),
7605
+ swiftMobile: stack.swiftMobile,
7606
+ dartMobile: stack.dartMobile,
7426
7607
  rustOrm: stack.rustOrm,
7427
7608
  rustApi: stack.rustApi,
7428
7609
  rustCli: stack.rustCli,
@@ -7587,7 +7768,6 @@ function generateGraphCommand(selection, projectName) {
7587
7768
  const stackParts = getGraphStackParts(selection);
7588
7769
  const hasTypeScriptFrontend = hasGraphPrimaryPart(stackParts, "frontend", "typescript");
7589
7770
  const hasAstroFrontend = hasGraphPrimaryPart(stackParts, "frontend", "typescript", "astro");
7590
- const hasTypeScriptBackend = hasGraphPrimaryPart(stackParts, "backend", "typescript");
7591
7771
  const hasRustBackend = hasGraphPrimaryPart(stackParts, "backend", "rust");
7592
7772
  const hasPythonBackend = hasGraphPrimaryPart(stackParts, "backend", "python");
7593
7773
  const hasGoBackend = hasGraphPrimaryPart(stackParts, "backend", "go");
@@ -7598,10 +7778,8 @@ function generateGraphCommand(selection, projectName) {
7598
7778
  const hasMobile = hasGraphPrimaryPart(stackParts, "mobile");
7599
7779
  const flags = [
7600
7780
  ...stackParts.filter((part) => part.source !== "provided" && part.toolId !== "none").map((part) => `--part ${formatStackPartSpec(part, stackParts)}`),
7601
- ...hasTypeScriptFrontend ? formatChangedStringFlags(selection, GRAPH_TYPESCRIPT_FRONTEND_FLAG_KEYS) : [],
7602
7781
  ...hasAstroFrontend && selection.astroIntegration !== "none" ? [`--astro-integration ${selection.astroIntegration}`] : [],
7603
7782
  ...hasTypeScriptFrontend && selection.uiLibrary === "shadcn-ui" ? formatChangedStringFlags(selection, GRAPH_SHADCN_FLAG_KEYS) : [],
7604
- ...hasTypeScriptBackend ? formatChangedStringFlags(selection, GRAPH_TYPESCRIPT_BACKEND_FLAG_KEYS) : [],
7605
7783
  ...hasNonTypeScriptBackend ? formatChangedStringFlags(selection, GRAPH_SHARED_BACKEND_FLAG_KEYS) : [],
7606
7784
  ...hasElixirBackend ? formatChangedStringFlags(selection, GRAPH_ELIXIR_BACKEND_FLAG_KEYS) : [],
7607
7785
  ...hasMobile ? formatChangedStringFlags(selection, GRAPH_MOBILE_FLAG_KEYS) : [],
@@ -7694,6 +7872,7 @@ function generateReactNativeCommand(selection, projectName) {
7694
7872
  `--mobile-ota ${selection.mobileOTA}`,
7695
7873
  `--mobile-deep-linking ${selection.mobileDeepLinking}`,
7696
7874
  formatArrayFlag("mobile-libraries", selection.mobileLibraries),
7875
+ formatArrayFlag("kotlin-mobile-libraries", selection.kotlinMobileLibraries),
7697
7876
  `--package-manager ${selection.packageManager}`,
7698
7877
  selection.git === "false" ? "--no-git" : "--git",
7699
7878
  selection.install === "false" ? "--no-install" : "--install",
@@ -7892,4 +8071,4 @@ function generateStackSelectionCommand(selection) {
7892
8071
 
7893
8072
  //#endregion
7894
8073
  export { JAVA_CATEGORY_ORDER as $, getCompatibleAddons as A, isSignozSupportedGoWebFramework as B, KOTLIN_DROPPED_JAVA_LIBRARIES as C, evaluateCompatibility as D, analyzeStackCompatibility as E, getKotlinJavaIncompatibilityReason as F, splitFrontends as G, isWebFrontend as H, hasSignozSupportedGoServerTarget as I, validateProjectName as J, stackQualifiesForSingleApp as K, hasWebStyling as L, getCompatibleFormLibraries as M, getCompatibleUILibraries as N, getAIFrontendCompatibilityIssue as O, getDisabledReason as P, GO_CATEGORY_ORDER as Q, isFrontendAllowedWithBackend as R, usesVirtualNoneStackSelection as S, allowedApisForFrontends as T, requiresChatSdkVercelAI as U, isSignozSupportedPythonWebFramework as V, requiresChatSdkVercelAIForSelection as W, DOTNET_CATEGORY_ORDER as X, CATEGORY_ORDER as Y, ELIXIR_CATEGORY_ORDER as Z, parseStackSelectionFromSearch as _, STACK_SELECTION_URL_KEYS as a, getCategoryCliValues as at, stackSelectionToCliComparableConfig as b, cloneDefaultStackSelection as c, getCategoryOrderForEcosystem as ct, isArrayStackSelectionKey as d, normalizeOptionId as dt, OPTION_CATEGORY_METADATA as et, isCliDefaultStackSelection as f, getCapabilityDefinitions as ft, normalizeStackSelectionValue as g, normalizeStackSelection as h, normalizeCapabilitySelection as ht, STACK_SELECTION_OPTION_CATEGORY_BY_KEY as i, TYPESCRIPT_CATEGORY_ORDER as it, getCompatibleCSSFrameworks as j, getApiFrontendCompatibilityIssue as k, createStackSelectionSearchParams as l, getOptionMetadata as lt, isStackSelectionDefault as m, getSupportedCapabilityOptions as mt, NON_OPTION_STACK_SELECTION_KEYS as n, REACT_NATIVE_CATEGORY_ORDER as nt, VIRTUAL_NONE_MULTI_SELECT_STACK_SELECTION_KEYS as o, getCategoryDisplayName as ot, isGraphStackSelection as p, getCapabilityDisabledReason as pt, validateAddonCompatibility as q, STACK_SELECTION_KEYS as r, RUST_CATEGORY_ORDER as rt, cliInputToProjectConfigPartial as s, getCategoryOptionIds as st, DEFAULT_STACK_SELECTION as t, PYTHON_CATEGORY_ORDER as tt, generateStackSelectionCommand as u, isMultiSelectCategory as ut, parseStackSelectionFromUrlRecord as v, KOTLIN_UNSUPPORTED_JAVA_TESTING_LIBRARIES as w, stackSelectionToProjectConfig as x, processCliArrayOption as y, isOptionCompatible as z };
7895
- //# sourceMappingURL=stack-translation-CIt0ziI4.mjs.map
8074
+ //# sourceMappingURL=stack-translation-B-zArJLM.mjs.map