create-fluxstack 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/.claude/settings.local.json +65 -0
  2. package/.dockerignore +50 -0
  3. package/.env.example +53 -0
  4. package/.gitattributes +2 -0
  5. package/.github/workflows/ci-build-tests.yml +480 -0
  6. package/.github/workflows/dependency-management.yml +324 -0
  7. package/.github/workflows/release-validation.yml +355 -0
  8. package/.kiro/specs/fluxstack-architecture-optimization/design.md +700 -0
  9. package/.kiro/specs/fluxstack-architecture-optimization/requirements.md +127 -0
  10. package/.kiro/specs/fluxstack-architecture-optimization/tasks.md +330 -0
  11. package/CLAUDE.md +200 -0
  12. package/Dockerfile +58 -0
  13. package/Dockerfile.backend +52 -0
  14. package/Dockerfile.frontend +54 -0
  15. package/ENV_TESTING_REPORT.md +292 -0
  16. package/FRAMEWORK_ROADMAP.md +183 -0
  17. package/FRONTEND_TESTS_README.md +287 -0
  18. package/LICENSE +21 -0
  19. package/README-Docker.md +85 -0
  20. package/TEST_RESULTS.md +130 -0
  21. package/ai-context/00-QUICK-START.md +86 -0
  22. package/ai-context/README.md +88 -0
  23. package/ai-context/development/eden-treaty-guide.md +362 -0
  24. package/ai-context/development/patterns.md +382 -0
  25. package/ai-context/examples/crud-complete.md +626 -0
  26. package/ai-context/project/architecture.md +399 -0
  27. package/ai-context/project/overview.md +213 -0
  28. package/ai-context/recent-changes/eden-treaty-refactor.md +281 -0
  29. package/ai-context/recent-changes/type-inference-fix.md +223 -0
  30. package/ai-context/reference/environment-vars.md +384 -0
  31. package/ai-context/reference/troubleshooting.md +407 -0
  32. package/app/client/README.md +69 -0
  33. package/app/client/frontend-only.ts +12 -0
  34. package/app/client/index.html +13 -0
  35. package/app/client/public/vite.svg +1 -0
  36. package/app/client/src/App.css +883 -0
  37. package/app/client/src/App.tsx +669 -0
  38. package/app/client/src/assets/react.svg +1 -0
  39. package/app/client/src/components/TestPage.tsx +453 -0
  40. package/app/client/src/index.css +51 -0
  41. package/app/client/src/lib/eden-api.ts +110 -0
  42. package/app/client/src/main.tsx +10 -0
  43. package/app/client/src/vite-env.d.ts +1 -0
  44. package/app/client/tsconfig.app.json +43 -0
  45. package/app/client/tsconfig.json +7 -0
  46. package/app/client/tsconfig.node.json +25 -0
  47. package/app/server/app.ts +10 -0
  48. package/app/server/backend-only.ts +15 -0
  49. package/app/server/controllers/users.controller.ts +69 -0
  50. package/app/server/index.ts +104 -0
  51. package/app/server/routes/index.ts +25 -0
  52. package/app/server/routes/users.routes.ts +121 -0
  53. package/app/server/types/index.ts +1 -0
  54. package/app/shared/types/index.ts +18 -0
  55. package/bun.lock +1063 -0
  56. package/bunfig.toml +16 -0
  57. package/config/fluxstack.config.ts +48 -0
  58. package/core/__tests__/integration.test.ts +227 -0
  59. package/core/build/index.ts +186 -0
  60. package/core/cli/command-registry.ts +334 -0
  61. package/core/cli/index.ts +394 -0
  62. package/core/cli/plugin-discovery.ts +200 -0
  63. package/core/client/standalone.ts +57 -0
  64. package/core/config/__tests__/config-loader.test.ts +591 -0
  65. package/core/config/__tests__/config-merger.test.ts +657 -0
  66. package/core/config/__tests__/env-converter.test.ts +372 -0
  67. package/core/config/__tests__/env-processor.test.ts +431 -0
  68. package/core/config/__tests__/env.test.ts +452 -0
  69. package/core/config/__tests__/integration.test.ts +418 -0
  70. package/core/config/__tests__/loader.test.ts +331 -0
  71. package/core/config/__tests__/schema.test.ts +129 -0
  72. package/core/config/__tests__/validator.test.ts +318 -0
  73. package/core/config/env-dynamic.ts +326 -0
  74. package/core/config/env.ts +597 -0
  75. package/core/config/index.ts +317 -0
  76. package/core/config/loader.ts +546 -0
  77. package/core/config/runtime-config.ts +322 -0
  78. package/core/config/schema.ts +694 -0
  79. package/core/config/validator.ts +540 -0
  80. package/core/framework/__tests__/server.test.ts +233 -0
  81. package/core/framework/client.ts +132 -0
  82. package/core/framework/index.ts +8 -0
  83. package/core/framework/server.ts +501 -0
  84. package/core/framework/types.ts +63 -0
  85. package/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  86. package/core/plugins/__tests__/manager.test.ts +398 -0
  87. package/core/plugins/__tests__/monitoring.test.ts +401 -0
  88. package/core/plugins/__tests__/registry.test.ts +335 -0
  89. package/core/plugins/built-in/index.ts +142 -0
  90. package/core/plugins/built-in/logger/index.ts +180 -0
  91. package/core/plugins/built-in/monitoring/README.md +193 -0
  92. package/core/plugins/built-in/monitoring/index.ts +912 -0
  93. package/core/plugins/built-in/static/index.ts +289 -0
  94. package/core/plugins/built-in/swagger/index.ts +229 -0
  95. package/core/plugins/built-in/vite/index.ts +316 -0
  96. package/core/plugins/config.ts +348 -0
  97. package/core/plugins/discovery.ts +350 -0
  98. package/core/plugins/executor.ts +351 -0
  99. package/core/plugins/index.ts +195 -0
  100. package/core/plugins/manager.ts +583 -0
  101. package/core/plugins/registry.ts +424 -0
  102. package/core/plugins/types.ts +254 -0
  103. package/core/server/framework.ts +123 -0
  104. package/core/server/index.ts +8 -0
  105. package/core/server/plugins/database.ts +182 -0
  106. package/core/server/plugins/logger.ts +47 -0
  107. package/core/server/plugins/swagger.ts +34 -0
  108. package/core/server/standalone.ts +91 -0
  109. package/core/templates/create-project.ts +455 -0
  110. package/core/types/api.ts +169 -0
  111. package/core/types/build.ts +174 -0
  112. package/core/types/config.ts +68 -0
  113. package/core/types/index.ts +127 -0
  114. package/core/types/plugin.ts +94 -0
  115. package/core/utils/__tests__/errors.test.ts +139 -0
  116. package/core/utils/__tests__/helpers.test.ts +297 -0
  117. package/core/utils/__tests__/logger.test.ts +141 -0
  118. package/core/utils/env-runtime-v2.ts +232 -0
  119. package/core/utils/env-runtime.ts +252 -0
  120. package/core/utils/errors/codes.ts +115 -0
  121. package/core/utils/errors/handlers.ts +63 -0
  122. package/core/utils/errors/index.ts +81 -0
  123. package/core/utils/helpers.ts +180 -0
  124. package/core/utils/index.ts +18 -0
  125. package/core/utils/logger/index.ts +161 -0
  126. package/core/utils/logger.ts +106 -0
  127. package/core/utils/monitoring/index.ts +212 -0
  128. package/create-fluxstack.ts +1 -1
  129. package/create-test-app.ts +156 -0
  130. package/docker-compose.microservices.yml +75 -0
  131. package/docker-compose.simple.yml +57 -0
  132. package/docker-compose.yml +71 -0
  133. package/docs/dynamic-environment-variables.md +380 -0
  134. package/eslint.config.js +23 -0
  135. package/examples/dynamic-env-usage.ts +283 -0
  136. package/examples/hybrid-env-strategy.ts +212 -0
  137. package/examples/simplified-env-usage.ts +251 -0
  138. package/flux-cli.ts +214 -0
  139. package/fluxstack.config.ts +318 -0
  140. package/meu-app-teste/README.md +44 -0
  141. package/meu-app-teste/app/client/README.md +69 -0
  142. package/meu-app-teste/app/client/frontend-only.ts +12 -0
  143. package/meu-app-teste/app/client/index.html +13 -0
  144. package/meu-app-teste/app/client/public/vite.svg +1 -0
  145. package/meu-app-teste/app/client/src/App.css +883 -0
  146. package/meu-app-teste/app/client/src/App.tsx +669 -0
  147. package/meu-app-teste/app/client/src/assets/react.svg +1 -0
  148. package/meu-app-teste/app/client/src/components/TestPage.tsx +453 -0
  149. package/meu-app-teste/app/client/src/index.css +51 -0
  150. package/meu-app-teste/app/client/src/lib/eden-api.ts +110 -0
  151. package/meu-app-teste/app/client/src/main.tsx +10 -0
  152. package/meu-app-teste/app/client/src/vite-env.d.ts +1 -0
  153. package/meu-app-teste/app/client/tsconfig.app.json +43 -0
  154. package/meu-app-teste/app/client/tsconfig.json +7 -0
  155. package/meu-app-teste/app/client/tsconfig.node.json +25 -0
  156. package/meu-app-teste/app/server/app.ts +10 -0
  157. package/meu-app-teste/app/server/backend-only.ts +15 -0
  158. package/meu-app-teste/app/server/controllers/users.controller.ts +69 -0
  159. package/meu-app-teste/app/server/index.ts +104 -0
  160. package/meu-app-teste/app/server/routes/index.ts +25 -0
  161. package/meu-app-teste/app/server/routes/users.routes.ts +121 -0
  162. package/meu-app-teste/app/server/types/index.ts +1 -0
  163. package/meu-app-teste/app/shared/types/index.ts +18 -0
  164. package/meu-app-teste/bun.lock +1053 -0
  165. package/meu-app-teste/core/__tests__/integration.test.ts +227 -0
  166. package/meu-app-teste/core/build/index.ts +186 -0
  167. package/meu-app-teste/core/cli/command-registry.ts +334 -0
  168. package/meu-app-teste/core/cli/index.ts +394 -0
  169. package/meu-app-teste/core/cli/plugin-discovery.ts +200 -0
  170. package/meu-app-teste/core/client/standalone.ts +57 -0
  171. package/meu-app-teste/core/config/__tests__/config-loader.test.ts +591 -0
  172. package/meu-app-teste/core/config/__tests__/config-merger.test.ts +657 -0
  173. package/meu-app-teste/core/config/__tests__/env-converter.test.ts +372 -0
  174. package/meu-app-teste/core/config/__tests__/env-processor.test.ts +431 -0
  175. package/meu-app-teste/core/config/__tests__/env.test.ts +452 -0
  176. package/meu-app-teste/core/config/__tests__/integration.test.ts +418 -0
  177. package/meu-app-teste/core/config/__tests__/loader.test.ts +331 -0
  178. package/meu-app-teste/core/config/__tests__/schema.test.ts +129 -0
  179. package/meu-app-teste/core/config/__tests__/validator.test.ts +318 -0
  180. package/meu-app-teste/core/config/env-dynamic.ts +326 -0
  181. package/meu-app-teste/core/config/env.ts +597 -0
  182. package/meu-app-teste/core/config/index.ts +317 -0
  183. package/meu-app-teste/core/config/loader.ts +546 -0
  184. package/meu-app-teste/core/config/runtime-config.ts +322 -0
  185. package/meu-app-teste/core/config/schema.ts +694 -0
  186. package/meu-app-teste/core/config/validator.ts +540 -0
  187. package/meu-app-teste/core/framework/__tests__/server.test.ts +233 -0
  188. package/meu-app-teste/core/framework/client.ts +132 -0
  189. package/meu-app-teste/core/framework/index.ts +8 -0
  190. package/meu-app-teste/core/framework/server.ts +501 -0
  191. package/meu-app-teste/core/framework/types.ts +63 -0
  192. package/meu-app-teste/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  193. package/meu-app-teste/core/plugins/__tests__/manager.test.ts +398 -0
  194. package/meu-app-teste/core/plugins/__tests__/monitoring.test.ts +401 -0
  195. package/meu-app-teste/core/plugins/__tests__/registry.test.ts +335 -0
  196. package/meu-app-teste/core/plugins/built-in/index.ts +142 -0
  197. package/meu-app-teste/core/plugins/built-in/logger/index.ts +180 -0
  198. package/meu-app-teste/core/plugins/built-in/monitoring/README.md +193 -0
  199. package/meu-app-teste/core/plugins/built-in/monitoring/index.ts +912 -0
  200. package/meu-app-teste/core/plugins/built-in/static/index.ts +289 -0
  201. package/meu-app-teste/core/plugins/built-in/swagger/index.ts +229 -0
  202. package/meu-app-teste/core/plugins/built-in/vite/index.ts +316 -0
  203. package/meu-app-teste/core/plugins/config.ts +348 -0
  204. package/meu-app-teste/core/plugins/discovery.ts +350 -0
  205. package/meu-app-teste/core/plugins/executor.ts +351 -0
  206. package/meu-app-teste/core/plugins/index.ts +195 -0
  207. package/meu-app-teste/core/plugins/manager.ts +583 -0
  208. package/meu-app-teste/core/plugins/registry.ts +424 -0
  209. package/meu-app-teste/core/plugins/types.ts +254 -0
  210. package/meu-app-teste/core/server/framework.ts +123 -0
  211. package/meu-app-teste/core/server/index.ts +8 -0
  212. package/meu-app-teste/core/server/plugins/database.ts +182 -0
  213. package/meu-app-teste/core/server/plugins/logger.ts +47 -0
  214. package/meu-app-teste/core/server/plugins/swagger.ts +34 -0
  215. package/meu-app-teste/core/server/standalone.ts +91 -0
  216. package/meu-app-teste/core/templates/create-project.ts +455 -0
  217. package/meu-app-teste/core/types/api.ts +169 -0
  218. package/meu-app-teste/core/types/build.ts +174 -0
  219. package/meu-app-teste/core/types/config.ts +68 -0
  220. package/meu-app-teste/core/types/index.ts +127 -0
  221. package/meu-app-teste/core/types/plugin.ts +94 -0
  222. package/meu-app-teste/core/utils/__tests__/errors.test.ts +139 -0
  223. package/meu-app-teste/core/utils/__tests__/helpers.test.ts +297 -0
  224. package/meu-app-teste/core/utils/__tests__/logger.test.ts +141 -0
  225. package/meu-app-teste/core/utils/env-runtime-v2.ts +232 -0
  226. package/meu-app-teste/core/utils/env-runtime.ts +252 -0
  227. package/meu-app-teste/core/utils/errors/codes.ts +115 -0
  228. package/meu-app-teste/core/utils/errors/handlers.ts +63 -0
  229. package/meu-app-teste/core/utils/errors/index.ts +81 -0
  230. package/meu-app-teste/core/utils/helpers.ts +180 -0
  231. package/meu-app-teste/core/utils/index.ts +18 -0
  232. package/meu-app-teste/core/utils/logger/index.ts +161 -0
  233. package/meu-app-teste/core/utils/logger.ts +106 -0
  234. package/meu-app-teste/core/utils/monitoring/index.ts +212 -0
  235. package/meu-app-teste/package.json +92 -0
  236. package/meu-app-teste/tsconfig.json +51 -0
  237. package/meu-app-teste/vite.config.ts +42 -0
  238. package/my-final-test/README.md +44 -0
  239. package/my-final-test/app/client/README.md +69 -0
  240. package/my-final-test/app/client/frontend-only.ts +12 -0
  241. package/my-final-test/app/client/index.html +13 -0
  242. package/my-final-test/app/client/public/vite.svg +1 -0
  243. package/my-final-test/app/client/src/App.css +883 -0
  244. package/my-final-test/app/client/src/App.tsx +669 -0
  245. package/my-final-test/app/client/src/assets/react.svg +1 -0
  246. package/my-final-test/app/client/src/components/TestPage.tsx +453 -0
  247. package/my-final-test/app/client/src/index.css +51 -0
  248. package/my-final-test/app/client/src/lib/eden-api.ts +110 -0
  249. package/my-final-test/app/client/src/main.tsx +10 -0
  250. package/my-final-test/app/client/src/vite-env.d.ts +1 -0
  251. package/my-final-test/app/client/tsconfig.app.json +43 -0
  252. package/my-final-test/app/client/tsconfig.json +7 -0
  253. package/my-final-test/app/client/tsconfig.node.json +25 -0
  254. package/my-final-test/app/server/app.ts +10 -0
  255. package/my-final-test/app/server/backend-only.ts +15 -0
  256. package/my-final-test/app/server/controllers/users.controller.ts +69 -0
  257. package/my-final-test/app/server/index.ts +104 -0
  258. package/my-final-test/app/server/routes/index.ts +25 -0
  259. package/my-final-test/app/server/routes/users.routes.ts +121 -0
  260. package/my-final-test/app/server/types/index.ts +1 -0
  261. package/my-final-test/app/shared/types/index.ts +18 -0
  262. package/my-final-test/bun.lock +993 -0
  263. package/my-final-test/core/__tests__/integration.test.ts +227 -0
  264. package/my-final-test/core/build/index.ts +186 -0
  265. package/my-final-test/core/cli/command-registry.ts +334 -0
  266. package/my-final-test/core/cli/index.ts +394 -0
  267. package/my-final-test/core/cli/plugin-discovery.ts +200 -0
  268. package/my-final-test/core/client/standalone.ts +57 -0
  269. package/my-final-test/core/config/__tests__/config-loader.test.ts +591 -0
  270. package/my-final-test/core/config/__tests__/config-merger.test.ts +657 -0
  271. package/my-final-test/core/config/__tests__/env-converter.test.ts +372 -0
  272. package/my-final-test/core/config/__tests__/env-processor.test.ts +431 -0
  273. package/my-final-test/core/config/__tests__/env.test.ts +452 -0
  274. package/my-final-test/core/config/__tests__/integration.test.ts +418 -0
  275. package/my-final-test/core/config/__tests__/loader.test.ts +331 -0
  276. package/my-final-test/core/config/__tests__/schema.test.ts +129 -0
  277. package/my-final-test/core/config/__tests__/validator.test.ts +318 -0
  278. package/my-final-test/core/config/env-dynamic.ts +326 -0
  279. package/my-final-test/core/config/env.ts +597 -0
  280. package/my-final-test/core/config/index.ts +317 -0
  281. package/my-final-test/core/config/loader.ts +546 -0
  282. package/my-final-test/core/config/runtime-config.ts +322 -0
  283. package/my-final-test/core/config/schema.ts +694 -0
  284. package/my-final-test/core/config/validator.ts +540 -0
  285. package/my-final-test/core/framework/__tests__/server.test.ts +233 -0
  286. package/my-final-test/core/framework/client.ts +132 -0
  287. package/my-final-test/core/framework/index.ts +8 -0
  288. package/my-final-test/core/framework/server.ts +501 -0
  289. package/my-final-test/core/framework/types.ts +63 -0
  290. package/my-final-test/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  291. package/my-final-test/core/plugins/__tests__/manager.test.ts +398 -0
  292. package/my-final-test/core/plugins/__tests__/monitoring.test.ts +401 -0
  293. package/my-final-test/core/plugins/__tests__/registry.test.ts +335 -0
  294. package/my-final-test/core/plugins/built-in/index.ts +142 -0
  295. package/my-final-test/core/plugins/built-in/logger/index.ts +180 -0
  296. package/my-final-test/core/plugins/built-in/monitoring/README.md +193 -0
  297. package/my-final-test/core/plugins/built-in/monitoring/index.ts +912 -0
  298. package/my-final-test/core/plugins/built-in/static/index.ts +289 -0
  299. package/my-final-test/core/plugins/built-in/swagger/index.ts +229 -0
  300. package/my-final-test/core/plugins/built-in/vite/index.ts +316 -0
  301. package/my-final-test/core/plugins/config.ts +348 -0
  302. package/my-final-test/core/plugins/discovery.ts +350 -0
  303. package/my-final-test/core/plugins/executor.ts +351 -0
  304. package/my-final-test/core/plugins/index.ts +195 -0
  305. package/my-final-test/core/plugins/manager.ts +583 -0
  306. package/my-final-test/core/plugins/registry.ts +424 -0
  307. package/my-final-test/core/plugins/types.ts +254 -0
  308. package/my-final-test/core/server/framework.ts +123 -0
  309. package/my-final-test/core/server/index.ts +8 -0
  310. package/my-final-test/core/server/plugins/database.ts +182 -0
  311. package/my-final-test/core/server/plugins/logger.ts +47 -0
  312. package/my-final-test/core/server/plugins/swagger.ts +34 -0
  313. package/my-final-test/core/server/standalone.ts +91 -0
  314. package/my-final-test/core/templates/create-project.ts +455 -0
  315. package/my-final-test/core/types/api.ts +169 -0
  316. package/my-final-test/core/types/build.ts +174 -0
  317. package/my-final-test/core/types/config.ts +68 -0
  318. package/my-final-test/core/types/index.ts +127 -0
  319. package/my-final-test/core/types/plugin.ts +94 -0
  320. package/my-final-test/core/utils/__tests__/errors.test.ts +139 -0
  321. package/my-final-test/core/utils/__tests__/helpers.test.ts +297 -0
  322. package/my-final-test/core/utils/__tests__/logger.test.ts +141 -0
  323. package/my-final-test/core/utils/env-runtime-v2.ts +232 -0
  324. package/my-final-test/core/utils/env-runtime.ts +252 -0
  325. package/my-final-test/core/utils/errors/codes.ts +115 -0
  326. package/my-final-test/core/utils/errors/handlers.ts +63 -0
  327. package/my-final-test/core/utils/errors/index.ts +81 -0
  328. package/my-final-test/core/utils/helpers.ts +180 -0
  329. package/my-final-test/core/utils/index.ts +18 -0
  330. package/my-final-test/core/utils/logger/index.ts +161 -0
  331. package/my-final-test/core/utils/logger.ts +106 -0
  332. package/my-final-test/core/utils/monitoring/index.ts +212 -0
  333. package/my-final-test/package.json +68 -0
  334. package/my-final-test/tsconfig.json +51 -0
  335. package/my-final-test/vite.config.ts +42 -0
  336. package/nginx-lb.conf +37 -0
  337. package/package-template.json +32 -15
  338. package/package.json +71 -30
  339. package/publish-setup.md +111 -0
  340. package/publish.sh +63 -0
  341. package/run-clean.ts +26 -0
  342. package/run-env-tests.ts +313 -0
  343. package/tailwind.config.js +34 -0
  344. package/teste-corrigido/README.md +44 -0
  345. package/teste-corrigido/app/client/README.md +69 -0
  346. package/teste-corrigido/app/client/frontend-only.ts +12 -0
  347. package/teste-corrigido/app/client/index.html +13 -0
  348. package/teste-corrigido/app/client/public/vite.svg +1 -0
  349. package/teste-corrigido/app/client/src/App.css +883 -0
  350. package/teste-corrigido/app/client/src/App.tsx +669 -0
  351. package/teste-corrigido/app/client/src/assets/react.svg +1 -0
  352. package/teste-corrigido/app/client/src/components/TestPage.tsx +453 -0
  353. package/teste-corrigido/app/client/src/index.css +51 -0
  354. package/teste-corrigido/app/client/src/lib/eden-api.ts +110 -0
  355. package/teste-corrigido/app/client/src/main.tsx +10 -0
  356. package/teste-corrigido/app/client/src/vite-env.d.ts +1 -0
  357. package/teste-corrigido/app/client/tsconfig.app.json +43 -0
  358. package/teste-corrigido/app/client/tsconfig.json +7 -0
  359. package/teste-corrigido/app/client/tsconfig.node.json +25 -0
  360. package/teste-corrigido/app/server/app.ts +10 -0
  361. package/teste-corrigido/app/server/backend-only.ts +15 -0
  362. package/teste-corrigido/app/server/controllers/users.controller.ts +69 -0
  363. package/teste-corrigido/app/server/index.ts +104 -0
  364. package/teste-corrigido/app/server/routes/index.ts +25 -0
  365. package/teste-corrigido/app/server/routes/users.routes.ts +121 -0
  366. package/teste-corrigido/app/server/types/index.ts +1 -0
  367. package/teste-corrigido/app/shared/types/index.ts +18 -0
  368. package/teste-corrigido/bun.lock +1053 -0
  369. package/teste-corrigido/core/__tests__/integration.test.ts +227 -0
  370. package/teste-corrigido/core/build/index.ts +186 -0
  371. package/teste-corrigido/core/cli/command-registry.ts +334 -0
  372. package/teste-corrigido/core/cli/index.ts +394 -0
  373. package/teste-corrigido/core/cli/plugin-discovery.ts +200 -0
  374. package/teste-corrigido/core/client/standalone.ts +57 -0
  375. package/teste-corrigido/core/config/__tests__/config-loader.test.ts +591 -0
  376. package/teste-corrigido/core/config/__tests__/config-merger.test.ts +657 -0
  377. package/teste-corrigido/core/config/__tests__/env-converter.test.ts +372 -0
  378. package/teste-corrigido/core/config/__tests__/env-processor.test.ts +431 -0
  379. package/teste-corrigido/core/config/__tests__/env.test.ts +452 -0
  380. package/teste-corrigido/core/config/__tests__/integration.test.ts +418 -0
  381. package/teste-corrigido/core/config/__tests__/loader.test.ts +331 -0
  382. package/teste-corrigido/core/config/__tests__/schema.test.ts +129 -0
  383. package/teste-corrigido/core/config/__tests__/validator.test.ts +318 -0
  384. package/teste-corrigido/core/config/env-dynamic.ts +326 -0
  385. package/teste-corrigido/core/config/env.ts +597 -0
  386. package/teste-corrigido/core/config/index.ts +317 -0
  387. package/teste-corrigido/core/config/loader.ts +546 -0
  388. package/teste-corrigido/core/config/runtime-config.ts +322 -0
  389. package/teste-corrigido/core/config/schema.ts +694 -0
  390. package/teste-corrigido/core/config/validator.ts +540 -0
  391. package/teste-corrigido/core/framework/__tests__/server.test.ts +233 -0
  392. package/teste-corrigido/core/framework/client.ts +132 -0
  393. package/teste-corrigido/core/framework/index.ts +8 -0
  394. package/teste-corrigido/core/framework/server.ts +501 -0
  395. package/teste-corrigido/core/framework/types.ts +63 -0
  396. package/teste-corrigido/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  397. package/teste-corrigido/core/plugins/__tests__/manager.test.ts +398 -0
  398. package/teste-corrigido/core/plugins/__tests__/monitoring.test.ts +401 -0
  399. package/teste-corrigido/core/plugins/__tests__/registry.test.ts +335 -0
  400. package/teste-corrigido/core/plugins/built-in/index.ts +142 -0
  401. package/teste-corrigido/core/plugins/built-in/logger/index.ts +180 -0
  402. package/teste-corrigido/core/plugins/built-in/monitoring/README.md +193 -0
  403. package/teste-corrigido/core/plugins/built-in/monitoring/index.ts +912 -0
  404. package/teste-corrigido/core/plugins/built-in/static/index.ts +289 -0
  405. package/teste-corrigido/core/plugins/built-in/swagger/index.ts +229 -0
  406. package/teste-corrigido/core/plugins/built-in/vite/index.ts +316 -0
  407. package/teste-corrigido/core/plugins/config.ts +348 -0
  408. package/teste-corrigido/core/plugins/discovery.ts +350 -0
  409. package/teste-corrigido/core/plugins/executor.ts +351 -0
  410. package/teste-corrigido/core/plugins/index.ts +195 -0
  411. package/teste-corrigido/core/plugins/manager.ts +583 -0
  412. package/teste-corrigido/core/plugins/registry.ts +424 -0
  413. package/teste-corrigido/core/plugins/types.ts +254 -0
  414. package/teste-corrigido/core/server/framework.ts +123 -0
  415. package/teste-corrigido/core/server/index.ts +8 -0
  416. package/teste-corrigido/core/server/plugins/database.ts +182 -0
  417. package/teste-corrigido/core/server/plugins/logger.ts +47 -0
  418. package/teste-corrigido/core/server/plugins/swagger.ts +34 -0
  419. package/teste-corrigido/core/server/standalone.ts +91 -0
  420. package/teste-corrigido/core/templates/create-project.ts +455 -0
  421. package/teste-corrigido/core/types/api.ts +169 -0
  422. package/teste-corrigido/core/types/build.ts +174 -0
  423. package/teste-corrigido/core/types/config.ts +68 -0
  424. package/teste-corrigido/core/types/index.ts +127 -0
  425. package/teste-corrigido/core/types/plugin.ts +94 -0
  426. package/teste-corrigido/core/utils/__tests__/errors.test.ts +139 -0
  427. package/teste-corrigido/core/utils/__tests__/helpers.test.ts +297 -0
  428. package/teste-corrigido/core/utils/__tests__/logger.test.ts +141 -0
  429. package/teste-corrigido/core/utils/env-runtime-v2.ts +232 -0
  430. package/teste-corrigido/core/utils/env-runtime.ts +252 -0
  431. package/teste-corrigido/core/utils/errors/codes.ts +115 -0
  432. package/teste-corrigido/core/utils/errors/handlers.ts +63 -0
  433. package/teste-corrigido/core/utils/errors/index.ts +81 -0
  434. package/teste-corrigido/core/utils/helpers.ts +180 -0
  435. package/teste-corrigido/core/utils/index.ts +18 -0
  436. package/teste-corrigido/core/utils/logger/index.ts +161 -0
  437. package/teste-corrigido/core/utils/logger.ts +106 -0
  438. package/teste-corrigido/core/utils/monitoring/index.ts +212 -0
  439. package/teste-corrigido/package-template.json +51 -0
  440. package/teste-corrigido/package.json +51 -0
  441. package/teste-corrigido/tsconfig.json +51 -0
  442. package/teste-corrigido/vite.config.ts +42 -0
  443. package/teste-final-npm/README.md +44 -0
  444. package/teste-final-npm/app/client/README.md +69 -0
  445. package/teste-final-npm/app/client/frontend-only.ts +12 -0
  446. package/teste-final-npm/app/client/index.html +13 -0
  447. package/teste-final-npm/app/client/public/vite.svg +1 -0
  448. package/teste-final-npm/app/client/src/App.css +883 -0
  449. package/teste-final-npm/app/client/src/App.tsx +669 -0
  450. package/teste-final-npm/app/client/src/assets/react.svg +1 -0
  451. package/teste-final-npm/app/client/src/components/TestPage.tsx +453 -0
  452. package/teste-final-npm/app/client/src/index.css +51 -0
  453. package/teste-final-npm/app/client/src/lib/eden-api.ts +110 -0
  454. package/teste-final-npm/app/client/src/main.tsx +10 -0
  455. package/teste-final-npm/app/client/src/vite-env.d.ts +1 -0
  456. package/teste-final-npm/app/client/tsconfig.app.json +43 -0
  457. package/teste-final-npm/app/client/tsconfig.json +7 -0
  458. package/teste-final-npm/app/client/tsconfig.node.json +25 -0
  459. package/teste-final-npm/app/server/app.ts +10 -0
  460. package/teste-final-npm/app/server/backend-only.ts +15 -0
  461. package/teste-final-npm/app/server/controllers/users.controller.ts +69 -0
  462. package/teste-final-npm/app/server/index.ts +104 -0
  463. package/teste-final-npm/app/server/routes/index.ts +25 -0
  464. package/teste-final-npm/app/server/routes/users.routes.ts +121 -0
  465. package/teste-final-npm/app/server/types/index.ts +1 -0
  466. package/teste-final-npm/app/shared/types/index.ts +18 -0
  467. package/teste-final-npm/bun.lock +1053 -0
  468. package/teste-final-npm/core/__tests__/integration.test.ts +227 -0
  469. package/teste-final-npm/core/build/index.ts +186 -0
  470. package/teste-final-npm/core/cli/command-registry.ts +334 -0
  471. package/teste-final-npm/core/cli/index.ts +394 -0
  472. package/teste-final-npm/core/cli/plugin-discovery.ts +200 -0
  473. package/teste-final-npm/core/client/standalone.ts +57 -0
  474. package/teste-final-npm/core/config/__tests__/config-loader.test.ts +591 -0
  475. package/teste-final-npm/core/config/__tests__/config-merger.test.ts +657 -0
  476. package/teste-final-npm/core/config/__tests__/env-converter.test.ts +372 -0
  477. package/teste-final-npm/core/config/__tests__/env-processor.test.ts +431 -0
  478. package/teste-final-npm/core/config/__tests__/env.test.ts +452 -0
  479. package/teste-final-npm/core/config/__tests__/integration.test.ts +418 -0
  480. package/teste-final-npm/core/config/__tests__/loader.test.ts +331 -0
  481. package/teste-final-npm/core/config/__tests__/schema.test.ts +129 -0
  482. package/teste-final-npm/core/config/__tests__/validator.test.ts +318 -0
  483. package/teste-final-npm/core/config/env-dynamic.ts +326 -0
  484. package/teste-final-npm/core/config/env.ts +597 -0
  485. package/teste-final-npm/core/config/index.ts +317 -0
  486. package/teste-final-npm/core/config/loader.ts +546 -0
  487. package/teste-final-npm/core/config/runtime-config.ts +322 -0
  488. package/teste-final-npm/core/config/schema.ts +694 -0
  489. package/teste-final-npm/core/config/validator.ts +540 -0
  490. package/teste-final-npm/core/framework/__tests__/server.test.ts +233 -0
  491. package/teste-final-npm/core/framework/client.ts +132 -0
  492. package/teste-final-npm/core/framework/index.ts +8 -0
  493. package/teste-final-npm/core/framework/server.ts +501 -0
  494. package/teste-final-npm/core/framework/types.ts +63 -0
  495. package/teste-final-npm/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  496. package/teste-final-npm/core/plugins/__tests__/manager.test.ts +398 -0
  497. package/teste-final-npm/core/plugins/__tests__/monitoring.test.ts +401 -0
  498. package/teste-final-npm/core/plugins/__tests__/registry.test.ts +335 -0
  499. package/teste-final-npm/core/plugins/built-in/index.ts +142 -0
  500. package/teste-final-npm/core/plugins/built-in/logger/index.ts +180 -0
  501. package/teste-final-npm/core/plugins/built-in/monitoring/README.md +193 -0
  502. package/teste-final-npm/core/plugins/built-in/monitoring/index.ts +912 -0
  503. package/teste-final-npm/core/plugins/built-in/static/index.ts +289 -0
  504. package/teste-final-npm/core/plugins/built-in/swagger/index.ts +229 -0
  505. package/teste-final-npm/core/plugins/built-in/vite/index.ts +316 -0
  506. package/teste-final-npm/core/plugins/config.ts +348 -0
  507. package/teste-final-npm/core/plugins/discovery.ts +350 -0
  508. package/teste-final-npm/core/plugins/executor.ts +351 -0
  509. package/teste-final-npm/core/plugins/index.ts +195 -0
  510. package/teste-final-npm/core/plugins/manager.ts +583 -0
  511. package/teste-final-npm/core/plugins/registry.ts +424 -0
  512. package/teste-final-npm/core/plugins/types.ts +254 -0
  513. package/teste-final-npm/core/server/framework.ts +123 -0
  514. package/teste-final-npm/core/server/index.ts +8 -0
  515. package/teste-final-npm/core/server/plugins/database.ts +182 -0
  516. package/teste-final-npm/core/server/plugins/logger.ts +47 -0
  517. package/teste-final-npm/core/server/plugins/swagger.ts +34 -0
  518. package/teste-final-npm/core/server/standalone.ts +91 -0
  519. package/teste-final-npm/core/templates/create-project.ts +455 -0
  520. package/teste-final-npm/core/types/api.ts +169 -0
  521. package/teste-final-npm/core/types/build.ts +174 -0
  522. package/teste-final-npm/core/types/config.ts +68 -0
  523. package/teste-final-npm/core/types/index.ts +127 -0
  524. package/teste-final-npm/core/types/plugin.ts +94 -0
  525. package/teste-final-npm/core/utils/__tests__/errors.test.ts +139 -0
  526. package/teste-final-npm/core/utils/__tests__/helpers.test.ts +297 -0
  527. package/teste-final-npm/core/utils/__tests__/logger.test.ts +141 -0
  528. package/teste-final-npm/core/utils/env-runtime-v2.ts +232 -0
  529. package/teste-final-npm/core/utils/env-runtime.ts +252 -0
  530. package/teste-final-npm/core/utils/errors/codes.ts +115 -0
  531. package/teste-final-npm/core/utils/errors/handlers.ts +63 -0
  532. package/teste-final-npm/core/utils/errors/index.ts +81 -0
  533. package/teste-final-npm/core/utils/helpers.ts +180 -0
  534. package/teste-final-npm/core/utils/index.ts +18 -0
  535. package/teste-final-npm/core/utils/logger/index.ts +161 -0
  536. package/teste-final-npm/core/utils/logger.ts +106 -0
  537. package/teste-final-npm/core/utils/monitoring/index.ts +212 -0
  538. package/teste-final-npm/package-template.json +51 -0
  539. package/teste-final-npm/package.json +51 -0
  540. package/teste-final-npm/tsconfig.json +51 -0
  541. package/teste-final-npm/vite.config.ts +42 -0
  542. package/tests/__mocks__/api.ts +56 -0
  543. package/tests/fixtures/users.ts +69 -0
  544. package/tests/integration/api/users.routes.test.ts +221 -0
  545. package/tests/setup.ts +29 -0
  546. package/tests/unit/app/client/App-simple.test.tsx +56 -0
  547. package/tests/unit/app/client/App.test.tsx.skip +237 -0
  548. package/tests/unit/app/client/eden-api.test.ts +186 -0
  549. package/tests/unit/app/client/simple.test.tsx +23 -0
  550. package/tests/unit/app/controllers/users.controller.test.ts +150 -0
  551. package/tests/unit/core/create-project.test.ts.skip +95 -0
  552. package/tests/unit/core/framework.test.ts +144 -0
  553. package/tests/unit/core/plugins/logger.test.ts.skip +268 -0
  554. package/tests/unit/core/plugins/vite.test.ts.disabled +188 -0
  555. package/tests/utils/test-helpers.ts +61 -0
  556. package/tsconfig.json +51 -0
  557. package/types/global.d.ts +30 -0
  558. package/types/vitest.d.ts +9 -0
  559. package/vite.config.ts +42 -0
  560. package/vitest.config.ts +50 -0
  561. package/workspace.json +6 -0
