@friggframework/devtools 2.0.0-next.6 → 2.0.0-next.60

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 (357) hide show
  1. package/frigg-cli/README.md +1289 -0
  2. package/frigg-cli/__tests__/unit/commands/build.test.js +279 -0
  3. package/frigg-cli/__tests__/unit/commands/db-setup.test.js +649 -0
  4. package/frigg-cli/__tests__/unit/commands/deploy.test.js +320 -0
  5. package/frigg-cli/__tests__/unit/commands/doctor.test.js +309 -0
  6. package/frigg-cli/__tests__/unit/commands/install.test.js +400 -0
  7. package/frigg-cli/__tests__/unit/commands/ui.test.js +346 -0
  8. package/frigg-cli/__tests__/unit/dependencies.test.js +74 -0
  9. package/frigg-cli/__tests__/unit/utils/database-validator.test.js +397 -0
  10. package/frigg-cli/__tests__/unit/utils/error-messages.test.js +345 -0
  11. package/frigg-cli/__tests__/unit/version-detection.test.js +171 -0
  12. package/frigg-cli/__tests__/utils/mock-factory.js +270 -0
  13. package/frigg-cli/__tests__/utils/prisma-mock.js +194 -0
  14. package/frigg-cli/__tests__/utils/test-fixtures.js +463 -0
  15. package/frigg-cli/__tests__/utils/test-setup.js +287 -0
  16. package/frigg-cli/build-command/index.js +53 -14
  17. package/frigg-cli/db-setup-command/index.js +246 -0
  18. package/frigg-cli/deploy-command/SPEC-DEPLOY-DRY-RUN.md +981 -0
  19. package/frigg-cli/deploy-command/index.js +295 -17
  20. package/frigg-cli/doctor-command/index.js +335 -0
  21. package/frigg-cli/generate-command/__tests__/generate-command.test.js +301 -0
  22. package/frigg-cli/generate-command/azure-generator.js +43 -0
  23. package/frigg-cli/generate-command/gcp-generator.js +47 -0
  24. package/frigg-cli/generate-command/index.js +332 -0
  25. package/frigg-cli/generate-command/terraform-generator.js +555 -0
  26. package/frigg-cli/generate-iam-command.js +118 -0
  27. package/frigg-cli/index.js +142 -1
  28. package/frigg-cli/index.test.js +1 -4
  29. package/frigg-cli/init-command/backend-first-handler.js +756 -0
  30. package/frigg-cli/init-command/index.js +93 -0
  31. package/frigg-cli/init-command/template-handler.js +143 -0
  32. package/frigg-cli/install-command/index.js +1 -4
  33. package/frigg-cli/jest.config.js +124 -0
  34. package/frigg-cli/package.json +63 -0
  35. package/frigg-cli/repair-command/index.js +564 -0
  36. package/frigg-cli/start-command/index.js +125 -6
  37. package/frigg-cli/start-command/start-command.test.js +297 -0
  38. package/frigg-cli/test/init-command.test.js +180 -0
  39. package/frigg-cli/test/npm-registry.test.js +319 -0
  40. package/frigg-cli/ui-command/index.js +154 -0
  41. package/frigg-cli/utils/app-resolver.js +319 -0
  42. package/frigg-cli/utils/backend-path.js +16 -17
  43. package/frigg-cli/utils/database-validator.js +167 -0
  44. package/frigg-cli/utils/error-messages.js +329 -0
  45. package/frigg-cli/utils/npm-registry.js +167 -0
  46. package/frigg-cli/utils/process-manager.js +199 -0
  47. package/frigg-cli/utils/repo-detection.js +405 -0
  48. package/infrastructure/ARCHITECTURE.md +487 -0
  49. package/infrastructure/CLAUDE.md +481 -0
  50. package/infrastructure/HEALTH.md +468 -0
  51. package/infrastructure/README.md +522 -0
  52. package/infrastructure/__tests__/fixtures/mock-aws-resources.js +391 -0
  53. package/infrastructure/__tests__/helpers/test-utils.js +277 -0
  54. package/infrastructure/__tests__/postgres-config.test.js +914 -0
  55. package/infrastructure/__tests__/template-generation.test.js +687 -0
  56. package/infrastructure/create-frigg-infrastructure.js +129 -20
  57. package/infrastructure/docs/POSTGRES-CONFIGURATION.md +630 -0
  58. package/infrastructure/docs/PRE-DEPLOYMENT-HEALTH-CHECK-SPEC.md +1317 -0
  59. package/infrastructure/docs/WEBSOCKET-CONFIGURATION.md +105 -0
  60. package/infrastructure/docs/deployment-instructions.md +268 -0
  61. package/infrastructure/docs/generate-iam-command.md +278 -0
  62. package/infrastructure/docs/iam-policy-templates.md +193 -0
  63. package/infrastructure/domains/database/aurora-builder.js +809 -0
  64. package/infrastructure/domains/database/aurora-builder.test.js +950 -0
  65. package/infrastructure/domains/database/aurora-discovery.js +87 -0
  66. package/infrastructure/domains/database/aurora-discovery.test.js +188 -0
  67. package/infrastructure/domains/database/aurora-resolver.js +210 -0
  68. package/infrastructure/domains/database/aurora-resolver.test.js +347 -0
  69. package/infrastructure/domains/database/migration-builder.js +701 -0
  70. package/infrastructure/domains/database/migration-builder.test.js +321 -0
  71. package/infrastructure/domains/database/migration-resolver.js +163 -0
  72. package/infrastructure/domains/database/migration-resolver.test.js +337 -0
  73. package/infrastructure/domains/health/application/ports/IPropertyReconciler.js +164 -0
  74. package/infrastructure/domains/health/application/ports/IResourceDetector.js +129 -0
  75. package/infrastructure/domains/health/application/ports/IResourceImporter.js +142 -0
  76. package/infrastructure/domains/health/application/ports/IStackRepository.js +131 -0
  77. package/infrastructure/domains/health/application/ports/index.js +26 -0
  78. package/infrastructure/domains/health/application/use-cases/__tests__/execute-resource-import-use-case.test.js +679 -0
  79. package/infrastructure/domains/health/application/use-cases/__tests__/mismatch-analyzer-method-name.test.js +167 -0
  80. package/infrastructure/domains/health/application/use-cases/__tests__/repair-via-import-use-case.test.js +1130 -0
  81. package/infrastructure/domains/health/application/use-cases/execute-resource-import-use-case.js +221 -0
  82. package/infrastructure/domains/health/application/use-cases/reconcile-properties-use-case.js +152 -0
  83. package/infrastructure/domains/health/application/use-cases/reconcile-properties-use-case.test.js +343 -0
  84. package/infrastructure/domains/health/application/use-cases/repair-via-import-use-case.js +535 -0
  85. package/infrastructure/domains/health/application/use-cases/repair-via-import-use-case.test.js +376 -0
  86. package/infrastructure/domains/health/application/use-cases/run-health-check-use-case.js +213 -0
  87. package/infrastructure/domains/health/application/use-cases/run-health-check-use-case.test.js +441 -0
  88. package/infrastructure/domains/health/docs/ACME-DEV-DRIFT-ANALYSIS.md +267 -0
  89. package/infrastructure/domains/health/docs/BUILD-VS-DEPLOYED-TEMPLATE-ANALYSIS.md +324 -0
  90. package/infrastructure/domains/health/docs/ORPHAN-DETECTION-ANALYSIS.md +386 -0
  91. package/infrastructure/domains/health/docs/SPEC-CLEANUP-COMMAND.md +1419 -0
  92. package/infrastructure/domains/health/docs/TDD-IMPLEMENTATION-SUMMARY.md +391 -0
  93. package/infrastructure/domains/health/docs/TEMPLATE-COMPARISON-IMPLEMENTATION.md +551 -0
  94. package/infrastructure/domains/health/domain/entities/issue.js +299 -0
  95. package/infrastructure/domains/health/domain/entities/issue.test.js +528 -0
  96. package/infrastructure/domains/health/domain/entities/property-mismatch.js +108 -0
  97. package/infrastructure/domains/health/domain/entities/property-mismatch.test.js +275 -0
  98. package/infrastructure/domains/health/domain/entities/resource.js +159 -0
  99. package/infrastructure/domains/health/domain/entities/resource.test.js +432 -0
  100. package/infrastructure/domains/health/domain/entities/stack-health-report.js +306 -0
  101. package/infrastructure/domains/health/domain/entities/stack-health-report.test.js +601 -0
  102. package/infrastructure/domains/health/domain/services/__tests__/health-score-percentage-based.test.js +380 -0
  103. package/infrastructure/domains/health/domain/services/__tests__/import-progress-monitor.test.js +971 -0
  104. package/infrastructure/domains/health/domain/services/__tests__/import-template-generator.test.js +1150 -0
  105. package/infrastructure/domains/health/domain/services/__tests__/logical-id-mapper.test.js +672 -0
  106. package/infrastructure/domains/health/domain/services/__tests__/template-parser.test.js +496 -0
  107. package/infrastructure/domains/health/domain/services/__tests__/update-progress-monitor.test.js +419 -0
  108. package/infrastructure/domains/health/domain/services/health-score-calculator.js +248 -0
  109. package/infrastructure/domains/health/domain/services/health-score-calculator.test.js +504 -0
  110. package/infrastructure/domains/health/domain/services/import-progress-monitor.js +195 -0
  111. package/infrastructure/domains/health/domain/services/import-template-generator.js +435 -0
  112. package/infrastructure/domains/health/domain/services/logical-id-mapper.js +345 -0
  113. package/infrastructure/domains/health/domain/services/mismatch-analyzer.js +234 -0
  114. package/infrastructure/domains/health/domain/services/mismatch-analyzer.test.js +431 -0
  115. package/infrastructure/domains/health/domain/services/property-mutability-config.js +382 -0
  116. package/infrastructure/domains/health/domain/services/template-parser.js +245 -0
  117. package/infrastructure/domains/health/domain/services/update-progress-monitor.js +192 -0
  118. package/infrastructure/domains/health/domain/value-objects/health-score.js +138 -0
  119. package/infrastructure/domains/health/domain/value-objects/health-score.test.js +267 -0
  120. package/infrastructure/domains/health/domain/value-objects/property-mutability.js +161 -0
  121. package/infrastructure/domains/health/domain/value-objects/property-mutability.test.js +198 -0
  122. package/infrastructure/domains/health/domain/value-objects/resource-state.js +167 -0
  123. package/infrastructure/domains/health/domain/value-objects/resource-state.test.js +196 -0
  124. package/infrastructure/domains/health/domain/value-objects/stack-identifier.js +192 -0
  125. package/infrastructure/domains/health/domain/value-objects/stack-identifier.test.js +262 -0
  126. package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-cfn-tagged.test.js +312 -0
  127. package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-multi-stack.test.js +367 -0
  128. package/infrastructure/domains/health/infrastructure/adapters/__tests__/orphan-detection-relationship-analysis.test.js +432 -0
  129. package/infrastructure/domains/health/infrastructure/adapters/aws-property-reconciler.js +784 -0
  130. package/infrastructure/domains/health/infrastructure/adapters/aws-property-reconciler.test.js +1133 -0
  131. package/infrastructure/domains/health/infrastructure/adapters/aws-resource-detector.js +565 -0
  132. package/infrastructure/domains/health/infrastructure/adapters/aws-resource-detector.test.js +554 -0
  133. package/infrastructure/domains/health/infrastructure/adapters/aws-resource-importer.js +318 -0
  134. package/infrastructure/domains/health/infrastructure/adapters/aws-resource-importer.test.js +398 -0
  135. package/infrastructure/domains/health/infrastructure/adapters/aws-stack-repository.js +777 -0
  136. package/infrastructure/domains/health/infrastructure/adapters/aws-stack-repository.test.js +580 -0
  137. package/infrastructure/domains/integration/integration-builder.js +404 -0
  138. package/infrastructure/domains/integration/integration-builder.test.js +690 -0
  139. package/infrastructure/domains/integration/integration-resolver.js +170 -0
  140. package/infrastructure/domains/integration/integration-resolver.test.js +369 -0
  141. package/infrastructure/domains/integration/websocket-builder.js +69 -0
  142. package/infrastructure/domains/integration/websocket-builder.test.js +195 -0
  143. package/infrastructure/domains/networking/vpc-builder.js +2051 -0
  144. package/infrastructure/domains/networking/vpc-builder.test.js +1960 -0
  145. package/infrastructure/domains/networking/vpc-discovery.js +177 -0
  146. package/infrastructure/domains/networking/vpc-discovery.test.js +350 -0
  147. package/infrastructure/domains/networking/vpc-resolver.js +505 -0
  148. package/infrastructure/domains/networking/vpc-resolver.test.js +801 -0
  149. package/infrastructure/domains/parameters/ssm-builder.js +79 -0
  150. package/infrastructure/domains/parameters/ssm-builder.test.js +189 -0
  151. package/infrastructure/domains/parameters/ssm-discovery.js +84 -0
  152. package/infrastructure/domains/parameters/ssm-discovery.test.js +210 -0
  153. package/infrastructure/domains/security/iam-generator.js +816 -0
  154. package/infrastructure/domains/security/iam-generator.test.js +204 -0
  155. package/infrastructure/domains/security/kms-builder.js +415 -0
  156. package/infrastructure/domains/security/kms-builder.test.js +392 -0
  157. package/infrastructure/domains/security/kms-discovery.js +80 -0
  158. package/infrastructure/domains/security/kms-discovery.test.js +177 -0
  159. package/infrastructure/domains/security/kms-resolver.js +96 -0
  160. package/infrastructure/domains/security/kms-resolver.test.js +216 -0
  161. package/infrastructure/domains/security/templates/frigg-deployment-iam-stack.yaml +401 -0
  162. package/infrastructure/domains/security/templates/iam-policy-basic.json +218 -0
  163. package/infrastructure/domains/security/templates/iam-policy-full.json +288 -0
  164. package/infrastructure/domains/shared/base-builder.js +112 -0
  165. package/infrastructure/domains/shared/base-resolver.js +186 -0
  166. package/infrastructure/domains/shared/base-resolver.test.js +305 -0
  167. package/infrastructure/domains/shared/builder-orchestrator.js +212 -0
  168. package/infrastructure/domains/shared/builder-orchestrator.test.js +213 -0
  169. package/infrastructure/domains/shared/cloudformation-discovery-v2.js +334 -0
  170. package/infrastructure/domains/shared/cloudformation-discovery.js +672 -0
  171. package/infrastructure/domains/shared/cloudformation-discovery.test.js +985 -0
  172. package/infrastructure/domains/shared/environment-builder.js +119 -0
  173. package/infrastructure/domains/shared/environment-builder.test.js +247 -0
  174. package/infrastructure/domains/shared/providers/aws-provider-adapter.js +579 -0
  175. package/infrastructure/domains/shared/providers/aws-provider-adapter.test.js +416 -0
  176. package/infrastructure/domains/shared/providers/azure-provider-adapter.stub.js +93 -0
  177. package/infrastructure/domains/shared/providers/cloud-provider-adapter.js +136 -0
  178. package/infrastructure/domains/shared/providers/gcp-provider-adapter.stub.js +82 -0
  179. package/infrastructure/domains/shared/providers/provider-factory.js +108 -0
  180. package/infrastructure/domains/shared/providers/provider-factory.test.js +170 -0
  181. package/infrastructure/domains/shared/resource-discovery.enhanced.test.js +306 -0
  182. package/infrastructure/domains/shared/resource-discovery.js +233 -0
  183. package/infrastructure/domains/shared/resource-discovery.test.js +588 -0
  184. package/infrastructure/domains/shared/types/app-definition.js +205 -0
  185. package/infrastructure/domains/shared/types/discovery-result.js +106 -0
  186. package/infrastructure/domains/shared/types/discovery-result.test.js +258 -0
  187. package/infrastructure/domains/shared/types/index.js +46 -0
  188. package/infrastructure/domains/shared/types/resource-ownership.js +108 -0
  189. package/infrastructure/domains/shared/types/resource-ownership.test.js +101 -0
  190. package/infrastructure/domains/shared/utilities/base-definition-factory.js +394 -0
  191. package/infrastructure/domains/shared/utilities/base-definition-factory.js.bak +338 -0
  192. package/infrastructure/domains/shared/utilities/base-definition-factory.test.js +291 -0
  193. package/infrastructure/domains/shared/utilities/handler-path-resolver.js +134 -0
  194. package/infrastructure/domains/shared/utilities/handler-path-resolver.test.js +268 -0
  195. package/infrastructure/domains/shared/utilities/prisma-layer-manager.js +159 -0
  196. package/infrastructure/domains/shared/utilities/prisma-layer-manager.test.js +444 -0
  197. package/infrastructure/domains/shared/validation/env-validator.js +78 -0
  198. package/infrastructure/domains/shared/validation/env-validator.test.js +173 -0
  199. package/infrastructure/domains/shared/validation/plugin-validator.js +187 -0
  200. package/infrastructure/domains/shared/validation/plugin-validator.test.js +323 -0
  201. package/infrastructure/esbuild.config.js +53 -0
  202. package/infrastructure/infrastructure-composer.js +117 -0
  203. package/infrastructure/infrastructure-composer.test.js +1895 -0
  204. package/infrastructure/integration.test.js +383 -0
  205. package/infrastructure/scripts/build-prisma-layer.js +701 -0
  206. package/infrastructure/scripts/build-prisma-layer.test.js +170 -0
  207. package/infrastructure/scripts/build-time-discovery.js +238 -0
  208. package/infrastructure/scripts/build-time-discovery.test.js +379 -0
  209. package/infrastructure/scripts/run-discovery.js +110 -0
  210. package/infrastructure/scripts/verify-prisma-layer.js +72 -0
  211. package/layers/prisma/.build-complete +3 -0
  212. package/layers/prisma/nodejs/package.json +8 -0
  213. package/management-ui/.eslintrc.js +22 -0
  214. package/management-ui/README.md +203 -0
  215. package/management-ui/components.json +21 -0
  216. package/management-ui/docs/phase2-integration-guide.md +320 -0
  217. package/management-ui/index.html +13 -0
  218. package/management-ui/package.json +76 -0
  219. package/management-ui/packages/devtools/frigg-cli/ui-command/index.js +302 -0
  220. package/management-ui/postcss.config.js +6 -0
  221. package/management-ui/server/api/backend.js +256 -0
  222. package/management-ui/server/api/cli.js +315 -0
  223. package/management-ui/server/api/codegen.js +663 -0
  224. package/management-ui/server/api/connections.js +857 -0
  225. package/management-ui/server/api/discovery.js +185 -0
  226. package/management-ui/server/api/environment/index.js +1 -0
  227. package/management-ui/server/api/environment/router.js +378 -0
  228. package/management-ui/server/api/environment.js +328 -0
  229. package/management-ui/server/api/integrations.js +876 -0
  230. package/management-ui/server/api/logs.js +248 -0
  231. package/management-ui/server/api/monitoring.js +282 -0
  232. package/management-ui/server/api/open-ide.js +31 -0
  233. package/management-ui/server/api/project.js +1029 -0
  234. package/management-ui/server/api/users/sessions.js +371 -0
  235. package/management-ui/server/api/users/simulation.js +254 -0
  236. package/management-ui/server/api/users.js +362 -0
  237. package/management-ui/server/api-contract.md +275 -0
  238. package/management-ui/server/index.js +873 -0
  239. package/management-ui/server/middleware/errorHandler.js +93 -0
  240. package/management-ui/server/middleware/security.js +32 -0
  241. package/management-ui/server/processManager.js +296 -0
  242. package/management-ui/server/server.js +346 -0
  243. package/management-ui/server/services/aws-monitor.js +413 -0
  244. package/management-ui/server/services/npm-registry.js +347 -0
  245. package/management-ui/server/services/template-engine.js +538 -0
  246. package/management-ui/server/utils/cliIntegration.js +220 -0
  247. package/management-ui/server/utils/environment/auditLogger.js +471 -0
  248. package/management-ui/server/utils/environment/awsParameterStore.js +275 -0
  249. package/management-ui/server/utils/environment/encryption.js +278 -0
  250. package/management-ui/server/utils/environment/envFileManager.js +286 -0
  251. package/management-ui/server/utils/import-commonjs.js +28 -0
  252. package/management-ui/server/utils/response.js +83 -0
  253. package/management-ui/server/websocket/handler.js +325 -0
  254. package/management-ui/src/App.jsx +25 -0
  255. package/management-ui/src/assets/FriggLogo.svg +1 -0
  256. package/management-ui/src/components/AppRouter.jsx +65 -0
  257. package/management-ui/src/components/Button.jsx +70 -0
  258. package/management-ui/src/components/Card.jsx +97 -0
  259. package/management-ui/src/components/EnvironmentCompare.jsx +400 -0
  260. package/management-ui/src/components/EnvironmentEditor.jsx +372 -0
  261. package/management-ui/src/components/EnvironmentImportExport.jsx +469 -0
  262. package/management-ui/src/components/EnvironmentSchema.jsx +491 -0
  263. package/management-ui/src/components/EnvironmentSecurity.jsx +463 -0
  264. package/management-ui/src/components/ErrorBoundary.jsx +73 -0
  265. package/management-ui/src/components/IntegrationCard.jsx +481 -0
  266. package/management-ui/src/components/IntegrationCardEnhanced.jsx +770 -0
  267. package/management-ui/src/components/IntegrationExplorer.jsx +379 -0
  268. package/management-ui/src/components/IntegrationStatus.jsx +336 -0
  269. package/management-ui/src/components/Layout.jsx +716 -0
  270. package/management-ui/src/components/LoadingSpinner.jsx +113 -0
  271. package/management-ui/src/components/RepositoryPicker.jsx +248 -0
  272. package/management-ui/src/components/SessionMonitor.jsx +350 -0
  273. package/management-ui/src/components/StatusBadge.jsx +208 -0
  274. package/management-ui/src/components/UserContextSwitcher.jsx +212 -0
  275. package/management-ui/src/components/UserSimulation.jsx +327 -0
  276. package/management-ui/src/components/Welcome.jsx +434 -0
  277. package/management-ui/src/components/codegen/APIEndpointGenerator.jsx +637 -0
  278. package/management-ui/src/components/codegen/APIModuleSelector.jsx +227 -0
  279. package/management-ui/src/components/codegen/CodeGenerationWizard.jsx +247 -0
  280. package/management-ui/src/components/codegen/CodePreviewEditor.jsx +316 -0
  281. package/management-ui/src/components/codegen/DynamicModuleForm.jsx +271 -0
  282. package/management-ui/src/components/codegen/FormBuilder.jsx +737 -0
  283. package/management-ui/src/components/codegen/IntegrationGenerator.jsx +855 -0
  284. package/management-ui/src/components/codegen/ProjectScaffoldWizard.jsx +797 -0
  285. package/management-ui/src/components/codegen/SchemaBuilder.jsx +303 -0
  286. package/management-ui/src/components/codegen/TemplateSelector.jsx +586 -0
  287. package/management-ui/src/components/codegen/index.js +10 -0
  288. package/management-ui/src/components/connections/ConnectionConfigForm.jsx +362 -0
  289. package/management-ui/src/components/connections/ConnectionHealthMonitor.jsx +182 -0
  290. package/management-ui/src/components/connections/ConnectionTester.jsx +200 -0
  291. package/management-ui/src/components/connections/EntityRelationshipMapper.jsx +292 -0
  292. package/management-ui/src/components/connections/OAuthFlow.jsx +204 -0
  293. package/management-ui/src/components/connections/index.js +5 -0
  294. package/management-ui/src/components/index.js +21 -0
  295. package/management-ui/src/components/monitoring/APIGatewayMetrics.jsx +222 -0
  296. package/management-ui/src/components/monitoring/LambdaMetrics.jsx +169 -0
  297. package/management-ui/src/components/monitoring/MetricsChart.jsx +197 -0
  298. package/management-ui/src/components/monitoring/MonitoringDashboard.jsx +393 -0
  299. package/management-ui/src/components/monitoring/SQSMetrics.jsx +246 -0
  300. package/management-ui/src/components/monitoring/index.js +6 -0
  301. package/management-ui/src/components/monitoring/monitoring.css +218 -0
  302. package/management-ui/src/components/theme-provider.jsx +52 -0
  303. package/management-ui/src/components/theme-toggle.jsx +39 -0
  304. package/management-ui/src/components/ui/badge.tsx +36 -0
  305. package/management-ui/src/components/ui/button.test.jsx +56 -0
  306. package/management-ui/src/components/ui/button.tsx +57 -0
  307. package/management-ui/src/components/ui/card.tsx +76 -0
  308. package/management-ui/src/components/ui/dropdown-menu.tsx +199 -0
  309. package/management-ui/src/components/ui/select.tsx +157 -0
  310. package/management-ui/src/components/ui/skeleton.jsx +15 -0
  311. package/management-ui/src/hooks/useFrigg.jsx +387 -0
  312. package/management-ui/src/hooks/useSocket.jsx +58 -0
  313. package/management-ui/src/index.css +193 -0
  314. package/management-ui/src/lib/utils.ts +6 -0
  315. package/management-ui/src/main.jsx +10 -0
  316. package/management-ui/src/pages/CodeGeneration.jsx +14 -0
  317. package/management-ui/src/pages/Connections.jsx +252 -0
  318. package/management-ui/src/pages/ConnectionsEnhanced.jsx +633 -0
  319. package/management-ui/src/pages/Dashboard.jsx +311 -0
  320. package/management-ui/src/pages/Environment.jsx +314 -0
  321. package/management-ui/src/pages/IntegrationConfigure.jsx +669 -0
  322. package/management-ui/src/pages/IntegrationDiscovery.jsx +567 -0
  323. package/management-ui/src/pages/IntegrationTest.jsx +742 -0
  324. package/management-ui/src/pages/Integrations.jsx +253 -0
  325. package/management-ui/src/pages/Monitoring.jsx +17 -0
  326. package/management-ui/src/pages/Simulation.jsx +155 -0
  327. package/management-ui/src/pages/Users.jsx +492 -0
  328. package/management-ui/src/services/api.js +41 -0
  329. package/management-ui/src/services/apiModuleService.js +193 -0
  330. package/management-ui/src/services/websocket-handlers.js +120 -0
  331. package/management-ui/src/test/api/project.test.js +273 -0
  332. package/management-ui/src/test/components/Welcome.test.jsx +378 -0
  333. package/management-ui/src/test/mocks/server.js +178 -0
  334. package/management-ui/src/test/setup.js +61 -0
  335. package/management-ui/src/test/utils/test-utils.jsx +134 -0
  336. package/management-ui/src/utils/repository.js +98 -0
  337. package/management-ui/src/utils/repository.test.js +118 -0
  338. package/management-ui/src/workflows/phase2-integration-workflows.js +884 -0
  339. package/management-ui/tailwind.config.js +63 -0
  340. package/management-ui/tsconfig.json +37 -0
  341. package/management-ui/tsconfig.node.json +10 -0
  342. package/management-ui/vite.config.js +26 -0
  343. package/management-ui/vitest.config.js +38 -0
  344. package/package.json +35 -14
  345. package/test/index.js +2 -4
  346. package/test/mock-integration.js +4 -14
  347. package/infrastructure/app-handler-helpers.js +0 -57
  348. package/infrastructure/backend-utils.js +0 -87
  349. package/infrastructure/routers/auth.js +0 -26
  350. package/infrastructure/routers/integration-defined-routers.js +0 -42
  351. package/infrastructure/routers/middleware/loadUser.js +0 -15
  352. package/infrastructure/routers/middleware/requireLoggedInUser.js +0 -12
  353. package/infrastructure/routers/user.js +0 -41
  354. package/infrastructure/routers/websocket.js +0 -55
  355. package/infrastructure/serverless-template.js +0 -291
  356. package/infrastructure/workers/integration-defined-workers.js +0 -24
  357. package/test/auther-definition-tester.js +0 -125
