@better-fullstack/types 2.2.0 → 2.3.1

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/dist/{defaults-DyNR1d-V.d.mts → defaults-BCprHCB6.d.mts} +2 -2
  2. package/dist/defaults-BCprHCB6.d.mts.map +1 -0
  3. package/dist/{defaults-DgL5YPQY.mjs → defaults-Cl16mM84.mjs} +10 -1
  4. package/dist/defaults-Cl16mM84.mjs.map +1 -0
  5. package/dist/defaults.d.mts +3 -3
  6. package/dist/defaults.mjs +1 -1
  7. package/dist/index.d.mts +6 -6
  8. package/dist/index.d.mts.map +1 -1
  9. package/dist/index.mjs +89 -5
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/json-schema.d.mts +1573 -313
  12. package/dist/json-schema.d.mts.map +1 -1
  13. package/dist/json-schema.mjs +10 -2
  14. package/dist/json-schema.mjs.map +1 -1
  15. package/dist/{schemas-D9kkuJz7.d.mts → schemas-B79HRN5e.d.mts} +1751 -614
  16. package/dist/schemas-B79HRN5e.d.mts.map +1 -0
  17. package/dist/{schemas-l7hOhH8U.mjs → schemas-CprYz5Sh.mjs} +142 -4
  18. package/dist/schemas-CprYz5Sh.mjs.map +1 -0
  19. package/dist/schemas.d.mts +2 -2
  20. package/dist/schemas.mjs +2 -2
  21. package/dist/{stack-graph-F6UKYYR0.d.mts → stack-graph-BkHZlyKH.d.mts} +2 -2
  22. package/dist/{stack-graph-F6UKYYR0.d.mts.map → stack-graph-BkHZlyKH.d.mts.map} +1 -1
  23. package/dist/{stack-graph-C8r3fTh4.mjs → stack-graph-DiLi3WuL.mjs} +51 -9
  24. package/dist/stack-graph-DiLi3WuL.mjs.map +1 -0
  25. package/dist/stack-graph.d.mts +3 -3
  26. package/dist/stack-graph.mjs +2 -2
  27. package/dist/{stack-translation-Kr0TyRAm.mjs → stack-translation-Ay-_1mNB.mjs} +418 -21
  28. package/dist/stack-translation-Ay-_1mNB.mjs.map +1 -0
  29. package/dist/{stack-translation-BNHNx5_b.d.mts → stack-translation-BmsX82IA.d.mts} +26 -8
  30. package/dist/stack-translation-BmsX82IA.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-C7RpHf2e.d.mts → types-BuRzqsRV.d.mts} +12 -3
  34. package/dist/types-BuRzqsRV.d.mts.map +1 -0
  35. package/dist/types.d.mts +3 -3
  36. package/package.json +1 -1
  37. package/dist/defaults-DgL5YPQY.mjs.map +0 -1
  38. package/dist/defaults-DyNR1d-V.d.mts.map +0 -1
  39. package/dist/schemas-D9kkuJz7.d.mts.map +0 -1
  40. package/dist/schemas-l7hOhH8U.mjs.map +0 -1
  41. package/dist/stack-graph-C8r3fTh4.mjs.map +0 -1
  42. package/dist/stack-translation-BNHNx5_b.d.mts.map +0 -1
  43. package/dist/stack-translation-Kr0TyRAm.mjs.map +0 -1
  44. package/dist/types-C7RpHf2e.d.mts.map +0 -1
