@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.
- package/dist/{defaults-DyNR1d-V.d.mts → defaults-BCprHCB6.d.mts} +2 -2
- package/dist/defaults-BCprHCB6.d.mts.map +1 -0
- package/dist/{defaults-DgL5YPQY.mjs → defaults-Cl16mM84.mjs} +10 -1
- package/dist/defaults-Cl16mM84.mjs.map +1 -0
- package/dist/defaults.d.mts +3 -3
- package/dist/defaults.mjs +1 -1
- package/dist/index.d.mts +6 -6
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +89 -5
- package/dist/index.mjs.map +1 -1
- package/dist/json-schema.d.mts +1573 -313
- package/dist/json-schema.d.mts.map +1 -1
- package/dist/json-schema.mjs +10 -2
- package/dist/json-schema.mjs.map +1 -1
- package/dist/{schemas-D9kkuJz7.d.mts → schemas-B79HRN5e.d.mts} +1751 -614
- package/dist/schemas-B79HRN5e.d.mts.map +1 -0
- package/dist/{schemas-l7hOhH8U.mjs → schemas-CprYz5Sh.mjs} +142 -4
- package/dist/schemas-CprYz5Sh.mjs.map +1 -0
- package/dist/schemas.d.mts +2 -2
- package/dist/schemas.mjs +2 -2
- package/dist/{stack-graph-F6UKYYR0.d.mts → stack-graph-BkHZlyKH.d.mts} +2 -2
- package/dist/{stack-graph-F6UKYYR0.d.mts.map → stack-graph-BkHZlyKH.d.mts.map} +1 -1
- package/dist/{stack-graph-C8r3fTh4.mjs → stack-graph-DiLi3WuL.mjs} +51 -9
- package/dist/stack-graph-DiLi3WuL.mjs.map +1 -0
- package/dist/stack-graph.d.mts +3 -3
- package/dist/stack-graph.mjs +2 -2
- package/dist/{stack-translation-Kr0TyRAm.mjs → stack-translation-Ay-_1mNB.mjs} +418 -21
- package/dist/stack-translation-Ay-_1mNB.mjs.map +1 -0
- package/dist/{stack-translation-BNHNx5_b.d.mts → stack-translation-BmsX82IA.d.mts} +26 -8
- package/dist/stack-translation-BmsX82IA.d.mts.map +1 -0
- package/dist/stack-translation.d.mts +4 -4
- package/dist/stack-translation.mjs +3 -3
- package/dist/{types-C7RpHf2e.d.mts → types-BuRzqsRV.d.mts} +12 -3
- package/dist/types-BuRzqsRV.d.mts.map +1 -0
- package/dist/types.d.mts +3 -3
- package/package.json +1 -1
- package/dist/defaults-DgL5YPQY.mjs.map +0 -1
- package/dist/defaults-DyNR1d-V.d.mts.map +0 -1
- package/dist/schemas-D9kkuJz7.d.mts.map +0 -1
- package/dist/schemas-l7hOhH8U.mjs.map +0 -1
- package/dist/stack-graph-C8r3fTh4.mjs.map +0 -1
- package/dist/stack-translation-BNHNx5_b.d.mts.map +0 -1
- package/dist/stack-translation-Kr0TyRAm.mjs.map +0 -1
- package/dist/types-C7RpHf2e.d.mts.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $
|
|
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-
|
|
3
|
-
import { t as createCliDefaultProjectConfigBase } from "./defaults-
|
|
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";
|
|
4
4
|
|
|
5
5
|
//#region src/capabilities.ts
|
|
6
6
|
const CAPABILITY_DEFINITIONS = { auth: [
|
|
@@ -311,6 +311,7 @@ const REACT_NATIVE_CATEGORY_ORDER = [
|
|
|
311
311
|
"mobilePush",
|
|
312
312
|
"mobileOTA",
|
|
313
313
|
"mobileDeepLinking",
|
|
314
|
+
"mobileLibraries",
|
|
314
315
|
"auth",
|
|
315
316
|
"payments",
|
|
316
317
|
"packageManager",
|
|
@@ -356,6 +357,13 @@ const PYTHON_CATEGORY_ORDER = [
|
|
|
356
357
|
"pythonRealtime",
|
|
357
358
|
"pythonObservability",
|
|
358
359
|
"pythonCli",
|
|
360
|
+
"pythonCloudSdk",
|
|
361
|
+
"pythonHttpClient",
|
|
362
|
+
"pythonData",
|
|
363
|
+
"pythonMedia",
|
|
364
|
+
"pythonServer",
|
|
365
|
+
"pythonPackageManager",
|
|
366
|
+
"pythonMessageQueue",
|
|
359
367
|
"email",
|
|
360
368
|
"observability",
|
|
361
369
|
"caching",
|
|
@@ -422,6 +430,7 @@ const DOTNET_CATEGORY_ORDER = [
|
|
|
422
430
|
"dotnetValidation",
|
|
423
431
|
"dotnetCaching",
|
|
424
432
|
"dotnetDeploy",
|
|
433
|
+
"dotnetLibraries",
|
|
425
434
|
"aiDocs",
|
|
426
435
|
"git",
|
|
427
436
|
"install"
|
|
@@ -486,6 +495,7 @@ function getCategoryDisplayName(categoryKey) {
|
|
|
486
495
|
mobilePush: "Mobile Push",
|
|
487
496
|
mobileOTA: "Mobile OTA",
|
|
488
497
|
mobileDeepLinking: "Mobile Deep Linking",
|
|
498
|
+
mobileLibraries: "Mobile Libraries",
|
|
489
499
|
backendLibraries: "Effect Services",
|
|
490
500
|
rustWebFramework: "Rust Web Framework",
|
|
491
501
|
rustFrontend: "Rust Frontend (WASM)",
|
|
@@ -515,6 +525,13 @@ function getCategoryDisplayName(categoryKey) {
|
|
|
515
525
|
pythonRealtime: "Python Realtime",
|
|
516
526
|
pythonObservability: "Python Observability",
|
|
517
527
|
pythonCli: "Python CLI Tooling",
|
|
528
|
+
pythonCloudSdk: "Python Cloud SDK",
|
|
529
|
+
pythonHttpClient: "Python HTTP Client",
|
|
530
|
+
pythonData: "Python Data & Scientific Computing",
|
|
531
|
+
pythonMedia: "Python Media",
|
|
532
|
+
pythonServer: "Python Production Server",
|
|
533
|
+
pythonPackageManager: "Python Package Manager",
|
|
534
|
+
pythonMessageQueue: "Python Message Queue",
|
|
518
535
|
goWebFramework: "Go Web Framework",
|
|
519
536
|
goOrm: "Go ORM / Database",
|
|
520
537
|
goApi: "Go API Layer",
|
|
@@ -553,6 +570,7 @@ function getCategoryDisplayName(categoryKey) {
|
|
|
553
570
|
dotnetValidation: ".NET Validation",
|
|
554
571
|
dotnetCaching: ".NET Caching",
|
|
555
572
|
dotnetDeploy: ".NET Deploy",
|
|
573
|
+
dotnetLibraries: ".NET Libraries",
|
|
556
574
|
elixirWebFramework: "Elixir Web Framework",
|
|
557
575
|
elixirOrm: "Elixir ORM / Database",
|
|
558
576
|
elixirAuth: "Elixir Auth",
|
|
@@ -676,11 +694,14 @@ const MULTI_SELECT_CATEGORIES = new Set([
|
|
|
676
694
|
"pythonAi",
|
|
677
695
|
"javaLibraries",
|
|
678
696
|
"javaTestingLibraries",
|
|
697
|
+
"mobileLibraries",
|
|
698
|
+
"dotnetLibraries",
|
|
679
699
|
"dotnetTesting",
|
|
680
700
|
"dotnetObservability",
|
|
681
701
|
"goTesting",
|
|
682
702
|
"pythonTesting",
|
|
683
703
|
"pythonCli",
|
|
704
|
+
"pythonData",
|
|
684
705
|
"elixirLibraries"
|
|
685
706
|
]);
|
|
686
707
|
const CATEGORY_VALUE_IDS = {
|
|
@@ -727,6 +748,7 @@ const CATEGORY_VALUE_IDS = {
|
|
|
727
748
|
mobilePush: MOBILE_PUSH_VALUES,
|
|
728
749
|
mobileOTA: MOBILE_OTA_VALUES,
|
|
729
750
|
mobileDeepLinking: MOBILE_DEEP_LINKING_VALUES,
|
|
751
|
+
mobileLibraries: MOBILE_LIBRARIES_VALUES,
|
|
730
752
|
codeQuality: CODE_QUALITY_VALUES,
|
|
731
753
|
documentation: DOCUMENTATION_VALUES,
|
|
732
754
|
appShells: APP_SHELL_VALUES,
|
|
@@ -775,6 +797,13 @@ const CATEGORY_VALUE_IDS = {
|
|
|
775
797
|
pythonRealtime: PYTHON_REALTIME_VALUES,
|
|
776
798
|
pythonObservability: PYTHON_OBSERVABILITY_VALUES,
|
|
777
799
|
pythonCli: PYTHON_CLI_VALUES,
|
|
800
|
+
pythonCloudSdk: PYTHON_CLOUD_SDK_VALUES,
|
|
801
|
+
pythonHttpClient: PYTHON_HTTP_CLIENT_VALUES,
|
|
802
|
+
pythonData: PYTHON_DATA_VALUES,
|
|
803
|
+
pythonMedia: PYTHON_MEDIA_VALUES,
|
|
804
|
+
pythonServer: PYTHON_SERVER_VALUES,
|
|
805
|
+
pythonPackageManager: PYTHON_PACKAGE_MANAGER_VALUES,
|
|
806
|
+
pythonMessageQueue: PYTHON_MESSAGE_QUEUE_VALUES,
|
|
778
807
|
goWebFramework: GO_WEB_FRAMEWORK_VALUES,
|
|
779
808
|
goOrm: GO_ORM_VALUES,
|
|
780
809
|
goApi: GO_API_VALUES,
|
|
@@ -813,6 +842,7 @@ const CATEGORY_VALUE_IDS = {
|
|
|
813
842
|
dotnetValidation: DOTNET_VALIDATION_VALUES,
|
|
814
843
|
dotnetCaching: DOTNET_CACHING_VALUES,
|
|
815
844
|
dotnetDeploy: DOTNET_DEPLOY_VALUES,
|
|
845
|
+
dotnetLibraries: DOTNET_LIBRARIES_VALUES,
|
|
816
846
|
elixirWebFramework: ELIXIR_WEB_FRAMEWORK_VALUES,
|
|
817
847
|
elixirOrm: ELIXIR_ORM_VALUES,
|
|
818
848
|
elixirAuth: ELIXIR_AUTH_VALUES,
|
|
@@ -1059,6 +1089,28 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1059
1089
|
mobilePush: { "expo-notifications": "Expo Notifications" },
|
|
1060
1090
|
mobileOTA: { "expo-updates": "Expo Updates" },
|
|
1061
1091
|
mobileDeepLinking: { "expo-linking": "Expo Linking" },
|
|
1092
|
+
mobileLibraries: {
|
|
1093
|
+
"expo-sqlite": "Expo SQLite",
|
|
1094
|
+
"expo-camera": "Expo Camera",
|
|
1095
|
+
"expo-image-picker": "Expo Image Picker",
|
|
1096
|
+
"expo-location": "Expo Location",
|
|
1097
|
+
"expo-sensors": "Expo Sensors",
|
|
1098
|
+
"expo-file-system": "Expo File System",
|
|
1099
|
+
"expo-image": "Expo Image",
|
|
1100
|
+
"expo-audio": "Expo Audio",
|
|
1101
|
+
"expo-video": "Expo Video",
|
|
1102
|
+
"expo-contacts": "Expo Contacts",
|
|
1103
|
+
"expo-calendar": "Expo Calendar",
|
|
1104
|
+
"expo-local-authentication": "Expo Local Authentication",
|
|
1105
|
+
"expo-sharing": "Expo Sharing",
|
|
1106
|
+
"expo-clipboard": "Expo Clipboard",
|
|
1107
|
+
"expo-task-manager": "Expo Task Manager",
|
|
1108
|
+
"expo-background-task": "Expo Background Task",
|
|
1109
|
+
"expo-maps": "Expo Maps",
|
|
1110
|
+
"expo-brightness": "Expo Brightness",
|
|
1111
|
+
"expo-battery": "Expo Battery",
|
|
1112
|
+
"expo-screen-capture": "Expo Screen Capture"
|
|
1113
|
+
},
|
|
1062
1114
|
codeQuality: {
|
|
1063
1115
|
biome: "Biome",
|
|
1064
1116
|
eslint: "ESLint",
|
|
@@ -1273,13 +1325,16 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1273
1325
|
django: "Django",
|
|
1274
1326
|
flask: "Flask",
|
|
1275
1327
|
litestar: "Litestar",
|
|
1276
|
-
starlette: "Starlette"
|
|
1328
|
+
starlette: "Starlette",
|
|
1329
|
+
aiohttp: "aiohttp",
|
|
1330
|
+
streamlit: "Streamlit"
|
|
1277
1331
|
},
|
|
1278
1332
|
pythonOrm: {
|
|
1279
1333
|
sqlalchemy: "SQLAlchemy",
|
|
1280
1334
|
sqlmodel: "SQLModel",
|
|
1281
1335
|
"tortoise-orm": "Tortoise ORM",
|
|
1282
|
-
peewee: "Peewee"
|
|
1336
|
+
peewee: "Peewee",
|
|
1337
|
+
pymongo: "PyMongo"
|
|
1283
1338
|
},
|
|
1284
1339
|
pythonValidation: { pydantic: "Pydantic" },
|
|
1285
1340
|
pythonAi: {
|
|
@@ -1292,11 +1347,17 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1292
1347
|
haystack: "Haystack",
|
|
1293
1348
|
"pydantic-ai": "Pydantic AI",
|
|
1294
1349
|
"google-adk": "Google ADK",
|
|
1295
|
-
smolagents: "smolagents"
|
|
1350
|
+
smolagents: "smolagents",
|
|
1351
|
+
pytorch: "PyTorch",
|
|
1352
|
+
transformers: "Transformers",
|
|
1353
|
+
"scikit-learn": "scikit-learn",
|
|
1354
|
+
tensorflow: "TensorFlow",
|
|
1355
|
+
mcp: "MCP Python SDK"
|
|
1296
1356
|
},
|
|
1297
1357
|
pythonAuth: {
|
|
1298
1358
|
authlib: "Authlib",
|
|
1299
1359
|
jwt: "JWT (python-jose)",
|
|
1360
|
+
pyjwt: "PyJWT",
|
|
1300
1361
|
"fastapi-users": "FastAPI Users"
|
|
1301
1362
|
},
|
|
1302
1363
|
pythonApi: {
|
|
@@ -1321,7 +1382,8 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1321
1382
|
},
|
|
1322
1383
|
pythonTesting: {
|
|
1323
1384
|
pytest: "pytest",
|
|
1324
|
-
hypothesis: "Hypothesis"
|
|
1385
|
+
hypothesis: "Hypothesis",
|
|
1386
|
+
"pytest-cov": "pytest-cov"
|
|
1325
1387
|
},
|
|
1326
1388
|
pythonCaching: {
|
|
1327
1389
|
redis: "redis-py",
|
|
@@ -1331,12 +1393,29 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1331
1393
|
"python-socketio": "python-socketio",
|
|
1332
1394
|
websockets: "websockets"
|
|
1333
1395
|
},
|
|
1334
|
-
pythonObservability: {
|
|
1396
|
+
pythonObservability: {
|
|
1397
|
+
opentelemetry: "OpenTelemetry",
|
|
1398
|
+
"prometheus-client": "Prometheus Client"
|
|
1399
|
+
},
|
|
1335
1400
|
pythonCli: {
|
|
1336
1401
|
typer: "Typer",
|
|
1337
1402
|
click: "Click",
|
|
1338
1403
|
rich: "Rich"
|
|
1339
1404
|
},
|
|
1405
|
+
pythonCloudSdk: { boto3: "Boto3" },
|
|
1406
|
+
pythonHttpClient: { requests: "Requests" },
|
|
1407
|
+
pythonData: {
|
|
1408
|
+
numpy: "NumPy",
|
|
1409
|
+
pandas: "pandas",
|
|
1410
|
+
scipy: "SciPy"
|
|
1411
|
+
},
|
|
1412
|
+
pythonMedia: { pillow: "Pillow" },
|
|
1413
|
+
pythonServer: { gunicorn: "Gunicorn" },
|
|
1414
|
+
pythonPackageManager: {
|
|
1415
|
+
uv: "uv",
|
|
1416
|
+
poetry: "Poetry"
|
|
1417
|
+
},
|
|
1418
|
+
pythonMessageQueue: { "confluent-kafka": "Confluent Kafka" },
|
|
1340
1419
|
goWebFramework: {
|
|
1341
1420
|
gin: "Gin",
|
|
1342
1421
|
echo: "Echo",
|
|
@@ -1459,7 +1538,27 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1459
1538
|
"micrometer-prometheus": "Micrometer Prometheus",
|
|
1460
1539
|
thymeleaf: "Thymeleaf",
|
|
1461
1540
|
"spring-amqp": "Spring AMQP (RabbitMQ)",
|
|
1462
|
-
"opentelemetry-java": "OpenTelemetry"
|
|
1541
|
+
"opentelemetry-java": "OpenTelemetry",
|
|
1542
|
+
"spring-data-redis": "Spring Data Redis",
|
|
1543
|
+
"spring-data-mongodb": "Spring Data MongoDB",
|
|
1544
|
+
"spring-data-elasticsearch": "Spring Data Elasticsearch",
|
|
1545
|
+
"spring-data-neo4j": "Spring Data Neo4j",
|
|
1546
|
+
"spring-data-cassandra": "Spring Data Cassandra",
|
|
1547
|
+
"spring-data-couchbase": "Spring Data Couchbase",
|
|
1548
|
+
"spring-data-jdbc": "Spring Data JDBC",
|
|
1549
|
+
"spring-data-rest": "Spring Data REST",
|
|
1550
|
+
"spring-quartz": "Quartz Scheduler",
|
|
1551
|
+
"spring-pulsar": "Spring for Apache Pulsar",
|
|
1552
|
+
"spring-integration": "Spring Integration",
|
|
1553
|
+
"spring-websocket": "Spring WebSocket",
|
|
1554
|
+
"spring-rsocket": "Spring RSocket",
|
|
1555
|
+
"spring-hateoas": "Spring HATEOAS",
|
|
1556
|
+
"spring-session-redis": "Spring Session Redis",
|
|
1557
|
+
"spring-session-jdbc": "Spring Session JDBC",
|
|
1558
|
+
"spring-ldap": "Spring LDAP",
|
|
1559
|
+
"spring-oauth2-client": "Spring Security OAuth2 Client",
|
|
1560
|
+
"spring-saml2": "Spring Security SAML2",
|
|
1561
|
+
"spring-restclient": "Spring REST Client"
|
|
1463
1562
|
},
|
|
1464
1563
|
javaTestingLibraries: {
|
|
1465
1564
|
junit5: "JUnit 5",
|
|
@@ -1523,6 +1622,28 @@ const EXACT_LABEL_OVERRIDES = {
|
|
|
1523
1622
|
azure: "Azure",
|
|
1524
1623
|
aws: "AWS"
|
|
1525
1624
|
},
|
|
1625
|
+
dotnetLibraries: {
|
|
1626
|
+
automapper: "AutoMapper",
|
|
1627
|
+
mediatr: "MediatR",
|
|
1628
|
+
fastendpoints: "FastEndpoints",
|
|
1629
|
+
"api-versioning": "ASP.NET API Versioning",
|
|
1630
|
+
scalar: "Scalar",
|
|
1631
|
+
polly: "Polly",
|
|
1632
|
+
masstransit: "MassTransit",
|
|
1633
|
+
rebus: "Rebus",
|
|
1634
|
+
coravel: "Coravel",
|
|
1635
|
+
"magic-onion": "MagicOnion",
|
|
1636
|
+
"prometheus-net": "prometheus-net",
|
|
1637
|
+
seq: "Seq",
|
|
1638
|
+
"application-insights": "Application Insights",
|
|
1639
|
+
sentry: "Sentry",
|
|
1640
|
+
"mongodb-driver": "MongoDB Driver",
|
|
1641
|
+
nhibernate: "NHibernate",
|
|
1642
|
+
mapster: "Mapster",
|
|
1643
|
+
scrutor: "Scrutor",
|
|
1644
|
+
refit: "Refit",
|
|
1645
|
+
"fluent-email": "FluentEmail"
|
|
1646
|
+
},
|
|
1526
1647
|
elixirWebFramework: {
|
|
1527
1648
|
phoenix: "Phoenix",
|
|
1528
1649
|
"phoenix-live-view": "Phoenix LiveView"
|
|
@@ -1719,6 +1840,7 @@ const OPTION_CATEGORY_METADATA = {
|
|
|
1719
1840
|
mobilePush: buildCategoryMetadata("mobilePush"),
|
|
1720
1841
|
mobileOTA: buildCategoryMetadata("mobileOTA"),
|
|
1721
1842
|
mobileDeepLinking: buildCategoryMetadata("mobileDeepLinking"),
|
|
1843
|
+
mobileLibraries: buildCategoryMetadata("mobileLibraries"),
|
|
1722
1844
|
codeQuality: buildCategoryMetadata("codeQuality"),
|
|
1723
1845
|
documentation: buildCategoryMetadata("documentation"),
|
|
1724
1846
|
appShells: buildCategoryMetadata("appShells"),
|
|
@@ -1767,6 +1889,13 @@ const OPTION_CATEGORY_METADATA = {
|
|
|
1767
1889
|
pythonRealtime: buildCategoryMetadata("pythonRealtime"),
|
|
1768
1890
|
pythonObservability: buildCategoryMetadata("pythonObservability"),
|
|
1769
1891
|
pythonCli: buildCategoryMetadata("pythonCli"),
|
|
1892
|
+
pythonCloudSdk: buildCategoryMetadata("pythonCloudSdk"),
|
|
1893
|
+
pythonHttpClient: buildCategoryMetadata("pythonHttpClient"),
|
|
1894
|
+
pythonData: buildCategoryMetadata("pythonData"),
|
|
1895
|
+
pythonMedia: buildCategoryMetadata("pythonMedia"),
|
|
1896
|
+
pythonServer: buildCategoryMetadata("pythonServer"),
|
|
1897
|
+
pythonPackageManager: buildCategoryMetadata("pythonPackageManager"),
|
|
1898
|
+
pythonMessageQueue: buildCategoryMetadata("pythonMessageQueue"),
|
|
1770
1899
|
goWebFramework: buildCategoryMetadata("goWebFramework"),
|
|
1771
1900
|
goOrm: buildCategoryMetadata("goOrm"),
|
|
1772
1901
|
goApi: buildCategoryMetadata("goApi"),
|
|
@@ -1805,6 +1934,7 @@ const OPTION_CATEGORY_METADATA = {
|
|
|
1805
1934
|
dotnetValidation: buildCategoryMetadata("dotnetValidation"),
|
|
1806
1935
|
dotnetCaching: buildCategoryMetadata("dotnetCaching"),
|
|
1807
1936
|
dotnetDeploy: buildCategoryMetadata("dotnetDeploy"),
|
|
1937
|
+
dotnetLibraries: buildCategoryMetadata("dotnetLibraries"),
|
|
1808
1938
|
elixirWebFramework: buildCategoryMetadata("elixirWebFramework"),
|
|
1809
1939
|
elixirOrm: buildCategoryMetadata("elixirOrm"),
|
|
1810
1940
|
elixirAuth: buildCategoryMetadata("elixirAuth"),
|
|
@@ -2838,6 +2968,14 @@ const analyzeStackCompatibility = (stack) => {
|
|
|
2838
2968
|
message
|
|
2839
2969
|
});
|
|
2840
2970
|
}
|
|
2971
|
+
if ((nextStack.mobileLibraries?.length ?? 0) > 0) {
|
|
2972
|
+
nextStack.mobileLibraries = [];
|
|
2973
|
+
changed = true;
|
|
2974
|
+
changes.push({
|
|
2975
|
+
category: "mobileLibraries",
|
|
2976
|
+
message: "Mobile libraries cleared (no native frontend)"
|
|
2977
|
+
});
|
|
2978
|
+
}
|
|
2841
2979
|
} else {
|
|
2842
2980
|
if (nextStack.mobileNavigation === "none") {
|
|
2843
2981
|
nextStack.mobileNavigation = "expo-router";
|
|
@@ -3125,6 +3263,62 @@ const analyzeStackCompatibility = (stack) => {
|
|
|
3125
3263
|
message: "Python API framework set to 'None' (DRF and Django Ninja require Django)"
|
|
3126
3264
|
});
|
|
3127
3265
|
}
|
|
3266
|
+
if (nextStack.pythonOrm === "pymongo" && nextStack.database !== "mongodb") {
|
|
3267
|
+
nextStack.database = "mongodb";
|
|
3268
|
+
changed = true;
|
|
3269
|
+
changes.push({
|
|
3270
|
+
category: "pythonOrm",
|
|
3271
|
+
message: "Database set to MongoDB (required by PyMongo)"
|
|
3272
|
+
});
|
|
3273
|
+
}
|
|
3274
|
+
if (nextStack.pythonOrm === "pymongo" && nextStack.dbSetup !== "mongodb-atlas" && nextStack.dbSetup !== "none" && nextStack.dbSetup !== "docker") {
|
|
3275
|
+
nextStack.dbSetup = "none";
|
|
3276
|
+
changed = true;
|
|
3277
|
+
changes.push({
|
|
3278
|
+
category: "pythonOrm",
|
|
3279
|
+
message: "DB Setup set to 'None' (incompatible with MongoDB)"
|
|
3280
|
+
});
|
|
3281
|
+
}
|
|
3282
|
+
if (nextStack.database === "mongodb" && nextStack.pythonOrm !== "pymongo" && nextStack.pythonOrm !== "none") {
|
|
3283
|
+
nextStack.database = "sqlite";
|
|
3284
|
+
changed = true;
|
|
3285
|
+
changes.push({
|
|
3286
|
+
category: "database",
|
|
3287
|
+
message: `Database set to SQLite (MongoDB requires PyMongo, not ${nextStack.pythonOrm})`
|
|
3288
|
+
});
|
|
3289
|
+
}
|
|
3290
|
+
if ((nextStack.pythonWebFramework === "none" || nextStack.pythonWebFramework === "aiohttp" || nextStack.pythonWebFramework === "starlette" || nextStack.pythonWebFramework === "streamlit") && nextStack.pythonGraphql !== "none") {
|
|
3291
|
+
nextStack.pythonGraphql = "none";
|
|
3292
|
+
changed = true;
|
|
3293
|
+
changes.push({
|
|
3294
|
+
category: "pythonGraphql",
|
|
3295
|
+
message: "GraphQL set to 'None' (only wired for FastAPI, Django, Flask, and Litestar)"
|
|
3296
|
+
});
|
|
3297
|
+
}
|
|
3298
|
+
if ((nextStack.pythonWebFramework === "none" || nextStack.pythonWebFramework === "aiohttp" || nextStack.pythonWebFramework === "starlette" || nextStack.pythonWebFramework === "streamlit") && nextStack.pythonAuth !== "none") {
|
|
3299
|
+
nextStack.pythonAuth = "none";
|
|
3300
|
+
changed = true;
|
|
3301
|
+
changes.push({
|
|
3302
|
+
category: "pythonAuth",
|
|
3303
|
+
message: `Auth set to 'None' (auth routes are not wired for ${nextStack.pythonWebFramework})`
|
|
3304
|
+
});
|
|
3305
|
+
}
|
|
3306
|
+
if ((nextStack.pythonWebFramework === "streamlit" || nextStack.pythonWebFramework === "none") && nextStack.pythonObservability === "prometheus-client") {
|
|
3307
|
+
nextStack.pythonObservability = "none";
|
|
3308
|
+
changed = true;
|
|
3309
|
+
changes.push({
|
|
3310
|
+
category: "pythonObservability",
|
|
3311
|
+
message: "Observability set to 'None' (prometheus-client needs an HTTP server to expose /metrics)"
|
|
3312
|
+
});
|
|
3313
|
+
}
|
|
3314
|
+
if (nextStack.pythonServer === "gunicorn" && (nextStack.pythonWebFramework === "streamlit" || nextStack.pythonWebFramework === "none")) {
|
|
3315
|
+
nextStack.pythonServer = "none";
|
|
3316
|
+
changed = true;
|
|
3317
|
+
changes.push({
|
|
3318
|
+
category: "pythonServer",
|
|
3319
|
+
message: "Production server set to 'None' (Gunicorn requires a WSGI, ASGI, or aiohttp app)"
|
|
3320
|
+
});
|
|
3321
|
+
}
|
|
3128
3322
|
}
|
|
3129
3323
|
if (nextStack.ecosystem === "java") {
|
|
3130
3324
|
if (nextStack.javaBuildTool === "none") {
|
|
@@ -3431,6 +3625,7 @@ const getDisabledReason = (currentStack, category, optionId) => {
|
|
|
3431
3625
|
"mobilePush",
|
|
3432
3626
|
"mobileOTA",
|
|
3433
3627
|
"mobileDeepLinking",
|
|
3628
|
+
"mobileLibraries",
|
|
3434
3629
|
"auth",
|
|
3435
3630
|
"payments",
|
|
3436
3631
|
"packageManager",
|
|
@@ -3483,7 +3678,13 @@ const getDisabledReason = (currentStack, category, optionId) => {
|
|
|
3483
3678
|
if (category === "rustWebFramework" && optionId === "loco" && currentStack.rustApi === "jsonrpsee") return "Loco owns the server boot sequence and cannot start the generated jsonrpsee server";
|
|
3484
3679
|
if (category === "rustAuth" && optionId === "tower-sessions" && currentStack.rustWebFramework !== "axum") return "The generated tower-sessions middleware is wired specifically for Axum";
|
|
3485
3680
|
if (category === "rustWebFramework" && optionId !== "axum" && currentStack.rustAuth === "tower-sessions") return "tower-sessions requires the generated Axum middleware stack";
|
|
3681
|
+
if (category === "rustAuth" && optionId === "torii" && currentStack.rustOrm === "rusqlite") return "Torii's sqlx-based storage conflicts with rusqlite (both link the native sqlite3 library)";
|
|
3682
|
+
if (category === "rustOrm" && optionId === "rusqlite" && currentStack.rustAuth === "torii") return "rusqlite conflicts with Torii's sqlx-based storage (both link the native sqlite3 library)";
|
|
3486
3683
|
}
|
|
3684
|
+
if (category === "pythonApi") {
|
|
3685
|
+
if (optionId !== "none" && currentStack.pythonWebFramework !== "django") return "Python API frameworks currently require Django";
|
|
3686
|
+
}
|
|
3687
|
+
if (category === "pythonServer" && optionId === "gunicorn" && (currentStack.pythonWebFramework === "streamlit" || currentStack.pythonWebFramework === "none")) return "Gunicorn requires a WSGI, ASGI, or aiohttp application";
|
|
3487
3688
|
const graphDisabledReason = category === "payments" && optionId === "revenuecat" || category === "i18n" && optionId === "intlayer" ? {
|
|
3488
3689
|
handled: false,
|
|
3489
3690
|
authoritative: false,
|
|
@@ -3760,7 +3961,8 @@ const getDisabledReason = (currentStack, category, optionId) => {
|
|
|
3760
3961
|
"mobileTesting",
|
|
3761
3962
|
"mobilePush",
|
|
3762
3963
|
"mobileOTA",
|
|
3763
|
-
"mobileDeepLinking"
|
|
3964
|
+
"mobileDeepLinking",
|
|
3965
|
+
"mobileLibraries"
|
|
3764
3966
|
]).has(category)) {
|
|
3765
3967
|
if (!currentStack.nativeFrontend.some((f) => f !== "none") && optionId !== "none") return `${getCategoryDisplayName(category)} requires a native Expo frontend`;
|
|
3766
3968
|
if (category === "mobileNavigation" && optionId === "react-navigation") return null;
|
|
@@ -3878,9 +4080,6 @@ const getDisabledReason = (currentStack, category, optionId) => {
|
|
|
3878
4080
|
if (unsupportedFrontend) return `Intlayer is not yet wired for the '${unsupportedFrontend}' frontend`;
|
|
3879
4081
|
}
|
|
3880
4082
|
}
|
|
3881
|
-
if (category === "pythonApi") {
|
|
3882
|
-
if (optionId !== "none" && currentStack.pythonWebFramework !== "django") return "Python API frameworks currently require Django";
|
|
3883
|
-
}
|
|
3884
4083
|
if (category === "goMigrations" && optionId !== "none" && currentStack.ecosystem === "go" && ![
|
|
3885
4084
|
"sqlite",
|
|
3886
4085
|
"postgres",
|
|
@@ -4233,6 +4432,15 @@ const GRAPH_DISABLED_REASON_BINDINGS = {
|
|
|
4233
4432
|
authoritative: true,
|
|
4234
4433
|
missingOwnerReason: "Mobile deep linking requires a native Expo frontend"
|
|
4235
4434
|
},
|
|
4435
|
+
mobileLibraries: {
|
|
4436
|
+
role: "libraries",
|
|
4437
|
+
ecosystem: "react-native",
|
|
4438
|
+
ownerRole: "mobile",
|
|
4439
|
+
ownerEcosystem: "react-native",
|
|
4440
|
+
authoritative: true,
|
|
4441
|
+
missingOwnerReason: "Mobile libraries require a native Expo frontend",
|
|
4442
|
+
candidateIdPrefix: "candidate:native"
|
|
4443
|
+
},
|
|
4236
4444
|
javaBuildTool: {
|
|
4237
4445
|
role: "buildTool",
|
|
4238
4446
|
ecosystem: "java",
|
|
@@ -4352,6 +4560,62 @@ const GRAPH_DISABLED_REASON_BINDINGS = {
|
|
|
4352
4560
|
currentEcosystem: "python",
|
|
4353
4561
|
authoritative: true
|
|
4354
4562
|
},
|
|
4563
|
+
pythonCloudSdk: {
|
|
4564
|
+
role: "cloudSdk",
|
|
4565
|
+
ecosystem: "python",
|
|
4566
|
+
ownerRole: "backend",
|
|
4567
|
+
ownerEcosystem: "python",
|
|
4568
|
+
currentEcosystem: "python",
|
|
4569
|
+
authoritative: true
|
|
4570
|
+
},
|
|
4571
|
+
pythonHttpClient: {
|
|
4572
|
+
role: "httpClient",
|
|
4573
|
+
ecosystem: "python",
|
|
4574
|
+
ownerRole: "backend",
|
|
4575
|
+
ownerEcosystem: "python",
|
|
4576
|
+
currentEcosystem: "python",
|
|
4577
|
+
authoritative: true
|
|
4578
|
+
},
|
|
4579
|
+
pythonData: {
|
|
4580
|
+
role: "data",
|
|
4581
|
+
ecosystem: "python",
|
|
4582
|
+
ownerRole: "backend",
|
|
4583
|
+
ownerEcosystem: "python",
|
|
4584
|
+
currentEcosystem: "python",
|
|
4585
|
+
authoritative: true
|
|
4586
|
+
},
|
|
4587
|
+
pythonMedia: {
|
|
4588
|
+
role: "media",
|
|
4589
|
+
ecosystem: "python",
|
|
4590
|
+
ownerRole: "backend",
|
|
4591
|
+
ownerEcosystem: "python",
|
|
4592
|
+
currentEcosystem: "python",
|
|
4593
|
+
authoritative: true
|
|
4594
|
+
},
|
|
4595
|
+
pythonServer: {
|
|
4596
|
+
role: "server",
|
|
4597
|
+
ecosystem: "python",
|
|
4598
|
+
ownerRole: "backend",
|
|
4599
|
+
ownerEcosystem: "python",
|
|
4600
|
+
currentEcosystem: "python",
|
|
4601
|
+
authoritative: true
|
|
4602
|
+
},
|
|
4603
|
+
pythonPackageManager: {
|
|
4604
|
+
role: "packageManager",
|
|
4605
|
+
ecosystem: "python",
|
|
4606
|
+
ownerRole: "backend",
|
|
4607
|
+
ownerEcosystem: "python",
|
|
4608
|
+
currentEcosystem: "python",
|
|
4609
|
+
authoritative: true
|
|
4610
|
+
},
|
|
4611
|
+
pythonMessageQueue: {
|
|
4612
|
+
role: "messageQueue",
|
|
4613
|
+
ecosystem: "python",
|
|
4614
|
+
ownerRole: "backend",
|
|
4615
|
+
ownerEcosystem: "python",
|
|
4616
|
+
currentEcosystem: "python",
|
|
4617
|
+
authoritative: true
|
|
4618
|
+
},
|
|
4355
4619
|
goTesting: {
|
|
4356
4620
|
role: "testing",
|
|
4357
4621
|
ecosystem: "go",
|
|
@@ -4525,6 +4789,15 @@ const GRAPH_DISABLED_REASON_BINDINGS = {
|
|
|
4525
4789
|
ownerEcosystem: "dotnet",
|
|
4526
4790
|
currentEcosystem: "dotnet",
|
|
4527
4791
|
authoritative: true
|
|
4792
|
+
},
|
|
4793
|
+
dotnetLibraries: {
|
|
4794
|
+
role: "libraries",
|
|
4795
|
+
ecosystem: "dotnet",
|
|
4796
|
+
ownerRole: "backend",
|
|
4797
|
+
ownerEcosystem: "dotnet",
|
|
4798
|
+
currentEcosystem: "dotnet",
|
|
4799
|
+
authoritative: true,
|
|
4800
|
+
candidateIdPrefix: "candidate:native"
|
|
4528
4801
|
}
|
|
4529
4802
|
};
|
|
4530
4803
|
function compatibilityInputToGraphProjectConfig(currentStack) {
|
|
@@ -5242,6 +5515,15 @@ function evaluateCompatibility(input) {
|
|
|
5242
5515
|
optionId: javaLibrary
|
|
5243
5516
|
});
|
|
5244
5517
|
}
|
|
5518
|
+
for (const mobileLibrary of input.mobileLibraries ?? []) {
|
|
5519
|
+
const reason = getDisabledReason(input, "mobileLibraries", mobileLibrary);
|
|
5520
|
+
if (reason) issues.push({
|
|
5521
|
+
code: "INCOMPATIBLE_MOBILE_LIBRARY",
|
|
5522
|
+
message: reason,
|
|
5523
|
+
category: "mobileLibraries",
|
|
5524
|
+
optionId: mobileLibrary
|
|
5525
|
+
});
|
|
5526
|
+
}
|
|
5245
5527
|
for (const testingLibrary of input.javaTestingLibraries) {
|
|
5246
5528
|
const reason = getDisabledReason(input, "javaTestingLibraries", testingLibrary);
|
|
5247
5529
|
if (reason) issues.push({
|
|
@@ -5269,6 +5551,15 @@ function evaluateCompatibility(input) {
|
|
|
5269
5551
|
optionId: observabilityLibrary
|
|
5270
5552
|
});
|
|
5271
5553
|
}
|
|
5554
|
+
for (const dotnetLibrary of input.dotnetLibraries ?? []) {
|
|
5555
|
+
const reason = getDisabledReason(input, "dotnetLibraries", dotnetLibrary);
|
|
5556
|
+
if (reason) issues.push({
|
|
5557
|
+
code: "INCOMPATIBLE_DOTNET_LIBRARY",
|
|
5558
|
+
message: reason,
|
|
5559
|
+
category: "dotnetLibraries",
|
|
5560
|
+
optionId: dotnetLibrary
|
|
5561
|
+
});
|
|
5562
|
+
}
|
|
5272
5563
|
return { issues };
|
|
5273
5564
|
}
|
|
5274
5565
|
|
|
@@ -5302,6 +5593,7 @@ const DEFAULT_STACK_SELECTION = {
|
|
|
5302
5593
|
mobilePush: "none",
|
|
5303
5594
|
mobileOTA: "none",
|
|
5304
5595
|
mobileDeepLinking: "none",
|
|
5596
|
+
mobileLibraries: [],
|
|
5305
5597
|
backendLibraries: "none",
|
|
5306
5598
|
stateManagement: "none",
|
|
5307
5599
|
forms: "react-hook-form",
|
|
@@ -5369,6 +5661,13 @@ const DEFAULT_STACK_SELECTION = {
|
|
|
5369
5661
|
pythonRealtime: "none",
|
|
5370
5662
|
pythonObservability: "none",
|
|
5371
5663
|
pythonCli: [],
|
|
5664
|
+
pythonCloudSdk: "none",
|
|
5665
|
+
pythonHttpClient: "none",
|
|
5666
|
+
pythonData: [],
|
|
5667
|
+
pythonMedia: "none",
|
|
5668
|
+
pythonServer: "none",
|
|
5669
|
+
pythonPackageManager: "uv",
|
|
5670
|
+
pythonMessageQueue: "none",
|
|
5372
5671
|
goWebFramework: "gin",
|
|
5373
5672
|
goOrm: "gorm",
|
|
5374
5673
|
goApi: "none",
|
|
@@ -5407,6 +5706,7 @@ const DEFAULT_STACK_SELECTION = {
|
|
|
5407
5706
|
dotnetValidation: "none",
|
|
5408
5707
|
dotnetCaching: "none",
|
|
5409
5708
|
dotnetDeploy: "docker",
|
|
5709
|
+
dotnetLibraries: [],
|
|
5410
5710
|
elixirWebFramework: "phoenix",
|
|
5411
5711
|
elixirOrm: "ecto-sql",
|
|
5412
5712
|
elixirAuth: "none",
|
|
@@ -5460,6 +5760,7 @@ const STACK_SELECTION_OPTION_CATEGORY_BY_KEY = {
|
|
|
5460
5760
|
mobilePush: "mobilePush",
|
|
5461
5761
|
mobileOTA: "mobileOTA",
|
|
5462
5762
|
mobileDeepLinking: "mobileDeepLinking",
|
|
5763
|
+
mobileLibraries: "mobileLibraries",
|
|
5463
5764
|
backendLibraries: "backendLibraries",
|
|
5464
5765
|
stateManagement: "stateManagement",
|
|
5465
5766
|
forms: "forms",
|
|
@@ -5526,6 +5827,13 @@ const STACK_SELECTION_OPTION_CATEGORY_BY_KEY = {
|
|
|
5526
5827
|
pythonRealtime: "pythonRealtime",
|
|
5527
5828
|
pythonObservability: "pythonObservability",
|
|
5528
5829
|
pythonCli: "pythonCli",
|
|
5830
|
+
pythonCloudSdk: "pythonCloudSdk",
|
|
5831
|
+
pythonHttpClient: "pythonHttpClient",
|
|
5832
|
+
pythonData: "pythonData",
|
|
5833
|
+
pythonMedia: "pythonMedia",
|
|
5834
|
+
pythonServer: "pythonServer",
|
|
5835
|
+
pythonPackageManager: "pythonPackageManager",
|
|
5836
|
+
pythonMessageQueue: "pythonMessageQueue",
|
|
5529
5837
|
goWebFramework: "goWebFramework",
|
|
5530
5838
|
goOrm: "goOrm",
|
|
5531
5839
|
goApi: "goApi",
|
|
@@ -5564,6 +5872,7 @@ const STACK_SELECTION_OPTION_CATEGORY_BY_KEY = {
|
|
|
5564
5872
|
dotnetValidation: "dotnetValidation",
|
|
5565
5873
|
dotnetCaching: "dotnetCaching",
|
|
5566
5874
|
dotnetDeploy: "dotnetDeploy",
|
|
5875
|
+
dotnetLibraries: "dotnetLibraries",
|
|
5567
5876
|
elixirWebFramework: "elixirWebFramework",
|
|
5568
5877
|
elixirOrm: "elixirOrm",
|
|
5569
5878
|
elixirAuth: "elixirAuth",
|
|
@@ -5596,6 +5905,7 @@ const VIRTUAL_NONE_MULTI_SELECT_STACK_SELECTION_KEYS = [
|
|
|
5596
5905
|
"goTesting",
|
|
5597
5906
|
"pythonTesting",
|
|
5598
5907
|
"pythonCli",
|
|
5908
|
+
"pythonData",
|
|
5599
5909
|
"elixirLibraries",
|
|
5600
5910
|
"aiDocs"
|
|
5601
5911
|
];
|
|
@@ -5630,6 +5940,7 @@ const STACK_SELECTION_URL_KEYS = {
|
|
|
5630
5940
|
mobilePush: "mpu",
|
|
5631
5941
|
mobileOTA: "mota",
|
|
5632
5942
|
mobileDeepLinking: "mdl",
|
|
5943
|
+
mobileLibraries: "mlib",
|
|
5633
5944
|
backendLibraries: "bl",
|
|
5634
5945
|
stateManagement: "sm",
|
|
5635
5946
|
forms: "frm",
|
|
@@ -5697,6 +6008,13 @@ const STACK_SELECTION_URL_KEYS = {
|
|
|
5697
6008
|
pythonRealtime: "prt",
|
|
5698
6009
|
pythonObservability: "pobs",
|
|
5699
6010
|
pythonCli: "pcli",
|
|
6011
|
+
pythonCloudSdk: "pcloud",
|
|
6012
|
+
pythonHttpClient: "phttp",
|
|
6013
|
+
pythonData: "pdata",
|
|
6014
|
+
pythonMedia: "pmedia",
|
|
6015
|
+
pythonServer: "pserver",
|
|
6016
|
+
pythonPackageManager: "ppm",
|
|
6017
|
+
pythonMessageQueue: "pmq",
|
|
5700
6018
|
goWebFramework: "gwf",
|
|
5701
6019
|
goOrm: "gorm",
|
|
5702
6020
|
goApi: "gapi",
|
|
@@ -5735,6 +6053,7 @@ const STACK_SELECTION_URL_KEYS = {
|
|
|
5735
6053
|
dotnetValidation: "dnval",
|
|
5736
6054
|
dotnetCaching: "dncache",
|
|
5737
6055
|
dotnetDeploy: "dndeploy",
|
|
6056
|
+
dotnetLibraries: "dnlib",
|
|
5738
6057
|
elixirWebFramework: "ewf",
|
|
5739
6058
|
elixirOrm: "eorm",
|
|
5740
6059
|
elixirAuth: "eauth",
|
|
@@ -5935,6 +6254,12 @@ const CLI_SCALAR_CONFIG_FIELDS = [
|
|
|
5935
6254
|
["pythonCaching", "pythonCaching"],
|
|
5936
6255
|
["pythonRealtime", "pythonRealtime"],
|
|
5937
6256
|
["pythonObservability", "pythonObservability"],
|
|
6257
|
+
["pythonCloudSdk", "pythonCloudSdk"],
|
|
6258
|
+
["pythonHttpClient", "pythonHttpClient"],
|
|
6259
|
+
["pythonMedia", "pythonMedia"],
|
|
6260
|
+
["pythonServer", "pythonServer"],
|
|
6261
|
+
["pythonPackageManager", "pythonPackageManager"],
|
|
6262
|
+
["pythonMessageQueue", "pythonMessageQueue"],
|
|
5938
6263
|
["goWebFramework", "goWebFramework"],
|
|
5939
6264
|
["goOrm", "goOrm"],
|
|
5940
6265
|
["goApi", "goApi"],
|
|
@@ -5996,15 +6321,18 @@ const CLI_NON_EMPTY_ARRAY_CONFIG_FIELDS = [
|
|
|
5996
6321
|
];
|
|
5997
6322
|
const CLI_DEFINED_ARRAY_CONFIG_FIELDS = [
|
|
5998
6323
|
["aiDocs", "aiDocs"],
|
|
6324
|
+
["mobileLibraries", "mobileLibraries"],
|
|
5999
6325
|
["rustLibraries", "rustLibraries"],
|
|
6000
6326
|
["pythonAi", "pythonAi"],
|
|
6001
6327
|
["javaLibraries", "javaLibraries"],
|
|
6002
6328
|
["javaTestingLibraries", "javaTestingLibraries"],
|
|
6003
6329
|
["dotnetTesting", "dotnetTesting"],
|
|
6004
6330
|
["dotnetObservability", "dotnetObservability"],
|
|
6331
|
+
["dotnetLibraries", "dotnetLibraries"],
|
|
6005
6332
|
["goTesting", "goTesting"],
|
|
6006
6333
|
["pythonTesting", "pythonTesting"],
|
|
6007
6334
|
["pythonCli", "pythonCli"],
|
|
6335
|
+
["pythonData", "pythonData"],
|
|
6008
6336
|
["elixirLibraries", "elixirLibraries"]
|
|
6009
6337
|
];
|
|
6010
6338
|
const PACKAGE_MANAGER_COMMANDS = {
|
|
@@ -6052,7 +6380,14 @@ const PYTHON_CONFIG_KEYS = [
|
|
|
6052
6380
|
"pythonCaching",
|
|
6053
6381
|
"pythonRealtime",
|
|
6054
6382
|
"pythonObservability",
|
|
6055
|
-
"pythonCli"
|
|
6383
|
+
"pythonCli",
|
|
6384
|
+
"pythonCloudSdk",
|
|
6385
|
+
"pythonHttpClient",
|
|
6386
|
+
"pythonData",
|
|
6387
|
+
"pythonMedia",
|
|
6388
|
+
"pythonServer",
|
|
6389
|
+
"pythonPackageManager",
|
|
6390
|
+
"pythonMessageQueue"
|
|
6056
6391
|
];
|
|
6057
6392
|
const GO_CONFIG_KEYS = [
|
|
6058
6393
|
"goWebFramework",
|
|
@@ -6096,7 +6431,8 @@ const DOTNET_CONFIG_KEYS = [
|
|
|
6096
6431
|
"dotnetObservability",
|
|
6097
6432
|
"dotnetValidation",
|
|
6098
6433
|
"dotnetCaching",
|
|
6099
|
-
"dotnetDeploy"
|
|
6434
|
+
"dotnetDeploy",
|
|
6435
|
+
"dotnetLibraries"
|
|
6100
6436
|
];
|
|
6101
6437
|
const ELIXIR_CONFIG_KEYS = [
|
|
6102
6438
|
"elixirWebFramework",
|
|
@@ -6128,7 +6464,8 @@ const REACT_NATIVE_CONFIG_KEYS = [
|
|
|
6128
6464
|
"mobileTesting",
|
|
6129
6465
|
"mobilePush",
|
|
6130
6466
|
"mobileOTA",
|
|
6131
|
-
"mobileDeepLinking"
|
|
6467
|
+
"mobileDeepLinking",
|
|
6468
|
+
"mobileLibraries"
|
|
6132
6469
|
];
|
|
6133
6470
|
function withoutNone(values) {
|
|
6134
6471
|
return values.filter((value) => value !== "none");
|
|
@@ -6241,6 +6578,7 @@ const GRAPH_MOBILE_PART_SELECTION_KEYS = [
|
|
|
6241
6578
|
["mobileOTA", "ota"],
|
|
6242
6579
|
["mobileDeepLinking", "deepLinking"]
|
|
6243
6580
|
];
|
|
6581
|
+
const GRAPH_MOBILE_ARRAY_PART_SELECTION_KEYS = [["mobileLibraries", "libraries"]];
|
|
6244
6582
|
const GRAPH_RUST_BACKEND_PART_SELECTION_KEYS = [
|
|
6245
6583
|
["rustCli", "cli"],
|
|
6246
6584
|
["rustLogging", "logging"],
|
|
@@ -6255,10 +6593,16 @@ const GRAPH_PYTHON_BACKEND_PART_SELECTION_KEYS = [
|
|
|
6255
6593
|
["pythonTaskQueue", "jobQueue"],
|
|
6256
6594
|
["pythonGraphql", "graphql"],
|
|
6257
6595
|
["pythonQuality", "codeQuality"],
|
|
6596
|
+
["pythonCloudSdk", "cloudSdk"],
|
|
6597
|
+
["pythonHttpClient", "httpClient"],
|
|
6598
|
+
["pythonMedia", "media"],
|
|
6599
|
+
["pythonServer", "server"],
|
|
6600
|
+
["pythonPackageManager", "packageManager"],
|
|
6601
|
+
["pythonMessageQueue", "messageQueue"],
|
|
6258
6602
|
["caching", "caching"],
|
|
6259
6603
|
["search", "search"]
|
|
6260
6604
|
];
|
|
6261
|
-
const GRAPH_PYTHON_BACKEND_ARRAY_PART_SELECTION_KEYS = [["pythonAi", "ai"]];
|
|
6605
|
+
const GRAPH_PYTHON_BACKEND_ARRAY_PART_SELECTION_KEYS = [["pythonAi", "ai"], ["pythonData", "data"]];
|
|
6262
6606
|
const GRAPH_GO_BACKEND_PART_SELECTION_KEYS = [
|
|
6263
6607
|
["goCli", "cli"],
|
|
6264
6608
|
["goLogging", "logging"],
|
|
@@ -6287,7 +6631,11 @@ const GRAPH_DOTNET_BACKEND_PART_SELECTION_KEYS = [
|
|
|
6287
6631
|
["dotnetCaching", "caching"],
|
|
6288
6632
|
["dotnetDeploy", "deploy"]
|
|
6289
6633
|
];
|
|
6290
|
-
const GRAPH_DOTNET_BACKEND_ARRAY_PART_SELECTION_KEYS = [
|
|
6634
|
+
const GRAPH_DOTNET_BACKEND_ARRAY_PART_SELECTION_KEYS = [
|
|
6635
|
+
["dotnetTesting", "testing"],
|
|
6636
|
+
["dotnetObservability", "observability"],
|
|
6637
|
+
["dotnetLibraries", "libraries"]
|
|
6638
|
+
];
|
|
6291
6639
|
const GRAPH_TYPESCRIPT_FRONTEND_PART_CLI_KEYS = [
|
|
6292
6640
|
["webDeploy", "deploy"],
|
|
6293
6641
|
["cssFramework", "css"],
|
|
@@ -6344,6 +6692,7 @@ const GRAPH_MOBILE_PART_CLI_KEYS = [
|
|
|
6344
6692
|
["mobileOTA", "ota"],
|
|
6345
6693
|
["mobileDeepLinking", "deepLinking"]
|
|
6346
6694
|
];
|
|
6695
|
+
const GRAPH_MOBILE_ARRAY_PART_CLI_KEYS = [["mobileLibraries", "libraries"]];
|
|
6347
6696
|
const GRAPH_RUST_BACKEND_PART_CLI_KEYS = [
|
|
6348
6697
|
["rustCli", "cli"],
|
|
6349
6698
|
["rustLogging", "logging"],
|
|
@@ -6358,10 +6707,16 @@ const GRAPH_PYTHON_BACKEND_PART_CLI_KEYS = [
|
|
|
6358
6707
|
["pythonTaskQueue", "jobQueue"],
|
|
6359
6708
|
["pythonGraphql", "graphql"],
|
|
6360
6709
|
["pythonQuality", "codeQuality"],
|
|
6710
|
+
["pythonCloudSdk", "cloudSdk"],
|
|
6711
|
+
["pythonHttpClient", "httpClient"],
|
|
6712
|
+
["pythonMedia", "media"],
|
|
6713
|
+
["pythonServer", "server"],
|
|
6714
|
+
["pythonPackageManager", "packageManager"],
|
|
6715
|
+
["pythonMessageQueue", "messageQueue"],
|
|
6361
6716
|
["caching", "caching"],
|
|
6362
6717
|
["search", "search"]
|
|
6363
6718
|
];
|
|
6364
|
-
const GRAPH_PYTHON_BACKEND_ARRAY_PART_CLI_KEYS = [["pythonAi", "ai"]];
|
|
6719
|
+
const GRAPH_PYTHON_BACKEND_ARRAY_PART_CLI_KEYS = [["pythonAi", "ai"], ["pythonData", "data"]];
|
|
6365
6720
|
const GRAPH_GO_BACKEND_PART_CLI_KEYS = [
|
|
6366
6721
|
["goCli", "cli"],
|
|
6367
6722
|
["goLogging", "logging"],
|
|
@@ -6389,7 +6744,11 @@ const GRAPH_DOTNET_BACKEND_PART_CLI_KEYS = [
|
|
|
6389
6744
|
["dotnetCaching", "caching"],
|
|
6390
6745
|
["dotnetDeploy", "deploy"]
|
|
6391
6746
|
];
|
|
6392
|
-
const GRAPH_DOTNET_BACKEND_ARRAY_PART_CLI_KEYS = [
|
|
6747
|
+
const GRAPH_DOTNET_BACKEND_ARRAY_PART_CLI_KEYS = [
|
|
6748
|
+
["dotnetTesting", "testing"],
|
|
6749
|
+
["dotnetObservability", "observability"],
|
|
6750
|
+
["dotnetLibraries", "libraries"]
|
|
6751
|
+
];
|
|
6393
6752
|
function getAddonScopedPartFields(addons) {
|
|
6394
6753
|
return toUniqueNonNoneArray(addons ?? []).flatMap((addon) => {
|
|
6395
6754
|
const binding = getAddonStackPartBinding(addon);
|
|
@@ -6466,6 +6825,13 @@ function getSelectionScopedPartFields(selection) {
|
|
|
6466
6825
|
role,
|
|
6467
6826
|
value: selection[key]
|
|
6468
6827
|
})),
|
|
6828
|
+
...GRAPH_MOBILE_ARRAY_PART_SELECTION_KEYS.map(([key, role]) => ({
|
|
6829
|
+
ownerRole: "mobile",
|
|
6830
|
+
ecosystem: "react-native",
|
|
6831
|
+
role,
|
|
6832
|
+
value: selection[key],
|
|
6833
|
+
allowMultiple: true
|
|
6834
|
+
})),
|
|
6469
6835
|
...GRAPH_RUST_BACKEND_PART_SELECTION_KEYS.map(([key, role]) => ({
|
|
6470
6836
|
ownerRole: "backend",
|
|
6471
6837
|
ecosystem: "rust",
|
|
@@ -6572,6 +6938,13 @@ function getCliScopedPartFields(input) {
|
|
|
6572
6938
|
role,
|
|
6573
6939
|
value: getValue(key)
|
|
6574
6940
|
})),
|
|
6941
|
+
...GRAPH_MOBILE_ARRAY_PART_CLI_KEYS.map(([key, role]) => ({
|
|
6942
|
+
ownerRole: "mobile",
|
|
6943
|
+
ecosystem: "react-native",
|
|
6944
|
+
role,
|
|
6945
|
+
value: getArrayValue(key),
|
|
6946
|
+
allowMultiple: true
|
|
6947
|
+
})),
|
|
6575
6948
|
...GRAPH_RUST_BACKEND_PART_CLI_KEYS.map(([key, role]) => ({
|
|
6576
6949
|
ownerRole: "backend",
|
|
6577
6950
|
ecosystem: "rust",
|
|
@@ -6817,6 +7190,7 @@ function buildProjectConfigBase(selection, projectName, relativePath, install) {
|
|
|
6817
7190
|
mobilePush: stack.mobilePush,
|
|
6818
7191
|
mobileOTA: stack.mobileOTA,
|
|
6819
7192
|
mobileDeepLinking: stack.mobileDeepLinking,
|
|
7193
|
+
mobileLibraries: toUniqueNonNoneArray(stack.mobileLibraries),
|
|
6820
7194
|
cms: stack.cms,
|
|
6821
7195
|
caching: stack.caching,
|
|
6822
7196
|
rateLimit: stack.rateLimit,
|
|
@@ -6852,6 +7226,13 @@ function buildProjectConfigBase(selection, projectName, relativePath, install) {
|
|
|
6852
7226
|
pythonRealtime: stack.pythonRealtime,
|
|
6853
7227
|
pythonObservability: stack.pythonObservability,
|
|
6854
7228
|
pythonCli: toUniqueNonNoneArray(stack.pythonCli),
|
|
7229
|
+
pythonCloudSdk: stack.pythonCloudSdk,
|
|
7230
|
+
pythonHttpClient: stack.pythonHttpClient,
|
|
7231
|
+
pythonData: toUniqueNonNoneArray(stack.pythonData),
|
|
7232
|
+
pythonMedia: stack.pythonMedia,
|
|
7233
|
+
pythonServer: stack.pythonServer,
|
|
7234
|
+
pythonPackageManager: stack.pythonPackageManager,
|
|
7235
|
+
pythonMessageQueue: stack.pythonMessageQueue,
|
|
6855
7236
|
goWebFramework: stack.goWebFramework,
|
|
6856
7237
|
goOrm: stack.goOrm,
|
|
6857
7238
|
goApi: stack.goApi,
|
|
@@ -6890,6 +7271,7 @@ function buildProjectConfigBase(selection, projectName, relativePath, install) {
|
|
|
6890
7271
|
dotnetValidation: stack.dotnetValidation,
|
|
6891
7272
|
dotnetCaching: stack.dotnetCaching,
|
|
6892
7273
|
dotnetDeploy: stack.dotnetDeploy,
|
|
7274
|
+
dotnetLibraries: toUniqueNonNoneArray(stack.dotnetLibraries),
|
|
6893
7275
|
elixirWebFramework: stack.elixirWebFramework,
|
|
6894
7276
|
elixirOrm: stack.elixirOrm,
|
|
6895
7277
|
elixirAuth: stack.elixirAuth,
|
|
@@ -7086,6 +7468,7 @@ function generateReactNativeCommand(selection, projectName) {
|
|
|
7086
7468
|
`--mobile-push ${selection.mobilePush}`,
|
|
7087
7469
|
`--mobile-ota ${selection.mobileOTA}`,
|
|
7088
7470
|
`--mobile-deep-linking ${selection.mobileDeepLinking}`,
|
|
7471
|
+
formatArrayFlag("mobile-libraries", selection.mobileLibraries),
|
|
7089
7472
|
`--package-manager ${selection.packageManager}`,
|
|
7090
7473
|
selection.git === "false" ? "--no-git" : "--git",
|
|
7091
7474
|
selection.install === "false" ? "--no-install" : "--install",
|
|
@@ -7097,6 +7480,7 @@ function generateReactNativeCommand(selection, projectName) {
|
|
|
7097
7480
|
function generateRustCommand(selection, projectName) {
|
|
7098
7481
|
const flags = [
|
|
7099
7482
|
"--ecosystem rust",
|
|
7483
|
+
`--database ${selection.database}`,
|
|
7100
7484
|
`--rust-web-framework ${selection.rustWebFramework}`,
|
|
7101
7485
|
`--rust-frontend ${selection.rustFrontend}`,
|
|
7102
7486
|
`--rust-orm ${selection.rustOrm}`,
|
|
@@ -7124,6 +7508,7 @@ function generateRustCommand(selection, projectName) {
|
|
|
7124
7508
|
function generatePythonCommand(selection, projectName) {
|
|
7125
7509
|
const flags = [
|
|
7126
7510
|
"--ecosystem python",
|
|
7511
|
+
`--database ${selection.database}`,
|
|
7127
7512
|
`--python-web-framework ${selection.pythonWebFramework}`,
|
|
7128
7513
|
`--python-orm ${selection.pythonOrm}`,
|
|
7129
7514
|
`--python-validation ${selection.pythonValidation}`,
|
|
@@ -7138,6 +7523,13 @@ function generatePythonCommand(selection, projectName) {
|
|
|
7138
7523
|
`--python-realtime ${selection.pythonRealtime}`,
|
|
7139
7524
|
`--python-observability ${selection.pythonObservability}`,
|
|
7140
7525
|
formatArrayFlag("python-cli", selection.pythonCli),
|
|
7526
|
+
`--python-cloud-sdk ${selection.pythonCloudSdk}`,
|
|
7527
|
+
`--python-http-client ${selection.pythonHttpClient}`,
|
|
7528
|
+
formatArrayFlag("python-data", selection.pythonData),
|
|
7529
|
+
`--python-media ${selection.pythonMedia}`,
|
|
7530
|
+
`--python-server ${selection.pythonServer}`,
|
|
7531
|
+
`--python-package-manager ${selection.pythonPackageManager}`,
|
|
7532
|
+
`--python-message-queue ${selection.pythonMessageQueue}`,
|
|
7141
7533
|
`--email ${selection.email}`,
|
|
7142
7534
|
`--observability ${selection.observability}`,
|
|
7143
7535
|
`--caching ${selection.caching}`,
|
|
@@ -7151,6 +7543,7 @@ function generatePythonCommand(selection, projectName) {
|
|
|
7151
7543
|
function generateGoCommand(selection, projectName) {
|
|
7152
7544
|
const flags = [
|
|
7153
7545
|
"--ecosystem go",
|
|
7546
|
+
`--database ${selection.database}`,
|
|
7154
7547
|
`--go-web-framework ${selection.goWebFramework}`,
|
|
7155
7548
|
`--go-orm ${selection.goOrm}`,
|
|
7156
7549
|
`--go-api ${selection.goApi}`,
|
|
@@ -7183,6 +7576,7 @@ function generateGoCommand(selection, projectName) {
|
|
|
7183
7576
|
function generateJavaCommand(selection, projectName) {
|
|
7184
7577
|
const flags = [
|
|
7185
7578
|
"--ecosystem java",
|
|
7579
|
+
`--database ${selection.database}`,
|
|
7186
7580
|
`--java-web-framework ${selection.javaWebFramework}`,
|
|
7187
7581
|
...selection.javaLanguage === "kotlin" ? [`--java-language ${selection.javaLanguage}`] : [],
|
|
7188
7582
|
`--java-build-tool ${selection.javaBuildTool}`,
|
|
@@ -7205,6 +7599,7 @@ function generateJavaCommand(selection, projectName) {
|
|
|
7205
7599
|
function generateDotnetCommand(selection, projectName) {
|
|
7206
7600
|
const flags = [
|
|
7207
7601
|
"--ecosystem dotnet",
|
|
7602
|
+
`--database ${selection.database}`,
|
|
7208
7603
|
`--dotnet-web-framework ${selection.dotnetWebFramework}`,
|
|
7209
7604
|
`--dotnet-orm ${selection.dotnetOrm}`,
|
|
7210
7605
|
`--dotnet-auth ${selection.dotnetAuth}`,
|
|
@@ -7216,6 +7611,7 @@ function generateDotnetCommand(selection, projectName) {
|
|
|
7216
7611
|
`--dotnet-validation ${selection.dotnetValidation}`,
|
|
7217
7612
|
`--dotnet-caching ${selection.dotnetCaching}`,
|
|
7218
7613
|
`--dotnet-deploy ${selection.dotnetDeploy}`,
|
|
7614
|
+
formatArrayFlag("dotnet-libraries", selection.dotnetLibraries),
|
|
7219
7615
|
formatArrayFlag("ai-docs", selection.aiDocs)
|
|
7220
7616
|
];
|
|
7221
7617
|
if (selection.git === "false") flags.push("--no-git");
|
|
@@ -7225,6 +7621,7 @@ function generateDotnetCommand(selection, projectName) {
|
|
|
7225
7621
|
function generateElixirCommand(selection, projectName) {
|
|
7226
7622
|
const flags = [
|
|
7227
7623
|
"--ecosystem elixir",
|
|
7624
|
+
`--database ${selection.database}`,
|
|
7228
7625
|
`--elixir-web-framework ${selection.elixirWebFramework}`,
|
|
7229
7626
|
`--elixir-orm ${selection.elixirOrm}`,
|
|
7230
7627
|
`--elixir-auth ${selection.elixirAuth}`,
|
|
@@ -7270,4 +7667,4 @@ function generateStackSelectionCommand(selection) {
|
|
|
7270
7667
|
|
|
7271
7668
|
//#endregion
|
|
7272
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 };
|
|
7273
|
-
//# sourceMappingURL=stack-translation-
|
|
7670
|
+
//# sourceMappingURL=stack-translation-Ay-_1mNB.mjs.map
|