@tdk-landscape/tdk-cli-core 1.3.15 → 1.3.22

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 (274) hide show
  1. package/Tiltfile +144 -0
  2. package/discovery/AGENTS.md +362 -0
  3. package/discovery/TILT_DISCOVERY.star +424 -0
  4. package/discovery/Tiltfile +58 -0
  5. package/discovery/config.star +258 -0
  6. package/discovery/constants.star +127 -0
  7. package/discovery/deterministic.star +211 -0
  8. package/discovery/discovery_daemon.star +191 -0
  9. package/discovery/discovery_orchestrator.star +460 -0
  10. package/discovery/filtering.star +5 -0
  11. package/discovery/identity-management-backend/service.yaml +26 -0
  12. package/discovery/identity-management-frontend/service.yaml +29 -0
  13. package/discovery/identity-sdk/service.yaml +9 -0
  14. package/discovery/incremental_discovery.star +213 -0
  15. package/discovery/indexing.star +7 -0
  16. package/discovery/json_manifest_scanner.star +51 -0
  17. package/discovery/libraries.star +46 -0
  18. package/discovery/loading.star +23 -0
  19. package/discovery/manifest/constants.star +104 -0
  20. package/discovery/manifest/loading.star +386 -0
  21. package/discovery/manifest/normalize.star +281 -0
  22. package/discovery/manifest/validation.star +108 -0
  23. package/discovery/normalization.star +11 -0
  24. package/discovery/registry.star +544 -0
  25. package/discovery/resource_snapshot.py +382 -0
  26. package/discovery/resource_snapshot.star +143 -0
  27. package/discovery/schemas.star +1 -0
  28. package/discovery/services/platform/cdc/debezium/nats-connector/service.yaml +9 -0
  29. package/discovery/services/platform/cdc/nats-http-bridge/service.yaml +9 -0
  30. package/discovery/services/platform/orchestrator/orchestrator-glue-backend/service.yaml +26 -0
  31. package/discovery/services/platform/synthetic-monitor/service.yaml +9 -0
  32. package/discovery/test_resource_snapshot.py +251 -0
  33. package/discovery/validation.star +78 -0
  34. package/discovery/versioning.star +1 -0
  35. package/dist/commands/config.d.ts.map +1 -1
  36. package/dist/commands/config.js +11 -0
  37. package/dist/commands/config.js.map +1 -1
  38. package/dist/commands/doctor.d.ts.map +1 -1
  39. package/dist/commands/doctor.js +1 -2
  40. package/dist/commands/doctor.js.map +1 -1
  41. package/dist/commands/project.d.ts.map +1 -1
  42. package/dist/commands/project.js +36 -41
  43. package/dist/commands/project.js.map +1 -1
  44. package/dist/commands/resource.d.ts.map +1 -1
  45. package/dist/commands/resource.js +51 -55
  46. package/dist/commands/resource.js.map +1 -1
  47. package/dist/commands/stack.d.ts.map +1 -1
  48. package/dist/commands/stack.js +22 -24
  49. package/dist/commands/stack.js.map +1 -1
  50. package/dist/commands/ui.d.ts.map +1 -1
  51. package/dist/commands/ui.js +1 -2
  52. package/dist/commands/ui.js.map +1 -1
  53. package/dist/commands/up.d.ts.map +1 -1
  54. package/dist/commands/up.js +1 -2
  55. package/dist/commands/up.js.map +1 -1
  56. package/dist/commands/upgrade.d.ts +8 -0
  57. package/dist/commands/upgrade.d.ts.map +1 -1
  58. package/dist/commands/upgrade.js +59 -18
  59. package/dist/commands/upgrade.js.map +1 -1
  60. package/dist/generator/extension-fetch.d.ts +19 -0
  61. package/dist/generator/extension-fetch.d.ts.map +1 -1
  62. package/dist/generator/extension-fetch.js +71 -5
  63. package/dist/generator/extension-fetch.js.map +1 -1
  64. package/dist/generator/template-engine.d.ts +1 -0
  65. package/dist/generator/template-engine.d.ts.map +1 -1
  66. package/dist/generator/template-engine.js +50 -6
  67. package/dist/generator/template-engine.js.map +1 -1
  68. package/dist/utils/command-helpers.d.ts.map +1 -1
  69. package/dist/utils/command-helpers.js +7 -9
  70. package/dist/utils/command-helpers.js.map +1 -1
  71. package/dist/utils/constants.d.ts +1 -0
  72. package/dist/utils/constants.d.ts.map +1 -1
  73. package/dist/utils/constants.js +1 -0
  74. package/dist/utils/constants.js.map +1 -1
  75. package/dist/utils/errors.d.ts +2 -0
  76. package/dist/utils/errors.d.ts.map +1 -1
  77. package/dist/utils/errors.js +6 -1
  78. package/dist/utils/errors.js.map +1 -1
  79. package/dist/utils/project-features.d.ts.map +1 -1
  80. package/dist/utils/project-features.js +1 -1
  81. package/dist/utils/project-features.js.map +1 -1
  82. package/dist/utils/resource-features.d.ts.map +1 -1
  83. package/dist/utils/resource-features.js +2 -2
  84. package/dist/utils/resource-features.js.map +1 -1
  85. package/dist/utils/tar.js +4 -4
  86. package/dist/utils/tar.js.map +1 -1
  87. package/dist/utils/validation.d.ts +7 -0
  88. package/dist/utils/validation.d.ts.map +1 -1
  89. package/dist/utils/validation.js +9 -0
  90. package/dist/utils/validation.js.map +1 -1
  91. package/engine/AGENTS.md +705 -0
  92. package/engine/README.md +29 -0
  93. package/engine/REFACTORING_MANIFEST_SYSTEM.md +974 -0
  94. package/engine/Tiltfile +80 -0
  95. package/engine/assets/docker/golden-layers.Dockerfile +221 -0
  96. package/engine/assets/scripts/cleanup-completed-migrator-images.sh +37 -0
  97. package/engine/assets/scripts/cleanup-tilt-images.sh +120 -0
  98. package/engine/assets/scripts/mac-m1-resource-monitor.sh +121 -0
  99. package/engine/config.star +3 -0
  100. package/engine/docs/AUTODISCOVERY_TEST.md +182 -0
  101. package/engine/docs/C4-ARCHITECTURE-operations.md +396 -0
  102. package/engine/docs/C4-ARCHITECTURE-overview.md +284 -0
  103. package/engine/docs/C4-ARCHITECTURE.md +17 -0
  104. package/engine/docs/GOLDEN_IMAGE_INTEGRATION.md +349 -0
  105. package/engine/docs/MANIFEST_DRIVEN_ARCHITECTURE.md +357 -0
  106. package/engine/docs/README.md +284 -0
  107. package/engine/entrypoint.star +97 -0
  108. package/engine/lifecycle/orchestrator.star +260 -0
  109. package/engine/paths.star +717 -0
  110. package/engine/schemas/manifest-schema.json +301 -0
  111. package/engine/schemas/service-schema.json +301 -0
  112. package/engine/scripts/README.md +89 -0
  113. package/engine/scripts/build-and-publish-lib.sh +205 -0
  114. package/engine/scripts/check-lib-publish.sh +85 -0
  115. package/engine/scripts/debug-container.sh +258 -0
  116. package/engine/scripts/generate-manifest.sh +197 -0
  117. package/engine/spec.master +702 -0
  118. package/engine/spec.master.example +341 -0
  119. package/engine/topologies/README.md +34 -0
  120. package/engine/topologies/platform/docker/AGENTS.md +59 -0
  121. package/engine/topologies/platform/docker/auth/auth.star +167 -0
  122. package/engine/topologies/platform/docker/build/golden_image.star +37 -0
  123. package/engine/topologies/platform/docker/build/golden_image_build.star +82 -0
  124. package/engine/topologies/platform/docker/build/golden_image_constants.star +93 -0
  125. package/engine/topologies/platform/docker/build/golden_image_dockerfile.star +291 -0
  126. package/engine/topologies/platform/docker/compose/compose.star +636 -0
  127. package/engine/topologies/platform/docker/compose/compose_helpers.star +52 -0
  128. package/engine/topologies/platform/docker/compose/traefik_standalone.star +53 -0
  129. package/engine/topologies/platform/docker/config/bunignore.star +142 -0
  130. package/engine/topologies/platform/docker/config/dockerignore.star +150 -0
  131. package/engine/topologies/platform/docker/constants.star +170 -0
  132. package/engine/topologies/platform/docker/dockerfile/dockerfile.star +54 -0
  133. package/engine/topologies/platform/docker/generators/golden_docker_generator_v2.star +73 -0
  134. package/engine/topologies/platform/docker/index.star +27 -0
  135. package/engine/topologies/platform/docker/layers/bun_helpers.star +23 -0
  136. package/engine/topologies/platform/docker/layers/infisical/index.star +40 -0
  137. package/engine/topologies/platform/docker/layers/infisical/infisical_docker.star +262 -0
  138. package/engine/topologies/platform/docker/layers/l1_base_layers.star +87 -0
  139. package/engine/topologies/platform/docker/layers/l2_dependency_layers.star +125 -0
  140. package/engine/topologies/platform/docker/layers/l3_builder_layers.star +209 -0
  141. package/engine/topologies/platform/docker/layers/l4_runtime_layers.star +214 -0
  142. package/engine/topologies/platform/docker/layers/prisma/constants.star +135 -0
  143. package/engine/topologies/platform/docker/layers/prisma/db_readiness.star +96 -0
  144. package/engine/topologies/platform/docker/layers/prisma/filesystem_setup.star +109 -0
  145. package/engine/topologies/platform/docker/layers/prisma/migrate_script.star +98 -0
  146. package/engine/topologies/platform/docker/layers/prisma/prisma_build.star +126 -0
  147. package/engine/topologies/platform/docker/layers/prisma/prisma_runtime.star +161 -0
  148. package/engine/topologies/platform/docker/layers/prisma/secret_resolution.star +119 -0
  149. package/engine/topologies/platform/docker/networking/api_path_constants.star +230 -0
  150. package/engine/topologies/platform/docker/networking/sablier_container_cycle.star +27 -0
  151. package/engine/topologies/platform/docker/networking/traefik.star +232 -0
  152. package/engine/topologies/platform/docker/networking/traefik_constants.star +146 -0
  153. package/engine/topologies/platform/docker/networking/traefik_helpers.star +160 -0
  154. package/engine/topologies/platform/docker/secrets/infisical.star +135 -0
  155. package/engine/topologies/platform/net/proxy.star +4 -0
  156. package/engine/topologies/platform/registries/local.star +4 -0
  157. package/engine/topologies/platform/security/secrets.star +239 -0
  158. package/engine/topologies/platform/state/relational.star +4 -0
  159. package/engine/topologies/tilt/common/AGENTS.md +59 -0
  160. package/engine/topologies/tilt/common/utils.star +364 -0
  161. package/engine/topologies/tilt/common/utils_debug.star +69 -0
  162. package/engine/topologies/tilt/common/utils_deterministic.star +168 -0
  163. package/engine/topologies/tilt/common/utils_docker_networks.star +46 -0
  164. package/engine/topologies/tilt/common/utils_env.star +43 -0
  165. package/engine/topologies/tilt/common/utils_output.star +97 -0
  166. package/engine/topologies/tilt/config/AGENTS.md +68 -0
  167. package/engine/topologies/tilt/config/defaults.star +3 -0
  168. package/engine/topologies/tilt/config/feature_flags.star +10 -0
  169. package/engine/topologies/tilt/config/global.star +55 -0
  170. package/engine/topologies/tilt/config/profiles.star +382 -0
  171. package/engine/topologies/tilt/generators/agents_md.star +62 -0
  172. package/engine/topologies/tilt/generators/api_gateway.star +145 -0
  173. package/engine/topologies/tilt/generators/index.star +124 -0
  174. package/engine/topologies/tilt/generators/infisical/README.md +424 -0
  175. package/engine/topologies/tilt/generators/infisical/examples.star +312 -0
  176. package/engine/topologies/tilt/generators/infisical/index.star +57 -0
  177. package/engine/topologies/tilt/generators/infisical/machine_identity.star +420 -0
  178. package/engine/topologies/tilt/generators/infisical/organization.star +534 -0
  179. package/engine/topologies/tilt/generators/infisical/path_manager.star +476 -0
  180. package/engine/topologies/tilt/generators/infisical/secrets_generator.star +420 -0
  181. package/engine/topologies/tilt/generators/nginx_conf.star +143 -0
  182. package/engine/topologies/tilt/generators/npmrc.star +111 -0
  183. package/engine/topologies/tilt/generators/tsconfig.star +23 -0
  184. package/engine/topologies/tilt/generators/typescript/backend_library_tsconfig.star +71 -0
  185. package/engine/topologies/tilt/generators/typescript/backend_tsconfig.star +124 -0
  186. package/engine/topologies/tilt/generators/typescript/common.star +7 -0
  187. package/engine/topologies/tilt/generators/typescript/frontend_library_tsconfig.star +76 -0
  188. package/engine/topologies/tilt/generators/typescript/frontend_tsconfig.star +110 -0
  189. package/engine/topologies/tilt/generators/typescript/include.star +23 -0
  190. package/engine/topologies/tilt/generators/typescript/playwright_config.star +40 -0
  191. package/engine/topologies/tilt/generators/typescript/prisma_config.star +49 -0
  192. package/engine/topologies/tilt/generators/validators.star +853 -0
  193. package/engine/topologies/tilt/generators/vite/backend.star +78 -0
  194. package/engine/topologies/tilt/generators/vite/frontend.star +98 -0
  195. package/engine/topologies/tilt/generators/vite/generators.star +43 -0
  196. package/engine/topologies/tilt/generators/vite/helpers.star +244 -0
  197. package/engine/topologies/tilt/generators/vite/library.star +65 -0
  198. package/engine/topologies/tilt/generators/vite/sdk.star +73 -0
  199. package/engine/topologies/tilt/generators/vite/templates.star +737 -0
  200. package/engine/topologies/tilt/generators/vite_config.star +22 -0
  201. package/engine/topologies/tilt/manifest/AGENTS.md +61 -0
  202. package/engine/topologies/tilt/manifest/README.md +693 -0
  203. package/engine/topologies/tilt/manifest/__init__.star +218 -0
  204. package/engine/topologies/tilt/manifest/constants.star +252 -0
  205. package/engine/topologies/tilt/manifest/errors.star +266 -0
  206. package/engine/topologies/tilt/manifest/integration.star +339 -0
  207. package/engine/topologies/tilt/manifest/json_to_yaml.py +54 -0
  208. package/engine/topologies/tilt/manifest/loader.star +214 -0
  209. package/engine/topologies/tilt/manifest/mapper.star +227 -0
  210. package/engine/topologies/tilt/manifest/parser.star +400 -0
  211. package/engine/topologies/tilt/manifest/schema.star +462 -0
  212. package/engine/topologies/tilt/manifest/tests/test_integration.star +276 -0
  213. package/engine/topologies/tilt/manifest/tests/test_loader_parser.star +397 -0
  214. package/engine/topologies/tilt/manifest/tests/test_manifest.star +316 -0
  215. package/engine/topologies/tilt/manifest/tests/test_validator.star +470 -0
  216. package/engine/topologies/tilt/manifest/validator.star +717 -0
  217. package/engine/topologies/tilt/manifest/yaml_to_json.py +18 -0
  218. package/engine/topologies/tilt/resources/AGENTS.md +71 -0
  219. package/engine/topologies/tilt/resources/conditions.star +3 -0
  220. package/engine/topologies/tilt/resources/databases.star +244 -0
  221. package/engine/topologies/tilt/resources/declaration.star +3 -0
  222. package/engine/topologies/tilt/resources/deps.star +3 -0
  223. package/engine/topologies/tilt/resources/infra-loader.star +437 -0
  224. package/engine/topologies/tilt/resources/libs.star +30 -0
  225. package/engine/topologies/tilt/resources/libs_discovery.star +102 -0
  226. package/engine/topologies/tilt/resources/libs_paths.star +79 -0
  227. package/engine/topologies/tilt/resources/libs_resource_definition.star +151 -0
  228. package/engine/topologies/tilt/resources/libs_setup.star +164 -0
  229. package/engine/topologies/tilt/resources/libs_tsconfig.star +37 -0
  230. package/engine/topologies/tilt/resources/orchestrator/apply.star +77 -0
  231. package/engine/topologies/tilt/resources/orchestrator/apply_compose_resource_registration.star +431 -0
  232. package/engine/topologies/tilt/resources/orchestrator/apply_manifest_orchestration.star +81 -0
  233. package/engine/topologies/tilt/resources/orchestrator/apply_migrator_orchestration.star +148 -0
  234. package/engine/topologies/tilt/resources/orchestrator/apply_resource_validation.star +36 -0
  235. package/engine/topologies/tilt/resources/orchestrator/apply_runtime_flags.star +44 -0
  236. package/engine/topologies/tilt/resources/orchestrator/builders/typescript.star +164 -0
  237. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/AGENTS.md +75 -0
  238. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/index.star +21 -0
  239. package/engine/topologies/tilt/resources/orchestrator/generators/dependencies/resolver.star +134 -0
  240. package/engine/topologies/tilt/resources/orchestrator/generators/env.star +258 -0
  241. package/engine/topologies/tilt/resources/orchestrator/generators/frontend.star +169 -0
  242. package/engine/topologies/tilt/resources/orchestrator/generators/manifest_resource.star +524 -0
  243. package/engine/topologies/tilt/resources/orchestrator/helpers.star +33 -0
  244. package/engine/topologies/tilt/resources/orchestrator.star +54 -0
  245. package/engine/topologies/tilt/resources/ordering.star +3 -0
  246. package/engine/topologies/tilt/resources/triggers.star +3 -0
  247. package/engine/topologies/tilt/resources/watchers.star +299 -0
  248. package/engine/where-things-live.star +717 -0
  249. package/ext/Tiltfile +66 -0
  250. package/ext/ide-components/README.md +219 -0
  251. package/ext/ide-components/code_executor/server.py +268 -0
  252. package/ext/ide-components/code_viewer/server.py +206 -0
  253. package/ext/ide-components/config_inspector/server.py +1050 -0
  254. package/ext/ide-components/file_browser/server.py +285 -0
  255. package/ext/ide-components/shared/config_service.py +469 -0
  256. package/ext/ide-components/shared/file_utils.py +298 -0
  257. package/ext/ide-components/shared/http_utils.py +232 -0
  258. package/ext/ide-components/shared/static/styles.css +1334 -0
  259. package/ext/ide-components/shared/syntax_highlighter.py +140 -0
  260. package/ext/ide-components/shared/template_engine.py +123 -0
  261. package/ext/ide-components/shared/templates/base.html +121 -0
  262. package/ext/ide-components/shared/test_config_service.py +326 -0
  263. package/ext/ide-components/shared/tilt_integration.py +158 -0
  264. package/ext/ui-enhancements/cron-status-server.sh +49 -0
  265. package/ext/ui-enhancements/cron-status-tracker.sh +146 -0
  266. package/ext/ui-enhancements/extension.yaml +36 -0
  267. package/ext/ui-enhancements/tiltfile.py +99 -0
  268. package/ext/ui-enhancements/ui/cron-jobs-tab.css +396 -0
  269. package/ext/ui-enhancements/ui/help-panel.css +279 -0
  270. package/ext/ui-enhancements/ui/icons.css +125 -0
  271. package/ext/ui-enhancements/ui/tooltips.css +114 -0
  272. package/package.json +13 -9
  273. package/specs/specs/TILT_SERVICE_DEFAULTS.star +205 -0
  274. package/specs/specs/TILT_TECH_STACK.star +159 -0