@@ -0,0 +1,123 @@
1
+ import { Elysia } from "elysia"
2
+ import type { FluxStackConfig, FluxStackContext, Plugin } from "../types"
3
+ import type { PluginContext, PluginUtils } from "../plugins/types"
4
+ import { getConfigSync, getEnvironmentInfo } from "../config"
5
+ import { logger, type Logger } from "../utils/logger/index"
6
+ import { createTimer, formatBytes, isProduction, isDevelopment } from "../utils/helpers"
7
+
8
+ export class FluxStackFramework {
9
+ private app: Elysia
10
+ private context: FluxStackContext
11
+ private pluginContext: PluginContext
12
+ private plugins: Plugin[] = []
13
+
14
+ constructor(config?: Partial<FluxStackConfig>) {
15
+ // Load the full configuration
16
+ const fullConfig = config ? { ...getConfigSync(), ...config } : getConfigSync()
17
+ const envInfo = getEnvironmentInfo()
18
+
19
+ this.context = {
20
+ config: fullConfig,
21
+ isDevelopment: envInfo.isDevelopment,
22
+ isProduction: envInfo.isProduction,
23
+ isTest: envInfo.isTest,
24
+ environment: envInfo.name
25
+ }
26
+
27
+ this.app = new Elysia()
28
+
29
+ // Create plugin utilities
30
+ const pluginUtils: PluginUtils = {
31
+ createTimer,
32
+ formatBytes,
33
+ isProduction,
34
+ isDevelopment,
35
+ getEnvironment: () => envInfo.name,
36
+ createHash: (data: string) => {
37
+ const crypto = require('crypto')
38
+ return crypto.createHash('sha256').update(data).digest('hex')
39
+ },
40
+ deepMerge: (target: any, source: any) => {
41
+ const result = { ...target }
42
+ for (const key in source) {
43
+ if (source[key] && typeof source[key] === 'object' && !Array.isArray(source[key])) {
44
+ result[key] = pluginUtils.deepMerge(result[key] || {}, source[key])
45
+ } else {
46
+ result[key] = source[key]
47
+ }
48
+ }
49
+ return result
50
+ },
51
+ validateSchema: (_data: any, _schema: any) => {
52
+ // Simple validation - in a real implementation you'd use a proper schema validator
53
+ try {
54
+ // Basic validation logic
55
+ return { valid: true, errors: [] }
56
+ } catch (error) {
57
+ return { valid: false, errors: [error instanceof Error ? error.message : 'Validation failed'] }
58
+ }
59
+ }
60
+ }
61
+
62
+ // Create plugin context
63
+ this.pluginContext = {
64
+ config: fullConfig,
65
+ logger: logger as Logger,
66
+ app: this.app,
67
+ utils: pluginUtils
68
+ }
69
+
70
+ this.setupCors()
71
+ }
72
+
73
+ private setupCors() {
74
+ const { cors } = this.context.config.server
75
+
76
+ this.app
77
+ .onRequest(({ set }) => {
78
+ set.headers["Access-Control-Allow-Origin"] = cors.origins.join(", ") || "*"
79
+ set.headers["Access-Control-Allow-Methods"] = cors.methods.join(", ") || "*"
80
+ set.headers["Access-Control-Allow-Headers"] = cors.headers.join(", ") || "*"
81
+ if (cors.credentials) {
82
+ set.headers["Access-Control-Allow-Credentials"] = "true"
83
+ }
84
+ })
85
+ .options("*", ({ set }) => {
86
+ set.status = 200
87
+ return ""
88
+ })
89
+ }
90
+
91
+ use(plugin: Plugin) {
92
+ this.plugins.push(plugin)
93
+ if (plugin.setup) {
94
+ plugin.setup(this.pluginContext)
95
+ }
96
+ return this
97
+ }
98
+
99
+ routes(routeModule: any) {
100
+ this.app.use(routeModule)
101
+ return this
102
+ }
103
+
104
+ getApp() {
105
+ return this.app
106
+ }
107
+
108
+ getContext() {
109
+ return this.context
110
+ }
111
+
112
+ listen(callback?: () => void) {
113
+ const port = this.context.config.server.port
114
+ const apiPrefix = this.context.config.server.apiPrefix
115
+
116
+ this.app.listen(port, () => {
117
+ console.log(`🚀 API ready at http://localhost:${port}${apiPrefix}`)
118
+ console.log(`📋 Health check: http://localhost:${port}${apiPrefix}/health`)
119
+ console.log()
120
+ callback?.()
121
+ })
122
+ }
123
+ }
@@ -0,0 +1,8 @@
1
+ // FluxStack framework exports
2
+ export { FluxStackFramework } from "../framework/server"
3
+ export { loggerPlugin } from "../plugins/built-in/logger"
4
+ export { vitePlugin } from "../plugins/built-in/vite"
5
+ export { staticPlugin } from "../plugins/built-in/static"
6
+ export { swaggerPlugin } from "../plugins/built-in/swagger"
7
+ export { PluginRegistry } from "../plugins/registry"
8
+ export * from "../types"
@@ -0,0 +1,182 @@
1
+ import type { Plugin, PluginContext, CliCommand } from "../../plugins/types"
2
+
3
+ // Database plugin with CLI commands
4
+ export const databasePlugin: Plugin = {
5
+ name: "database",
6
+ version: "1.0.0",
7
+ description: "Database management plugin with CLI commands",
8
+ author: "FluxStack Team",
9
+ category: "data",
10
+
11
+ setup: (context: PluginContext) => {
12
+ context.logger.info("Database plugin initialized")
13
+ },
14
+
15
+ commands: [
16
+ {
17
+ name: "migrate",
18
+ description: "Run database migrations",
19
+ category: "Database",
20
+ usage: "flux database:migrate [options]",
21
+ examples: [
22
+ "flux database:migrate # Run all pending migrations",
23
+ "flux database:migrate --rollback # Rollback last migration",
24
+ "flux database:migrate --to 001 # Migrate to specific version"
25
+ ],
26
+ options: [
27
+ {
28
+ name: "rollback",
29
+ short: "r",
30
+ description: "Rollback the last migration",
31
+ type: "boolean"
32
+ },
33
+ {
34
+ name: "to",
35
+ description: "Migrate to specific version",
36
+ type: "string"
37
+ },
38
+ {
39
+ name: "dry-run",
40
+ description: "Show what would be migrated without executing",
41
+ type: "boolean"
42
+ }
43
+ ],
44
+ handler: async (args, options, context) => {
45
+ if (options["dry-run"]) {
46
+ console.log("🔍 Dry run mode - showing planned migrations:")
47
+ }
48
+
49
+ if (options.rollback) {
50
+ console.log("⬇️ Rolling back last migration...")
51
+ // Simulate rollback
52
+ await new Promise(resolve => setTimeout(resolve, 1000))
53
+ console.log("✅ Rollback completed")
54
+ } else if (options.to) {
55
+ console.log(`📈 Migrating to version: ${options.to}`)
56
+ // Simulate migration to version
57
+ await new Promise(resolve => setTimeout(resolve, 1500))
58
+ console.log(`✅ Migrated to version ${options.to}`)
59
+ } else {
60
+ console.log("📈 Running all pending migrations...")
61
+ // Simulate migration
62
+ await new Promise(resolve => setTimeout(resolve, 2000))
63
+ console.log("✅ All migrations completed")
64
+ }
65
+ }
66
+ },
67
+ {
68
+ name: "seed",
69
+ description: "Seed the database with initial data",
70
+ category: "Database",
71
+ usage: "flux database:seed [seeder]",
72
+ examples: [
73
+ "flux database:seed # Run all seeders",
74
+ "flux database:seed users # Run specific seeder"
75
+ ],
76
+ arguments: [
77
+ {
78
+ name: "seeder",
79
+ description: "Specific seeder to run",
80
+ required: false,
81
+ type: "string"
82
+ }
83
+ ],
84
+ options: [
85
+ {
86
+ name: "force",
87
+ short: "f",
88
+ description: "Force seeding even if data exists",
89
+ type: "boolean"
90
+ }
91
+ ],
92
+ handler: async (args, options, context) => {
93
+ const [seeder] = args
94
+
95
+ if (seeder) {
96
+ console.log(`🌱 Running seeder: ${seeder}`)
97
+ console.log(` Force mode: ${options.force ? 'ON' : 'OFF'}`)
98
+ } else {
99
+ console.log("🌱 Running all seeders...")
100
+ }
101
+
102
+ // Simulate seeding
103
+ await new Promise(resolve => setTimeout(resolve, 1500))
104
+ console.log("✅ Database seeded successfully")
105
+ }
106
+ },
107
+ {
108
+ name: "reset",
109
+ description: "Reset the database (drop all tables and recreate)",
110
+ category: "Database",
111
+ usage: "flux database:reset [options]",
112
+ examples: [
113
+ "flux database:reset # Reset and migrate",
114
+ "flux database:reset --seed # Reset, migrate and seed"
115
+ ],
116
+ options: [
117
+ {
118
+ name: "seed",
119
+ short: "s",
120
+ description: "Run seeders after reset",
121
+ type: "boolean"
122
+ },
123
+ {
124
+ name: "confirm",
125
+ description: "Skip confirmation prompt",
126
+ type: "boolean"
127
+ }
128
+ ],
129
+ handler: async (args, options, context) => {
130
+ if (!options.confirm) {
131
+ console.log("⚠️ WARNING: This will delete all data in the database!")
132
+ console.log("Use --confirm to skip this prompt.")
133
+ return
134
+ }
135
+
136
+ console.log("🗑️ Dropping all tables...")
137
+ await new Promise(resolve => setTimeout(resolve, 1000))
138
+
139
+ console.log("📈 Running migrations...")
140
+ await new Promise(resolve => setTimeout(resolve, 1500))
141
+
142
+ if (options.seed) {
143
+ console.log("🌱 Running seeders...")
144
+ await new Promise(resolve => setTimeout(resolve, 1000))
145
+ }
146
+
147
+ console.log("✅ Database reset completed")
148
+ }
149
+ },
150
+ {
151
+ name: "status",
152
+ description: "Show database migration status",
153
+ category: "Database",
154
+ aliases: ["info"],
155
+ handler: async (args, options, context) => {
156
+ console.log("📊 Database Status:")
157
+ console.log("------------------")
158
+ console.log("Connected: ✅ Yes")
159
+ console.log("Tables: 15")
160
+ console.log("Last migration: 2024_01_15_create_users_table")
161
+ console.log("Pending migrations: 2")
162
+ console.log("Database size: 2.3 MB")
163
+ }
164
+ }
165
+ ]
166
+ }
167
+
168
+ // Utility functions that could be used by the plugin
169
+ export async function runMigration(version?: string): Promise<void> {
170
+ // Actual migration logic would go here
171
+ console.log(`Running migration ${version || 'all'}`)
172
+ }
173
+
174
+ export async function rollbackMigration(): Promise<void> {
175
+ // Actual rollback logic would go here
176
+ console.log("Rolling back migration")
177
+ }
178
+
179
+ export async function seedDatabase(seeder?: string): Promise<void> {
180
+ // Actual seeding logic would go here
181
+ console.log(`Seeding database ${seeder || 'all'}`)
182
+ }
@@ -0,0 +1,47 @@
1
+ import type { Plugin, PluginContext } from "../../types"
2
+ import { log } from "../../utils/logger"
3
+
4
+ export const loggerPlugin: Plugin = {
5
+ name: "logger",
6
+ setup: (context: PluginContext) => {
7
+ const logLevel = process.env.LOG_LEVEL || context.config.logging?.level || 'info'
8
+ const isDev = process.env.NODE_ENV === 'development'
9
+
10
+ log.plugin("logger", "Logger plugin initialized", {
11
+ logLevel,
12
+ environment: process.env.NODE_ENV || 'development'
13
+ })
14
+
15
+ // Only enable verbose request logging if explicitly requested
16
+ if (process.env.ENABLE_REQUEST_LOGS === 'true') {
17
+ // Setup logging hooks on the Elysia app
18
+ context.app.onRequest(({ request }: { request: Request }) => {
19
+ const startTime = Date.now()
20
+ const path = new URL(request.url).pathname
21
+
22
+ // Store start time for duration calculation
23
+ ;(request as any).__startTime = startTime
24
+
25
+ log.request(request.method, path)
26
+ })
27
+
28
+ context.app.onResponse(({ request, set }: { request: Request, set: any }) => {
29
+ const duration = Date.now() - ((request as any).__startTime || Date.now())
30
+ const path = new URL(request.url).pathname
31
+
32
+ log.request(request.method, path, set.status || 200, duration)
33
+ })
34
+ }
35
+
36
+ // Always log errors
37
+ context.app.onError(({ error, request }: { error: Error, request: Request }) => {
38
+ const duration = Date.now() - ((request as any).__startTime || Date.now())
39
+ const path = new URL(request.url).pathname
40
+
41
+ log.error(`${request.method} ${path} - ${error.message}`, {
42
+ duration,
43
+ stack: error.stack
44
+ })
45
+ })
46
+ }
47
+ }
@@ -0,0 +1,34 @@
1
+ import { swagger } from '@elysiajs/swagger'
2
+ import type { Plugin, PluginContext } from '../../types'
3
+
4
+ export const swaggerPlugin: Plugin = {
5
+ name: 'swagger',
6
+ setup(context: PluginContext) {
7
+ context.app.use(swagger({
8
+ path: '/swagger',
9
+ documentation: {
10
+ info: {
11
+ title: 'FluxStack API',
12
+ version: '1.0.0',
13
+ description: 'Modern full-stack TypeScript framework with type-safe API endpoints'
14
+ },
15
+ tags: [
16
+ {
17
+ name: 'Health',
18
+ description: 'Health check endpoints'
19
+ },
20
+ {
21
+ name: 'Users',
22
+ description: 'User management endpoints'
23
+ }
24
+ ],
25
+ servers: [
26
+ {
27
+ url: `http://localhost:${context.config.server?.port || 3000}`,
28
+ description: 'Development server'
29
+ }
30
+ ]
31
+ }
32
+ }))
33
+ }
34
+ }
@@ -0,0 +1,91 @@
1
+ // Standalone backend server (sem frontend integrado)
2
+ import { FluxStackFramework } from "./index"
3
+ import type { Plugin, PluginContext } from "../types"
4
+
5
+ export const createStandaloneServer = (userConfig: any = {}) => {
6
+ const app = new FluxStackFramework({
7
+ server: {
8
+ port: userConfig.port || parseInt(process.env.BACKEND_PORT || '3000'),
9
+ host: 'localhost',
10
+ apiPrefix: userConfig.apiPrefix || "/api",
11
+ cors: {
12
+ origins: ['*'],
13
+ methods: ['GET', 'POST', 'PUT', 'DELETE'],
14
+ headers: ['Content-Type', 'Authorization'],
15
+ credentials: false,
16
+ maxAge: 86400
17
+ },
18
+ middleware: []
19
+ },
20
+ app: { name: 'FluxStack Backend', version: '1.0.0' },
21
+ client: { port: 5173, proxy: { target: 'http://localhost:3000' }, build: { sourceMaps: true, minify: false, target: 'es2020', outDir: 'dist' } },
22
+ ...userConfig
23
+ })
24
+
25
+ // Plugin de logging silencioso para standalone
26
+ const silentLogger: Plugin = {
27
+ name: "silent-logger",
28
+ setup: (context: PluginContext) => {
29
+ context.app.onRequest(({ request }: { request: Request }) => {
30
+ // Log mais limpo para backend standalone
31
+ const timestamp = new Date().toLocaleTimeString()
32
+ const path = new URL(request.url).pathname
33
+ console.log(`[${timestamp}] ${request.method} ${path}`)
34
+ })
35
+ }
36
+ }
37
+
38
+ app.use(silentLogger)
39
+ return app
40
+ }
41
+
42
+ export const startBackendOnly = async (userRoutes?: any, config: any = {}) => {
43
+ const port = config.port || process.env.BACKEND_PORT || 3000
44
+ const host = process.env.HOST || 'localhost'
45
+
46
+ console.log(`🦊 FluxStack Backend`)
47
+ console.log(`🚀 http://${host}:${port}`)
48
+ console.log(`📋 Health: http://${host}:${port}/health`)
49
+ console.log()
50
+
51
+ const app = createStandaloneServer(config)
52
+
53
+ if (userRoutes) {
54
+ app.routes(userRoutes)
55
+ }
56
+
57
+ // Adicionar rotas básicas para backend standalone
58
+ const framework = app.getApp()
59
+
60
+ // Health check
61
+ framework.get("/health", () => ({
62
+ status: "ok",
63
+ mode: "backend-only",
64
+ timestamp: new Date().toISOString(),
65
+ port
66
+ }))
67
+
68
+ // Rota raiz informativa para backend standalone
69
+ framework.get("/", () => ({
70
+ message: "🦊 FluxStack Backend Server",
71
+ mode: "backend-only",
72
+ endpoints: {
73
+ health: "/health",
74
+ api: "/api/*",
75
+ docs: "/swagger"
76
+ },
77
+ frontend: {
78
+ note: "Frontend não está rodando neste servidor",
79
+ recommendation: "Use 'bun run dev' para modo integrado ou 'bun run dev:frontend' para frontend standalone"
80
+ },
81
+ timestamp: new Date().toISOString()
82
+ }))
83
+
84
+ // Override do listen para não mostrar mensagens do framework
85
+ const context = app.getContext()
86
+ framework.listen(context.config.port!, () => {
87
+ // Mensagem já foi mostrada acima, não repetir
88
+ })
89
+
90
+ return app
91
+ }