@better-fullstack/types 2.3.1 → 2.4.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 (44) hide show
  1. package/LICENSE +22 -0
  2. package/dist/{defaults-Cl16mM84.mjs → defaults-BzWJP6p0.mjs} +3 -1
  3. package/dist/defaults-BzWJP6p0.mjs.map +1 -0
  4. package/dist/{defaults-BCprHCB6.d.mts → defaults-DdEGPWbd.d.mts} +2 -2
  5. package/dist/defaults-DdEGPWbd.d.mts.map +1 -0
  6. package/dist/defaults.d.mts +3 -3
  7. package/dist/defaults.mjs +1 -1
  8. package/dist/index.d.mts +6 -6
  9. package/dist/index.d.mts.map +1 -1
  10. package/dist/index.mjs +23 -5
  11. package/dist/index.mjs.map +1 -1
  12. package/dist/json-schema.d.mts +496 -320
  13. package/dist/json-schema.d.mts.map +1 -1
  14. package/dist/json-schema.mjs +1 -1
  15. package/dist/{schemas-B79HRN5e.d.mts → schemas-BMTIauzB.d.mts} +777 -609
  16. package/dist/schemas-BMTIauzB.d.mts.map +1 -0
  17. package/dist/{schemas-CprYz5Sh.mjs → schemas-CNrFm0ld.mjs} +21 -2
  18. package/dist/schemas-CNrFm0ld.mjs.map +1 -0
  19. package/dist/schemas.d.mts +2 -2
  20. package/dist/schemas.mjs +2 -2
  21. package/dist/{stack-graph-DiLi3WuL.mjs → stack-graph-BqmxkJKS.mjs} +110 -9
  22. package/dist/stack-graph-BqmxkJKS.mjs.map +1 -0
  23. package/dist/{stack-graph-BkHZlyKH.d.mts → stack-graph-DWpdF4s0.d.mts} +2 -2
  24. package/dist/{stack-graph-BkHZlyKH.d.mts.map → stack-graph-DWpdF4s0.d.mts.map} +1 -1
  25. package/dist/stack-graph.d.mts +3 -3
  26. package/dist/stack-graph.mjs +2 -2
  27. package/dist/{stack-translation-Ay-_1mNB.mjs → stack-translation-CIt0ziI4.mjs} +234 -9
  28. package/dist/stack-translation-CIt0ziI4.mjs.map +1 -0
  29. package/dist/{stack-translation-BmsX82IA.d.mts → stack-translation-DyfJJgeD.d.mts} +18 -7
  30. package/dist/stack-translation-DyfJJgeD.d.mts.map +1 -0
  31. package/dist/stack-translation.d.mts +4 -4
  32. package/dist/stack-translation.mjs +3 -3
  33. package/dist/{types-BuRzqsRV.d.mts → types-BUQyhJDc.d.mts} +5 -3
  34. package/dist/types-BUQyhJDc.d.mts.map +1 -0
  35. package/dist/types.d.mts +3 -3
  36. package/package.json +3 -2
  37. package/dist/defaults-BCprHCB6.d.mts.map +0 -1
  38. package/dist/defaults-Cl16mM84.mjs.map +0 -1
  39. package/dist/schemas-B79HRN5e.d.mts.map +0 -1
  40. package/dist/schemas-CprYz5Sh.mjs.map +0 -1
  41. package/dist/stack-graph-DiLi3WuL.mjs.map +0 -1
  42. package/dist/stack-translation-Ay-_1mNB.mjs.map +0 -1
  43. package/dist/stack-translation-BmsX82IA.d.mts.map +0 -1
  44. package/dist/types-BuRzqsRV.d.mts.map +0 -1
