@better-fullstack/types 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{defaults-14rSFqF6.d.mts → defaults-azh56xa4.d.mts} +2 -2
- package/dist/defaults-azh56xa4.d.mts.map +1 -0
- package/dist/defaults.d.mts +3 -3
- package/dist/index.d.mts +5 -5
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/json-schema.d.mts +300 -268
- package/dist/json-schema.d.mts.map +1 -1
- package/dist/json-schema.mjs +1 -1
- package/dist/{schemas-jMCVu0xX.d.mts → schemas-C3iF9TRm.d.mts} +1271 -347
- package/dist/schemas-C3iF9TRm.d.mts.map +1 -0
- package/dist/{schemas-Cg75ZlzB.mjs → schemas-ZxRzd5TP.mjs} +18 -9
- package/dist/schemas-ZxRzd5TP.mjs.map +1 -0
- package/dist/schemas.d.mts +1 -1
- package/dist/schemas.mjs +1 -1
- package/dist/{stack-graph-Q0PrewPk.mjs → stack-graph-BwtoYnJg.mjs} +171 -9
- package/dist/stack-graph-BwtoYnJg.mjs.map +1 -0
- package/dist/{stack-graph-CjobAqsm.d.mts → stack-graph-CiXONkqh.d.mts} +4 -3
- package/dist/stack-graph-CiXONkqh.d.mts.map +1 -0
- package/dist/stack-graph.d.mts +3 -3
- package/dist/stack-graph.mjs +2 -2
- package/dist/{stack-translation-CjsJzLCX.d.mts → stack-translation-BNwlAM1B.d.mts} +3 -3
- package/dist/{stack-translation-CjsJzLCX.d.mts.map → stack-translation-BNwlAM1B.d.mts.map} +1 -1
- package/dist/{stack-translation-gNYPvlYt.mjs → stack-translation-DNT-iMAE.mjs} +255 -111
- package/dist/stack-translation-DNT-iMAE.mjs.map +1 -0
- package/dist/stack-translation.d.mts +4 -4
- package/dist/stack-translation.mjs +3 -3
- package/dist/{types-DwY2BNyU.d.mts → types-BG-DsHQ9.d.mts} +2 -2
- package/dist/types-BG-DsHQ9.d.mts.map +1 -0
- package/dist/types.d.mts +2 -2
- package/package.json +1 -1
- package/dist/defaults-14rSFqF6.d.mts.map +0 -1
- package/dist/schemas-Cg75ZlzB.mjs.map +0 -1
- package/dist/schemas-jMCVu0xX.d.mts.map +0 -1
- package/dist/stack-graph-CjobAqsm.d.mts.map +0 -1
- package/dist/stack-graph-Q0PrewPk.mjs.map +0 -1
- package/dist/stack-translation-gNYPvlYt.mjs.map +0 -1
- package/dist/types-DwY2BNyU.d.mts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $n as MOBILE_STORAGE_VALUES, $r as RUST_CLI_VALUES, An as JAVA_AUTH_VALUES, B as DOTNET_OBSERVABILITY_VALUES, Cr as PYTHON_QUALITY_VALUES, Ct as ELIXIR_WEB_FRAMEWORK_VALUES, D as CMS_VALUES, Di as SEARCH_VALUES, Dr as PYTHON_VALIDATION_VALUES, En as I18N_VALUES, Er as PYTHON_TESTING_VALUES, F as DOTNET_API_VALUES, Fn as JAVA_TESTING_LIBRARIES_VALUES, G as DOTNET_WEB_FRAMEWORK_VALUES, H as DOTNET_REALTIME_VALUES, I as DOTNET_AUTH_VALUES, Ii as STATE_MANAGEMENT_VALUES, In as JAVA_WEB_FRAMEWORK_VALUES, Jr as REALTIME_VALUES, Jt as FILE_UPLOAD_VALUES, Kt as FEATURE_FLAGS_VALUES, L as DOTNET_CACHING_VALUES, Ln as JOB_QUEUE_VALUES, M as DATABASE_SETUP_VALUES, Mn as JAVA_LIBRARIES_VALUES, N as DATABASE_VALUES, Nn as JAVA_LOGGING_VALUES, Oi as SERVER_DEPLOY_VALUES, Or as PYTHON_WEB_FRAMEWORK_VALUES, Pn as JAVA_ORM_VALUES, Qr as RUST_CACHING_VALUES, R as DOTNET_DEPLOY_VALUES, Sr as PYTHON_ORM_VALUES, St as ELIXIR_VALIDATION_VALUES, Tr as PYTHON_TASK_QUEUE_VALUES, Tt as EXAMPLES_VALUES, U as DOTNET_TESTING_VALUES, V as DOTNET_ORM_VALUES, W as DOTNET_VALIDATION_VALUES, Xn as MOBILE_NAVIGATION_VALUES, Xr as RUST_API_VALUES, Xt as FRONTEND_VALUES, Yr as RUNTIME_VALUES, Yt as FORMS_VALUES, Zr as RUST_AUTH_VALUES, _r as PYTHON_AUTH_VALUES, _t as ELIXIR_OBSERVABILITY_VALUES, a as ANALYTICS_VALUES, ai as RUST_OBSERVABILITY_VALUES, an as GO_CLI_VALUES, br as PYTHON_GRAPHQL_VALUES, bt as ELIXIR_REALTIME_VALUES, c as API_VALUES, ci as RUST_TEMPLATING_VALUES, cn as GO_MESSAGE_QUEUE_VALUES, ct as ELIXIR_API_VALUES, dn as GO_REALTIME_VALUES, dr as ORM_VALUES, dt as ELIXIR_DEPLOY_VALUES, ei as RUST_ERROR_HANDLING_VALUES, er as MOBILE_TESTING_VALUES, fn as GO_TESTING_VALUES, ft as ELIXIR_EMAIL_VALUES, gr as PYTHON_API_VALUES, gt as ELIXIR_LIBRARIES_VALUES, hr as PYTHON_AI_VALUES, i as AI_VALUES, ia as VECTOR_DB_VALUES, ii as RUST_MESSAGE_QUEUE_VALUES, in as GO_CACHING_VALUES, jn as JAVA_BUILD_TOOL_VALUES, k as CSS_FRAMEWORK_VALUES, kn as JAVA_API_VALUES, la as WEB_DEPLOY_VALUES, li as RUST_WEB_FRAMEWORK_VALUES, ln as GO_OBSERVABILITY_VALUES, lr as OBSERVABILITY_VALUES, lt as ELIXIR_AUTH_VALUES, mr as PAYMENTS_VALUES, mt as ELIXIR_JOBS_VALUES, na as UI_LIBRARY_VALUES, ni as RUST_LIBRARIES_VALUES, nn as GO_API_VALUES, o as ANIMATION_VALUES, oi as RUST_ORM_VALUES, on as GO_CONFIG_VALUES, pn as GO_WEB_FRAMEWORK_VALUES, pt as ELIXIR_HTTP_VALUES, qi as StackPartRoleSchema, qn as LOGGING_VALUES, qr as RATE_LIMIT_VALUES, qt as FILE_STORAGE_VALUES, ra as VALIDATION_VALUES, ri as RUST_LOGGING_VALUES, rn as GO_AUTH_VALUES, si as RUST_REALTIME_VALUES, sn as GO_LOGGING_VALUES, st as EFFECT_VALUES, t as ADDONS_VALUES, ti as RUST_FRONTEND_VALUES, tr as MOBILE_UI_VALUES, u as AUTH_VALUES, un as GO_ORM_VALUES, ut as ELIXIR_CACHING_VALUES, v as BACKEND_VALUES, vr as PYTHON_CACHING_VALUES, vt as ELIXIR_ORM_VALUES, w as CACHING_VALUES, wr as PYTHON_REALTIME_VALUES, wt as EMAIL_VALUES, xr as PYTHON_OBSERVABILITY_VALUES, xt as ELIXIR_TESTING_VALUES, yr as PYTHON_CLI_VALUES, yt as ELIXIR_QUALITY_VALUES, z as DOTNET_JOB_QUEUE_VALUES } from "./schemas-
|
|
1
|
+
import { $n as MOBILE_STORAGE_VALUES, $r as RUST_CLI_VALUES, An as JAVA_AUTH_VALUES, B as DOTNET_OBSERVABILITY_VALUES, Cr as PYTHON_QUALITY_VALUES, Ct as ELIXIR_WEB_FRAMEWORK_VALUES, D as CMS_VALUES, Di as SEARCH_VALUES, Dr as PYTHON_VALIDATION_VALUES, En as I18N_VALUES, Er as PYTHON_TESTING_VALUES, F as DOTNET_API_VALUES, Fn as JAVA_TESTING_LIBRARIES_VALUES, G as DOTNET_WEB_FRAMEWORK_VALUES, H as DOTNET_REALTIME_VALUES, I as DOTNET_AUTH_VALUES, Ii as STATE_MANAGEMENT_VALUES, In as JAVA_WEB_FRAMEWORK_VALUES, Jr as REALTIME_VALUES, Jt as FILE_UPLOAD_VALUES, Kt as FEATURE_FLAGS_VALUES, L as DOTNET_CACHING_VALUES, Ln as JOB_QUEUE_VALUES, M as DATABASE_SETUP_VALUES, Mn as JAVA_LIBRARIES_VALUES, N as DATABASE_VALUES, Nn as JAVA_LOGGING_VALUES, Oi as SERVER_DEPLOY_VALUES, Or as PYTHON_WEB_FRAMEWORK_VALUES, Pn as JAVA_ORM_VALUES, Qn as MOBILE_PUSH_VALUES, Qr as RUST_CACHING_VALUES, R as DOTNET_DEPLOY_VALUES, Sr as PYTHON_ORM_VALUES, St as ELIXIR_VALIDATION_VALUES, Tr as PYTHON_TASK_QUEUE_VALUES, Tt as EXAMPLES_VALUES, U as DOTNET_TESTING_VALUES, V as DOTNET_ORM_VALUES, W as DOTNET_VALIDATION_VALUES, Xn as MOBILE_NAVIGATION_VALUES, Xr as RUST_API_VALUES, Xt as FRONTEND_VALUES, Yn as MOBILE_DEEP_LINKING_VALUES, Yr as RUNTIME_VALUES, Yt as FORMS_VALUES, Zn as MOBILE_OTA_VALUES, Zr as RUST_AUTH_VALUES, _r as PYTHON_AUTH_VALUES, _t as ELIXIR_OBSERVABILITY_VALUES, a as ANALYTICS_VALUES, ai as RUST_OBSERVABILITY_VALUES, an as GO_CLI_VALUES, br as PYTHON_GRAPHQL_VALUES, bt as ELIXIR_REALTIME_VALUES, c as API_VALUES, ci as RUST_TEMPLATING_VALUES, cn as GO_MESSAGE_QUEUE_VALUES, ct as ELIXIR_API_VALUES, dn as GO_REALTIME_VALUES, dr as ORM_VALUES, dt as ELIXIR_DEPLOY_VALUES, ei as RUST_ERROR_HANDLING_VALUES, er as MOBILE_TESTING_VALUES, fn as GO_TESTING_VALUES, ft as ELIXIR_EMAIL_VALUES, gr as PYTHON_API_VALUES, gt as ELIXIR_LIBRARIES_VALUES, hr as PYTHON_AI_VALUES, i as AI_VALUES, ia as VECTOR_DB_VALUES, ii as RUST_MESSAGE_QUEUE_VALUES, in as GO_CACHING_VALUES, jn as JAVA_BUILD_TOOL_VALUES, k as CSS_FRAMEWORK_VALUES, kn as JAVA_API_VALUES, la as WEB_DEPLOY_VALUES, li as RUST_WEB_FRAMEWORK_VALUES, ln as GO_OBSERVABILITY_VALUES, lr as OBSERVABILITY_VALUES, lt as ELIXIR_AUTH_VALUES, mr as PAYMENTS_VALUES, mt as ELIXIR_JOBS_VALUES, na as UI_LIBRARY_VALUES, ni as RUST_LIBRARIES_VALUES, nn as GO_API_VALUES, o as ANIMATION_VALUES, oi as RUST_ORM_VALUES, on as GO_CONFIG_VALUES, pn as GO_WEB_FRAMEWORK_VALUES, pt as ELIXIR_HTTP_VALUES, qi as StackPartRoleSchema, qn as LOGGING_VALUES, qr as RATE_LIMIT_VALUES, qt as FILE_STORAGE_VALUES, ra as VALIDATION_VALUES, ri as RUST_LOGGING_VALUES, rn as GO_AUTH_VALUES, si as RUST_REALTIME_VALUES, sn as GO_LOGGING_VALUES, st as EFFECT_VALUES, t as ADDONS_VALUES, ti as RUST_FRONTEND_VALUES, tr as MOBILE_UI_VALUES, u as AUTH_VALUES, un as GO_ORM_VALUES, ut as ELIXIR_CACHING_VALUES, v as BACKEND_VALUES, vr as PYTHON_CACHING_VALUES, vt as ELIXIR_ORM_VALUES, w as CACHING_VALUES, wr as PYTHON_REALTIME_VALUES, wt as EMAIL_VALUES, xr as PYTHON_OBSERVABILITY_VALUES, xt as ELIXIR_TESTING_VALUES, yr as PYTHON_CLI_VALUES, yt as ELIXIR_QUALITY_VALUES, z as DOTNET_JOB_QUEUE_VALUES } from "./schemas-ZxRzd5TP.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/stack-compatibility-rules.ts
|
|
4
4
|
const WEB_FRAMEWORKS = [
|
|
@@ -526,7 +526,10 @@ const LEGACY_MOBILE_SINGLE_CATEGORIES = {
|
|
|
526
526
|
navigation: "mobileNavigation",
|
|
527
527
|
ui: "mobileUI",
|
|
528
528
|
storage: "mobileStorage",
|
|
529
|
-
testing: "mobileTesting"
|
|
529
|
+
testing: "mobileTesting",
|
|
530
|
+
push: "mobilePush",
|
|
531
|
+
ota: "mobileOTA",
|
|
532
|
+
deepLinking: "mobileDeepLinking"
|
|
530
533
|
};
|
|
531
534
|
const LEGACY_BACKEND_ARRAY_CATEGORIES_BY_ECOSYSTEM = {
|
|
532
535
|
rust: { libraries: "rustLibraries" },
|
|
@@ -580,6 +583,13 @@ const WORKSPACE_TOOLING_ADDONS = new Set([
|
|
|
580
583
|
"skills",
|
|
581
584
|
"backend-utils"
|
|
582
585
|
]);
|
|
586
|
+
const DOCKER_COMPOSE_COMPATIBLE_ECOSYSTEMS = new Set([
|
|
587
|
+
"typescript",
|
|
588
|
+
"python",
|
|
589
|
+
"go",
|
|
590
|
+
"rust",
|
|
591
|
+
"java"
|
|
592
|
+
]);
|
|
583
593
|
const LEGACY_ADDON_GRAPH_ROLES = new Set([
|
|
584
594
|
"appPlatform",
|
|
585
595
|
"codeQuality",
|
|
@@ -638,6 +648,7 @@ const OWNER_ROLES_BY_SCOPED_ROLE = {
|
|
|
638
648
|
deploy: ["frontend", "backend"],
|
|
639
649
|
dbSetup: ["database"],
|
|
640
650
|
ui: ["frontend", "mobile"],
|
|
651
|
+
graphql: ["backend"],
|
|
641
652
|
appPlatform: ["frontend"],
|
|
642
653
|
dataFetching: ["frontend"],
|
|
643
654
|
testing: [
|
|
@@ -735,7 +746,7 @@ const LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM = {
|
|
|
735
746
|
python: {
|
|
736
747
|
validation: "pythonValidation",
|
|
737
748
|
jobQueue: "pythonTaskQueue",
|
|
738
|
-
|
|
749
|
+
graphql: "pythonGraphql",
|
|
739
750
|
codeQuality: "pythonQuality",
|
|
740
751
|
caching: "pythonCaching",
|
|
741
752
|
realtime: "pythonRealtime",
|
|
@@ -774,6 +785,26 @@ const LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM = {
|
|
|
774
785
|
deploy: "elixirDeploy"
|
|
775
786
|
}
|
|
776
787
|
};
|
|
788
|
+
const LEGACY_SHARED_BACKEND_SINGLE_CATEGORIES_BY_ECOSYSTEM = {
|
|
789
|
+
rust: {
|
|
790
|
+
caching: "caching",
|
|
791
|
+
search: "search"
|
|
792
|
+
},
|
|
793
|
+
python: {
|
|
794
|
+
caching: "caching",
|
|
795
|
+
search: "search"
|
|
796
|
+
},
|
|
797
|
+
go: {
|
|
798
|
+
caching: "caching",
|
|
799
|
+
search: "search"
|
|
800
|
+
},
|
|
801
|
+
java: {
|
|
802
|
+
caching: "caching",
|
|
803
|
+
search: "search"
|
|
804
|
+
},
|
|
805
|
+
dotnet: {},
|
|
806
|
+
elixir: {}
|
|
807
|
+
};
|
|
777
808
|
const GRAPH_PROJECTION_DEFAULT_LEGACY_CATEGORIES = [
|
|
778
809
|
"backend",
|
|
779
810
|
"database",
|
|
@@ -788,7 +819,8 @@ const GRAPH_PROJECTION_DEFAULT_LEGACY_CATEGORIES = [
|
|
|
788
819
|
...Object.values(LEGACY_TYPESCRIPT_FRONTEND_SINGLE_CATEGORIES),
|
|
789
820
|
...Object.values(LEGACY_DATABASE_SINGLE_CATEGORIES),
|
|
790
821
|
...Object.values(LEGACY_MOBILE_SINGLE_CATEGORIES),
|
|
791
|
-
...Object.values(LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM).flatMap((categories) => Object.values(categories))
|
|
822
|
+
...Object.values(LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM).flatMap((categories) => Object.values(categories)),
|
|
823
|
+
...Object.values(LEGACY_SHARED_BACKEND_SINGLE_CATEGORIES_BY_ECOSYSTEM).flatMap((categories) => Object.values(categories))
|
|
792
824
|
];
|
|
793
825
|
function defineTools(values, role, ecosystem, legacyCategory, options = {}) {
|
|
794
826
|
return values.filter((toolId) => toolId !== "none").map((toolId) => {
|
|
@@ -864,6 +896,9 @@ const STACK_TOOL_DEFINITIONS = [
|
|
|
864
896
|
...defineTools(MOBILE_UI_VALUES, "ui", "react-native", "mobileUI"),
|
|
865
897
|
...defineTools(MOBILE_STORAGE_VALUES, "storage", "react-native", "mobileStorage"),
|
|
866
898
|
...defineTools(MOBILE_TESTING_VALUES, "testing", "react-native", "mobileTesting"),
|
|
899
|
+
...defineTools(MOBILE_PUSH_VALUES, "push", "react-native", "mobilePush"),
|
|
900
|
+
...defineTools(MOBILE_OTA_VALUES, "ota", "react-native", "mobileOTA"),
|
|
901
|
+
...defineTools(MOBILE_DEEP_LINKING_VALUES, "deepLinking", "react-native", "mobileDeepLinking"),
|
|
867
902
|
...defineTools(RUST_WEB_FRAMEWORK_VALUES, "backend", "rust", "rustWebFramework"),
|
|
868
903
|
...defineTools(RUST_FRONTEND_VALUES, "frontend", "rust", "rustFrontend"),
|
|
869
904
|
...defineTools(RUST_ORM_VALUES, "orm", "rust", "rustOrm"),
|
|
@@ -873,6 +908,8 @@ const STACK_TOOL_DEFINITIONS = [
|
|
|
873
908
|
...defineTools(["sentry"], "observability", "rust", "observability"),
|
|
874
909
|
...defineTools(RUST_REALTIME_VALUES, "realtime", "rust", "rustRealtime"),
|
|
875
910
|
...defineTools(RUST_MESSAGE_QUEUE_VALUES, "jobQueue", "rust", "rustMessageQueue"),
|
|
911
|
+
...defineTools(["upstash-redis"], "caching", "rust", "caching"),
|
|
912
|
+
...defineTools(["meilisearch"], "search", "rust", "search"),
|
|
876
913
|
...defineTools(RUST_OBSERVABILITY_VALUES, "observability", "rust", "rustObservability"),
|
|
877
914
|
...defineTools(RUST_TEMPLATING_VALUES, "templating", "rust", "rustTemplating"),
|
|
878
915
|
...defineTools(RUST_CLI_VALUES, "cli", "rust", "rustCli"),
|
|
@@ -889,10 +926,12 @@ const STACK_TOOL_DEFINITIONS = [
|
|
|
889
926
|
...defineTools(["resend"], "email", "python", "email"),
|
|
890
927
|
...defineTools(["sentry"], "observability", "python", "observability"),
|
|
891
928
|
...defineTools(PYTHON_TASK_QUEUE_VALUES, "jobQueue", "python", "pythonTaskQueue"),
|
|
892
|
-
...defineTools(PYTHON_GRAPHQL_VALUES, "
|
|
929
|
+
...defineTools(PYTHON_GRAPHQL_VALUES, "graphql", "python", "pythonGraphql"),
|
|
893
930
|
...defineTools(PYTHON_QUALITY_VALUES, "codeQuality", "python", "pythonQuality"),
|
|
894
931
|
...defineTools(PYTHON_TESTING_VALUES, "testing", "python", "pythonTesting", { allowMultiple: true }),
|
|
895
932
|
...defineTools(PYTHON_CACHING_VALUES, "caching", "python", "pythonCaching"),
|
|
933
|
+
...defineTools(["upstash-redis"], "caching", "python", "caching"),
|
|
934
|
+
...defineTools(["meilisearch"], "search", "python", "search"),
|
|
896
935
|
...defineTools(PYTHON_REALTIME_VALUES, "realtime", "python", "pythonRealtime"),
|
|
897
936
|
...defineTools(PYTHON_OBSERVABILITY_VALUES, "observability", "python", "pythonObservability"),
|
|
898
937
|
...defineTools(PYTHON_CLI_VALUES, "cli", "python", "pythonCli", { allowMultiple: true }),
|
|
@@ -908,6 +947,8 @@ const STACK_TOOL_DEFINITIONS = [
|
|
|
908
947
|
...defineTools(GO_REALTIME_VALUES, "realtime", "go", "goRealtime"),
|
|
909
948
|
...defineTools(GO_MESSAGE_QUEUE_VALUES, "jobQueue", "go", "goMessageQueue"),
|
|
910
949
|
...defineTools(GO_CACHING_VALUES, "caching", "go", "goCaching"),
|
|
950
|
+
...defineTools(["upstash-redis"], "caching", "go", "caching"),
|
|
951
|
+
...defineTools(["meilisearch"], "search", "go", "search"),
|
|
911
952
|
...defineTools(GO_CONFIG_VALUES, "config", "go", "goConfig"),
|
|
912
953
|
...defineTools(GO_OBSERVABILITY_VALUES, "observability", "go", "goObservability"),
|
|
913
954
|
...defineTools(JAVA_WEB_FRAMEWORK_VALUES, "backend", "java", "javaWebFramework"),
|
|
@@ -917,6 +958,8 @@ const STACK_TOOL_DEFINITIONS = [
|
|
|
917
958
|
...defineTools(JAVA_API_VALUES, "api", "java", "javaApi"),
|
|
918
959
|
...defineTools(["resend"], "email", "java", "email"),
|
|
919
960
|
...defineTools(["sentry"], "observability", "java", "observability"),
|
|
961
|
+
...defineTools(["upstash-redis"], "caching", "java", "caching"),
|
|
962
|
+
...defineTools(["meilisearch"], "search", "java", "search"),
|
|
920
963
|
...defineTools(JAVA_LOGGING_VALUES, "logging", "java", "javaLogging"),
|
|
921
964
|
...defineTools(JAVA_LIBRARIES_VALUES, "libraries", "java", "javaLibraries", { allowMultiple: true }),
|
|
922
965
|
...defineTools(JAVA_TESTING_LIBRARIES_VALUES, "testing", "java", "javaTestingLibraries", { allowMultiple: true }),
|
|
@@ -1058,6 +1101,47 @@ function createTypeScriptFrontendCompatibilityIssue(part, context) {
|
|
|
1058
1101
|
toolId: part.toolId,
|
|
1059
1102
|
message: `'${part.toolId}' is not compatible with the '${context.ownerToolId}' frontend.`
|
|
1060
1103
|
});
|
|
1104
|
+
if (context.ownerToolId === "astro" && context.settings?.astroIntegration !== void 0) {
|
|
1105
|
+
const astroIntegration = context.settings.astroIntegration;
|
|
1106
|
+
if (new Set([
|
|
1107
|
+
"shadcn-ui",
|
|
1108
|
+
"radix-ui",
|
|
1109
|
+
"chakra-ui",
|
|
1110
|
+
"nextui",
|
|
1111
|
+
"mui",
|
|
1112
|
+
"antd"
|
|
1113
|
+
]).has(part.toolId) && astroIntegration !== "react") {
|
|
1114
|
+
const libraryName = part.toolId === "shadcn-ui" ? "shadcn/ui" : part.toolId === "radix-ui" ? "Radix UI" : part.toolId === "chakra-ui" ? "Chakra UI" : part.toolId === "mui" ? "MUI" : part.toolId === "antd" ? "Ant Design" : "NextUI";
|
|
1115
|
+
return createStackGraphIssue({
|
|
1116
|
+
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1117
|
+
partId: part.id,
|
|
1118
|
+
role: part.role,
|
|
1119
|
+
toolId: part.toolId,
|
|
1120
|
+
message: `${libraryName} requires a React-based frontend`
|
|
1121
|
+
});
|
|
1122
|
+
}
|
|
1123
|
+
if (part.toolId === "shadcn-svelte" && astroIntegration !== "svelte") return createStackGraphIssue({
|
|
1124
|
+
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1125
|
+
partId: part.id,
|
|
1126
|
+
role: part.role,
|
|
1127
|
+
toolId: part.toolId,
|
|
1128
|
+
message: "shadcn-svelte requires SvelteKit or Astro with Svelte integration"
|
|
1129
|
+
});
|
|
1130
|
+
if (part.toolId === "headless-ui" && astroIntegration !== "react" && astroIntegration !== "vue") return createStackGraphIssue({
|
|
1131
|
+
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1132
|
+
partId: part.id,
|
|
1133
|
+
role: part.role,
|
|
1134
|
+
toolId: part.toolId,
|
|
1135
|
+
message: "Headless UI requires React or Vue frontend"
|
|
1136
|
+
});
|
|
1137
|
+
if (part.toolId === "park-ui" && astroIntegration !== "react" && astroIntegration !== "vue" && astroIntegration !== "solid") return createStackGraphIssue({
|
|
1138
|
+
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1139
|
+
partId: part.id,
|
|
1140
|
+
role: part.role,
|
|
1141
|
+
toolId: part.toolId,
|
|
1142
|
+
message: "Park UI requires React, Vue, or Solid frontend"
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1061
1145
|
const cssTool = context.siblingToolIdsByRole?.css ?? "tailwind";
|
|
1062
1146
|
if (compatibility && !compatibility.cssFrameworks.includes(cssTool)) return createStackGraphIssue({
|
|
1063
1147
|
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
@@ -1108,6 +1192,20 @@ function createTypeScriptBackendCompatibilityIssue(part, context) {
|
|
|
1108
1192
|
message: "Dodo Payments are not yet supported for React + Vite projects."
|
|
1109
1193
|
});
|
|
1110
1194
|
}
|
|
1195
|
+
if (part.role === "email" && part.toolId !== "none" && context.ownerToolId === "convex") return createStackGraphIssue({
|
|
1196
|
+
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1197
|
+
partId: part.id,
|
|
1198
|
+
role: part.role,
|
|
1199
|
+
toolId: part.toolId,
|
|
1200
|
+
message: "Email integration is not available with Convex backend"
|
|
1201
|
+
});
|
|
1202
|
+
if (part.role === "rateLimit" && part.toolId !== "none" && context.ownerToolId === "convex") return createStackGraphIssue({
|
|
1203
|
+
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1204
|
+
partId: part.id,
|
|
1205
|
+
role: part.role,
|
|
1206
|
+
toolId: part.toolId,
|
|
1207
|
+
message: "Rate limiting helpers are not generated with Convex backend"
|
|
1208
|
+
});
|
|
1111
1209
|
if (part.role === "cms" && part.toolId === "payload") {
|
|
1112
1210
|
if (context.primaryToolIdsByRole?.frontend !== "next") return createStackGraphIssue({
|
|
1113
1211
|
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
@@ -1393,10 +1491,40 @@ function createAddonCompatibilityIssue(part, context) {
|
|
|
1393
1491
|
toolId: part.toolId,
|
|
1394
1492
|
message: "TanStack Query is already included via the selected API layer."
|
|
1395
1493
|
});
|
|
1494
|
+
if ([
|
|
1495
|
+
"tanstack-query",
|
|
1496
|
+
"tanstack-table",
|
|
1497
|
+
"tanstack-virtual",
|
|
1498
|
+
"tanstack-db",
|
|
1499
|
+
"tanstack-pacer"
|
|
1500
|
+
].includes(part.toolId) && frontendTool === "astro" && context.settings?.astroIntegration === "none") return createStackGraphIssue({
|
|
1501
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1502
|
+
partId: part.id,
|
|
1503
|
+
role: part.role,
|
|
1504
|
+
toolId: part.toolId,
|
|
1505
|
+
message: "TanStack libraries with Astro require a UI framework integration (React, Vue, Svelte, or Solid)"
|
|
1506
|
+
});
|
|
1396
1507
|
}
|
|
1397
1508
|
if (part.role === "workspaceTooling") {
|
|
1509
|
+
const workspaceTooling = context.selectedToolIdsByRoleList?.workspaceTooling ?? [];
|
|
1510
|
+
if (part.toolId === "nx" && workspaceTooling.includes("turborepo")) return createStackGraphIssue({
|
|
1511
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1512
|
+
partId: part.id,
|
|
1513
|
+
role: part.role,
|
|
1514
|
+
toolId: part.toolId,
|
|
1515
|
+
message: "Choose either Nx or Turborepo, not both"
|
|
1516
|
+
});
|
|
1517
|
+
if (part.toolId === "turborepo" && workspaceTooling.includes("nx")) return createStackGraphIssue({
|
|
1518
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1519
|
+
partId: part.id,
|
|
1520
|
+
role: part.role,
|
|
1521
|
+
toolId: part.toolId,
|
|
1522
|
+
message: "Choose either Turborepo or Nx, not both"
|
|
1523
|
+
});
|
|
1398
1524
|
if (part.toolId === "docker-compose" || part.toolId === "devcontainer") {
|
|
1399
1525
|
const title = part.toolId === "devcontainer" ? "DevContainer" : "Docker Compose";
|
|
1526
|
+
const databaseTool = context.primaryToolIdsByRole?.database;
|
|
1527
|
+
const primaryEcosystem = backendEcosystem ?? frontendEcosystem ?? context.settings?.ecosystem;
|
|
1400
1528
|
if (backendTool === "convex") return createStackGraphIssue({
|
|
1401
1529
|
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1402
1530
|
partId: part.id,
|
|
@@ -1411,12 +1539,19 @@ function createAddonCompatibilityIssue(part, context) {
|
|
|
1411
1539
|
toolId: part.toolId,
|
|
1412
1540
|
message: `${title} is not compatible with Cloudflare Workers runtime.`
|
|
1413
1541
|
});
|
|
1414
|
-
if (
|
|
1542
|
+
if (!primaryEcosystem || !DOCKER_COMPOSE_COMPATIBLE_ECOSYSTEMS.has(primaryEcosystem)) return createStackGraphIssue({
|
|
1543
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1544
|
+
partId: part.id,
|
|
1545
|
+
role: part.role,
|
|
1546
|
+
toolId: part.toolId,
|
|
1547
|
+
message: `${title} currently supports TypeScript, Python, Go, Rust, or Java projects.`
|
|
1548
|
+
});
|
|
1549
|
+
if ((frontendEcosystem === "typescript" || backendEcosystem === "typescript") && (!frontendTool || !hasDockerComposeCompatibleFrontend(frontendTools))) return createStackGraphIssue({
|
|
1415
1550
|
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1416
1551
|
partId: part.id,
|
|
1417
1552
|
role: part.role,
|
|
1418
1553
|
toolId: part.toolId,
|
|
1419
|
-
message: `${title}
|
|
1554
|
+
message: `${title} currently supports Next.js, TanStack Router, React Router, React Vite, Solid, or Astro.`
|
|
1420
1555
|
});
|
|
1421
1556
|
if (backendEcosystem === "typescript" && backendTool === "self" && frontendTool !== "next") return createStackGraphIssue({
|
|
1422
1557
|
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
@@ -1425,6 +1560,27 @@ function createAddonCompatibilityIssue(part, context) {
|
|
|
1425
1560
|
toolId: part.toolId,
|
|
1426
1561
|
message: `${title} self-backend support currently requires Next.js.`
|
|
1427
1562
|
});
|
|
1563
|
+
if (frontendEcosystem === "rust" && frontendTool && frontendTool !== "none") return createStackGraphIssue({
|
|
1564
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1565
|
+
partId: part.id,
|
|
1566
|
+
role: part.role,
|
|
1567
|
+
toolId: part.toolId,
|
|
1568
|
+
message: `${title} for Rust currently supports server-only projects.`
|
|
1569
|
+
});
|
|
1570
|
+
if (primaryEcosystem === "java" && backendTool !== "spring-boot") return createStackGraphIssue({
|
|
1571
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1572
|
+
partId: part.id,
|
|
1573
|
+
role: part.role,
|
|
1574
|
+
toolId: part.toolId,
|
|
1575
|
+
message: `${title} for Java currently requires Spring Boot.`
|
|
1576
|
+
});
|
|
1577
|
+
if (primaryEcosystem === "python" && databaseTool && databaseTool !== "none" && databaseTool !== "sqlite" && databaseTool !== "postgres") return createStackGraphIssue({
|
|
1578
|
+
code: "INCOMPATIBLE_GRAPH_SELECTION",
|
|
1579
|
+
partId: part.id,
|
|
1580
|
+
role: part.role,
|
|
1581
|
+
toolId: part.toolId,
|
|
1582
|
+
message: `${title} for Python ORM projects currently supports SQLite defaults or Postgres.`
|
|
1583
|
+
});
|
|
1428
1584
|
}
|
|
1429
1585
|
if (part.toolId === "backend-utils") {
|
|
1430
1586
|
if (backendEcosystem !== "typescript" || !isBackendUtilsCompatibleBackend(backendTool)) return createStackGraphIssue({
|
|
@@ -1698,7 +1854,7 @@ function getStackPartCompatibilityIssue(part, context) {
|
|
|
1698
1854
|
message: "LiveView Streams require Phoenix LiveView"
|
|
1699
1855
|
});
|
|
1700
1856
|
}
|
|
1701
|
-
if (part.ecosystem === "elixir" && part.toolId === "wallaby" && context.ownerRole === "backend" && context.ownerToolId === "none") return createStackGraphIssue({
|
|
1857
|
+
if (part.ecosystem === "elixir" && part.toolId === "wallaby" && (!context.ownerRole || context.ownerRole === "backend" && context.ownerToolId === "none")) return createStackGraphIssue({
|
|
1702
1858
|
code: "INCOMPATIBLE_OWNER_TOOL",
|
|
1703
1859
|
partId: part.id,
|
|
1704
1860
|
role: part.role,
|
|
@@ -1867,6 +2023,7 @@ function getStackPartOptionContextForPart(part, parts) {
|
|
|
1867
2023
|
ownerRole: owner && PRIMARY_ROLES.has(owner.role) ? owner.role : void 0,
|
|
1868
2024
|
ownerToolId: owner?.toolId,
|
|
1869
2025
|
ownerEcosystem: owner?.ecosystem,
|
|
2026
|
+
settings: part.settings,
|
|
1870
2027
|
siblingToolIdsByRole: getSiblingToolIdsByRole(part, parts),
|
|
1871
2028
|
siblingToolIdsByRoleList: getSiblingToolIdsByRoleList(part, parts),
|
|
1872
2029
|
selectedToolIdsByRole: getSelectedToolIdsByRole(parts),
|
|
@@ -1943,6 +2100,11 @@ function legacyProjectConfigToStackParts(config, source = "legacy") {
|
|
|
1943
2100
|
if (isLegacyBackendEcosystem(config.ecosystem)) {
|
|
1944
2101
|
for (const [role, category] of Object.entries(LEGACY_CAPABILITY_CATEGORIES_BY_ECOSYSTEM[config.ecosystem])) addLegacyPart(parts, role, config.ecosystem, config[category], source, backendPart?.id);
|
|
1945
2102
|
if (backendPart) {
|
|
2103
|
+
for (const [role, category] of Object.entries(LEGACY_SHARED_BACKEND_SINGLE_CATEGORIES_BY_ECOSYSTEM[config.ecosystem])) {
|
|
2104
|
+
const toolId = config[category];
|
|
2105
|
+
if (parts.some((part) => part.ownerPartId === backendPart.id && part.role === role && part.ecosystem === config.ecosystem && part.source !== "provided")) continue;
|
|
2106
|
+
addLegacyPart(parts, role, config.ecosystem, toolId, source, backendPart.id);
|
|
2107
|
+
}
|
|
1946
2108
|
for (const [role, category] of Object.entries(LEGACY_EXTRA_CATEGORIES_BY_ECOSYSTEM[config.ecosystem])) {
|
|
1947
2109
|
const toolId = config[category];
|
|
1948
2110
|
if (config.ecosystem === "elixir" && toolId && ELIXIR_UNSUPPORTED_GRAPH_TOOLS.has(toolId)) continue;
|
|
@@ -2179,4 +2341,4 @@ function validateStackParts(parts) {
|
|
|
2179
2341
|
|
|
2180
2342
|
//#endregion
|
|
2181
2343
|
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 };
|
|
2182
|
-
//# sourceMappingURL=stack-graph-
|
|
2344
|
+
//# sourceMappingURL=stack-graph-BwtoYnJg.mjs.map
|