create-fluxstack 1.0.1 → 1.0.3

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 (466) hide show
  1. package/.claude/settings.local.json +63 -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/README-Docker.md +85 -0
  19. package/TEST_RESULTS.md +130 -0
  20. package/ai-context/00-QUICK-START.md +86 -0
  21. package/ai-context/README.md +88 -0
  22. package/ai-context/development/eden-treaty-guide.md +362 -0
  23. package/ai-context/development/patterns.md +382 -0
  24. package/ai-context/examples/crud-complete.md +626 -0
  25. package/ai-context/project/architecture.md +399 -0
  26. package/ai-context/project/overview.md +213 -0
  27. package/ai-context/recent-changes/eden-treaty-refactor.md +281 -0
  28. package/ai-context/recent-changes/type-inference-fix.md +223 -0
  29. package/ai-context/reference/environment-vars.md +384 -0
  30. package/ai-context/reference/troubleshooting.md +407 -0
  31. package/bun.lock +21 -11
  32. package/bunfig.toml +16 -0
  33. package/config/fluxstack.config.ts +48 -0
  34. package/create-fluxstack.ts +2 -3
  35. package/create-test-app.ts +156 -0
  36. package/docker-compose.microservices.yml +75 -0
  37. package/docker-compose.simple.yml +57 -0
  38. package/docker-compose.yml +71 -0
  39. package/docs/dynamic-environment-variables.md +380 -0
  40. package/eslint.config.js +23 -0
  41. package/examples/dynamic-env-usage.ts +283 -0
  42. package/examples/hybrid-env-strategy.ts +212 -0
  43. package/examples/simplified-env-usage.ts +251 -0
  44. package/flux-cli.ts +214 -0
  45. package/fluxstack.config.ts +318 -0
  46. package/meu-app-teste/README.md +44 -0
  47. package/meu-app-teste/app/client/README.md +69 -0
  48. package/meu-app-teste/app/client/frontend-only.ts +12 -0
  49. package/meu-app-teste/app/client/index.html +13 -0
  50. package/meu-app-teste/app/client/public/vite.svg +1 -0
  51. package/meu-app-teste/app/client/src/App.css +883 -0
  52. package/meu-app-teste/app/client/src/App.tsx +669 -0
  53. package/meu-app-teste/app/client/src/assets/react.svg +1 -0
  54. package/meu-app-teste/app/client/src/components/TestPage.tsx +453 -0
  55. package/meu-app-teste/app/client/src/index.css +51 -0
  56. package/meu-app-teste/app/client/src/lib/eden-api.ts +110 -0
  57. package/meu-app-teste/app/client/src/main.tsx +10 -0
  58. package/meu-app-teste/app/client/src/vite-env.d.ts +1 -0
  59. package/meu-app-teste/app/client/tsconfig.app.json +43 -0
  60. package/meu-app-teste/app/client/tsconfig.json +7 -0
  61. package/meu-app-teste/app/client/tsconfig.node.json +25 -0
  62. package/meu-app-teste/app/server/app.ts +10 -0
  63. package/meu-app-teste/app/server/backend-only.ts +15 -0
  64. package/meu-app-teste/app/server/controllers/users.controller.ts +69 -0
  65. package/meu-app-teste/app/server/index.ts +104 -0
  66. package/meu-app-teste/app/server/routes/index.ts +25 -0
  67. package/meu-app-teste/app/server/routes/users.routes.ts +121 -0
  68. package/meu-app-teste/app/server/types/index.ts +1 -0
  69. package/meu-app-teste/app/shared/types/index.ts +18 -0
  70. package/meu-app-teste/bun.lock +1053 -0
  71. package/meu-app-teste/core/__tests__/integration.test.ts +227 -0
  72. package/meu-app-teste/core/build/index.ts +186 -0
  73. package/meu-app-teste/core/cli/command-registry.ts +334 -0
  74. package/meu-app-teste/core/cli/index.ts +394 -0
  75. package/meu-app-teste/core/cli/plugin-discovery.ts +200 -0
  76. package/meu-app-teste/core/client/standalone.ts +57 -0
  77. package/meu-app-teste/core/config/__tests__/config-loader.test.ts +591 -0
  78. package/meu-app-teste/core/config/__tests__/config-merger.test.ts +657 -0
  79. package/meu-app-teste/core/config/__tests__/env-converter.test.ts +372 -0
  80. package/meu-app-teste/core/config/__tests__/env-processor.test.ts +431 -0
  81. package/meu-app-teste/core/config/__tests__/env.test.ts +452 -0
  82. package/meu-app-teste/core/config/__tests__/integration.test.ts +418 -0
  83. package/meu-app-teste/core/config/__tests__/loader.test.ts +331 -0
  84. package/meu-app-teste/core/config/__tests__/schema.test.ts +129 -0
  85. package/meu-app-teste/core/config/__tests__/validator.test.ts +318 -0
  86. package/meu-app-teste/core/config/env-dynamic.ts +326 -0
  87. package/meu-app-teste/core/config/env.ts +597 -0
  88. package/meu-app-teste/core/config/index.ts +317 -0
  89. package/meu-app-teste/core/config/loader.ts +546 -0
  90. package/meu-app-teste/core/config/runtime-config.ts +322 -0
  91. package/meu-app-teste/core/config/schema.ts +694 -0
  92. package/meu-app-teste/core/config/validator.ts +540 -0
  93. package/meu-app-teste/core/framework/__tests__/server.test.ts +233 -0
  94. package/meu-app-teste/core/framework/client.ts +132 -0
  95. package/meu-app-teste/core/framework/index.ts +8 -0
  96. package/meu-app-teste/core/framework/server.ts +501 -0
  97. package/meu-app-teste/core/framework/types.ts +63 -0
  98. package/meu-app-teste/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  99. package/meu-app-teste/core/plugins/__tests__/manager.test.ts +398 -0
  100. package/meu-app-teste/core/plugins/__tests__/monitoring.test.ts +401 -0
  101. package/meu-app-teste/core/plugins/__tests__/registry.test.ts +335 -0
  102. package/meu-app-teste/core/plugins/built-in/index.ts +142 -0
  103. package/meu-app-teste/core/plugins/built-in/logger/index.ts +180 -0
  104. package/meu-app-teste/core/plugins/built-in/monitoring/README.md +193 -0
  105. package/meu-app-teste/core/plugins/built-in/monitoring/index.ts +912 -0
  106. package/meu-app-teste/core/plugins/built-in/static/index.ts +289 -0
  107. package/meu-app-teste/core/plugins/built-in/swagger/index.ts +229 -0
  108. package/meu-app-teste/core/plugins/built-in/vite/index.ts +316 -0
  109. package/meu-app-teste/core/plugins/config.ts +348 -0
  110. package/meu-app-teste/core/plugins/discovery.ts +350 -0
  111. package/meu-app-teste/core/plugins/executor.ts +351 -0
  112. package/meu-app-teste/core/plugins/index.ts +195 -0
  113. package/meu-app-teste/core/plugins/manager.ts +583 -0
  114. package/meu-app-teste/core/plugins/registry.ts +424 -0
  115. package/meu-app-teste/core/plugins/types.ts +254 -0
  116. package/meu-app-teste/core/server/framework.ts +123 -0
  117. package/meu-app-teste/core/server/index.ts +8 -0
  118. package/meu-app-teste/core/server/plugins/database.ts +182 -0
  119. package/meu-app-teste/core/server/plugins/logger.ts +47 -0
  120. package/meu-app-teste/core/server/plugins/swagger.ts +34 -0
  121. package/meu-app-teste/core/server/standalone.ts +91 -0
  122. package/meu-app-teste/core/templates/create-project.ts +455 -0
  123. package/meu-app-teste/core/types/api.ts +169 -0
  124. package/meu-app-teste/core/types/build.ts +174 -0
  125. package/meu-app-teste/core/types/config.ts +68 -0
  126. package/meu-app-teste/core/types/index.ts +127 -0
  127. package/meu-app-teste/core/types/plugin.ts +94 -0
  128. package/meu-app-teste/core/utils/__tests__/errors.test.ts +139 -0
  129. package/meu-app-teste/core/utils/__tests__/helpers.test.ts +297 -0
  130. package/meu-app-teste/core/utils/__tests__/logger.test.ts +141 -0
  131. package/meu-app-teste/core/utils/env-runtime-v2.ts +232 -0
  132. package/meu-app-teste/core/utils/env-runtime.ts +252 -0
  133. package/meu-app-teste/core/utils/errors/codes.ts +115 -0
  134. package/meu-app-teste/core/utils/errors/handlers.ts +63 -0
  135. package/meu-app-teste/core/utils/errors/index.ts +81 -0
  136. package/meu-app-teste/core/utils/helpers.ts +180 -0
  137. package/meu-app-teste/core/utils/index.ts +18 -0
  138. package/meu-app-teste/core/utils/logger/index.ts +161 -0
  139. package/meu-app-teste/core/utils/logger.ts +106 -0
  140. package/meu-app-teste/core/utils/monitoring/index.ts +212 -0
  141. package/meu-app-teste/package.json +92 -0
  142. package/meu-app-teste/tsconfig.json +51 -0
  143. package/meu-app-teste/vite.config.ts +42 -0
  144. package/my-final-test/README.md +44 -0
  145. package/my-final-test/app/client/README.md +69 -0
  146. package/my-final-test/app/client/frontend-only.ts +12 -0
  147. package/my-final-test/app/client/index.html +13 -0
  148. package/my-final-test/app/client/public/vite.svg +1 -0
  149. package/my-final-test/app/client/src/App.css +883 -0
  150. package/my-final-test/app/client/src/App.tsx +669 -0
  151. package/my-final-test/app/client/src/assets/react.svg +1 -0
  152. package/my-final-test/app/client/src/components/TestPage.tsx +453 -0
  153. package/my-final-test/app/client/src/index.css +51 -0
  154. package/my-final-test/app/client/src/lib/eden-api.ts +110 -0
  155. package/my-final-test/app/client/src/main.tsx +10 -0
  156. package/my-final-test/app/client/src/vite-env.d.ts +1 -0
  157. package/my-final-test/app/client/tsconfig.app.json +43 -0
  158. package/my-final-test/app/client/tsconfig.json +7 -0
  159. package/my-final-test/app/client/tsconfig.node.json +25 -0
  160. package/my-final-test/app/server/app.ts +10 -0
  161. package/my-final-test/app/server/backend-only.ts +15 -0
  162. package/my-final-test/app/server/controllers/users.controller.ts +69 -0
  163. package/my-final-test/app/server/index.ts +104 -0
  164. package/my-final-test/app/server/routes/index.ts +25 -0
  165. package/my-final-test/app/server/routes/users.routes.ts +121 -0
  166. package/my-final-test/app/server/types/index.ts +1 -0
  167. package/my-final-test/app/shared/types/index.ts +18 -0
  168. package/my-final-test/bun.lock +993 -0
  169. package/my-final-test/core/__tests__/integration.test.ts +227 -0
  170. package/my-final-test/core/build/index.ts +186 -0
  171. package/my-final-test/core/cli/command-registry.ts +334 -0
  172. package/my-final-test/core/cli/index.ts +394 -0
  173. package/my-final-test/core/cli/plugin-discovery.ts +200 -0
  174. package/my-final-test/core/client/standalone.ts +57 -0
  175. package/my-final-test/core/config/__tests__/config-loader.test.ts +591 -0
  176. package/my-final-test/core/config/__tests__/config-merger.test.ts +657 -0
  177. package/my-final-test/core/config/__tests__/env-converter.test.ts +372 -0
  178. package/my-final-test/core/config/__tests__/env-processor.test.ts +431 -0
  179. package/my-final-test/core/config/__tests__/env.test.ts +452 -0
  180. package/my-final-test/core/config/__tests__/integration.test.ts +418 -0
  181. package/my-final-test/core/config/__tests__/loader.test.ts +331 -0
  182. package/my-final-test/core/config/__tests__/schema.test.ts +129 -0
  183. package/my-final-test/core/config/__tests__/validator.test.ts +318 -0
  184. package/my-final-test/core/config/env-dynamic.ts +326 -0
  185. package/my-final-test/core/config/env.ts +597 -0
  186. package/my-final-test/core/config/index.ts +317 -0
  187. package/my-final-test/core/config/loader.ts +546 -0
  188. package/my-final-test/core/config/runtime-config.ts +322 -0
  189. package/my-final-test/core/config/schema.ts +694 -0
  190. package/my-final-test/core/config/validator.ts +540 -0
  191. package/my-final-test/core/framework/__tests__/server.test.ts +233 -0
  192. package/my-final-test/core/framework/client.ts +132 -0
  193. package/my-final-test/core/framework/index.ts +8 -0
  194. package/my-final-test/core/framework/server.ts +501 -0
  195. package/my-final-test/core/framework/types.ts +63 -0
  196. package/my-final-test/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  197. package/my-final-test/core/plugins/__tests__/manager.test.ts +398 -0
  198. package/my-final-test/core/plugins/__tests__/monitoring.test.ts +401 -0
  199. package/my-final-test/core/plugins/__tests__/registry.test.ts +335 -0
  200. package/my-final-test/core/plugins/built-in/index.ts +142 -0
  201. package/my-final-test/core/plugins/built-in/logger/index.ts +180 -0
  202. package/my-final-test/core/plugins/built-in/monitoring/README.md +193 -0
  203. package/my-final-test/core/plugins/built-in/monitoring/index.ts +912 -0
  204. package/my-final-test/core/plugins/built-in/static/index.ts +289 -0
  205. package/my-final-test/core/plugins/built-in/swagger/index.ts +229 -0
  206. package/my-final-test/core/plugins/built-in/vite/index.ts +316 -0
  207. package/my-final-test/core/plugins/config.ts +348 -0
  208. package/my-final-test/core/plugins/discovery.ts +350 -0
  209. package/my-final-test/core/plugins/executor.ts +351 -0
  210. package/my-final-test/core/plugins/index.ts +195 -0
  211. package/my-final-test/core/plugins/manager.ts +583 -0
  212. package/my-final-test/core/plugins/registry.ts +424 -0
  213. package/my-final-test/core/plugins/types.ts +254 -0
  214. package/my-final-test/core/server/framework.ts +123 -0
  215. package/my-final-test/core/server/index.ts +8 -0
  216. package/my-final-test/core/server/plugins/database.ts +182 -0
  217. package/my-final-test/core/server/plugins/logger.ts +47 -0
  218. package/my-final-test/core/server/plugins/swagger.ts +34 -0
  219. package/my-final-test/core/server/standalone.ts +91 -0
  220. package/my-final-test/core/templates/create-project.ts +455 -0
  221. package/my-final-test/core/types/api.ts +169 -0
  222. package/my-final-test/core/types/build.ts +174 -0
  223. package/my-final-test/core/types/config.ts +68 -0
  224. package/my-final-test/core/types/index.ts +127 -0
  225. package/my-final-test/core/types/plugin.ts +94 -0
  226. package/my-final-test/core/utils/__tests__/errors.test.ts +139 -0
  227. package/my-final-test/core/utils/__tests__/helpers.test.ts +297 -0
  228. package/my-final-test/core/utils/__tests__/logger.test.ts +141 -0
  229. package/my-final-test/core/utils/env-runtime-v2.ts +232 -0
  230. package/my-final-test/core/utils/env-runtime.ts +252 -0
  231. package/my-final-test/core/utils/errors/codes.ts +115 -0
  232. package/my-final-test/core/utils/errors/handlers.ts +63 -0
  233. package/my-final-test/core/utils/errors/index.ts +81 -0
  234. package/my-final-test/core/utils/helpers.ts +180 -0
  235. package/my-final-test/core/utils/index.ts +18 -0
  236. package/my-final-test/core/utils/logger/index.ts +161 -0
  237. package/my-final-test/core/utils/logger.ts +106 -0
  238. package/my-final-test/core/utils/monitoring/index.ts +212 -0
  239. package/my-final-test/package.json +68 -0
  240. package/my-final-test/tsconfig.json +51 -0
  241. package/my-final-test/vite.config.ts +42 -0
  242. package/nginx-lb.conf +37 -0
  243. package/package-template.json +32 -15
  244. package/package.json +71 -30
  245. package/publish-setup.md +111 -0
  246. package/publish.sh +63 -0
  247. package/run-clean.ts +26 -0
  248. package/run-env-tests.ts +313 -0
  249. package/tailwind.config.js +34 -0
  250. package/teste-corrigido/README.md +44 -0
  251. package/teste-corrigido/app/client/README.md +69 -0
  252. package/teste-corrigido/app/client/frontend-only.ts +12 -0
  253. package/teste-corrigido/app/client/index.html +13 -0
  254. package/teste-corrigido/app/client/public/vite.svg +1 -0
  255. package/teste-corrigido/app/client/src/App.css +883 -0
  256. package/teste-corrigido/app/client/src/App.tsx +669 -0
  257. package/teste-corrigido/app/client/src/assets/react.svg +1 -0
  258. package/teste-corrigido/app/client/src/components/TestPage.tsx +453 -0
  259. package/teste-corrigido/app/client/src/index.css +51 -0
  260. package/teste-corrigido/app/client/src/lib/eden-api.ts +110 -0
  261. package/teste-corrigido/app/client/src/main.tsx +10 -0
  262. package/teste-corrigido/app/client/src/vite-env.d.ts +1 -0
  263. package/teste-corrigido/app/client/tsconfig.app.json +43 -0
  264. package/teste-corrigido/app/client/tsconfig.json +7 -0
  265. package/teste-corrigido/app/client/tsconfig.node.json +25 -0
  266. package/teste-corrigido/app/server/app.ts +10 -0
  267. package/teste-corrigido/app/server/backend-only.ts +15 -0
  268. package/teste-corrigido/app/server/controllers/users.controller.ts +69 -0
  269. package/teste-corrigido/app/server/index.ts +104 -0
  270. package/teste-corrigido/app/server/routes/index.ts +25 -0
  271. package/teste-corrigido/app/server/routes/users.routes.ts +121 -0
  272. package/teste-corrigido/app/server/types/index.ts +1 -0
  273. package/teste-corrigido/app/shared/types/index.ts +18 -0
  274. package/teste-corrigido/bun.lock +1053 -0
  275. package/teste-corrigido/core/__tests__/integration.test.ts +227 -0
  276. package/teste-corrigido/core/build/index.ts +186 -0
  277. package/teste-corrigido/core/cli/command-registry.ts +334 -0
  278. package/teste-corrigido/core/cli/index.ts +394 -0
  279. package/teste-corrigido/core/cli/plugin-discovery.ts +200 -0
  280. package/teste-corrigido/core/client/standalone.ts +57 -0
  281. package/teste-corrigido/core/config/__tests__/config-loader.test.ts +591 -0
  282. package/teste-corrigido/core/config/__tests__/config-merger.test.ts +657 -0
  283. package/teste-corrigido/core/config/__tests__/env-converter.test.ts +372 -0
  284. package/teste-corrigido/core/config/__tests__/env-processor.test.ts +431 -0
  285. package/teste-corrigido/core/config/__tests__/env.test.ts +452 -0
  286. package/teste-corrigido/core/config/__tests__/integration.test.ts +418 -0
  287. package/teste-corrigido/core/config/__tests__/loader.test.ts +331 -0
  288. package/teste-corrigido/core/config/__tests__/schema.test.ts +129 -0
  289. package/teste-corrigido/core/config/__tests__/validator.test.ts +318 -0
  290. package/teste-corrigido/core/config/env-dynamic.ts +326 -0
  291. package/teste-corrigido/core/config/env.ts +597 -0
  292. package/teste-corrigido/core/config/index.ts +317 -0
  293. package/teste-corrigido/core/config/loader.ts +546 -0
  294. package/teste-corrigido/core/config/runtime-config.ts +322 -0
  295. package/teste-corrigido/core/config/schema.ts +694 -0
  296. package/teste-corrigido/core/config/validator.ts +540 -0
  297. package/teste-corrigido/core/framework/__tests__/server.test.ts +233 -0
  298. package/teste-corrigido/core/framework/client.ts +132 -0
  299. package/teste-corrigido/core/framework/index.ts +8 -0
  300. package/teste-corrigido/core/framework/server.ts +501 -0
  301. package/teste-corrigido/core/framework/types.ts +63 -0
  302. package/teste-corrigido/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  303. package/teste-corrigido/core/plugins/__tests__/manager.test.ts +398 -0
  304. package/teste-corrigido/core/plugins/__tests__/monitoring.test.ts +401 -0
  305. package/teste-corrigido/core/plugins/__tests__/registry.test.ts +335 -0
  306. package/teste-corrigido/core/plugins/built-in/index.ts +142 -0
  307. package/teste-corrigido/core/plugins/built-in/logger/index.ts +180 -0
  308. package/teste-corrigido/core/plugins/built-in/monitoring/README.md +193 -0
  309. package/teste-corrigido/core/plugins/built-in/monitoring/index.ts +912 -0
  310. package/teste-corrigido/core/plugins/built-in/static/index.ts +289 -0
  311. package/teste-corrigido/core/plugins/built-in/swagger/index.ts +229 -0
  312. package/teste-corrigido/core/plugins/built-in/vite/index.ts +316 -0
  313. package/teste-corrigido/core/plugins/config.ts +348 -0
  314. package/teste-corrigido/core/plugins/discovery.ts +350 -0
  315. package/teste-corrigido/core/plugins/executor.ts +351 -0
  316. package/teste-corrigido/core/plugins/index.ts +195 -0
  317. package/teste-corrigido/core/plugins/manager.ts +583 -0
  318. package/teste-corrigido/core/plugins/registry.ts +424 -0
  319. package/teste-corrigido/core/plugins/types.ts +254 -0
  320. package/teste-corrigido/core/server/framework.ts +123 -0
  321. package/teste-corrigido/core/server/index.ts +8 -0
  322. package/teste-corrigido/core/server/plugins/database.ts +182 -0
  323. package/teste-corrigido/core/server/plugins/logger.ts +47 -0
  324. package/teste-corrigido/core/server/plugins/swagger.ts +34 -0
  325. package/teste-corrigido/core/server/standalone.ts +91 -0
  326. package/teste-corrigido/core/templates/create-project.ts +455 -0
  327. package/teste-corrigido/core/types/api.ts +169 -0
  328. package/teste-corrigido/core/types/build.ts +174 -0
  329. package/teste-corrigido/core/types/config.ts +68 -0
  330. package/teste-corrigido/core/types/index.ts +127 -0
  331. package/teste-corrigido/core/types/plugin.ts +94 -0
  332. package/teste-corrigido/core/utils/__tests__/errors.test.ts +139 -0
  333. package/teste-corrigido/core/utils/__tests__/helpers.test.ts +297 -0
  334. package/teste-corrigido/core/utils/__tests__/logger.test.ts +141 -0
  335. package/teste-corrigido/core/utils/env-runtime-v2.ts +232 -0
  336. package/teste-corrigido/core/utils/env-runtime.ts +252 -0
  337. package/teste-corrigido/core/utils/errors/codes.ts +115 -0
  338. package/teste-corrigido/core/utils/errors/handlers.ts +63 -0
  339. package/teste-corrigido/core/utils/errors/index.ts +81 -0
  340. package/teste-corrigido/core/utils/helpers.ts +180 -0
  341. package/teste-corrigido/core/utils/index.ts +18 -0
  342. package/teste-corrigido/core/utils/logger/index.ts +161 -0
  343. package/teste-corrigido/core/utils/logger.ts +106 -0
  344. package/teste-corrigido/core/utils/monitoring/index.ts +212 -0
  345. package/teste-corrigido/package-template.json +51 -0
  346. package/teste-corrigido/package.json +51 -0
  347. package/teste-corrigido/tsconfig.json +51 -0
  348. package/teste-corrigido/vite.config.ts +42 -0
  349. package/teste-final-npm/README.md +44 -0
  350. package/teste-final-npm/app/client/README.md +69 -0
  351. package/teste-final-npm/app/client/frontend-only.ts +12 -0
  352. package/teste-final-npm/app/client/index.html +13 -0
  353. package/teste-final-npm/app/client/public/vite.svg +1 -0
  354. package/teste-final-npm/app/client/src/App.css +883 -0
  355. package/teste-final-npm/app/client/src/App.tsx +669 -0
  356. package/teste-final-npm/app/client/src/assets/react.svg +1 -0
  357. package/teste-final-npm/app/client/src/components/TestPage.tsx +453 -0
  358. package/teste-final-npm/app/client/src/index.css +51 -0
  359. package/teste-final-npm/app/client/src/lib/eden-api.ts +110 -0
  360. package/teste-final-npm/app/client/src/main.tsx +10 -0
  361. package/teste-final-npm/app/client/src/vite-env.d.ts +1 -0
  362. package/teste-final-npm/app/client/tsconfig.app.json +43 -0
  363. package/teste-final-npm/app/client/tsconfig.json +7 -0
  364. package/teste-final-npm/app/client/tsconfig.node.json +25 -0
  365. package/teste-final-npm/app/server/app.ts +10 -0
  366. package/teste-final-npm/app/server/backend-only.ts +15 -0
  367. package/teste-final-npm/app/server/controllers/users.controller.ts +69 -0
  368. package/teste-final-npm/app/server/index.ts +104 -0
  369. package/teste-final-npm/app/server/routes/index.ts +25 -0
  370. package/teste-final-npm/app/server/routes/users.routes.ts +121 -0
  371. package/teste-final-npm/app/server/types/index.ts +1 -0
  372. package/teste-final-npm/app/shared/types/index.ts +18 -0
  373. package/teste-final-npm/bun.lock +1053 -0
  374. package/teste-final-npm/core/__tests__/integration.test.ts +227 -0
  375. package/teste-final-npm/core/build/index.ts +186 -0
  376. package/teste-final-npm/core/cli/command-registry.ts +334 -0
  377. package/teste-final-npm/core/cli/index.ts +394 -0
  378. package/teste-final-npm/core/cli/plugin-discovery.ts +200 -0
  379. package/teste-final-npm/core/client/standalone.ts +57 -0
  380. package/teste-final-npm/core/config/__tests__/config-loader.test.ts +591 -0
  381. package/teste-final-npm/core/config/__tests__/config-merger.test.ts +657 -0
  382. package/teste-final-npm/core/config/__tests__/env-converter.test.ts +372 -0
  383. package/teste-final-npm/core/config/__tests__/env-processor.test.ts +431 -0
  384. package/teste-final-npm/core/config/__tests__/env.test.ts +452 -0
  385. package/teste-final-npm/core/config/__tests__/integration.test.ts +418 -0
  386. package/teste-final-npm/core/config/__tests__/loader.test.ts +331 -0
  387. package/teste-final-npm/core/config/__tests__/schema.test.ts +129 -0
  388. package/teste-final-npm/core/config/__tests__/validator.test.ts +318 -0
  389. package/teste-final-npm/core/config/env-dynamic.ts +326 -0
  390. package/teste-final-npm/core/config/env.ts +597 -0
  391. package/teste-final-npm/core/config/index.ts +317 -0
  392. package/teste-final-npm/core/config/loader.ts +546 -0
  393. package/teste-final-npm/core/config/runtime-config.ts +322 -0
  394. package/teste-final-npm/core/config/schema.ts +694 -0
  395. package/teste-final-npm/core/config/validator.ts +540 -0
  396. package/teste-final-npm/core/framework/__tests__/server.test.ts +233 -0
  397. package/teste-final-npm/core/framework/client.ts +132 -0
  398. package/teste-final-npm/core/framework/index.ts +8 -0
  399. package/teste-final-npm/core/framework/server.ts +501 -0
  400. package/teste-final-npm/core/framework/types.ts +63 -0
  401. package/teste-final-npm/core/plugins/__tests__/built-in.test.ts.disabled +366 -0
  402. package/teste-final-npm/core/plugins/__tests__/manager.test.ts +398 -0
  403. package/teste-final-npm/core/plugins/__tests__/monitoring.test.ts +401 -0
  404. package/teste-final-npm/core/plugins/__tests__/registry.test.ts +335 -0
  405. package/teste-final-npm/core/plugins/built-in/index.ts +142 -0
  406. package/teste-final-npm/core/plugins/built-in/logger/index.ts +180 -0
  407. package/teste-final-npm/core/plugins/built-in/monitoring/README.md +193 -0
  408. package/teste-final-npm/core/plugins/built-in/monitoring/index.ts +912 -0
  409. package/teste-final-npm/core/plugins/built-in/static/index.ts +289 -0
  410. package/teste-final-npm/core/plugins/built-in/swagger/index.ts +229 -0
  411. package/teste-final-npm/core/plugins/built-in/vite/index.ts +316 -0
  412. package/teste-final-npm/core/plugins/config.ts +348 -0
  413. package/teste-final-npm/core/plugins/discovery.ts +350 -0
  414. package/teste-final-npm/core/plugins/executor.ts +351 -0
  415. package/teste-final-npm/core/plugins/index.ts +195 -0
  416. package/teste-final-npm/core/plugins/manager.ts +583 -0
  417. package/teste-final-npm/core/plugins/registry.ts +424 -0
  418. package/teste-final-npm/core/plugins/types.ts +254 -0
  419. package/teste-final-npm/core/server/framework.ts +123 -0
  420. package/teste-final-npm/core/server/index.ts +8 -0
  421. package/teste-final-npm/core/server/plugins/database.ts +182 -0
  422. package/teste-final-npm/core/server/plugins/logger.ts +47 -0
  423. package/teste-final-npm/core/server/plugins/swagger.ts +34 -0
  424. package/teste-final-npm/core/server/standalone.ts +91 -0
  425. package/teste-final-npm/core/templates/create-project.ts +455 -0
  426. package/teste-final-npm/core/types/api.ts +169 -0
  427. package/teste-final-npm/core/types/build.ts +174 -0
  428. package/teste-final-npm/core/types/config.ts +68 -0
  429. package/teste-final-npm/core/types/index.ts +127 -0
  430. package/teste-final-npm/core/types/plugin.ts +94 -0
  431. package/teste-final-npm/core/utils/__tests__/errors.test.ts +139 -0
  432. package/teste-final-npm/core/utils/__tests__/helpers.test.ts +297 -0
  433. package/teste-final-npm/core/utils/__tests__/logger.test.ts +141 -0
  434. package/teste-final-npm/core/utils/env-runtime-v2.ts +232 -0
  435. package/teste-final-npm/core/utils/env-runtime.ts +252 -0
  436. package/teste-final-npm/core/utils/errors/codes.ts +115 -0
  437. package/teste-final-npm/core/utils/errors/handlers.ts +63 -0
  438. package/teste-final-npm/core/utils/errors/index.ts +81 -0
  439. package/teste-final-npm/core/utils/helpers.ts +180 -0
  440. package/teste-final-npm/core/utils/index.ts +18 -0
  441. package/teste-final-npm/core/utils/logger/index.ts +161 -0
  442. package/teste-final-npm/core/utils/logger.ts +106 -0
  443. package/teste-final-npm/core/utils/monitoring/index.ts +212 -0
  444. package/teste-final-npm/package-template.json +51 -0
  445. package/teste-final-npm/package.json +51 -0
  446. package/teste-final-npm/tsconfig.json +51 -0
  447. package/teste-final-npm/vite.config.ts +42 -0
  448. package/tests/__mocks__/api.ts +56 -0
  449. package/tests/fixtures/users.ts +69 -0
  450. package/tests/integration/api/users.routes.test.ts +221 -0
  451. package/tests/setup.ts +29 -0
  452. package/tests/unit/app/client/App-simple.test.tsx +56 -0
  453. package/tests/unit/app/client/App.test.tsx.skip +237 -0
  454. package/tests/unit/app/client/eden-api.test.ts +186 -0
  455. package/tests/unit/app/client/simple.test.tsx +23 -0
  456. package/tests/unit/app/controllers/users.controller.test.ts +150 -0
  457. package/tests/unit/core/create-project.test.ts.skip +95 -0
  458. package/tests/unit/core/framework.test.ts +144 -0
  459. package/tests/unit/core/plugins/logger.test.ts.skip +268 -0
  460. package/tests/unit/core/plugins/vite.test.ts.disabled +188 -0
  461. package/tests/utils/test-helpers.ts +61 -0
  462. package/types/global.d.ts +30 -0
  463. package/types/vitest.d.ts +9 -0
  464. package/vitest.config.ts +50 -0
  465. package/workspace.json +6 -0
  466. package/.env +0 -30
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Build system types
3
+ * Type definitions for build processes, bundling, and optimization
4
+ */
5
+
6
+ export type BuildTarget = 'bun' | 'node' | 'docker' | 'static'
7
+ export type BuildMode = 'development' | 'production' | 'test'
8
+ export type BundleFormat = 'esm' | 'cjs' | 'iife' | 'umd'
9
+
10
+ export interface BuildOptions {
11
+ target: BuildTarget
12
+ mode: BuildMode
13
+ outDir: string
14
+ sourceMaps: boolean
15
+ minify: boolean
16
+ treeshake: boolean
17
+ splitting: boolean
18
+ watch: boolean
19
+ clean: boolean
20
+ }
21
+
22
+ export interface BuildResult {
23
+ success: boolean
24
+ duration: number
25
+ outputFiles: BuildOutputFile[]
26
+ warnings: BuildWarning[]
27
+ errors: BuildError[]
28
+ stats: BuildStats
29
+ }
30
+
31
+ export interface BuildOutputFile {
32
+ path: string
33
+ size: number
34
+ type: 'js' | 'css' | 'html' | 'asset'
35
+ hash?: string
36
+ sourcemap?: string
37
+ }
38
+
39
+ export interface BuildWarning {
40
+ message: string
41
+ file?: string
42
+ line?: number
43
+ column?: number
44
+ code?: string
45
+ }
46
+
47
+ export interface BuildError {
48
+ message: string
49
+ file?: string
50
+ line?: number
51
+ column?: number
52
+ code?: string
53
+ stack?: string
54
+ }
55
+
56
+ export interface BuildStats {
57
+ totalSize: number
58
+ gzippedSize: number
59
+ chunkCount: number
60
+ assetCount: number
61
+ entryPoints: string[]
62
+ dependencies: string[]
63
+ }
64
+
65
+ export interface BundleOptions {
66
+ entry: string | string[]
67
+ format: BundleFormat
68
+ external?: string[]
69
+ globals?: Record<string, string>
70
+ banner?: string
71
+ footer?: string
72
+ }
73
+
74
+ export interface BundleResult {
75
+ code: string
76
+ map?: string
77
+ imports: string[]
78
+ exports: string[]
79
+ warnings: BuildWarning[]
80
+ }
81
+
82
+ export interface OptimizationOptions {
83
+ minify: boolean
84
+ treeshake: boolean
85
+ deadCodeElimination: boolean
86
+ constantFolding: boolean
87
+ inlining: boolean
88
+ compression: boolean
89
+ }
90
+
91
+ export interface OptimizationResult {
92
+ originalSize: number
93
+ optimizedSize: number
94
+ compressionRatio: number
95
+ optimizations: string[]
96
+ warnings: BuildWarning[]
97
+ }
98
+
99
+ export interface BuildManifest {
100
+ version: string
101
+ timestamp: string
102
+ target: BuildTarget
103
+ mode: BuildMode
104
+ client: ClientBuildManifest
105
+ server: ServerBuildManifest
106
+ assets: AssetManifest[]
107
+ optimization: OptimizationManifest
108
+ metrics: BuildMetrics
109
+ }
110
+
111
+ export interface ClientBuildManifest {
112
+ entryPoints: string[]
113
+ chunks: ChunkManifest[]
114
+ assets: AssetManifest[]
115
+ publicPath: string
116
+ }
117
+
118
+ export interface ServerBuildManifest {
119
+ entryPoint: string
120
+ dependencies: string[]
121
+ externals: string[]
122
+ }
123
+
124
+ export interface ChunkManifest {
125
+ name: string
126
+ file: string
127
+ size: number
128
+ hash: string
129
+ imports: string[]
130
+ dynamicImports: string[]
131
+ }
132
+
133
+ export interface AssetManifest {
134
+ name: string
135
+ file: string
136
+ size: number
137
+ hash: string
138
+ type: string
139
+ }
140
+
141
+ export interface OptimizationManifest {
142
+ minified: boolean
143
+ treeshaken: boolean
144
+ compressed: boolean
145
+ originalSize: number
146
+ optimizedSize: number
147
+ compressionRatio: number
148
+ }
149
+
150
+ export interface BuildMetrics {
151
+ buildTime: number
152
+ bundleTime: number
153
+ optimizationTime: number
154
+ totalSize: number
155
+ gzippedSize: number
156
+ chunkCount: number
157
+ assetCount: number
158
+ }
159
+
160
+ export interface BuildCache {
161
+ enabled: boolean
162
+ directory: string
163
+ strategy: 'filesystem' | 'memory' | 'hybrid'
164
+ maxSize: number
165
+ ttl: number
166
+ }
167
+
168
+ export interface BuildWatcher {
169
+ enabled: boolean
170
+ ignored: string[]
171
+ polling: boolean
172
+ interval: number
173
+ debounce: number
174
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Configuration-related types
3
+ * Centralized type definitions for all configuration interfaces
4
+ */
5
+
6
+ // Re-export all configuration types from schema
7
+ export type {
8
+ FluxStackConfig,
9
+ AppConfig,
10
+ ServerConfig,
11
+ ClientConfig,
12
+ BuildConfig,
13
+ LoggingConfig,
14
+ MonitoringConfig,
15
+ PluginConfig,
16
+ DatabaseConfig,
17
+ AuthConfig,
18
+ EmailConfig,
19
+ StorageConfig,
20
+ LogLevel,
21
+ BuildTarget,
22
+ LogFormat,
23
+ CorsConfig,
24
+ MiddlewareConfig,
25
+ ProxyConfig,
26
+ ClientBuildConfig,
27
+ OptimizationConfig,
28
+ LogTransportConfig,
29
+ MetricsConfig,
30
+ ProfilingConfig
31
+ } from "../config/schema"
32
+
33
+ // Re-export configuration loading types
34
+ export type {
35
+ // EnvironmentInfo,
36
+ ConfigLoadOptions,
37
+ ConfigLoadResult,
38
+ ValidationResult,
39
+ ValidationError as ConfigValidationError,
40
+ ValidationWarning
41
+ } from "../config/loader"
42
+
43
+ // Additional configuration utility types
44
+ export interface ConfigOverride {
45
+ path: string
46
+ value: any
47
+ source: 'env' | 'file' | 'runtime'
48
+ }
49
+
50
+ export interface ConfigMergeOptions {
51
+ deep?: boolean
52
+ arrays?: 'replace' | 'merge' | 'concat'
53
+ overrideArrays?: boolean
54
+ }
55
+
56
+ export interface ConfigValidationOptions {
57
+ strict?: boolean
58
+ allowUnknown?: boolean
59
+ stripUnknown?: boolean
60
+ warnings?: boolean
61
+ }
62
+
63
+ export interface ConfigSource {
64
+ type: 'file' | 'env' | 'default' | 'override'
65
+ path?: string
66
+ priority: number
67
+ data: any
68
+ }
@@ -0,0 +1,127 @@
1
+ // Re-export all configuration types
2
+ export * from "./config"
3
+
4
+ // Ensure critical types are explicitly exported
5
+ export type {
6
+ FluxStackConfig,
7
+ AppConfig,
8
+ ServerConfig,
9
+ ClientConfig,
10
+ BuildConfig,
11
+ LoggingConfig,
12
+ MonitoringConfig,
13
+ PluginConfig
14
+ } from "../config/schema"
15
+
16
+ // Re-export plugin types (explicitly handling conflicts)
17
+ export type {
18
+ Plugin,
19
+ PluginContext,
20
+ PluginUtils,
21
+ PluginManifest,
22
+ PluginLoadResult,
23
+ PluginDiscoveryOptions,
24
+ // PluginHooks,
25
+ // PluginConfig as PluginConfigOptions,
26
+ PluginHook,
27
+ PluginPriority,
28
+ RequestContext,
29
+ ResponseContext,
30
+ ErrorContext
31
+ } from "./plugin"
32
+
33
+ // Re-export additional plugin types from core plugins
34
+ export type {
35
+ Plugin as CorePlugin,
36
+ PluginContext as CorePluginContext,
37
+ PluginUtils as CorePluginUtils,
38
+ RequestContext as CoreRequestContext,
39
+ ResponseContext as CoreResponseContext,
40
+ ErrorContext as CoreErrorContext
41
+ } from "../plugins/types"
42
+
43
+ // Re-export API types
44
+ export type {
45
+ HttpMethod,
46
+ ApiEndpoint,
47
+ ApiSchema,
48
+ ApiResponse,
49
+ ApiError,
50
+ ApiMeta,
51
+ PaginationMeta,
52
+ TimingMeta
53
+ } from "./api"
54
+
55
+ // Re-export build types (explicitly handle BuildTarget conflict)
56
+ export type {
57
+ BuildTarget,
58
+ BuildMode,
59
+ BundleFormat,
60
+ BuildOptions,
61
+ BuildResult,
62
+ BuildOutputFile,
63
+ BuildWarning,
64
+ BuildError,
65
+ BuildStats
66
+ } from "./build"
67
+
68
+ // Re-export framework types
69
+ export type {
70
+ FluxStackFrameworkOptions,
71
+ FrameworkContext,
72
+ FrameworkStats,
73
+ FrameworkHooks,
74
+ RouteDefinition,
75
+ MiddlewareDefinition,
76
+ ServiceDefinition
77
+ } from "../framework/types"
78
+
79
+ // Re-export utility types
80
+ export type {
81
+ Logger
82
+ } from "../utils/logger/index"
83
+
84
+ export type {
85
+ FluxStackError,
86
+ ValidationError,
87
+ NotFoundError,
88
+ UnauthorizedError,
89
+ ForbiddenError,
90
+ ConflictError,
91
+ InternalServerError,
92
+ ServiceUnavailableError
93
+ } from "../utils/errors"
94
+
95
+ export type {
96
+ Metric,
97
+ Counter,
98
+ Gauge,
99
+ Histogram,
100
+ SystemMetrics,
101
+ HttpMetrics
102
+ } from "../utils/monitoring"
103
+
104
+ // Legacy configuration interface for backward compatibility
105
+ export interface LegacyFluxStackConfig {
106
+ port?: number
107
+ vitePort?: number
108
+ clientPath?: string
109
+ apiPrefix?: string
110
+ cors?: {
111
+ origins?: string[]
112
+ methods?: string[]
113
+ headers?: string[]
114
+ }
115
+ build?: {
116
+ outDir?: string
117
+ target?: string
118
+ }
119
+ }
120
+
121
+ export interface FluxStackContext {
122
+ config: any // Use any to avoid circular dependency
123
+ isDevelopment: boolean
124
+ isProduction: boolean
125
+ isTest: boolean
126
+ environment: string
127
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Plugin system types
3
+ * Comprehensive type definitions for the plugin system
4
+ */
5
+
6
+ // Re-export plugin types
7
+ export type {
8
+ Plugin,
9
+ PluginContext,
10
+ PluginUtils,
11
+ RequestContext,
12
+ ResponseContext,
13
+ ErrorContext
14
+ } from "../plugins/types"
15
+
16
+ // Additional plugin-related types
17
+ export interface PluginManifest {
18
+ name: string
19
+ version: string
20
+ description: string
21
+ author: string
22
+ license: string
23
+ homepage?: string
24
+ repository?: string
25
+ keywords: string[]
26
+ dependencies: Record<string, string>
27
+ peerDependencies?: Record<string, string>
28
+ fluxstack: {
29
+ version: string
30
+ hooks: string[]
31
+ config?: any
32
+ }
33
+ }
34
+
35
+ export interface PluginLoadResult {
36
+ success: boolean
37
+ plugin?: Plugin
38
+ error?: string
39
+ warnings?: string[]
40
+ }
41
+
42
+ export interface PluginRegistryState {
43
+ plugins: Map<string, Plugin>
44
+ loadOrder: string[]
45
+ dependencies: Map<string, string[]>
46
+ conflicts: string[]
47
+ }
48
+
49
+ export interface PluginHookResult {
50
+ success: boolean
51
+ error?: Error
52
+ duration: number
53
+ plugin: string
54
+ hook: string
55
+ }
56
+
57
+ export interface PluginMetrics {
58
+ loadTime: number
59
+ setupTime: number
60
+ hookExecutions: Map<string, number>
61
+ errors: number
62
+ warnings: number
63
+ }
64
+
65
+ export type PluginHook =
66
+ | 'setup'
67
+ | 'onServerStart'
68
+ | 'onServerStop'
69
+ | 'onRequest'
70
+ | 'onResponse'
71
+ | 'onError'
72
+
73
+ export type PluginPriority = 'highest' | 'high' | 'normal' | 'low' | 'lowest' | number
74
+
75
+ export interface PluginConfigSchema {
76
+ type: 'object'
77
+ properties: Record<string, any>
78
+ required?: string[]
79
+ additionalProperties?: boolean
80
+ }
81
+
82
+ export interface PluginDiscoveryOptions {
83
+ directories?: string[]
84
+ patterns?: string[]
85
+ includeBuiltIn?: boolean
86
+ includeExternal?: boolean
87
+ }
88
+
89
+ export interface PluginInstallOptions {
90
+ version?: string
91
+ registry?: string
92
+ force?: boolean
93
+ dev?: boolean
94
+ }
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Tests for Error Handling System
3
+ */
4
+
5
+ import { describe, it, expect } from 'vitest'
6
+ import {
7
+ FluxStackError,
8
+ ValidationError,
9
+ NotFoundError,
10
+ UnauthorizedError,
11
+ ForbiddenError,
12
+ ConflictError,
13
+ InternalServerError,
14
+ ServiceUnavailableError
15
+ } from '../errors'
16
+
17
+ describe('Error Classes', () => {
18
+ describe('FluxStackError', () => {
19
+ it('should create error with all properties', () => {
20
+ const context = { field: 'email', value: 'invalid' }
21
+ const error = new FluxStackError('Test error', 'TEST_ERROR', 400, context)
22
+
23
+ expect(error.message).toBe('Test error')
24
+ expect(error.code).toBe('TEST_ERROR')
25
+ expect(error.statusCode).toBe(400)
26
+ expect(error.context).toBe(context)
27
+ expect(error.timestamp).toBeInstanceOf(Date)
28
+ expect(error.name).toBe('FluxStackError')
29
+ })
30
+
31
+ it('should default to status code 500', () => {
32
+ const error = new FluxStackError('Test error', 'TEST_ERROR')
33
+ expect(error.statusCode).toBe(500)
34
+ })
35
+
36
+ it('should serialize to JSON correctly', () => {
37
+ const error = new FluxStackError('Test error', 'TEST_ERROR', 400, { test: true })
38
+ const json = error.toJSON()
39
+
40
+ expect(json.name).toBe('FluxStackError')
41
+ expect(json.message).toBe('Test error')
42
+ expect(json.code).toBe('TEST_ERROR')
43
+ expect(json.statusCode).toBe(400)
44
+ expect(json.context).toEqual({ test: true })
45
+ expect(json.timestamp).toBeInstanceOf(Date)
46
+ expect(json.stack).toBeDefined()
47
+ })
48
+ })
49
+
50
+ describe('ValidationError', () => {
51
+ it('should create validation error with correct defaults', () => {
52
+ const error = new ValidationError('Invalid input')
53
+
54
+ expect(error.message).toBe('Invalid input')
55
+ expect(error.code).toBe('VALIDATION_ERROR')
56
+ expect(error.statusCode).toBe(400)
57
+ expect(error.name).toBe('ValidationError')
58
+ })
59
+
60
+ it('should include context', () => {
61
+ const context = { field: 'email', rule: 'required' }
62
+ const error = new ValidationError('Email is required', context)
63
+
64
+ expect(error.context).toBe(context)
65
+ })
66
+ })
67
+
68
+ describe('NotFoundError', () => {
69
+ it('should create not found error', () => {
70
+ const error = new NotFoundError('User')
71
+
72
+ expect(error.message).toBe('User not found')
73
+ expect(error.code).toBe('NOT_FOUND')
74
+ expect(error.statusCode).toBe(404)
75
+ expect(error.name).toBe('NotFoundError')
76
+ })
77
+ })
78
+
79
+ describe('UnauthorizedError', () => {
80
+ it('should create unauthorized error with default message', () => {
81
+ const error = new UnauthorizedError()
82
+
83
+ expect(error.message).toBe('Unauthorized')
84
+ expect(error.code).toBe('UNAUTHORIZED')
85
+ expect(error.statusCode).toBe(401)
86
+ expect(error.name).toBe('UnauthorizedError')
87
+ })
88
+
89
+ it('should create unauthorized error with custom message', () => {
90
+ const error = new UnauthorizedError('Invalid token')
91
+
92
+ expect(error.message).toBe('Invalid token')
93
+ })
94
+ })
95
+
96
+ describe('ForbiddenError', () => {
97
+ it('should create forbidden error', () => {
98
+ const error = new ForbiddenError('Access denied')
99
+
100
+ expect(error.message).toBe('Access denied')
101
+ expect(error.code).toBe('FORBIDDEN')
102
+ expect(error.statusCode).toBe(403)
103
+ expect(error.name).toBe('ForbiddenError')
104
+ })
105
+ })
106
+
107
+ describe('ConflictError', () => {
108
+ it('should create conflict error', () => {
109
+ const error = new ConflictError('Resource already exists')
110
+
111
+ expect(error.message).toBe('Resource already exists')
112
+ expect(error.code).toBe('CONFLICT')
113
+ expect(error.statusCode).toBe(409)
114
+ expect(error.name).toBe('ConflictError')
115
+ })
116
+ })
117
+
118
+ describe('InternalServerError', () => {
119
+ it('should create internal server error with default message', () => {
120
+ const error = new InternalServerError()
121
+
122
+ expect(error.message).toBe('Internal server error')
123
+ expect(error.code).toBe('INTERNAL_SERVER_ERROR')
124
+ expect(error.statusCode).toBe(500)
125
+ expect(error.name).toBe('InternalServerError')
126
+ })
127
+ })
128
+
129
+ describe('ServiceUnavailableError', () => {
130
+ it('should create service unavailable error', () => {
131
+ const error = new ServiceUnavailableError('Database is down')
132
+
133
+ expect(error.message).toBe('Database is down')
134
+ expect(error.code).toBe('SERVICE_UNAVAILABLE')
135
+ expect(error.statusCode).toBe(503)
136
+ expect(error.name).toBe('ServiceUnavailableError')
137
+ })
138
+ })
139
+ })