@@ -1,6 +1,6 @@
1
- import { $a as WORKSPACE_SHAPE_VALUES, $r as PYTHON_MEDIA_VALUES, A as CSS_FRAMEWORK_VALUES, An as GO_TESTING_VALUES, At as ELIXIR_VALIDATION_VALUES, B as DOTNET_JOB_QUEUE_VALUES, Bi as RUST_AUTH_VALUES, Br as ORM_VALUES, Ca as SHADCN_RADIUS_VALUES, Cn as GO_MIGRATIONS_VALUES, Cr as MOBILE_LIBRARIES_VALUES, Ct as ELIXIR_JSON_VALUES, Dn as GO_QUALITY_VALUES, Dr as MOBILE_STORAGE_VALUES, Dt as ELIXIR_QUALITY_VALUES, En as GO_PROTO_TOOLING_VALUES, Er as MOBILE_PUSH_VALUES, Et as ELIXIR_ORM_VALUES, G as DOTNET_TESTING_VALUES, Ga as UI_LIBRARY_VALUES, Gi as RUST_LIBRARIES_VALUES, Gr as PYTHON_API_VALUES, H as DOTNET_OBSERVABILITY_VALUES, Hi as RUST_CLI_VALUES, Hr as PACKAGE_MANAGER_VALUES, I as DOTNET_API_VALUES, Ii as RATE_LIMIT_VALUES, Ja as VERSION_CHANNEL_VALUES, Ji as RUST_OBSERVABILITY_VALUES, Jr as PYTHON_CLI_VALUES, K as DOTNET_VALIDATION_VALUES, Ka as VALIDATION_VALUES, Ki as RUST_LOGGING_VALUES, Kr as PYTHON_AUTH_VALUES, L as DOTNET_AUTH_VALUES, Li as REALTIME_VALUES, Mn as GO_WEB_FRAMEWORK_VALUES, Mt as EMAIL_VALUES, N as DATABASE_SETUP_VALUES, O as CMS_VALUES, On as GO_REALTIME_VALUES, Or as MOBILE_TESTING_VALUES, Ot as ELIXIR_REALTIME_VALUES, P as DATABASE_VALUES, Qa as WEB_DEPLOY_VALUES, Qi as RUST_WEB_FRAMEWORK_VALUES, Qr as PYTHON_HTTP_CLIENT_VALUES, R as DOTNET_CACHING_VALUES, Ri as RUNTIME_VALUES, Rr as OBSERVABILITY_VALUES, Sa as SHADCN_ICON_LIBRARY_VALUES, Sn as GO_MESSAGE_QUEUE_VALUES, Sr as MOBILE_DEEP_LINKING_VALUES, St as ELIXIR_JOBS_VALUES, T as CACHING_VALUES, Ta as STATE_MANAGEMENT_VALUES, Tn as GO_ORM_VALUES, Tr as MOBILE_OTA_VALUES, Tt as ELIXIR_OBSERVABILITY_VALUES, U as DOTNET_ORM_VALUES, Ui as RUST_ERROR_HANDLING_VALUES, Ur as PAYMENTS_VALUES, V as DOTNET_LIBRARIES_VALUES, Va as TESTING_VALUES, Vi as RUST_CACHING_VALUES, W as DOTNET_REALTIME_VALUES, Wi as RUST_FRONTEND_VALUES, Wr as PYTHON_AI_VALUES, Xi as RUST_REALTIME_VALUES, Xr as PYTHON_DATA_VALUES, Yi as RUST_ORM_VALUES, Yr as PYTHON_CLOUD_SDK_VALUES, Zi as RUST_TEMPLATING_VALUES, Zn as I18N_VALUES, Zr as PYTHON_GRAPHQL_VALUES, _a as SERVER_DEPLOY_VALUES, _n as GO_CACHING_VALUES, _t as ELIXIR_DOCUMENTATION_VALUES, a as ANALYTICS_VALUES, ai as PYTHON_REALTIME_VALUES, an as FEATURE_FLAGS_VALUES, ar as JAVA_LOGGING_VALUES, ba as SHADCN_COLOR_THEME_VALUES, bn as GO_DI_VALUES, br as LOGGING_VALUES, bt as ELIXIR_HTTP_VALUES, c as API_VALUES, ci as PYTHON_TESTING_VALUES, cn as FORMS_VALUES, cr as JAVA_WEB_FRAMEWORK_VALUES, d as AUTH_VALUES, dt as ELIXIR_API_VALUES, ei as PYTHON_MESSAGE_QUEUE_VALUES, er as JAVA_API_VALUES, ft as ELIXIR_APPLICATION_FRAMEWORK_VALUES, ga as SEARCH_VALUES, gn as GO_AUTH_VALUES, gt as ELIXIR_DEPLOY_VALUES, hn as GO_API_VALUES, ht as ELIXIR_CLUSTERING_VALUES, i as AI_VALUES, ii as PYTHON_QUALITY_VALUES, ir as JAVA_LIBRARIES_VALUES, jn as GO_VALIDATION_VALUES, jt as ELIXIR_WEB_FRAMEWORK_VALUES, kn as GO_TEMPLATING_VALUES, kr as MOBILE_UI_VALUES, kt as ELIXIR_TESTING_VALUES, l as APP_PLATFORM_ADDON_VALUES, li as PYTHON_VALIDATION_VALUES, lr as JOB_QUEUE_VALUES, mt as ELIXIR_CACHING_VALUES, ni as PYTHON_ORM_VALUES, nr as JAVA_BUILD_TOOL_VALUES, o as ANIMATION_VALUES, oi as PYTHON_SERVER_VALUES, on as FILE_STORAGE_VALUES, or as JAVA_ORM_VALUES, pt as ELIXIR_AUTH_VALUES, q as DOTNET_WEB_FRAMEWORK_VALUES, qa as VECTOR_DB_VALUES, qi as RUST_MESSAGE_QUEUE_VALUES, qr as PYTHON_CACHING_VALUES, r as AI_DOCS_VALUES, ri as PYTHON_PACKAGE_MANAGER_VALUES, rr as JAVA_LANGUAGE_VALUES, si as PYTHON_TASK_QUEUE_VALUES, sn as FILE_UPLOAD_VALUES, sr as JAVA_TESTING_LIBRARIES_VALUES, ti as PYTHON_OBSERVABILITY_VALUES, tr as JAVA_AUTH_VALUES, u as ASTRO_INTEGRATION_VALUES, ui as PYTHON_WEB_FRAMEWORK_VALUES, ut as EFFECT_VALUES, va as SHADCN_BASE_COLOR_VALUES, vn as GO_CLI_VALUES, vt as ELIXIR_EMAIL_VALUES, wa as SHADCN_STYLE_VALUES, wn as GO_OBSERVABILITY_VALUES, wr as MOBILE_NAVIGATION_VALUES, wt as ELIXIR_LIBRARIES_VALUES, xa as SHADCN_FONT_VALUES, xn as GO_LOGGING_VALUES, xt as ELIXIR_I18N_VALUES, ya as SHADCN_BASE_VALUES, yn as GO_CONFIG_VALUES, yt as ELIXIR_HTTP_SERVER_VALUES, z as DOTNET_DEPLOY_VALUES, zi as RUST_API_VALUES } from "./schemas-CprYz5Sh.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-DiLi3WuL.mjs";
3
- import { t as createCliDefaultProjectConfigBase } from "./defaults-Cl16mM84.mjs";
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";
3
+ import { t as createCliDefaultProjectConfigBase } from "./defaults-BzWJP6p0.mjs";
4
4
 
5
5
  //#region src/capabilities.ts