@@ -1,4 +1,4 @@
1
- import { $i as SERVER_DEPLOY_VALUES, $n as JAVA_AUTH_VALUES, $r as PYTHON_WEB_FRAMEWORK_VALUES, A as CSS_FRAMEWORK_VALUES, Ai as RUST_OBSERVABILITY_VALUES, An as GO_WEB_FRAMEWORK_VALUES, At as EMAIL_VALUES, B as DOTNET_JOB_QUEUE_VALUES, Br as PYTHON_AI_VALUES, Ca as TESTING_VALUES, Ci as RUST_CACHING_VALUES, Cn as GO_ORM_VALUES, Cr as MOBILE_PUSH_VALUES, Ct as ELIXIR_OBSERVABILITY_VALUES, Da as UI_LIBRARY_VALUES, Di as RUST_LIBRARIES_VALUES, Dn as GO_TEMPLATING_VALUES, Dt as ELIXIR_TESTING_VALUES, Ei as RUST_FRONTEND_VALUES, En as GO_REALTIME_VALUES, Er as MOBILE_UI_VALUES, Et as ELIXIR_REALTIME_VALUES, G as DOTNET_VALIDATION_VALUES, Gr as PYTHON_GRAPHQL_VALUES, H as DOTNET_ORM_VALUES, Hr as PYTHON_AUTH_VALUES, I as DOTNET_API_VALUES, Ir as ORM_VALUES, Jr as PYTHON_QUALITY_VALUES, K as DOTNET_WEB_FRAMEWORK_VALUES, Kr as PYTHON_OBSERVABILITY_VALUES, L as DOTNET_AUTH_VALUES, Mi as RUST_REALTIME_VALUES, N as DATABASE_SETUP_VALUES, Ni as RUST_TEMPLATING_VALUES, O as CMS_VALUES, Oa as VALIDATION_VALUES, Oi as RUST_LOGGING_VALUES, On as GO_TESTING_VALUES, Ot as ELIXIR_VALIDATION_VALUES, P as DATABASE_VALUES, Pa as WEB_DEPLOY_VALUES, Pi as RUST_WEB_FRAMEWORK_VALUES, Pr as OBSERVABILITY_VALUES, Qi as SEARCH_VALUES, Qn as JAVA_API_VALUES, Qr as PYTHON_VALIDATION_VALUES, R as DOTNET_CACHING_VALUES, Si as RUST_AUTH_VALUES, Sn as GO_OBSERVABILITY_VALUES, Sr as MOBILE_OTA_VALUES, St as ELIXIR_LIBRARIES_VALUES, T as CACHING_VALUES, Ti as RUST_ERROR_HANDLING_VALUES, Tn as GO_QUALITY_VALUES, Tr as MOBILE_TESTING_VALUES, Tt as ELIXIR_QUALITY_VALUES, U as DOTNET_REALTIME_VALUES, Ur as PYTHON_CACHING_VALUES, V as DOTNET_OBSERVABILITY_VALUES, Vr as PYTHON_API_VALUES, W as DOTNET_TESTING_VALUES, Wr as PYTHON_CLI_VALUES, Xr as PYTHON_TASK_QUEUE_VALUES, Yn as I18N_VALUES, Yr as PYTHON_REALTIME_VALUES, Zr as PYTHON_TESTING_VALUES, _n as GO_CONFIG_VALUES, _t as ELIXIR_HTTP_SERVER_VALUES, a as ANALYTICS_VALUES, an as FILE_UPLOAD_VALUES, ar as JAVA_TESTING_LIBRARIES_VALUES, bi as RUNTIME_VALUES, bn as GO_MESSAGE_QUEUE_VALUES, br as MOBILE_DEEP_LINKING_VALUES, bt as ELIXIR_JOBS_VALUES, c as API_VALUES, ct as EFFECT_VALUES, d as AUTH_VALUES, dt as ELIXIR_AUTH_VALUES, er as JAVA_BUILD_TOOL_VALUES, ft as ELIXIR_CACHING_VALUES, gn as GO_CLI_VALUES, gt as ELIXIR_EMAIL_VALUES, hn as GO_CACHING_VALUES, ht as ELIXIR_DOCUMENTATION_VALUES, i as AI_VALUES, in as FILE_STORAGE_VALUES, ir as JAVA_ORM_VALUES, ji as RUST_ORM_VALUES, jt as EXAMPLES_VALUES, ka as VECTOR_DB_VALUES, ki as RUST_MESSAGE_QUEUE_VALUES, kn as GO_VALIDATION_VALUES, kt as ELIXIR_WEB_FRAMEWORK_VALUES, l as APP_PLATFORM_ADDON_VALUES, lt as ELIXIR_API_VALUES, mn as GO_AUTH_VALUES, mt as ELIXIR_DEPLOY_VALUES, nr as JAVA_LIBRARIES_VALUES, o as ANIMATION_VALUES, on as FORMS_VALUES, or as JAVA_WEB_FRAMEWORK_VALUES, pn as GO_API_VALUES, pt as ELIXIR_CLUSTERING_VALUES, qr as PYTHON_ORM_VALUES, rn as FEATURE_FLAGS_VALUES, rr as JAVA_LOGGING_VALUES, sa as STATE_MANAGEMENT_VALUES, sn as FRONTEND_VALUES, sr as JOB_QUEUE_VALUES, t as ADDONS_VALUES, tr as JAVA_LANGUAGE_VALUES, ut as ELIXIR_APPLICATION_FRAMEWORK_VALUES, va as StackPartRoleSchema, vi as RATE_LIMIT_VALUES, vn as GO_DI_VALUES, vr as LOGGING_VALUES, vt as ELIXIR_HTTP_VALUES, wi as RUST_CLI_VALUES, wn as GO_PROTO_TOOLING_VALUES, wr as MOBILE_STORAGE_VALUES, wt as ELIXIR_ORM_VALUES, xi as RUST_API_VALUES, xn as GO_MIGRATIONS_VALUES, xr as MOBILE_NAVIGATION_VALUES, y as BACKEND_VALUES, yi as REALTIME_VALUES, yn as GO_LOGGING_VALUES, yt as ELIXIR_I18N_VALUES, z as DOTNET_DEPLOY_VALUES, zr as PAYMENTS_VALUES } from "./schemas-l7hOhH8U.mjs";
1
+ import { $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, Cn as GO_MIGRATIONS_VALUES, Cr as MOBILE_LIBRARIES_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, I as DOTNET_API_VALUES, Ia as StackPartRoleSchema, Ii as RATE_LIMIT_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, Nt as EXAMPLES_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, 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, 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, ln as FRONTEND_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, 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, t as ADDONS_VALUES, ti as PYTHON_OBSERVABILITY_VALUES, tr as JAVA_AUTH_VALUES, ui as PYTHON_WEB_FRAMEWORK_VALUES, ut as EFFECT_VALUES, vn as GO_CLI_VALUES, vt as ELIXIR_EMAIL_VALUES, wn as GO_OBSERVABILITY_VALUES, wr as MOBILE_NAVIGATION_VALUES, wt as ELIXIR_LIBRARIES_VALUES, xn as GO_LOGGING_VALUES, xt as ELIXIR_I18N_VALUES, y as BACKEND_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
2
 
3
3
  //#region src/stack-compatibility-rules.ts
4
4
  const WEB_FRAMEWORKS = [
@@ -567,12 +567,14 @@ const LEGACY_MOBILE_SINGLE_CATEGORIES = {
567
567
  ota: "mobileOTA",
568
568
  deepLinking: "mobileDeepLinking"
569
569
  };
570
+ const LEGACY_MOBILE_ARRAY_CATEGORIES = { libraries: "mobileLibraries" };
570
571
  const LEGACY_BACKEND_ARRAY_CATEGORIES_BY_ECOSYSTEM = {
571
572
  rust: { libraries: "rustLibraries" },
572
573
  python: {
573
574
  ai: "pythonAi",
574
575
  testing: "pythonTesting",
575
- cli: "pythonCli"
576
+ cli: "pythonCli",
577
+ data: "pythonData"
576
578
  },
577
579
  go: { testing: "goTesting" },
578
580
  java: {
@@ -581,7 +583,8 @@ const LEGACY_BACKEND_ARRAY_CATEGORIES_BY_ECOSYSTEM = {
581
583
  },
582
584
  dotnet: {
583
585
  testing: "dotnetTesting",
584
- observability: "dotnetObservability"
586
+ observability: "dotnetObservability",
587
+ libraries: "dotnetLibraries"
585
588
  },
586
589
  elixir: { libraries: "elixirLibraries" }
587
590
  };
@@ -645,11 +648,14 @@ const LEGACY_ARRAY_CATEGORIES = new Set([
645
648
  "pythonAi",
646
649
  "javaLibraries",
647
650
  "javaTestingLibraries",
651
+ "mobileLibraries",
652
+ "dotnetLibraries",
648
653
  "dotnetTesting",
649
654
  "dotnetObservability",
650
655
  "goTesting",
651
656
  "pythonTesting",
652
657
  "pythonCli",
658
+ "pythonData",
653
659
  "elixirLibraries"
654
660
  ]);
655
661
  function getAddonStackPartBinding(toolId) {
@@ -694,7 +700,7 @@ function getAddonStackPartBinding(toolId) {
694
700
  const OWNER_ROLES_BY_SCOPED_ROLE = {
695
701
  ...Object.fromEntries([...Object.keys(LEGACY_TYPESCRIPT_BACKEND_SINGLE_CATEGORIES), ...Object.keys(LEGACY_TYPESCRIPT_BACKEND_INFRA_CATEGORIES)].map((role) => [role, ["backend"]])),
696
702
  ...Object.fromEntries(Object.keys(LEGACY_TYPESCRIPT_FRONTEND_SINGLE_CATEGORIES).map((role) => [role, ["frontend"]])),
697
- ...Object.fromEntries(Object.keys(LEGACY_MOBILE_SINGLE_CATEGORIES).map((role) => [role, ["mobile"]])),
703
+ ...Object.fromEntries([...Object.keys(LEGACY_MOBILE_SINGLE_CATEGORIES), ...Object.keys(LEGACY_MOBILE_ARRAY_CATEGORIES)].map((role) => [role, ["mobile"]])),
698
704
  deploy: ["frontend", "backend"],
699
705
  dbSetup: ["database"],
700
706
  migrations: ["backend"],
@@ -712,7 +718,17 @@ const OWNER_ROLES_BY_SCOPED_ROLE = {
712
718
  cli: ["backend"],
713
719
  errorHandling: ["backend"],
714
720
  httpClient: ["frontend", "backend"],
715
- libraries: ["frontend", "backend"]
721
+ libraries: [
722
+ "frontend",
723
+ "mobile",
724
+ "backend"
725
+ ],
726
+ cloudSdk: ["backend"],
727
+ data: ["backend"],
728
+ media: ["backend"],
729
+ server: ["backend"],
730
+ packageManager: ["backend"],
731
+ messageQueue: ["backend"]
716
732
  };
717
733
  const FRESH_UNSUPPORTED_STATE_MANAGEMENT_TOOLS = new Set([
718
734
  "nanostores",
@@ -801,7 +817,13 @@ const LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM = {
801
817
  codeQuality: "pythonQuality",
802
818
  caching: "pythonCaching",
803
819
  realtime: "pythonRealtime",
804
- observability: "pythonObservability"
820
+ observability: "pythonObservability",
821
+ cloudSdk: "pythonCloudSdk",
822
+ httpClient: "pythonHttpClient",
823
+ media: "pythonMedia",
824
+ server: "pythonServer",
825
+ packageManager: "pythonPackageManager",
826
+ messageQueue: "pythonMessageQueue"
805
827
  },
806
828
  go: {
807
829
  cli: "goCli",
@@ -882,6 +904,7 @@ const GRAPH_PROJECTION_DEFAULT_LEGACY_CATEGORIES = [
882
904
  ...Object.values(LEGACY_TYPESCRIPT_FRONTEND_SINGLE_CATEGORIES),
883
905
  ...Object.values(LEGACY_DATABASE_SINGLE_CATEGORIES),
884
906
  ...Object.values(LEGACY_MOBILE_SINGLE_CATEGORIES),
907
+ ...Object.values(LEGACY_MOBILE_ARRAY_CATEGORIES),
885
908
  ...Object.values(LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM).flatMap((categories) => Object.values(categories)),
886
909
  ...Object.values(LEGACY_SHARED_BACKEND_SINGLE_CATEGORIES_BY_ECOSYSTEM).flatMap((categories) => Object.values(categories))
887
910
  ];
@@ -965,6 +988,7 @@ const STACK_TOOL_DEFINITIONS = [
965
988
  ...defineTools(MOBILE_PUSH_VALUES, "push", "react-native", "mobilePush"),
966
989
  ...defineTools(MOBILE_OTA_VALUES, "ota", "react-native", "mobileOTA"),
967
990
  ...defineTools(MOBILE_DEEP_LINKING_VALUES, "deepLinking", "react-native", "mobileDeepLinking"),
991
+ ...defineTools(MOBILE_LIBRARIES_VALUES, "libraries", "react-native", "mobileLibraries", { allowMultiple: true }),
968
992
  ...defineTools(RUST_WEB_FRAMEWORK_VALUES, "backend", "rust", "rustWebFramework"),
969
993
  ...defineTools(RUST_FRONTEND_VALUES, "frontend", "rust", "rustFrontend"),
970
994
  ...defineTools(RUST_ORM_VALUES, "orm", "rust", "rustOrm"),
@@ -1001,6 +1025,13 @@ const STACK_TOOL_DEFINITIONS = [
1001
1025
  ...defineTools(PYTHON_REALTIME_VALUES, "realtime", "python", "pythonRealtime"),
1002
1026
  ...defineTools(PYTHON_OBSERVABILITY_VALUES, "observability", "python", "pythonObservability"),
1003
1027
  ...defineTools(PYTHON_CLI_VALUES, "cli", "python", "pythonCli", { allowMultiple: true }),
1028
+ ...defineTools(PYTHON_CLOUD_SDK_VALUES, "cloudSdk", "python", "pythonCloudSdk"),
1029
+ ...defineTools(PYTHON_HTTP_CLIENT_VALUES, "httpClient", "python", "pythonHttpClient"),
1030
+ ...defineTools(PYTHON_DATA_VALUES, "data", "python", "pythonData", { allowMultiple: true }),
1031
+ ...defineTools(PYTHON_MEDIA_VALUES, "media", "python", "pythonMedia"),
1032
+ ...defineTools(PYTHON_SERVER_VALUES, "server", "python", "pythonServer"),
1033
+ ...defineTools(PYTHON_PACKAGE_MANAGER_VALUES, "packageManager", "python", "pythonPackageManager"),
1034
+ ...defineTools(PYTHON_MESSAGE_QUEUE_VALUES, "messageQueue", "python", "pythonMessageQueue"),
1004
1035
  ...defineTools(GO_WEB_FRAMEWORK_VALUES, "backend", "go", "goWebFramework"),
1005
1036
  ...defineTools(GO_ORM_VALUES, "orm", "go", "goOrm"),
1006
1037
  ...defineTools(GO_API_VALUES, "api", "go", "goApi"),
@@ -1047,6 +1078,7 @@ const STACK_TOOL_DEFINITIONS = [
1047
1078
  ...defineTools(DOTNET_VALIDATION_VALUES, "validation", "dotnet", "dotnetValidation"),
1048
1079
  ...defineTools(DOTNET_CACHING_VALUES, "caching", "dotnet", "dotnetCaching"),
1049
1080
  ...defineTools(DOTNET_DEPLOY_VALUES, "deploy", "dotnet", "dotnetDeploy"),
1081
+ ...defineTools(DOTNET_LIBRARIES_VALUES, "libraries", "dotnet", "dotnetLibraries", { allowMultiple: true }),
1050
1082
  ...defineTools(ELIXIR_WEB_FRAMEWORK_VALUES, "backend", "elixir", "elixirWebFramework"),
1051
1083
  ...defineTools(ELIXIR_ORM_VALUES, "orm", "elixir", "elixirOrm"),
1052
1084
  ...defineTools(ELIXIR_AUTH_VALUES, "auth", "elixir", "elixirAuth"),
@@ -2272,7 +2304,17 @@ function legacyProjectConfigToStackParts(config, source = "legacy") {
2272
2304
  addLegacyPart(parts, "api", "typescript", config.api, source, capabilityOwner);
2273
2305
  addLegacyPart(parts, "auth", config.ecosystem ?? "typescript", config.auth, source, capabilityOwner);
2274
2306
  if (frontendPart?.ecosystem === "typescript") for (const [role, category] of Object.entries(LEGACY_TYPESCRIPT_FRONTEND_SINGLE_CATEGORIES)) addLegacyPart(parts, role, "typescript", config[category], source, frontendPart.id);
2275
- if (mobilePart?.ecosystem === "react-native") for (const [role, category] of Object.entries(LEGACY_MOBILE_SINGLE_CATEGORIES)) addLegacyPart(parts, role, "react-native", config[category], source, mobilePart.id);
2307
+ if (mobilePart?.ecosystem === "react-native") {
2308
+ for (const [role, category] of Object.entries(LEGACY_MOBILE_SINGLE_CATEGORIES)) addLegacyPart(parts, role, "react-native", config[category], source, mobilePart.id);
2309
+ for (const [role, category] of Object.entries(LEGACY_MOBILE_ARRAY_CATEGORIES)) {
2310
+ const values = config[category];
2311
+ if (!Array.isArray(values)) continue;
2312
+ for (const toolId of values) {
2313
+ if (typeof toolId !== "string") continue;
2314
+ addLegacyPart(parts, role, "react-native", toolId, source, mobilePart.id);
2315
+ }
2316
+ }
2317
+ }
2276
2318
  if (backendPart?.ecosystem === "typescript") {
2277
2319
  for (const [role, category] of Object.entries(LEGACY_TYPESCRIPT_BACKEND_INFRA_CATEGORIES)) addLegacyPart(parts, role, "typescript", config[category], source, backendPart.id);
2278
2320
  for (const [role, category] of Object.entries(LEGACY_TYPESCRIPT_BACKEND_SINGLE_CATEGORIES)) addLegacyPart(parts, role, "typescript", config[category], source, backendPart.id);
@@ -2418,7 +2460,7 @@ function stackGraphToLegacyProjectConfigForEcosystem(config, ecosystem) {
2418
2460
  ecosystem,
2419
2461
  frontend: [...frontend && frontend.ecosystem === "typescript" ? [frontend.toolId] : [], ...mobile && ["typescript", "react-native"].includes(ecosystem) ? [mobile.toolId] : []]
2420
2462
  };
2421
- for (const category of GRAPH_PROJECTION_DEFAULT_LEGACY_CATEGORIES) projected[category] = "none";
2463
+ for (const category of GRAPH_PROJECTION_DEFAULT_LEGACY_CATEGORIES) projected[category] = LEGACY_ARRAY_CATEGORIES.has(category) ? [] : "none";
2422
2464
  projected.addons = [];
2423
2465
  projected.examples = [];
2424
2466
  projectLegacyCategoryFromPart(projected, backend, ecosystem, parts);
@@ -2532,4 +2574,4 @@ function validateStackParts(parts) {
2532
2574
 
2533
2575
  //#endregion
2534
2576
  export { isBackendUtilsCompatibleBackend as C, requiresChatSdkVercelAIForExamples as E, hasTauriCompatibleFrontend as S, isExampleChatSdkAllowed as T, UI_LIBRARY_COMPATIBILITY as _, getAddonStackPartBinding as a, hasPWACompatibleFrontend as b, getStackPartOptions as c, materializeProvidedStackParts as d, parseStackPartSpecs as f, BACKEND_UTILS_COMPATIBLE_BACKENDS as g, validateStackParts as h, formatStackPartSpec as i, getStackToolDefinitions as l, stackPartsToLegacyProjectConfigPartial as m, STACK_TOOL_DEFINITIONS as n, getRoleTargetPath as o, stackGraphToLegacyProjectConfigForEcosystem as p, createStackPart as r, getStackPartCompatibilityIssueForPart as s, ELIXIR_UNSUPPORTED_GRAPH_TOOLS as t, legacyProjectConfigToStackParts as u, getUnsupportedWebDeployFrontend as v, isExampleAIAllowed as w, hasTanStackAICompatibleFrontend as x, hasDockerComposeCompatibleFrontend as y };
2535
- //# sourceMappingURL=stack-graph-C8r3fTh4.mjs.map
2577
+ //# sourceMappingURL=stack-graph-DiLi3WuL.mjs.map