@@ -0,0 +1,737 @@
1
+ # =============================================================================
2
+ # ⚡ TILT SDK - VITE PROVIDER TEMPLATES
3
+ # =============================================================================
4
+ # Path: .tilt/providers/vite/templates.star
5
+ # Purpose: Vite config templates used by generators
6
+ # =============================================================================
7
+
8
+ # Load npm scope from project.json (or use project name as default)
9
+ # Use TDK_PROJECT_ROOT env var set by Tilt, fallback to current directory
10
+ def _load_npm_scope():
11
+ project_root = os.environ.get('TDK_PROJECT_ROOT', '')
12
+ project_json_path = '.tdk/project.json'
13
+ if project_root:
14
+ project_json_path = project_root + '/' + project_json_path
15
+
16
+ if os.path.exists(project_json_path):
17
+ _project_json = read_json(project_json_path)
18
+ return _project_json.get('project', {}).get('name', 'tdk-project')
19
+ return 'tdk-project'
20
+
21
+ _NPM_SCOPE = _load_npm_scope()
22
+
23
+ TEMPLATE_VITE_FRONTEND = """{header}
24
+ import {{ resolve }} from 'node:path';
25
+ import react from '@vitejs/plugin-react';
26
+ import {{ defineConfig }} from 'vite';
27
+
28
+ export default defineConfig({{
29
+ base: '{base_path}',
30
+ build: {{
31
+ cssCodeSplit: false,
32
+ minify: false,
33
+ modulePreload: false,
34
+ rollupOptions: {{
35
+ output: {{
36
+ entryFileNames: '[name].js',
37
+ format: 'esm',
38
+ }},
39
+ }},
40
+ target: 'esnext',
41
+ }},
42
+ define: {{
43
+ global: 'globalThis',
44
+ }},
45
+ optimizeDeps: {{
46
+ include: [{optimize_deps_include}],
47
+ }},
48
+ plugins: [react()],
49
+ preview: {{
50
+ host: '0.0.0.0',
51
+ port: {port},
52
+ }},
53
+ resolve: {{
54
+ alias: {{
55
+ // 🎯 IMPORTANT: Order matters! More specific aliases must come FIRST
56
+ '@/autogenerated': resolve(__dirname),
57
+ '@': resolve(__dirname, '../src'),
58
+ 'set-cookie-parser': resolve(__dirname, '../src/utils/empty-module.js'),
59
+ {internal_aliases}
60
+ }},
61
+ }},
62
+ server: {{
63
+ host: '0.0.0.0',
64
+ port: {port},
65
+ hmr: {{
66
+ port: {hmr_port},
67
+ }},
68
+ {proxy_config}
69
+ }},
70
+ }});
71
+ """
72
+
73
+ TEMPLATE_VITE_FRONTEND_BUILD = """{header}
74
+ import {{ resolve }} from 'node:path';
75
+ import react from '@vitejs/plugin-react';
76
+ import {{ defineConfig }} from 'vite';
77
+
78
+ export default defineConfig({{
79
+ mode: 'production',
80
+ base: '{base_path}',
81
+ build: {{
82
+ cssCodeSplit: false,
83
+ minify: true,
84
+ modulePreload: false,
85
+ rollupOptions: {{
86
+ output: {{
87
+ entryFileNames: '[name].js',
88
+ format: 'esm',
89
+ // Inline all node_modules to prevent lazy dynamic imports for CJS modules
90
+ manualChunks: undefined,
91
+ }},
92
+ }},
93
+ target: 'esnext',
94
+ }},
95
+ define: {{
96
+ global: 'globalThis',
97
+ __DEV__: 'false',
98
+ 'process.env.NODE_ENV': '"production"',
99
+ }},
100
+ esbuild: {{
101
+ // Force production JSX runtime
102
+ jsx: 'automatic',
103
+ jsxImportSource: 'react',
104
+ // CRITICAL: Disable development JSX (jsxDEV) for Vite 8 + Rolldown compatibility
105
+ jsxDev: false,
106
+ }},
107
+ optimizeDeps: {{
108
+ include: [
109
+ 'react',
110
+ 'react-dom',
111
+ 'react-dom/client',
112
+ 'react/jsx-runtime',
113
+ '@tanstack/react-query',
114
+ // Internal packages (auto-generated)
115
+ {optimize_deps_include}
116
+ ],
117
+ esbuildOptions: {{
118
+ format: 'esm',
119
+ target: 'esnext',
120
+ // Use production JSX runtime
121
+ jsx: 'automatic',
122
+ jsxImportSource: 'react',
123
+ jsxDev: false,
124
+ }},
125
+ }},
126
+ plugins: [
127
+ react({{
128
+ // Force automatic JSX runtime in production mode
129
+ jsxRuntime: 'automatic',
130
+ jsxImportSource: 'react',
131
+ }}),
132
+ ],
133
+ resolve: {{
134
+ alias: {{
135
+ // 🎯 IMPORTANT: Order matters! More specific aliases must come FIRST
136
+ '@/autogenerated': resolve(__dirname),
137
+ '@': resolve(__dirname, '../src'),
138
+ 'set-cookie-parser': resolve(__dirname, '../src/utils/empty-module.js'),
139
+ // Force production JSX runtime - alias dev runtime to production runtime
140
+ 'react/jsx-dev-runtime': 'react/jsx-runtime',
141
+ }},
142
+ conditions: ['browser', 'import', 'module', 'es2020', 'default'],
143
+ mainFields: ['browser', 'module', 'jsnext:main', 'jsnext', 'main'],
144
+ }},
145
+ }});
146
+ """
147
+
148
+ TEMPLATE_VITE_BACKEND_WITH_NODE = """{header}
149
+ import path from 'node:path';
150
+ import {{ VitePluginNode }} from 'vite-plugin-node';
151
+ import {{ defineConfig }} from 'vitest/config';
152
+
153
+ export default defineConfig({{
154
+ plugins: [
155
+ ...VitePluginNode({{
156
+ adapter: 'express',
157
+ appPath: '{entry_point}',
158
+ exportName: 'app',
159
+ tsCompiler: 'swc',
160
+ }}),
161
+ ],
162
+ resolve: {{
163
+ alias: {{
164
+ {path_aliases}
165
+ }},
166
+ }},
167
+ server: {{
168
+ port: {port},
169
+ }},
170
+ build: {{
171
+ ssr: true,
172
+ target: 'node20',
173
+ rollupOptions: {{
174
+ external: {externals_config},
175
+ }},
176
+ }},
177
+ test: {{
178
+ coverage: {{
179
+ all: true,
180
+ exclude: [
181
+ 'node_modules/**',
182
+ 'dist/**',
183
+ 'docs/**',
184
+ 'src/tests/**',
185
+ 'src/**/*.test.ts',
186
+ 'src/**/*.spec.ts',
187
+ 'src/**/*.d.ts',
188
+ 'src/test-*.ts',
189
+ 'prisma/**',
190
+ '**/*.config.{{ts,js}}',
191
+ '**/coverage/**',
192
+ ],
193
+ include: ['src/**/*.{{ts,js}}'],
194
+ provider: 'v8',
195
+ reporter: ['text', 'json', 'html', 'lcov'],
196
+ thresholds: {{
197
+ branches: 70,
198
+ functions: 70,
199
+ lines: 70,
200
+ statements: 70,
201
+ }},
202
+ }},
203
+ deps: {{
204
+ inline: [{vitest_inline_deps}],
205
+ }},
206
+ environment: 'node',
207
+ exclude: ['node_modules', 'dist', 'docs/node_modules', '**/tests/e2e/**'],
208
+ globals: true,
209
+ include: ['src/**/*.{{spec,test}}.{{ts,js}}'],
210
+ }},
211
+ }});
212
+ """
213
+
214
+ TEMPLATE_VITE_BACKEND_VITEST_ONLY = """{header}
215
+ import path from 'node:path';
216
+ import {{ defineConfig }} from 'vitest/config';
217
+
218
+ export default defineConfig({{
219
+ resolve: {{
220
+ alias: {{
221
+ {path_aliases}
222
+ }},
223
+ }},
224
+ test: {{
225
+ coverage: {{
226
+ all: true,
227
+ exclude: [
228
+ 'node_modules/**',
229
+ 'dist/**',
230
+ 'docs/**',
231
+ 'src/tests/**',
232
+ 'src/**/*.test.ts',
233
+ 'src/**/*.spec.ts',
234
+ 'src/**/*.d.ts',
235
+ 'src/test-*.ts',
236
+ 'prisma/**',
237
+ '**/*.config.{{ts,js}}',
238
+ '**/coverage/**',
239
+ ],
240
+ include: ['src/**/*.{{ts,js}}'],
241
+ provider: 'v8',
242
+ reporter: ['text', 'json', 'html', 'lcov'],
243
+ thresholds: {{
244
+ branches: 70,
245
+ functions: 70,
246
+ lines: 70,
247
+ statements: 70,
248
+ }},
249
+ }},
250
+ deps: {{
251
+ inline: [{vitest_inline_deps}],
252
+ }},
253
+ environment: 'node',
254
+ exclude: ['node_modules', 'dist', 'docs/node_modules', '**/tests/e2e/**'],
255
+ globals: true,
256
+ include: ['src/**/*.{{spec,test}}.{{ts,js}}'],
257
+ }},
258
+ }});
259
+ """
260
+
261
+ TEMPLATE_VITE_LIBRARY = """{header}
262
+ import {{ resolve }} from 'node:path';
263
+ {plugin_imports}
264
+ import {{ defineConfig }} from 'vitest/config';
265
+
266
+ export default defineConfig({{
267
+ mode: 'production',
268
+ define: {{
269
+ __DEV__: 'false',
270
+ 'process.env.NODE_ENV': '"production"',
271
+ }},
272
+ esbuild: {{
273
+ jsx: 'automatic',
274
+ jsxDev: false,
275
+ jsxImportSource: 'react',
276
+ }},
277
+ plugins: [{plugins_str}],
278
+ build: {{
279
+ lib: {{
280
+ entry: resolve(__dirname, '../src/index.ts'),
281
+ name: '{lib_name}',
282
+ formats: ['es', 'cjs'],
283
+ fileName: (format) => `index.${{format === 'es' ? 'mjs' : 'cjs'}}`,
284
+ }},
285
+ // Disable code splitting to prevent lazy chunks with CJS require() calls
286
+ codeSplitting: false,
287
+ rollupOptions: {{
288
+ external: [
289
+ /^node:.*/,
290
+ /^@" + _NPM_SCOPE + "\\/.*$/,
291
+ 'react',
292
+ 'react-dom',
293
+ 'react/jsx-runtime',
294
+ 'react/jsx-dev-runtime',
295
+ 'react-dom/client',
296
+ 'react-is',
297
+ 'zod',
298
+ 'hono',
299
+ 'nats',
300
+ /^@mantine\\//,
301
+ /^@tabler\\//,
302
+ 'framer-motion',
303
+ 'lucide-react',
304
+ 'date-fns',
305
+ 'date-fns-tz',
306
+ 'dayjs',
307
+ 'clsx',
308
+ 'class-variance-authority',
309
+ 'tailwind-merge',
310
+ '@tanstack/react-table',
311
+ '@tanstack/react-query',
312
+ '@hookform/resolvers',
313
+ 'react-hook-form',
314
+ 'react-day-picker',
315
+ 'react-resizable-panels',
316
+ 'react-remove-scroll',
317
+ 'react-textarea-autosize',
318
+ 'react-number-format',
319
+ 'embla-carousel-react',
320
+ 'recharts',
321
+ 'sonner',
322
+ 'next-themes',
323
+ '@glideapps/glide-data-grid',
324
+ ],
325
+ output: {{
326
+ globals: {{
327
+ react: 'React',
328
+ 'react-dom': 'ReactDOM',
329
+ }},
330
+ }},
331
+ }},
332
+ sourcemap: true,
333
+ target: 'esnext',
334
+ }},
335
+ resolve: {{
336
+ alias: {{
337
+ '@': resolve(__dirname, '../src'),
338
+ // Force production JSX runtime - alias dev runtime to production runtime
339
+ 'react/jsx-dev-runtime': 'react/jsx-runtime',
340
+ }},
341
+ }},
342
+ test: {{
343
+ environment: 'node',
344
+ exclude: ['node_modules', 'dist'],
345
+ globals: true,
346
+ include: ['src/**/*.{{test,spec}}.{{ts,tsx}}'],
347
+ }},
348
+ }});
349
+ """
350
+
351
+ TEMPLATE_VITE_SDK = """{header}
352
+ import {{ federation }} from '@module-federation/vite';
353
+ import react from '@vitejs/plugin-react';
354
+ import {{ defineConfig }} from 'vite';
355
+
356
+ export default defineConfig({{
357
+ build: {{
358
+ cssCodeSplit: false,
359
+ minify: false,
360
+ modulePreload: false,
361
+ target: 'esnext',
362
+ }},
363
+ plugins: [
364
+ react(),
365
+ federation({{
366
+ name: '{federation_name}',
367
+ filename: 'remoteEntry.js',
368
+ exposes: {{
369
+ {exposes_str}
370
+ }},
371
+ shared: {{
372
+ {shared_str}
373
+ }},
374
+ }}),
375
+ ],
376
+ server: {{
377
+ host: true,
378
+ port: {port},
379
+ }},
380
+ }});
381
+ """
382
+
383
+ # =============================================================================
384
+ # Environment-Specific Library Templates
385
+ # =============================================================================
386
+
387
+ TEMPLATE_VITE_LIBRARY_DEV = """{header}
388
+ import {{ resolve }} from 'node:path';
389
+ {plugin_imports}
390
+ import {{ defineConfig }} from 'vitest/config';
391
+
392
+ export default defineConfig({{
393
+ mode: 'development',
394
+ define: {{
395
+ __DEV__: 'true',
396
+ 'process.env.NODE_ENV': '"development"',
397
+ }},
398
+ plugins: [{plugins_str}],
399
+ build: {{
400
+ lib: {{
401
+ entry: resolve(__dirname, '../src/index.ts'),
402
+ name: '{lib_name}',
403
+ formats: ['es', 'cjs'],
404
+ fileName: (format) => `index.${{format === 'es' ? 'mjs' : 'cjs'}}`,
405
+ }},
406
+ codeSplitting: false,
407
+ rollupOptions: {{
408
+ external: [
409
+ /^node:.*/,
410
+ /^@" + _NPM_SCOPE + "\\/.*$/,
411
+ 'react',
412
+ 'react-dom',
413
+ 'react/jsx-runtime',
414
+ 'react/jsx-dev-runtime',
415
+ 'react-dom/client',
416
+ 'react-is',
417
+ 'zod',
418
+ 'hono',
419
+ 'nats',
420
+ /^@mantine\\//,
421
+ /^@tabler\\//,
422
+ 'framer-motion',
423
+ 'lucide-react',
424
+ 'date-fns',
425
+ 'date-fns-tz',
426
+ 'dayjs',
427
+ 'clsx',
428
+ 'class-variance-authority',
429
+ 'tailwind-merge',
430
+ '@tanstack/react-table',
431
+ '@tanstack/react-query',
432
+ '@hookform/resolvers',
433
+ 'react-hook-form',
434
+ 'react-day-picker',
435
+ 'react-resizable-panels',
436
+ 'react-remove-scroll',
437
+ 'react-textarea-autosize',
438
+ 'react-number-format',
439
+ 'embla-carousel-react',
440
+ 'recharts',
441
+ 'sonner',
442
+ 'next-themes',
443
+ '@glideapps/glide-data-grid',
444
+ ],
445
+ output: {{
446
+ globals: {{
447
+ react: 'React',
448
+ 'react-dom': 'ReactDOM',
449
+ }},
450
+ }},
451
+ }},
452
+ sourcemap: true,
453
+ target: 'esnext',
454
+ }},
455
+ resolve: {{
456
+ alias: {{
457
+ '@': resolve(__dirname, '../src'),
458
+ }},
459
+ }},
460
+ test: {{
461
+ environment: 'node',
462
+ exclude: ['node_modules', 'dist'],
463
+ globals: true,
464
+ include: ['src/**/*.{{test,spec}}.{{ts,tsx}}'],
465
+ }},
466
+ }});
467
+ """
468
+
469
+ TEMPLATE_VITE_LIBRARY_PROD = """{header}
470
+ import {{ resolve }} from 'node:path';
471
+ {plugin_imports}
472
+ import {{ defineConfig }} from 'vitest/config';
473
+
474
+ export default defineConfig({{
475
+ mode: 'production',
476
+ define: {{
477
+ __DEV__: 'false',
478
+ 'process.env.NODE_ENV': '"production"',
479
+ }},
480
+ esbuild: {{
481
+ jsx: 'automatic',
482
+ jsxDev: false,
483
+ jsxImportSource: 'react',
484
+ }},
485
+ plugins: [{plugins_str}],
486
+ build: {{
487
+ lib: {{
488
+ entry: resolve(__dirname, '../src/index.ts'),
489
+ name: '{lib_name}',
490
+ formats: ['es', 'cjs'],
491
+ fileName: (format) => `index.${{format === 'es' ? 'mjs' : 'cjs'}}`,
492
+ }},
493
+ codeSplitting: false,
494
+ minify: true,
495
+ rollupOptions: {{
496
+ external: [
497
+ /^node:.*/,
498
+ /^@" + _NPM_SCOPE + "\\/.*$/,
499
+ 'react',
500
+ 'react-dom',
501
+ 'react/jsx-runtime',
502
+ 'react/jsx-dev-runtime',
503
+ 'react-dom/client',
504
+ 'react-is',
505
+ 'zod',
506
+ 'hono',
507
+ 'nats',
508
+ /^@mantine\\//,
509
+ /^@tabler\\//,
510
+ 'framer-motion',
511
+ 'lucide-react',
512
+ 'date-fns',
513
+ 'date-fns-tz',
514
+ 'dayjs',
515
+ 'clsx',
516
+ 'class-variance-authority',
517
+ 'tailwind-merge',
518
+ '@tanstack/react-table',
519
+ '@tanstack/react-query',
520
+ '@hookform/resolvers',
521
+ 'react-hook-form',
522
+ 'react-day-picker',
523
+ 'react-resizable-panels',
524
+ 'react-remove-scroll',
525
+ 'react-textarea-autosize',
526
+ 'react-number-format',
527
+ 'embla-carousel-react',
528
+ 'recharts',
529
+ 'sonner',
530
+ 'next-themes',
531
+ '@glideapps/glide-data-grid',
532
+ ],
533
+ output: {{
534
+ globals: {{
535
+ react: 'React',
536
+ 'react-dom': 'ReactDOM',
537
+ }},
538
+ }},
539
+ }},
540
+ sourcemap: true,
541
+ target: 'esnext',
542
+ }},
543
+ resolve: {{
544
+ alias: {{
545
+ '@': resolve(__dirname, '../src'),
546
+ 'react/jsx-dev-runtime': 'react/jsx-runtime',
547
+ }},
548
+ }},
549
+ test: {{
550
+ environment: 'node',
551
+ exclude: ['node_modules', 'dist'],
552
+ globals: true,
553
+ include: ['src/**/*.{{test,spec}}.{{ts,tsx}}'],
554
+ }},
555
+ }});
556
+ """
557
+
558
+ TEMPLATE_VITE_FRONTEND_DEV = """{header}
559
+ import {{ resolve }} from 'node:path';
560
+ import react from '@vitejs/plugin-react';
561
+ import {{ defineConfig }} from 'vite';
562
+
563
+ export default defineConfig({{
564
+ mode: 'development',
565
+ base: '{base_path}',
566
+ build: {{
567
+ cssCodeSplit: false,
568
+ minify: false,
569
+ modulePreload: false,
570
+ rollupOptions: {{
571
+ output: {{
572
+ entryFileNames: '[name].js',
573
+ format: 'esm',
574
+ }},
575
+ }},
576
+ target: 'esnext',
577
+ }},
578
+ define: {{
579
+ global: 'globalThis',
580
+ __DEV__: 'true',
581
+ 'process.env.NODE_ENV': '"development"',
582
+ }},
583
+ optimizeDeps: {{
584
+ include: [
585
+ 'react',
586
+ 'react-dom',
587
+ 'react-dom/client',
588
+ 'react/jsx-runtime',
589
+ '@tanstack/react-query',
590
+ {optimize_deps_include}
591
+ ],
592
+ }},
593
+ plugins: [
594
+ react({{
595
+ jsxRuntime: 'automatic',
596
+ }}),
597
+ ],
598
+ preview: {{
599
+ host: '0.0.0.0',
600
+ port: {port},
601
+ }},
602
+ resolve: {{
603
+ alias: {{
604
+ // 🎯 IMPORTANT: Order matters! More specific aliases must come FIRST
605
+ '@/autogenerated': resolve(__dirname),
606
+ '@': resolve(__dirname, '../src'),
607
+ 'set-cookie-parser': resolve(__dirname, '../src/utils/empty-module.js'),
608
+ }},
609
+ }},
610
+ server: {{
611
+ host: '0.0.0.0',
612
+ port: {port},
613
+ hmr: {{
614
+ port: {hmr_port},
615
+ }},
616
+ {proxy_config}
617
+ }},
618
+ }});
619
+ """
620
+
621
+ TEMPLATE_VITE_FRONTEND_PROD = """{header}
622
+ import {{ resolve }} from 'node:path';
623
+ import react from '@vitejs/plugin-react';
624
+ import {{ defineConfig }} from 'vite';
625
+
626
+ export default defineConfig({{
627
+ mode: 'production',
628
+ base: '{base_path}',
629
+ build: {{
630
+ cssCodeSplit: false,
631
+ minify: true,
632
+ modulePreload: false,
633
+ rollupOptions: {{
634
+ output: {{
635
+ entryFileNames: '[name].js',
636
+ format: 'esm',
637
+ manualChunks: undefined,
638
+ }},
639
+ }},
640
+ target: 'esnext',
641
+ }},
642
+ define: {{
643
+ global: 'globalThis',
644
+ __DEV__: 'false',
645
+ 'process.env.NODE_ENV': '"production"',
646
+ }},
647
+ esbuild: {{
648
+ jsx: 'automatic',
649
+ jsxImportSource: 'react',
650
+ jsxDev: false,
651
+ }},
652
+ optimizeDeps: {{
653
+ include: [
654
+ 'react',
655
+ 'react-dom',
656
+ 'react-dom/client',
657
+ 'react/jsx-runtime',
658
+ '@tanstack/react-query',
659
+ {optimize_deps_include}
660
+ ],
661
+ esbuildOptions: {{
662
+ format: 'esm',
663
+ target: 'esnext',
664
+ jsx: 'automatic',
665
+ jsxImportSource: 'react',
666
+ jsxDev: false,
667
+ }},
668
+ }},
669
+ plugins: [
670
+ react({{
671
+ jsxRuntime: 'automatic',
672
+ jsxImportSource: 'react',
673
+ }}),
674
+ ],
675
+ resolve: {{
676
+ alias: {{
677
+ // 🎯 IMPORTANT: Order matters! More specific aliases must come FIRST
678
+ '@/autogenerated': resolve(__dirname),
679
+ '@': resolve(__dirname, '../src'),
680
+ 'set-cookie-parser': resolve(__dirname, '../src/utils/empty-module.js'),
681
+ 'react/jsx-dev-runtime': 'react/jsx-runtime',
682
+ }},
683
+ conditions: ['browser', 'import', 'module', 'es2020', 'default'],
684
+ mainFields: ['browser', 'module', 'jsnext:main', 'jsnext', 'main'],
685
+ }},
686
+ }});
687
+ """
688
+
689
+ # =============================================================================
690
+ # Template Generation Functions
691
+ # =============================================================================
692
+
693
+ def get_library_template(environment = 'production'):
694
+ """
695
+ Get the appropriate library template based on environment.
696
+
697
+ Args:
698
+ environment: 'development', 'production', or 'dev'/'prod' shortcuts
699
+
700
+ Returns:
701
+ Template string for the specified environment
702
+ """
703
+ env = environment.lower()
704
+ if env in ['development', 'dev']:
705
+ return TEMPLATE_VITE_LIBRARY_DEV
706
+ elif env in ['production', 'prod']:
707
+ return TEMPLATE_VITE_LIBRARY_PROD
708
+ else:
709
+ # Default to production for safety
710
+ return TEMPLATE_VITE_LIBRARY_PROD
711
+
712
+ def get_frontend_template(environment = 'production'):
713
+ """
714
+ Get the appropriate frontend template based on environment.
715
+
716
+ Args:
717
+ environment: 'development', 'production', or 'dev'/'prod' shortcuts
718
+
719
+ Returns:
720
+ Template string for the specified environment
721
+ """
722
+ env = environment.lower()
723
+ if env in ['development', 'dev']:
724
+ return TEMPLATE_VITE_FRONTEND_DEV
725
+ elif env in ['production', 'prod']:
726
+ return TEMPLATE_VITE_FRONTEND_PROD
727
+ else:
728
+ # Default to production for safety
729
+ return TEMPLATE_VITE_FRONTEND_PROD
730
+
731
+ def get_frontend_build_template(environment = 'production'):
732
+ """
733
+ Get the appropriate frontend build template based on environment.
734
+
735
+ This is an alias for get_frontend_template since they serve the same purpose.
736
+ """
737
+ return get_frontend_template(environment)