6
6
  const CAPABILITY_DEFINITIONS = { auth: [
@@ -274,6 +274,8 @@ const TYPESCRIPT_CATEGORY_ORDER = [
274
274
  "logging",
275
275
  "observability",
276
276
  "featureFlags",
277
+ "integrations",
278
+ "ecommerce",
277
279
  "analytics",
278
280
  "ai",
279
281
  "stateManagement",
@@ -652,6 +654,8 @@ const CODE_QUALITY_VALUES = [
652
654
  "ultracite",
653
655
  "lefthook",
654
656
  "husky",
657
+ "knip",
658
+ "gitleaks",
655
659
  "ruler"
656
660
  ];
657
661
  const DOCUMENTATION_VALUES = ["starlight", "fumadocs"];
@@ -672,6 +676,7 @@ const APP_PLATFORM_VALUES = [
672
676
  "backend-utils",
673
677
  "devcontainer",
674
678
  "docker-compose",
679
+ "kong",
675
680
  "github-actions",
676
681
  "axios",
677
682
  "firebase",
@@ -740,6 +745,8 @@ const CATEGORY_VALUE_IDS = {
740
745
  uiLibrary: UI_LIBRARY_VALUES,
741
746
  cms: CMS_VALUES,
742
747
  featureFlags: FEATURE_FLAGS_VALUES,
748
+ integrations: INTEGRATIONS_VALUES,
749
+ ecommerce: ECOMMERCE_VALUES,
743
750
  analytics: ANALYTICS_VALUES,
744
751
  mobileNavigation: MOBILE_NAVIGATION_VALUES,
745
752
  mobileUI: MOBILE_UI_VALUES,
@@ -957,7 +964,8 @@ const EXACT_LABEL_OVERRIDES = {
957
964
  payments: {
958
965
  "lemon-squeezy": "Lemon Squeezy",
959
966
  dodo: "Dodo Payments",
960
- paypal: "PayPal"
967
+ paypal: "PayPal",
968
+ xendit: "Xendit"
961
969
  },
962
970
  email: {
963
971
  "react-email": "React Email",
@@ -971,6 +979,7 @@ const EXACT_LABEL_OVERRIDES = {
971
979
  },
972
980
  observability: {
973
981
  opentelemetry: "OpenTelemetry",
982
+ signoz: "SigNoz",
974
983
  datadog: "Datadog",
975
984
  axiom: "Axiom",
976
985
  betterstack: "Better Stack"
@@ -1065,6 +1074,8 @@ const EXACT_LABEL_OVERRIDES = {
1065
1074
  flagsmith: "Flagsmith",
1066
1075
  unleash: "Unleash"
1067
1076
  },
1077
+ integrations: { nango: "Nango" },
1078
+ ecommerce: { medusa: "MedusaJS" },
1068
1079
  analytics: {
1069
1080
  plausible: "Plausible",
1070
1081
  umami: "Umami",
@@ -1119,6 +1130,8 @@ const EXACT_LABEL_OVERRIDES = {
1119
1130
  ultracite: "Ultracite",
1120
1131
  lefthook: "Lefthook",
1121
1132
  husky: "Husky",
1133
+ knip: "Knip",
1134
+ gitleaks: "Gitleaks",
1122
1135
  ruler: "Ruler"
1123
1136
  },
1124
1137
  documentation: {
@@ -1144,6 +1157,7 @@ const EXACT_LABEL_OVERRIDES = {
1144
1157
  "tanstack-pacer": "TanStack Pacer",
1145
1158
  devcontainer: "DevContainer",
1146
1159
  "docker-compose": "Docker Compose",
1160
+ kong: "Kong Gateway",
1147
1161
  "github-actions": "GitHub Actions",
1148
1162
  axios: "Axios",
1149
1163
  firebase: "Firebase JS SDK",
@@ -1395,6 +1409,7 @@ const EXACT_LABEL_OVERRIDES = {
1395
1409
  },
1396
1410
  pythonObservability: {
1397
1411
  opentelemetry: "OpenTelemetry",
1412
+ signoz: "SigNoz",
1398
1413
  "prometheus-client": "Prometheus Client"
1399
1414
  },
1400
1415
  pythonCli: {
@@ -1484,6 +1499,7 @@ const EXACT_LABEL_OVERRIDES = {
1484
1499
  },
1485
1500
  goObservability: {
1486
1501
  opentelemetry: "OpenTelemetry",
1502
+ signoz: "SigNoz",
1487
1503
  prometheus: "Prometheus"
1488
1504
  },
1489
1505
  goValidation: { validator: "go-playground/validator" },
@@ -1832,6 +1848,8 @@ const OPTION_CATEGORY_METADATA = {
1832
1848
  uiLibrary: buildCategoryMetadata("uiLibrary"),
1833
1849
  cms: buildCategoryMetadata("cms"),
1834
1850
  featureFlags: buildCategoryMetadata("featureFlags"),
1851
+ integrations: buildCategoryMetadata("integrations"),
1852
+ ecommerce: buildCategoryMetadata("ecommerce"),
1835
1853
  analytics: buildCategoryMetadata("analytics"),
1836
1854
  mobileNavigation: buildCategoryMetadata("mobileNavigation"),
1837
1855
  mobileUI: buildCategoryMetadata("mobileUI"),
@@ -1976,6 +1994,23 @@ function normalizeOptionId(category, value) {
1976
1994
 
1977
1995
  //#endregion
1978
1996
  //#region src/compatibility.ts
1997
+ const SIGNOZ_SUPPORTED_GO_WEB_FRAMEWORKS = new Set([
1998
+ "gin",
1999
+ "echo",
2000
+ "fiber",
2001
+ "chi",
2002
+ "stdlib"
2003
+ ]);
2004
+ const SIGNOZ_SUPPORTED_PYTHON_WEB_FRAMEWORKS = new Set(["fastapi"]);
2005
+ function isSignozSupportedGoWebFramework(framework) {
2006
+ return SIGNOZ_SUPPORTED_GO_WEB_FRAMEWORKS.has(framework);
2007
+ }
2008
+ function hasSignozSupportedGoServerTarget(stack) {
2009
+ return isSignozSupportedGoWebFramework(stack.goWebFramework ?? "none") || (stack.goWebFramework ?? "none") === "none" && (stack.goApi === "grpc-go" || stack.auth === "go-better-auth");
2010
+ }
2011
+ function isSignozSupportedPythonWebFramework(framework) {
2012
+ return SIGNOZ_SUPPORTED_PYTHON_WEB_FRAMEWORKS.has(framework);
2013
+ }
1979
2014
  const KOTLIN_UNSUPPORTED_JAVA_TESTING_LIBRARIES = new Set([
1980
2015
  "testcontainers",
1981
2016
  "rest-assured",
@@ -2071,6 +2106,20 @@ const requiresChatSdkVercelAI = (stack) => {
2071
2106
  * Nuxt is intentionally excluded from the MVP (different alias convention).
2072
2107
  */
2073
2108
  const SINGLE_APP_SELF_BACKENDS = new Set(["self-next", "self-tanstack-start"]);
2109
+ const SINGLE_APP_CONTAINER_ADDONS = new Set([
2110
+ "docker-compose",
2111
+ "devcontainer",
2112
+ "kong"
2113
+ ]);
2114
+ const FULLSTACK_SELF_BACKENDS = new Set([
2115
+ "self-next",
2116
+ "self-vinext",
2117
+ "self-tanstack-start",
2118
+ "self-astro",
2119
+ "self-nuxt",
2120
+ "self-svelte",
2121
+ "self-solid-start"
2122
+ ]);
2074
2123
  const SINGLE_APP_WEB_FRONTEND_BY_BACKEND = {
2075
2124
  "self-next": "next",
2076
2125
  "self-tanstack-start": "tanstack-start"
@@ -2085,6 +2134,7 @@ const SINGLE_APP_WEB_FRONTEND_BY_BACKEND = {
2085
2134
  */
2086
2135
  function stackQualifiesForSingleApp(stack) {
2087
2136
  if (!SINGLE_APP_SELF_BACKENDS.has(stack.backend)) return false;
2137
+ if ((stack.appPlatforms ?? []).some((addon) => SINGLE_APP_CONTAINER_ADDONS.has(addon))) return false;
2088
2138
  if ((stack.nativeFrontend ?? []).filter((f) => f && f !== "none").length > 0) return false;
2089
2139
  const webFrontends = (stack.webFrontend ?? []).filter((f) => f && f !== "none");
2090
2140
  if (webFrontends.length !== 1) return false;
@@ -2109,6 +2159,8 @@ function stackQualifiesForSingleApp(stack) {
2109
2159
  stack.aiSdk,
2110
2160
  stack.analytics,
2111
2161
  stack.featureFlags,
2162
+ stack.integrations,
2163
+ stack.ecommerce,
2112
2164
  stack.observability,
2113
2165
  stack.logging,
2114
2166
  stack.webDeploy,
@@ -2117,6 +2169,7 @@ function stackQualifiesForSingleApp(stack) {
2117
2169
  if ((stack.examples ?? []).filter((e) => e && e !== "none").length > 0) return false;
2118
2170
  return true;
2119
2171
  }
2172
+ const usesCloudflareFullstackRuntime = (stack) => stack.webDeploy === "cloudflare" && FULLSTACK_SELF_BACKENDS.has(stack.backend);
2120
2173
  const analyzeStackCompatibility = (stack) => {
2121
2174
  if (stack.yolo === "true") return {
2122
2175
  adjustedStack: null,
@@ -2125,9 +2178,55 @@ const analyzeStackCompatibility = (stack) => {
2125
2178
  };
2126
2179
  const nextStack = { ...stack };
2127
2180
  if (nextStack.vectorDb === void 0) nextStack.vectorDb = "none";
2181
+ if (nextStack.integrations === void 0) nextStack.integrations = "none";
2182
+ if (nextStack.ecommerce === void 0) nextStack.ecommerce = "none";
2128
2183
  let changed = false;
2129
2184
  const notes = {};
2130
2185
  const changes = [];
2186
+ if (nextStack.observability === "signoz" && (nextStack.backend === "none" || nextStack.backend === "convex")) {
2187
+ nextStack.observability = "none";
2188
+ changed = true;
2189
+ changes.push({
2190
+ category: "observability",
2191
+ message: "Observability set to 'None' (SigNoz tracing requires a generated server target)"
2192
+ });
2193
+ }
2194
+ if (nextStack.observability === "signoz" && (nextStack.backend === "self-tanstack-start" || nextStack.backend === "self-astro")) {
2195
+ nextStack.observability = "none";
2196
+ changed = true;
2197
+ changes.push({
2198
+ category: "observability",
2199
+ message: "Observability set to 'None' (SigNoz tracing is not yet bootstrapped for this fullstack frontend)"
2200
+ });
2201
+ }
2202
+ if (nextStack.observability === "signoz" && nextStack.webDeploy === "cloudflare" && (nextStack.backend === "self" || nextStack.backend.startsWith("self-"))) {
2203
+ nextStack.observability = "none";
2204
+ changed = true;
2205
+ changes.push({
2206
+ category: "observability",
2207
+ message: "Observability set to 'None' (SigNoz's Node SDK is incompatible with Cloudflare-hosted fullstack apps)"
2208
+ });
2209
+ }
2210
+ if (nextStack.ecosystem !== "typescript" && nextStack.ecosystem !== "react-native" && nextStack.codeQuality.includes("knip")) {
2211
+ nextStack.codeQuality = nextStack.codeQuality.filter((addon) => addon !== "knip");
2212
+ changed = true;
2213
+ changes.push({
2214
+ category: "codeQuality",
2215
+ message: "Removed Knip (Knip requires a TypeScript or React Native workspace)"
2216
+ });
2217
+ }
2218
+ if (nextStack.ecosystem === "react-native") {
2219
+ const supportedCodeQuality = new Set(["knip", "gitleaks"]);
2220
+ const filteredCodeQuality = nextStack.codeQuality.filter((addon) => supportedCodeQuality.has(addon));
2221
+ if (filteredCodeQuality.length !== nextStack.codeQuality.length) {
2222
+ nextStack.codeQuality = filteredCodeQuality;
2223
+ changed = true;
2224
+ changes.push({
2225
+ category: "codeQuality",
2226
+ message: "Removed code-quality tools that are not supported by React Native projects"
2227
+ });
2228
+ }
2229
+ }
2131
2230
  for (const cat of CATEGORY_ORDER) notes[cat] = {
2132
2231
  notes: [],
2133
2232
  hasIssue: false
@@ -2143,7 +2242,9 @@ const analyzeStackCompatibility = (stack) => {
2143
2242
  search: "none",
2144
2243
  vectorDb: "none",
2145
2244
  rateLimit: "none",
2146
- fileStorage: "none"
2245
+ fileStorage: "none",
2246
+ integrations: "none",
2247
+ ecommerce: "none"
2147
2248
  })) {
2148
2249
  const catKey = key;
2149
2250
  if (nextStack[catKey] !== value) {
@@ -2211,7 +2312,9 @@ const analyzeStackCompatibility = (stack) => {
2211
2312
  search: "none",
2212
2313
  vectorDb: "none",
2213
2314
  rateLimit: "none",
2214
- fileStorage: "none"
2315
+ fileStorage: "none",
2316
+ integrations: "none",
2317
+ ecommerce: "none"
2215
2318
  };
2216
2319
  if (nextStack.ecosystem !== "go") noneOverrides.auth = "none";
2217
2320
  for (const [key, value] of Object.entries(noneOverrides)) {
@@ -2343,6 +2446,14 @@ const analyzeStackCompatibility = (stack) => {
2343
2446
  message: "Backend set to 'Hono' (required for Workers)"
2344
2447
  });
2345
2448
  }
2449
+ if (nextStack.runtime === "workers" && nextStack.observability === "signoz") {
2450
+ nextStack.observability = "none";
2451
+ changed = true;
2452
+ changes.push({
2453
+ category: "observability",
2454
+ message: "Observability set to 'None' (SigNoz requires the Node.js or Bun runtime)"
2455
+ });
2456
+ }
2346
2457
  if (nextStack.runtime === "workers" && nextStack.serverDeploy === "none") {
2347
2458
  nextStack.serverDeploy = "cloudflare";
2348
2459
  changed = true;
@@ -2361,6 +2472,14 @@ const analyzeStackCompatibility = (stack) => {
2361
2472
  message: "Database changed to SQLite with D1 (Better-Fullstack doesn't support MongoDB with Workers)"
2362
2473
  });
2363
2474
  }
2475
+ if ((nextStack.runtime === "workers" || usesCloudflareFullstackRuntime(nextStack)) && nextStack.integrations !== "none") {
2476
+ nextStack.integrations = "none";
2477
+ changed = true;
2478
+ changes.push({
2479
+ category: "integrations",
2480
+ message: "Integrations set to 'none' (Nango's Node SDK is not available on Cloudflare Workers)"
2481
+ });
2482
+ }
2364
2483
  if (nextStack.runtime === "none" && nextStack.backend !== "convex" && nextStack.backend !== "none" && nextStack.backend !== "self-next" && nextStack.backend !== "self-vinext" && nextStack.backend !== "self-tanstack-start" && nextStack.backend !== "self-astro" && nextStack.backend !== "self-nuxt" && nextStack.backend !== "self-svelte" && nextStack.backend !== "self-solid-start") {
2365
2484
  nextStack.runtime = DEFAULT_RUNTIME;
2366
2485
  changed = true;
@@ -2683,6 +2802,14 @@ const analyzeStackCompatibility = (stack) => {
2683
2802
  });
2684
2803
  }
2685
2804
  }
2805
+ if (nextStack.payments === "xendit" && ["none", "convex"].includes(nextStack.backend)) {
2806
+ nextStack.payments = "none";
2807
+ changed = true;
2808
+ changes.push({
2809
+ category: "payments",
2810
+ message: "Payments set to 'None' (Xendit Payment Sessions require a server backend)"
2811
+ });
2812
+ }
2686
2813
  if (["openai-sdk", "anthropic-sdk"].includes(nextStack.aiSdk) && ["none", "convex"].includes(nextStack.backend)) {
2687
2814
  nextStack.aiSdk = "none";
2688
2815
  changed = true;
@@ -2873,6 +3000,16 @@ const analyzeStackCompatibility = (stack) => {
2873
3000
  "none",
2874
3001
  "Feature flags set to 'None' (React Native ecosystem)"
2875
3002
  ],
3003
+ [
3004
+ "ecommerce",
3005
+ "none",
3006
+ "E-commerce set to 'None' (React Native ecosystem)"
3007
+ ],
3008
+ [
3009
+ "integrations",
3010
+ "none",
3011
+ "Integrations set to 'None' (React Native ecosystem)"
3012
+ ],
2876
3013
  [
2877
3014
  "analytics",
2878
3015
  "none",
@@ -3137,6 +3274,22 @@ const analyzeStackCompatibility = (stack) => {
3137
3274
  message: `${platform === "electron" ? "Electron" : "Capacitor"} removed (requires compatible frontend)`
3138
3275
  });
3139
3276
  }
3277
+ for (const platform of [
3278
+ "docker-compose",
3279
+ "devcontainer",
3280
+ "kong"
3281
+ ]) {
3282
+ if (!nextStack.appPlatforms.includes(platform)) continue;
3283
+ const reason = getDisabledReason(nextStack, "appPlatforms", platform);
3284
+ if (!reason) continue;
3285
+ nextStack.appPlatforms = nextStack.appPlatforms.filter((addon) => addon !== platform);
3286
+ changed = true;
3287
+ const label = platform === "docker-compose" ? "Docker Compose" : platform === "devcontainer" ? "DevContainer" : "Kong Gateway";
3288
+ changes.push({
3289
+ category: "appPlatforms",
3290
+ message: `${label} removed (${reason})`
3291
+ });
3292
+ }
3140
3293
  if (nextStack.appPlatforms.includes("graphql-codegen") && ![
3141
3294
  "garph",
3142
3295
  "graphql-yoga",
@@ -3255,6 +3408,14 @@ const analyzeStackCompatibility = (stack) => {
3255
3408
  }
3256
3409
  }
3257
3410
  if (nextStack.ecosystem === "python") {
3411
+ if (nextStack.pythonObservability === "signoz" && !isSignozSupportedPythonWebFramework(nextStack.pythonWebFramework)) {
3412
+ nextStack.pythonObservability = "none";
3413
+ changed = true;
3414
+ changes.push({
3415
+ category: "pythonObservability",
3416
+ message: "Python observability set to 'None' (SigNoz request tracing is wired for FastAPI)"
3417
+ });
3418
+ }
3258
3419
  if (nextStack.pythonWebFramework !== "django" && nextStack.pythonApi !== "none") {
3259
3420
  nextStack.pythonApi = "none";
3260
3421
  changed = true;
@@ -3320,6 +3481,14 @@ const analyzeStackCompatibility = (stack) => {
3320
3481
  });
3321
3482
  }
3322
3483
  }
3484
+ if (nextStack.ecosystem === "go" && nextStack.goObservability === "signoz" && !hasSignozSupportedGoServerTarget(nextStack)) {
3485
+ nextStack.goObservability = "none";
3486
+ changed = true;
3487
+ changes.push({
3488
+ category: "goObservability",
3489
+ message: "Go observability set to 'None' (SigNoz requires an instrumented HTTP, gRPC, or Go Better Auth server target)"
3490
+ });
3491
+ }
3323
3492
  if (nextStack.ecosystem === "java") {
3324
3493
  if (nextStack.javaBuildTool === "none") {
3325
3494
  if (nextStack.javaWebFramework !== "none") {
@@ -3580,6 +3749,14 @@ const analyzeStackCompatibility = (stack) => {
3580
3749
  * - Follow CLI behavior: filter options based on UPSTREAM selections only
3581
3750
  */
3582
3751
  const getDisabledReason = (currentStack, category, optionId) => {
3752
+ if (currentStack.ecosystem === "react-native" && category === "codeQuality" && optionId !== "knip" && optionId !== "gitleaks") return "React Native code quality currently supports Knip and Gitleaks only";
3753
+ if (category === "codeQuality" && optionId === "knip" && currentStack.ecosystem !== "typescript" && currentStack.ecosystem !== "react-native") return "Knip requires a TypeScript or React Native workspace";
3754
+ if ((category === "observability" && optionId === "signoz" || category === "backend" && currentStack.observability === "signoz") && (category === "backend" ? optionId === "none" || optionId === "convex" : currentStack.backend === "none" || currentStack.backend === "convex")) return "SigNoz tracing requires a generated server target";
3755
+ if ((category === "observability" && optionId === "signoz" || category === "backend" && currentStack.observability === "signoz") && (category === "backend" ? optionId === "self-tanstack-start" || optionId === "self-astro" : currentStack.backend === "self-tanstack-start" || currentStack.backend === "self-astro")) return "SigNoz tracing is not yet bootstrapped for TanStack Start or Astro fullstack apps";
3756
+ const signozBackend = category === "backend" ? optionId : currentStack.backend;
3757
+ const signozWebDeploy = category === "webDeploy" ? optionId : currentStack.webDeploy;
3758
+ if ((category === "observability" && optionId === "signoz" || currentStack.observability === "signoz") && signozWebDeploy === "cloudflare" && (signozBackend === "self" || signozBackend.startsWith("self-"))) return "SigNoz's Node SDK is incompatible with Cloudflare-hosted fullstack apps";
3759
+ if (category === "appPlatforms" && optionId === "kong" && currentStack.ecosystem === "typescript" && currentStack.backend === "encore") return "Kong Gateway does not yet support Encore's container workflow";
3583
3760
  const hasStandaloneViteFrontend = currentStack.webFrontend.some((frontend) => ["vanilla-vite", "vue"].includes(frontend));
3584
3761
  if (category === "api" && hasStandaloneViteFrontend && [
3585
3762
  "trpc",
@@ -3631,7 +3808,8 @@ const getDisabledReason = (currentStack, category, optionId) => {
3631
3808
  "packageManager",
3632
3809
  "aiDocs",
3633
3810
  "git",
3634
- "install"
3811
+ "install",
3812
+ "codeQuality"
3635
3813
  ]);
3636
3814
  if (category === "payments" && optionId !== "none" && optionId !== "revenuecat") return "React Native payments currently support RevenueCat only";
3637
3815
  if (!reactNativeCategories.has(category) && optionId !== "none" && optionId !== "false") return "React Native ecosystem only supports native mobile options";
@@ -3648,6 +3826,8 @@ const getDisabledReason = (currentStack, category, optionId) => {
3648
3826
  if (category === "vectorDb" && optionId !== "none") return "No backend selected";
3649
3827
  if (category === "rateLimit" && optionId !== "none") return "No backend selected";
3650
3828
  if (category === "fileStorage" && optionId !== "none") return "No backend selected";
3829
+ if (category === "integrations" && optionId !== "none") return "No backend selected";
3830
+ if (category === "ecommerce" && optionId !== "none") return "No backend selected";
3651
3831
  if (category === "examples" && optionId !== "none") return "No backend selected";
3652
3832
  }
3653
3833
  if (currentStack.backend === "effect") {
@@ -3685,6 +3865,16 @@ const getDisabledReason = (currentStack, category, optionId) => {
3685
3865
  if (optionId !== "none" && currentStack.pythonWebFramework !== "django") return "Python API frameworks currently require Django";
3686
3866
  }
3687
3867
  if (category === "pythonServer" && optionId === "gunicorn" && (currentStack.pythonWebFramework === "streamlit" || currentStack.pythonWebFramework === "none")) return "Gunicorn requires a WSGI, ASGI, or aiohttp application";
3868
+ if (category === "observability" && optionId === "signoz" && currentStack.runtime === "workers" || category === "runtime" && optionId === "workers" && currentStack.observability === "signoz") return "SigNoz tracing currently requires the Node.js or Bun runtime";
3869
+ if ((category === "goObservability" && optionId === "signoz" || category === "goWebFramework" && currentStack.goObservability === "signoz" || category === "goApi" && currentStack.goObservability === "signoz" || category === "auth" && currentStack.goObservability === "signoz") && !hasSignozSupportedGoServerTarget({
3870
+ ...currentStack,
3871
+ ...category === "goWebFramework" ? { goWebFramework: optionId } : {},
3872
+ ...category === "goApi" ? { goApi: optionId } : {},
3873
+ ...category === "auth" ? { auth: optionId } : {}
3874
+ })) return "SigNoz requires Gin, Echo, Fiber, Chi, net/http, gRPC, or Go Better Auth to provide a server target";
3875
+ if ((category === "pythonObservability" && optionId === "signoz" || category === "pythonWebFramework" && currentStack.pythonObservability === "signoz") && !isSignozSupportedPythonWebFramework(category === "pythonWebFramework" ? optionId : currentStack.pythonWebFramework)) return "SigNoz request tracing is currently wired for FastAPI";
3876
+ if (category === "integrations" && optionId === "nango" && usesCloudflareFullstackRuntime(currentStack)) return "Nango's Node SDK is not available on Cloudflare Workers";
3877
+ if (category === "webDeploy" && optionId === "cloudflare" && currentStack.integrations === "nango" && FULLSTACK_SELF_BACKENDS.has(currentStack.backend)) return "Nango's Node SDK is not available on Cloudflare Workers";
3688
3878
  const graphDisabledReason = category === "payments" && optionId === "revenuecat" || category === "i18n" && optionId === "intlayer" ? {
3689
3879
  handled: false,
3690
3880
  authoritative: false,
@@ -3741,6 +3931,8 @@ const getDisabledReason = (currentStack, category, optionId) => {
3741
3931
  if (currentStack.runtime === "workers" && optionId !== "hono" && optionId !== "none") return "In Better-Fullstack, Workers runtime is currently supported only with Hono";
3742
3932
  }
3743
3933
  if (category === "runtime") {
3934
+ if (optionId === "workers" && currentStack.observability === "signoz") return "SigNoz tracing currently requires the Node.js or Bun runtime";
3935
+ if (optionId === "workers" && currentStack.integrations === "nango") return "Nango's Node SDK is not available on Workers runtime";
3744
3936
  if (optionId === "workers" && currentStack.backend !== "hono") return "In Better-Fullstack, Workers runtime currently requires the Hono backend";
3745
3937
  if (optionId === "workers" && currentStack.cms === "keystatic" && currentStack.webFrontend.includes("astro") && !currentStack.webFrontend.includes("next")) return "Keystatic's Astro integration is not Astro 7-compatible yet.";
3746
3938
  if (optionId === "none") {
@@ -3867,6 +4059,7 @@ const getDisabledReason = (currentStack, category, optionId) => {
3867
4059
  if (!currentStack.webFrontend.some((f) => f !== "none")) return "PayPal requires a web frontend";
3868
4060
  if (["none", "convex"].includes(currentStack.backend)) return "PayPal checkout requires a standalone or fullstack backend";
3869
4061
  }
4062
+ if (category === "payments" && optionId === "xendit" && ["none", "convex"].includes(currentStack.backend)) return "Xendit Payment Sessions require a standalone or fullstack backend";
3870
4063
  if (category === "cms" && optionId === "payload") {
3871
4064
  if (!currentStack.webFrontend.includes("next")) return "Payload CMS v3 requires Next.js";
3872
4065
  }
@@ -3879,9 +4072,20 @@ const getDisabledReason = (currentStack, category, optionId) => {
3879
4072
  if (currentStack.backend === "convex") return "Email integration is not available with Convex backend";
3880
4073
  if (currentStack.backend === "none") return "Email integration requires a backend";
3881
4074
  }
4075
+ if (category === "ecommerce" && optionId !== "none") {
4076
+ if (currentStack.ecosystem !== "typescript") return "MedusaJS SDK generation is only available for the TypeScript ecosystem";
4077
+ if (currentStack.backend === "convex") return "MedusaJS SDK generation is not available with Convex backend";
4078
+ if (currentStack.backend === "none") return "MedusaJS SDK generation requires a backend";
4079
+ }
3882
4080
  if (category === "observability" && optionId !== "none") {
3883
4081
  if (currentStack.ecosystem !== "typescript") return null;
3884
4082
  }
4083
+ if (category === "integrations" && optionId !== "none") {
4084
+ if (currentStack.ecosystem !== "typescript") return "Nango SDK generation is only available for the TypeScript ecosystem";
4085
+ if (currentStack.backend === "convex") return "Nango SDK generation is not available with Convex backend";
4086
+ if (currentStack.backend === "none") return "Nango SDK generation requires a backend";
4087
+ if (currentStack.runtime === "workers" || usesCloudflareFullstackRuntime(currentStack)) return "Nango's Node SDK is not available on Cloudflare Workers";
4088
+ }
3885
4089
  if (category === "caching" && optionId === "redis" && currentStack.ecosystem !== "typescript") return "Self-hosted Redis caching (ioredis) is only available for the TypeScript ecosystem";
3886
4090
  if (category === "caching" && optionId !== "none") {
3887
4091
  if (currentStack.ecosystem !== "typescript") return null;
@@ -4944,6 +5148,8 @@ const ADDON_COMPATIBILITY = {
4944
5148
  prettier: [],
4945
5149
  husky: [],
4946
5150
  lefthook: [],
5151
+ knip: [],
5152
+ gitleaks: [],
4947
5153
  turborepo: [],
4948
5154
  nx: [],
4949
5155
  starlight: [],
@@ -5095,6 +5301,7 @@ const ADDON_COMPATIBILITY = {
5095
5301
  ],
5096
5302
  "backend-utils": [],
5097
5303
  "docker-compose": [],
5304
+ kong: [],
5098
5305
  devcontainer: [],
5099
5306
  "github-actions": [],
5100
5307
  none: []
@@ -5428,6 +5635,8 @@ function evaluateCompatibility(input) {
5428
5635
  ["animation", input.animation],
5429
5636
  ["cms", input.cms],
5430
5637
  ["featureFlags", input.featureFlags],
5638
+ ["integrations", input.integrations],
5639
+ ["ecommerce", input.ecommerce],
5431
5640
  ["pythonApi", input.pythonApi],
5432
5641
  ["javaWebFramework", input.javaWebFramework],
5433
5642
  ["javaBuildTool", input.javaBuildTool],
@@ -5585,6 +5794,8 @@ const DEFAULT_STACK_SELECTION = {
5585
5794
  logging: "none",
5586
5795
  observability: "none",
5587
5796
  featureFlags: "none",
5797
+ integrations: "none",
5798
+ ecommerce: "none",
5588
5799
  analytics: "none",
5589
5800
  mobileNavigation: "none",
5590
5801
  mobileUI: "none",
@@ -5752,6 +5963,8 @@ const STACK_SELECTION_OPTION_CATEGORY_BY_KEY = {
5752
5963
  logging: "logging",
5753
5964
  observability: "observability",
5754
5965
  featureFlags: "featureFlags",
5966
+ integrations: "integrations",
5967
+ ecommerce: "ecommerce",
5755
5968
  analytics: "analytics",
5756
5969
  mobileNavigation: "mobileNavigation",
5757
5970
  mobileUI: "mobileUI",
@@ -5932,6 +6145,8 @@ const STACK_SELECTION_URL_KEYS = {
5932
6145
  logging: "log",
5933
6146
  observability: "obs",
5934
6147
  featureFlags: "ff",
6148
+ integrations: "int",
6149
+ ecommerce: "ecm",
5935
6150
  analytics: "an",
5936
6151
  mobileNavigation: "mn",
5937
6152
  mobileUI: "mui",
@@ -6210,6 +6425,8 @@ const CLI_SCALAR_CONFIG_FIELDS = [
6210
6425
  ["mobileOTA", "mobileOTA"],
6211
6426
  ["mobileDeepLinking", "mobileDeepLinking"],
6212
6427
  ["featureFlags", "featureFlags"],
6428
+ ["integrations", "integrations"],
6429
+ ["ecommerce", "ecommerce"],
6213
6430
  ["fileUpload", "fileUpload"],
6214
6431
  ["git", "git"],
6215
6432
  ["install", "install"],
@@ -6544,6 +6761,8 @@ const GRAPH_TYPESCRIPT_BACKEND_PART_SELECTION_KEYS = [
6544
6761
  ["logging", "logging"],
6545
6762
  ["observability", "observability"],
6546
6763
  ["featureFlags", "featureFlags"],
6764
+ ["integrations", "integrations"],
6765
+ ["ecommerce", "ecommerce"],
6547
6766
  ["caching", "caching"],
6548
6767
  ["rateLimit", "rateLimit"],
6549
6768
  ["cms", "cms"],
@@ -6658,6 +6877,8 @@ const GRAPH_TYPESCRIPT_BACKEND_PART_CLI_KEYS = [
6658
6877
  ["logging", "logging"],
6659
6878
  ["observability", "observability"],
6660
6879
  ["featureFlags", "featureFlags"],
6880
+ ["integrations", "integrations"],
6881
+ ["ecommerce", "ecommerce"],
6661
6882
  ["caching", "caching"],
6662
6883
  ["rateLimit", "rateLimit"],
6663
6884
  ["cms", "cms"],
@@ -7182,6 +7403,8 @@ function buildProjectConfigBase(selection, projectName, relativePath, install) {
7182
7403
  logging: stack.logging,
7183
7404
  observability: stack.observability,
7184
7405
  featureFlags: stack.featureFlags,
7406
+ integrations: stack.integrations,
7407
+ ecommerce: stack.ecommerce,
7185
7408
  analytics: stack.analytics,
7186
7409
  mobileNavigation: stack.mobileNavigation,
7187
7410
  mobileUI: stack.mobileUI,
@@ -7422,6 +7645,8 @@ function generateTypeScriptCommand(selection, projectName) {
7422
7645
  `--logging ${selection.logging}`,
7423
7646
  `--observability ${selection.observability}`,
7424
7647
  `--feature-flags ${selection.featureFlags}`,
7648
+ `--integrations ${selection.integrations}`,
7649
+ `--ecommerce ${selection.ecommerce}`,
7425
7650
  `--realtime ${selection.realtime}`,
7426
7651
  `--job-queue ${selection.jobQueue}`,
7427
7652
  `--caching ${selection.caching}`,
@@ -7666,5 +7891,5 @@ function generateStackSelectionCommand(selection) {
7666
7891
  }
7667
7892
 
7668
7893
  //#endregion
7669
- export { REACT_NATIVE_CATEGORY_ORDER as $, getCompatibleAddons as A, requiresChatSdkVercelAI as B, KOTLIN_DROPPED_JAVA_LIBRARIES as C, evaluateCompatibility as D, analyzeStackCompatibility as E, getKotlinJavaIncompatibilityReason as F, validateProjectName as G, splitFrontends as H, hasWebStyling as I, ELIXIR_CATEGORY_ORDER as J, CATEGORY_ORDER as K, isFrontendAllowedWithBackend as L, getCompatibleFormLibraries as M, getCompatibleUILibraries as N, getAIFrontendCompatibilityIssue as O, getDisabledReason as P, PYTHON_CATEGORY_ORDER as Q, isOptionCompatible as R, usesVirtualNoneStackSelection as S, allowedApisForFrontends as T, stackQualifiesForSingleApp as U, requiresChatSdkVercelAIForSelection as V, validateAddonCompatibility as W, JAVA_CATEGORY_ORDER as X, GO_CATEGORY_ORDER as Y, OPTION_CATEGORY_METADATA as Z, parseStackSelectionFromSearch as _, STACK_SELECTION_URL_KEYS as a, getCategoryOrderForEcosystem as at, stackSelectionToCliComparableConfig as b, cloneDefaultStackSelection as c, normalizeOptionId as ct, isArrayStackSelectionKey as d, getSupportedCapabilityOptions as dt, RUST_CATEGORY_ORDER as et, isCliDefaultStackSelection as f, normalizeCapabilitySelection as ft, normalizeStackSelectionValue as g, normalizeStackSelection as h, STACK_SELECTION_OPTION_CATEGORY_BY_KEY as i, getCategoryOptionIds as it, getCompatibleCSSFrameworks as j, getApiFrontendCompatibilityIssue as k, createStackSelectionSearchParams as l, getCapabilityDefinitions as lt, isStackSelectionDefault as m, NON_OPTION_STACK_SELECTION_KEYS as n, getCategoryCliValues as nt, VIRTUAL_NONE_MULTI_SELECT_STACK_SELECTION_KEYS as o, getOptionMetadata as ot, isGraphStackSelection as p, DOTNET_CATEGORY_ORDER as q, STACK_SELECTION_KEYS as r, getCategoryDisplayName as rt, cliInputToProjectConfigPartial as s, isMultiSelectCategory as st, DEFAULT_STACK_SELECTION as t, TYPESCRIPT_CATEGORY_ORDER as tt, generateStackSelectionCommand as u, getCapabilityDisabledReason as ut, parseStackSelectionFromUrlRecord as v, KOTLIN_UNSUPPORTED_JAVA_TESTING_LIBRARIES as w, stackSelectionToProjectConfig as x, processCliArrayOption as y, isWebFrontend as z };
7670
- //# sourceMappingURL=stack-translation-Ay-_1mNB.mjs.map
7894
+ 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