@@ -0,0 +1,270 @@
1
+ /**
2
+ * MockFactory - Factory for creating standardized mocks
3
+ * Provides consistent mock implementations across all CLI tests
4
+ */
5
+ class MockFactory {
6
+ /**
7
+ * Create a file system mock
8
+ * @returns {object} - Mock fs implementation
9
+ */
10
+ static createFileSystem() {
11
+ return {
12
+ existsSync: jest.fn().mockReturnValue(true),
13
+ readFileSync: jest.fn().mockReturnValue('{}'),
14
+ writeFileSync: jest.fn(),
15
+ mkdirSync: jest.fn(),
16
+ readdirSync: jest.fn().mockReturnValue([]),
17
+ statSync: jest.fn().mockReturnValue({
18
+ isDirectory: () => false,
19
+ isFile: () => true
20
+ }),
21
+ copyFileSync: jest.fn(),
22
+ unlinkSync: jest.fn(),
23
+ rmdirSync: jest.fn(),
24
+ constants: {
25
+ F_OK: 0,
26
+ R_OK: 4,
27
+ W_OK: 2,
28
+ X_OK: 1
29
+ }
30
+ };
31
+ }
32
+
33
+ /**
34
+ * Create a logger mock
35
+ * @returns {object} - Mock logger implementation
36
+ */
37
+ static createLogger() {
38
+ return {
39
+ info: jest.fn(),
40
+ error: jest.fn(),
41
+ debug: jest.fn(),
42
+ warn: jest.fn(),
43
+ logInfo: jest.fn(),
44
+ logError: jest.fn(),
45
+ logDebug: jest.fn(),
46
+ logWarn: jest.fn()
47
+ };
48
+ }
49
+
50
+ /**
51
+ * Create a package manager mock
52
+ * @returns {object} - Mock package manager implementation
53
+ */
54
+ static createPackageManager() {
55
+ return {
56
+ install: jest.fn().mockResolvedValue({ success: true }),
57
+ list: jest.fn().mockResolvedValue([]),
58
+ exists: jest.fn().mockResolvedValue(true),
59
+ getInfo: jest.fn().mockResolvedValue({
60
+ name: 'test-package',
61
+ version: '1.0.0'
62
+ }),
63
+ search: jest.fn().mockResolvedValue([])
64
+ };
65
+ }
66
+
67
+ /**
68
+ * Create a child process mock
69
+ * @returns {object} - Mock child_process implementation
70
+ */
71
+ static createChildProcess() {
72
+ return {
73
+ execSync: jest.fn().mockReturnValue(''),
74
+ exec: jest.fn(),
75
+ spawn: jest.fn().mockReturnValue({
76
+ stdout: { on: jest.fn() },
77
+ stderr: { on: jest.fn() },
78
+ on: jest.fn((event, callback) => {
79
+ if (event === 'close') {
80
+ callback(0);
81
+ }
82
+ })
83
+ }),
84
+ fork: jest.fn()
85
+ };
86
+ }
87
+
88
+ /**
89
+ * Create a git mock
90
+ * @returns {object} - Mock git implementation
91
+ */
92
+ static createGit() {
93
+ return {
94
+ init: jest.fn(),
95
+ add: jest.fn(),
96
+ commit: jest.fn(),
97
+ status: jest.fn().mockReturnValue({
98
+ clean: true,
99
+ files: []
100
+ }),
101
+ branch: jest.fn().mockReturnValue('main'),
102
+ remote: jest.fn().mockReturnValue('origin'),
103
+ isRepo: jest.fn().mockReturnValue(true)
104
+ };
105
+ }
106
+
107
+ /**
108
+ * Create a config loader mock
109
+ * @returns {object} - Mock config loader implementation
110
+ */
111
+ static createConfigLoader() {
112
+ return {
113
+ load: jest.fn().mockReturnValue({
114
+ stage: 'dev',
115
+ region: 'us-east-1',
116
+ profile: 'default'
117
+ }),
118
+ validate: jest.fn().mockReturnValue(true),
119
+ save: jest.fn(),
120
+ merge: jest.fn()
121
+ };
122
+ }
123
+
124
+ /**
125
+ * Create an app resolver mock
126
+ * @returns {object} - Mock app resolver implementation
127
+ */
128
+ static createAppResolver() {
129
+ return {
130
+ resolveAppPath: jest.fn().mockReturnValue('/mock/app/path'),
131
+ findNearestBackendPackageJson: jest.fn().mockReturnValue('/mock/backend/package.json'),
132
+ validateBackendPath: jest.fn().mockReturnValue(true),
133
+ getProjectRoot: jest.fn().mockReturnValue('/mock/project'),
134
+ findConfigFile: jest.fn().mockReturnValue('/mock/config.json')
135
+ };
136
+ }
137
+
138
+ /**
139
+ * Create a network mock
140
+ * @returns {object} - Mock network implementation
141
+ */
142
+ static createNetwork() {
143
+ return {
144
+ get: jest.fn().mockResolvedValue({
145
+ status: 200,
146
+ data: {}
147
+ }),
148
+ post: jest.fn().mockResolvedValue({
149
+ status: 200,
150
+ data: {}
151
+ }),
152
+ put: jest.fn().mockResolvedValue({
153
+ status: 200,
154
+ data: {}
155
+ }),
156
+ delete: jest.fn().mockResolvedValue({
157
+ status: 200,
158
+ data: {}
159
+ })
160
+ };
161
+ }
162
+
163
+ /**
164
+ * Create a comprehensive mock environment
165
+ * @returns {object} - Complete mock environment
166
+ */
167
+ static createMockEnvironment() {
168
+ return {
169
+ fs: this.createFileSystem(),
170
+ logger: this.createLogger(),
171
+ packageManager: this.createPackageManager(),
172
+ childProcess: this.createChildProcess(),
173
+ git: this.createGit(),
174
+ config: this.createConfigLoader(),
175
+ appResolver: this.createAppResolver(),
176
+ network: this.createNetwork()
177
+ };
178
+ }
179
+
180
+ /**
181
+ * Create a mock for process.env
182
+ * @param {object} customEnv - Custom environment variables
183
+ * @returns {object} - Mock environment
184
+ */
185
+ static createProcessEnv(customEnv = {}) {
186
+ return {
187
+ NODE_ENV: 'test',
188
+ HOME: '/mock/home',
189
+ PATH: '/mock/path',
190
+ ...customEnv
191
+ };
192
+ }
193
+
194
+ /**
195
+ * Create success response mock
196
+ * @param {any} data - Response data
197
+ * @returns {object} - Success response
198
+ */
199
+ static createSuccessResponse(data = {}) {
200
+ return {
201
+ success: true,
202
+ data,
203
+ message: 'Operation completed successfully'
204
+ };
205
+ }
206
+
207
+ /**
208
+ * Create error response mock
209
+ * @param {string} message - Error message
210
+ * @param {string} code - Error code
211
+ * @returns {object} - Error response
212
+ */
213
+ static createErrorResponse(message = 'An error occurred', code = 'GENERIC_ERROR') {
214
+ return {
215
+ success: false,
216
+ error: {
217
+ message,
218
+ code,
219
+ stack: 'Mock stack trace'
220
+ }
221
+ };
222
+ }
223
+
224
+ /**
225
+ * Create package.json mock
226
+ * @param {object} overrides - Custom package.json properties
227
+ * @returns {object} - Mock package.json
228
+ */
229
+ static createPackageJson(overrides = {}) {
230
+ return {
231
+ name: 'test-package',
232
+ version: '1.0.0',
233
+ description: 'Test package',
234
+ main: 'index.js',
235
+ scripts: {
236
+ test: 'jest',
237
+ start: 'node index.js'
238
+ },
239
+ dependencies: {},
240
+ devDependencies: {},
241
+ ...overrides
242
+ };
243
+ }
244
+
245
+ /**
246
+ * Create frigg config mock
247
+ * @param {object} overrides - Custom config properties
248
+ * @returns {object} - Mock frigg config
249
+ */
250
+ static createFriggConfig(overrides = {}) {
251
+ return {
252
+ stage: 'dev',
253
+ region: 'us-east-1',
254
+ profile: 'default',
255
+ backend: {
256
+ runtime: 'nodejs18.x',
257
+ timeout: 30,
258
+ memory: 128
259
+ },
260
+ frontend: {
261
+ framework: 'react',
262
+ buildCommand: 'npm run build',
263
+ outputDir: 'dist'
264
+ },
265
+ ...overrides
266
+ };
267
+ }
268
+ }
269
+
270
+ module.exports = { MockFactory };
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Prisma Mock Utilities
3
+ * Standardized mocking for Prisma Client in CLI tests
4
+ * Following official Prisma testing patterns with jest-mock-extended
5
+ */
6
+
7
+ /**
8
+ * Creates a mock Prisma client with common operations
9
+ * @returns {object} Mock Prisma client
10
+ */
11
+ function createMockPrismaClient() {
12
+ return {
13
+ $connect: jest.fn().mockResolvedValue(undefined),
14
+ $disconnect: jest.fn().mockResolvedValue(undefined),
15
+ $queryRaw: jest.fn().mockResolvedValue([{ result: 1 }]),
16
+ $executeRaw: jest.fn().mockResolvedValue(1),
17
+ $runCommandRaw: jest.fn().mockResolvedValue({ ok: 1 }), // MongoDB command support
18
+ $transaction: jest.fn().mockImplementation(async (fn) => fn(createMockPrismaClient())),
19
+ // Common model operations
20
+ user: {
21
+ findMany: jest.fn().mockResolvedValue([]),
22
+ findUnique: jest.fn().mockResolvedValue(null),
23
+ create: jest.fn().mockResolvedValue({}),
24
+ update: jest.fn().mockResolvedValue({}),
25
+ delete: jest.fn().mockResolvedValue({}),
26
+ },
27
+ credential: {
28
+ findMany: jest.fn().mockResolvedValue([]),
29
+ findUnique: jest.fn().mockResolvedValue(null),
30
+ create: jest.fn().mockResolvedValue({}),
31
+ update: jest.fn().mockResolvedValue({}),
32
+ delete: jest.fn().mockResolvedValue({}),
33
+ },
34
+ };
35
+ }
36
+
37
+ /**
38
+ * Creates a mock for successful Prisma connection
39
+ * @param {object} mockClient - Optional pre-configured mock client
40
+ * @returns {jest.Mock} Mock connectPrisma function
41
+ */
42
+ function createMockConnectPrisma(mockClient = null) {
43
+ const client = mockClient || createMockPrismaClient();
44
+ return jest.fn().mockResolvedValue(client);
45
+ }
46
+
47
+ /**
48
+ * Creates a mock for successful Prisma disconnection
49
+ * @returns {jest.Mock} Mock disconnectPrisma function
50
+ */
51
+ function createMockDisconnectPrisma() {
52
+ return jest.fn().mockResolvedValue(undefined);
53
+ }
54
+
55
+ /**
56
+ * Creates a mock for Prisma connection that fails
57
+ * @param {string} errorMessage - Error message to throw
58
+ * @returns {jest.Mock} Mock connectPrisma that throws error
59
+ */
60
+ function createMockConnectPrismaWithError(errorMessage = 'Connection failed') {
61
+ return jest.fn().mockRejectedValue(new Error(errorMessage));
62
+ }
63
+
64
+ /**
65
+ * Creates a mock for Prisma query that times out
66
+ * @param {number} timeout - Timeout in milliseconds
67
+ * @returns {jest.Mock} Mock that times out
68
+ */
69
+ function createMockPrismaTimeout(timeout = 5000) {
70
+ return jest.fn().mockImplementation(() =>
71
+ new Promise((_, reject) =>
72
+ setTimeout(() => reject(new Error('Connection timeout')), timeout)
73
+ )
74
+ );
75
+ }
76
+
77
+ /**
78
+ * Common Prisma error types for testing
79
+ */
80
+ const PrismaErrors = {
81
+ /**
82
+ * Connection error (P1001)
83
+ */
84
+ CONNECTION_ERROR: {
85
+ code: 'P1001',
86
+ message: 'Can\'t reach database server',
87
+ clientVersion: '5.0.0',
88
+ },
89
+
90
+ /**
91
+ * Authentication error (P1002)
92
+ */
93
+ AUTH_ERROR: {
94
+ code: 'P1002',
95
+ message: 'The database server was reached but timed out',
96
+ clientVersion: '5.0.0',
97
+ },
98
+
99
+ /**
100
+ * Database not found error (P1003)
101
+ */
102
+ DATABASE_NOT_FOUND: {
103
+ code: 'P1003',
104
+ message: 'Database does not exist',
105
+ clientVersion: '5.0.0',
106
+ },
107
+
108
+ /**
109
+ * Connection timeout (P1008)
110
+ */
111
+ TIMEOUT_ERROR: {
112
+ code: 'P1008',
113
+ message: 'Operations timed out',
114
+ clientVersion: '5.0.0',
115
+ },
116
+
117
+ /**
118
+ * Invalid credentials
119
+ */
120
+ INVALID_CREDENTIALS: {
121
+ code: 'P1000',
122
+ message: 'Authentication failed against database server',
123
+ clientVersion: '5.0.0',
124
+ },
125
+ };
126
+
127
+ /**
128
+ * Creates a Prisma error object
129
+ * @param {string} errorType - Error type from PrismaErrors
130
+ * @param {object} customFields - Additional custom fields
131
+ * @returns {Error} Prisma-style error object
132
+ */
133
+ function createPrismaError(errorType = 'CONNECTION_ERROR', customFields = {}) {
134
+ const baseError = PrismaErrors[errorType] || PrismaErrors.CONNECTION_ERROR;
135
+ const error = new Error(baseError.message);
136
+ error.code = baseError.code;
137
+ error.clientVersion = baseError.clientVersion;
138
+ Object.assign(error, customFields);
139
+ return error;
140
+ }
141
+
142
+ /**
143
+ * Creates a mock for database validator functions
144
+ * @param {object} overrides - Override specific mock behaviors
145
+ * @returns {object} Mock database validator
146
+ */
147
+ function createMockDatabaseValidator(overrides = {}) {
148
+ return {
149
+ validateDatabaseUrl: jest.fn().mockReturnValue({
150
+ valid: true,
151
+ url: 'mongodb://localhost:27017/test'
152
+ }),
153
+ getDatabaseType: jest.fn().mockReturnValue({
154
+ dbType: 'mongodb'
155
+ }),
156
+ testDatabaseConnection: jest.fn().mockResolvedValue({
157
+ connected: true
158
+ }),
159
+ checkPrismaClientGenerated: jest.fn().mockReturnValue({
160
+ generated: true,
161
+ path: '/mock/path'
162
+ }),
163
+ ...overrides,
164
+ };
165
+ }
166
+
167
+ /**
168
+ * Creates a mock for Prisma runner functions
169
+ * @param {object} overrides - Override specific mock behaviors
170
+ * @returns {object} Mock Prisma runner
171
+ */
172
+ function createMockPrismaRunner(overrides = {}) {
173
+ return {
174
+ getPrismaSchemaPath: jest.fn().mockReturnValue('/mock/schema.prisma'),
175
+ runPrismaGenerate: jest.fn().mockResolvedValue({ success: true }),
176
+ checkDatabaseState: jest.fn().mockResolvedValue({ upToDate: true }),
177
+ runPrismaMigrate: jest.fn().mockResolvedValue({ success: true }),
178
+ runPrismaDbPush: jest.fn().mockResolvedValue({ success: true }),
179
+ getMigrationCommand: jest.fn().mockReturnValue('dev'),
180
+ ...overrides,
181
+ };
182
+ }
183
+
184
+ module.exports = {
185
+ createMockPrismaClient,
186
+ createMockConnectPrisma,
187
+ createMockDisconnectPrisma,
188
+ createMockConnectPrismaWithError,
189
+ createMockPrismaTimeout,
190
+ createPrismaError,
191
+ PrismaErrors,
192
+ createMockDatabaseValidator,
193
+ createMockPrismaRunner,
194
+ };