@codeyam/codeyam-cli 0.1.0-staging.8e7b1bd → 0.1.0-staging.b8a55ba

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 (385) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +7 -6
  4. package/analyzer-template/packages/ai/package.json +1 -1
  5. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +2 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +22 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +23 -1
  8. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +401 -106
  9. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +60 -0
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +661 -50
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +14 -2
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +715 -0
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +123 -1
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +23 -1
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +34 -1
  18. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +236 -24
  19. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +18 -1
  20. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +37 -4
  21. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +5 -0
  22. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +213 -12
  23. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +11 -15
  24. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +114 -11
  25. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  26. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  27. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
  28. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +42 -2
  29. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +38 -2
  30. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  31. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +5 -0
  32. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
  33. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +339 -145
  34. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +20 -0
  35. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +8 -1
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +158 -0
  37. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +107 -18
  38. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  39. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +223 -103
  40. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +10 -5
  41. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +172 -83
  42. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -5
  43. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +97 -27
  44. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  45. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  46. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  47. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  48. package/analyzer-template/packages/aws/package.json +1 -1
  49. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  50. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  51. package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
  52. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  53. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +20 -9
  54. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +3 -2
  55. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
  56. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  57. package/analyzer-template/packages/generate/src/lib/getComponentScenarioPath.ts +8 -3
  58. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
  59. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
  60. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  61. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +8 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +14 -7
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  70. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
  71. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  73. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  74. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  77. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js +7 -3
  80. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/types/index.d.ts +4 -3
  82. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/types/index.js +1 -0
  84. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +31 -1
  86. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  87. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +51 -1
  88. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +21 -1
  90. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  91. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  92. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  93. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  95. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  97. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  98. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  99. package/analyzer-template/packages/types/index.ts +8 -0
  100. package/analyzer-template/packages/types/src/types/Analysis.ts +32 -1
  101. package/analyzer-template/packages/types/src/types/Scenario.ts +75 -6
  102. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +49 -0
  103. package/analyzer-template/packages/ui-components/package.json +4 -4
  104. package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
  105. package/analyzer-template/packages/utils/dist/types/index.d.ts +4 -3
  106. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  107. package/analyzer-template/packages/utils/dist/types/index.js +1 -0
  108. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  109. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +31 -1
  110. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  111. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +51 -1
  112. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  113. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +21 -1
  114. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  115. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  116. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  122. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  123. package/analyzer-template/packages/utils/src/lib/applyUniversalMocks.ts +28 -2
  124. package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
  125. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  126. package/analyzer-template/playwright/takeScreenshot.ts +9 -7
  127. package/analyzer-template/project/TESTING.md +83 -0
  128. package/analyzer-template/project/constructMockCode.ts +151 -30
  129. package/analyzer-template/project/loadReadyToBeCaptured.ts +17 -1
  130. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +16 -9
  131. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +77 -37
  132. package/analyzer-template/project/reconcileMockDataKeys.ts +104 -3
  133. package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
  134. package/analyzer-template/project/serverOnlyModules.ts +288 -0
  135. package/analyzer-template/project/start.ts +10 -0
  136. package/analyzer-template/project/startScenarioCapture.ts +73 -41
  137. package/analyzer-template/project/writeMockDataTsx.ts +103 -40
  138. package/analyzer-template/project/writeScenarioComponents.ts +1162 -203
  139. package/analyzer-template/project/writeSimpleRoot.ts +26 -4
  140. package/analyzer-template/project/writeUniversalMocks.ts +32 -11
  141. package/background/src/lib/virtualized/project/constructMockCode.js +132 -25
  142. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  143. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +15 -1
  144. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  145. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +11 -6
  146. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  147. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +67 -32
  148. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  149. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +65 -4
  150. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  151. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
  152. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  153. package/background/src/lib/virtualized/project/serverOnlyModules.js +235 -0
  154. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -0
  155. package/background/src/lib/virtualized/project/start.js +6 -0
  156. package/background/src/lib/virtualized/project/start.js.map +1 -1
  157. package/background/src/lib/virtualized/project/startScenarioCapture.js +54 -31
  158. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  159. package/background/src/lib/virtualized/project/writeMockDataTsx.js +87 -34
  160. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  161. package/background/src/lib/virtualized/project/writeScenarioComponents.js +852 -133
  162. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  163. package/background/src/lib/virtualized/project/writeSimpleRoot.js +25 -2
  164. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  165. package/background/src/lib/virtualized/project/writeUniversalMocks.js +27 -12
  166. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  167. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +7 -0
  168. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +1 -0
  169. package/codeyam-cli/src/cli.js +2 -0
  170. package/codeyam-cli/src/cli.js.map +1 -1
  171. package/codeyam-cli/src/commands/debug.js +14 -2
  172. package/codeyam-cli/src/commands/debug.js.map +1 -1
  173. package/codeyam-cli/src/commands/recapture.js +215 -0
  174. package/codeyam-cli/src/commands/recapture.js.map +1 -0
  175. package/codeyam-cli/src/commands/report.js +26 -23
  176. package/codeyam-cli/src/commands/report.js.map +1 -1
  177. package/codeyam-cli/src/utils/backgroundServer.js +2 -2
  178. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  179. package/codeyam-cli/src/utils/generateReport.js +252 -106
  180. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  181. package/codeyam-cli/src/utils/install-skills.js +2 -7
  182. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  183. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
  184. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  185. package/codeyam-cli/src/utils/queue/job.js +140 -16
  186. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  187. package/codeyam-cli/src/utils/queue/manager.js +19 -7
  188. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  189. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  190. package/codeyam-cli/src/webserver/app/lib/database.js +47 -0
  191. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  192. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  193. package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
  194. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  195. package/codeyam-cli/src/webserver/bootstrap.js +9 -0
  196. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DQeyk25_.js → EntityTypeBadge-CzGX-miz.js} +1 -1
  199. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +41 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +25 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CBQPrpT0.js +3 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-D1CdlbrV.js +6 -0
  203. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-wDPcZNKx.js +3 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +11 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BfmDgXxG.js +1 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +15 -0
  207. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-ayCJdUAc.js → TruncatedFilePath-6J7zDUD5.js} +1 -1
  208. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +11 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +32 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/api.link-scenario-value-l0sNRNKZ.js +1 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/api.update-key-attributes-l0sNRNKZ.js +1 -0
  212. package/codeyam-cli/src/webserver/build/client/assets/api.update-valid-values-l0sNRNKZ.js +1 -0
  213. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BYimnrHg.js +6 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +51 -0
  215. package/codeyam-cli/src/webserver/build/client/assets/circle-check-CaVsIRxt.js +6 -0
  216. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgUsG7ib.js +21 -0
  217. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +1 -0
  218. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-FHOVOgFN.js → entity._sha._-zUEpfPsu.js} +22 -15
  220. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +1 -0
  221. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +1 -0
  222. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-CfLCUi9S.js +5 -0
  223. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DKJyZfAY.js +29 -0
  224. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DAtOlaWE.js +1 -0
  225. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +1 -0
  226. package/codeyam-cli/src/webserver/build/client/assets/git-D62Lxxmv.js +15 -0
  227. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +1 -0
  228. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  229. package/codeyam-cli/src/webserver/build/client/assets/index-BosqDOlH.js +3 -0
  230. package/codeyam-cli/src/webserver/build/client/assets/index-CzNNiTkw.js +9 -0
  231. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +1 -0
  232. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-CNp9QFCX.js +6 -0
  233. package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +1 -0
  234. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  235. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +56 -0
  236. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  237. package/codeyam-cli/src/webserver/build/client/assets/search-DDGjYAMJ.js +6 -0
  238. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +1 -0
  239. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +1 -0
  240. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CBc5dE1s.js +6 -0
  241. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +1 -0
  242. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +1 -0
  243. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-DOGXmJcI.js → useLastLogLine-BqPPNjAl.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{useToast-C07gRg7Z.js → useToast-DWHcCcl1.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +1 -0
  247. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +175 -0
  248. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  249. package/codeyam-cli/src/webserver/build-info.json +5 -5
  250. package/codeyam-cli/src/webserver/devServer.js +1 -3
  251. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  252. package/codeyam-cli/templates/debug-codeyam.md +620 -0
  253. package/package.json +14 -14
  254. package/packages/ai/src/lib/analyzeScope.js +2 -0
  255. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  256. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +16 -0
  257. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  258. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +16 -0
  259. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  260. package/packages/ai/src/lib/astScopes/processExpression.js +305 -88
  261. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  262. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +523 -42
  263. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  264. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +12 -2
  265. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  266. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +454 -0
  267. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  268. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +103 -1
  269. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  270. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
  271. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  272. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +19 -1
  273. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  274. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
  275. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  276. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +28 -2
  277. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  278. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +179 -17
  279. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  280. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +6 -0
  281. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  282. package/packages/ai/src/lib/generateChangesEntityScenarios.js +37 -4
  283. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  284. package/packages/ai/src/lib/generateEntityDataStructure.js +4 -0
  285. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  286. package/packages/ai/src/lib/generateEntityKeyAttributes.js +176 -9
  287. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  288. package/packages/ai/src/lib/generateEntityScenarioData.js +11 -15
  289. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  290. package/packages/ai/src/lib/generateEntityScenarios.js +105 -9
  291. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  292. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  293. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  294. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  295. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  296. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
  297. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  298. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +38 -2
  299. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  300. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +38 -2
  301. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  302. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  303. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  304. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  305. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
  306. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  307. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +258 -110
  308. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  309. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +18 -0
  310. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  311. package/packages/analyze/src/lib/files/getImportedExports.js +6 -1
  312. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  313. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +125 -0
  314. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  315. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +74 -19
  316. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  317. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  318. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  319. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +175 -58
  320. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  321. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +10 -5
  322. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  323. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +127 -69
  324. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  325. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -5
  326. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  327. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +74 -23
  328. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  329. package/packages/database/src/lib/kysely/db.js +2 -2
  330. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  331. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  332. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
  333. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  334. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  335. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  336. package/packages/generate/src/lib/deepMerge.js +27 -1
  337. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  338. package/packages/generate/src/lib/getComponentScenarioPath.js +7 -3
  339. package/packages/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  340. package/packages/types/index.js +1 -0
  341. package/packages/types/index.js.map +1 -1
  342. package/packages/types/src/types/Scenario.js +21 -1
  343. package/packages/types/src/types/Scenario.js.map +1 -1
  344. package/packages/utils/src/lib/applyUniversalMocks.js +26 -2
  345. package/packages/utils/src/lib/applyUniversalMocks.js.map +1 -1
  346. package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
  347. package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  348. package/scripts/finalize-analyzer.cjs +3 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-CWKV2GEz.js +0 -1
  350. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-D2hFeDeg.js +0 -1
  351. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-C8K-4kKP.js +0 -26
  352. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DgXLv61M.js +0 -3
  353. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-DFdLQbPS.js +0 -3
  354. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DlRDjT4h.js +0 -1
  355. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-7UkVL-UI.js +0 -1
  356. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-XjtsGuPo.js +0 -5
  357. package/codeyam-cli/src/webserver/build/client/assets/_index-D2eJjWLf.js +0 -1
  358. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-w6sbwlOd.js +0 -7
  359. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BBNQ8hup.js +0 -1
  360. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-Bex4RrGs.js +0 -26
  361. package/codeyam-cli/src/webserver/build/client/assets/circle-check-cdhjVtom.js +0 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DkgmwwRC.js +0 -1
  363. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CwLmCS0J.js +0 -1
  364. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-YZ-kM3ZG.js +0 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BeQlz94_.js +0 -5
  366. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DN2XXM7Z.js +0 -5
  367. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-CUeAIQNI.js +0 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/files-ccMQfhGf.js +0 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/git-JmESAHx5.js +0 -12
  370. package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  372. package/codeyam-cli/src/webserver/build/client/assets/index-DsL9BiOc.js +0 -8
  373. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-COYCR2oZ.js +0 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/manifest-90adba57.js +0 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/root-DfbVEEjF.js +0 -16
  376. package/codeyam-cli/src/webserver/build/client/assets/search-DvK9iMBu.js +0 -1
  377. package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/settings-9LTbit4Z.js +0 -1
  379. package/codeyam-cli/src/webserver/build/client/assets/simulations-BrxN5ZtV.js +0 -1
  380. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-Iv0p8T-1.js +0 -1
  381. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BWmSRPH6.js +0 -1
  382. package/codeyam-cli/src/webserver/build/server/assets/index-CE_1qXCG.js +0 -1
  383. package/codeyam-cli/src/webserver/build/server/assets/server-build-BY_VDhiD.js +0 -166
  384. package/codeyam-cli/templates/debug-command.md +0 -141
  385. /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
@@ -28,13 +28,10 @@ export default async function generateScenarios({
28
28
  }: GenerateScenariosArgs): Promise<void> {
29
29
  if (!['visual', 'library'].includes(entity.entityType)) return;
30
30
 
31
- // Merge direct dataForMocks with recursively gathered data from dependencies
31
+ // Gather all mock data, consolidated under the root entity name
32
32
  const structure = {
33
33
  arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
34
- dataForMocks: {
35
- ...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
36
- ...gatherDataForMocks(analysis, dependentAnalyses),
37
- },
34
+ dataForMocks: gatherDataForMocks(analysis, dependentAnalyses, entity.name),
38
35
  };
39
36
 
40
37
  awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
@@ -1,4 +1,3 @@
1
- // import { writeFile } from 'node:fs/promises';
2
1
  import {
3
2
  splitOutsideParenthesesAndArrays,
4
3
  joinParenthesesAndArrays,
@@ -481,6 +480,47 @@ export default function mergeInDependentDataStructure({
481
480
  const mergeAllEquivalentSchemaPaths = () => {
482
481
  const mergedEquivalentSchemaPaths: typeof equivalentSchemaPaths = [];
483
482
 
483
+ // Pre-pass: Connect entries with array/array-element relationships.
484
+ // This handles cases like:
485
+ // - Entry A has root 'surveys' (array)
486
+ // - Entry B has root 'surveys[]' (array element)
487
+ // These need to be connected so Entry B's field postfixes flow to Entry A.
488
+ // We do this before the main merge to ensure the connection happens regardless
489
+ // of processing order.
490
+ for (const esp of equivalentSchemaPaths) {
491
+ for (const root of esp.equivalentRoots) {
492
+ if (root.schemaRootPath.endsWith('[]')) {
493
+ // Find a matching parent entry with the base array path
494
+ const baseArrayPath = root.schemaRootPath.slice(0, -2);
495
+ const parentEntry = equivalentSchemaPaths.find(
496
+ (other) =>
497
+ other !== esp &&
498
+ other.equivalentRoots.some(
499
+ (otherRoot) =>
500
+ otherRoot.schemaRootPath === baseArrayPath &&
501
+ otherRoot.function?.name === root.function?.name &&
502
+ otherRoot.function?.filePath === root.function?.filePath,
503
+ ),
504
+ );
505
+ if (parentEntry) {
506
+ // Add transformed postfixes from child (array element) to parent (array)
507
+ // so they can be applied with [] prefix to parent paths
508
+ for (const [postfixPath, postfixValue] of Object.entries(
509
+ esp.equivalentPostfixes,
510
+ )) {
511
+ const transformedPostfix = joinParenthesesAndArrays(
512
+ ['[]', postfixPath].filter(Boolean),
513
+ );
514
+ if (!(transformedPostfix in parentEntry.equivalentPostfixes)) {
515
+ parentEntry.equivalentPostfixes[transformedPostfix] =
516
+ postfixValue;
517
+ }
518
+ }
519
+ }
520
+ }
521
+ }
522
+ }
523
+
484
524
  const findEquivalentSchemaPathEntry = (
485
525
  schemaSubPath: string,
486
526
  equivalentRootFunction: (typeof equivalentSchemaPaths)[0]['equivalentRoots'][0]['function'],
@@ -768,33 +808,38 @@ export default function mergeInDependentDataStructure({
768
808
  name: dependency.name,
769
809
  });
770
810
 
771
- // First, normalize any returnValue. paths that were written by equivalency processing
772
- // to the standard functionName().functionCallReturnValue. format.
773
- // Also delete returnValue[] artifact paths that don't represent actual array structure.
811
+ // First, normalize any returnValue paths that were written by equivalency processing
812
+ // to the standard functionName().functionCallReturnValue format.
813
+ // This includes both returnValue. (dot) and returnValue[ (array) paths.
774
814
  const pathsToNormalize: [string, string][] = [];
775
- const pathsToDelete: string[] = [];
776
815
  for (const path in depSchema.returnValueSchema) {
777
- if (path === 'returnValue' || path.startsWith('returnValue.')) {
816
+ if (
817
+ path === 'returnValue' ||
818
+ path.startsWith('returnValue.') ||
819
+ path.startsWith('returnValue[')
820
+ ) {
778
821
  pathsToNormalize.push([path, depSchema.returnValueSchema[path]]);
779
- } else if (path.match(/^returnValue\[\d*\]/)) {
780
- // Delete returnValue[] and returnValue[n] paths - these are artifacts from
781
- // equivalency processing and don't represent the actual structure of mocked dependencies.
782
- // The correct structure comes from srcSchema (dependencySchemas).
783
- pathsToDelete.push(path);
784
822
  }
785
823
  }
786
- for (const path of pathsToDelete) {
787
- delete depSchema.returnValueSchema[path];
788
- }
789
824
  for (const [path, value] of pathsToNormalize) {
790
825
  delete depSchema.returnValueSchema[path];
791
- const normalizedPath =
792
- path === 'returnValue'
793
- ? `${dependency.name}().functionCallReturnValue`
794
- : path.replace(
795
- /^returnValue\./,
796
- `${dependency.name}().functionCallReturnValue.`,
797
- );
826
+ let normalizedPath: string;
827
+ if (path === 'returnValue') {
828
+ normalizedPath = `${dependency.name}().functionCallReturnValue`;
829
+ } else if (path.startsWith('returnValue.')) {
830
+ normalizedPath = path.replace(
831
+ /^returnValue\./,
832
+ `${dependency.name}().functionCallReturnValue.`,
833
+ );
834
+ } else {
835
+ // path.startsWith('returnValue[')
836
+ // e.g., returnValue[] -> getOptions().functionCallReturnValue[]
837
+ // e.g., returnValue[].label -> getOptions().functionCallReturnValue[].label
838
+ normalizedPath = path.replace(
839
+ /^returnValue/,
840
+ `${dependency.name}().functionCallReturnValue`,
841
+ );
842
+ }
798
843
  depSchema.returnValueSchema[normalizedPath] = value;
799
844
  }
800
845
 
@@ -846,6 +891,37 @@ export default function mergeInDependentDataStructure({
846
891
  depSchema.returnValueSchema[path] = value;
847
892
  }
848
893
  }
894
+
895
+ // Copy object-typed paths for chained API access patterns (like trpc.customer.getCustomersByOrg)
896
+ // These intermediate paths are needed for constructMockCode to build the nested mock structure.
897
+ // Example: for trpc.customer.getCustomersByOrg.useQuery().functionCallReturnValue.data,
898
+ // we need 'trpc', 'trpc.customer', 'trpc.customer.getCustomersByOrg' all typed as 'object'.
899
+ // Skip paths starting with 'returnValue' - they were already handled above
900
+ //
901
+ // EXCEPTION: For function-style dependencies like getSupabase(), skip intermediate object
902
+ // paths like 'getSupabase().auth' that are just property access after a function call.
903
+ // These aren't needed because constructMockCode can infer the structure from the actual
904
+ // function call paths like 'getSupabase().auth.getUser()'. We only need object paths
905
+ // for object-style dependencies like 'supabase.auth' where the dependency itself is an object.
906
+ if (value === 'object' && !path.startsWith('returnValue')) {
907
+ // Check if this is a function-style dependency (path starts with name() or name<T>())
908
+ const isFunctionStyleDependency =
909
+ path.startsWith(`${dependency.name}()`) ||
910
+ path.match(new RegExp(`^${dependency.name}<[^>]+>\\(\\)`));
911
+
912
+ // For function-style dependencies, skip intermediate object paths
913
+ // Only keep object paths that are within functionCallReturnValue
914
+ if (
915
+ isFunctionStyleDependency &&
916
+ !path.includes('.functionCallReturnValue')
917
+ ) {
918
+ continue;
919
+ }
920
+
921
+ if (!(path in depSchema.returnValueSchema)) {
922
+ depSchema.returnValueSchema[path] = value;
923
+ }
924
+ }
849
925
  }
850
926
 
851
927
  cleanSchema(depSchema.returnValueSchema);
@@ -960,11 +1036,5 @@ export default function mergeInDependentDataStructure({
960
1036
  }
961
1037
  }
962
1038
 
963
- // writeFile(
964
- // 'mergeInDependentDataStructure-debug-result.json',
965
- // // rootScopeName,
966
- // JSON.stringify(mergedDataStructure, null, 2),
967
- // ).catch(() => {});
968
-
969
1039
  return mergedDataStructure;
970
1040
  }
@@ -0,0 +1,15 @@
1
+ interface CheckS3ObjectExistsArgs {
2
+ bucketName: string;
3
+ key: string;
4
+ }
5
+ interface CheckS3ObjectExistsResult {
6
+ exists: boolean;
7
+ size?: number;
8
+ }
9
+ /**
10
+ * Check if an object exists in S3 using a HEAD request.
11
+ * Returns the object size if it exists.
12
+ */
13
+ export default function checkS3ObjectExists({ bucketName, key, }: CheckS3ObjectExistsArgs): Promise<CheckS3ObjectExistsResult>;
14
+ export {};
15
+ //# sourceMappingURL=checkS3ObjectExists.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkS3ObjectExists.d.ts","sourceRoot":"","sources":["../../../../src/lib/s3/checkS3ObjectExists.ts"],"names":[],"mappings":"AAEA,UAAU,uBAAuB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,yBAAyB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAA8B,mBAAmB,CAAC,EAChD,UAAU,EACV,GAAG,GACJ,EAAE,uBAAuB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA2B9D"}
@@ -0,0 +1,31 @@
1
+ import { S3Client, HeadObjectCommand } from '@aws-sdk/client-s3';
2
+ /**
3
+ * Check if an object exists in S3 using a HEAD request.
4
+ * Returns the object size if it exists.
5
+ */
6
+ export default async function checkS3ObjectExists({ bucketName, key, }) {
7
+ const s3Client = new S3Client({});
8
+ const command = new HeadObjectCommand({
9
+ Bucket: bucketName,
10
+ Key: key,
11
+ });
12
+ try {
13
+ const response = await s3Client.send(command);
14
+ return {
15
+ exists: true,
16
+ size: response.ContentLength,
17
+ };
18
+ }
19
+ catch (error) {
20
+ // NotFound is expected when object doesn't exist
21
+ if (error &&
22
+ typeof error === 'object' &&
23
+ 'name' in error &&
24
+ error.name === 'NotFound') {
25
+ return { exists: false };
26
+ }
27
+ // Re-throw unexpected errors
28
+ throw error;
29
+ }
30
+ }
31
+ //# sourceMappingURL=checkS3ObjectExists.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkS3ObjectExists.js","sourceRoot":"","sources":["../../../../src/lib/s3/checkS3ObjectExists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAYjE;;;GAGG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAChD,UAAU,EACV,GAAG,GACqB;IACxB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;IAElC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC;QACpC,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,QAAQ,CAAC,aAAa;SAC7B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,iDAAiD;QACjD,IACE,KAAK;YACL,OAAO,KAAK,KAAK,QAAQ;YACzB,MAAM,IAAI,KAAK;YACf,KAAK,CAAC,IAAI,KAAK,UAAU,EACzB,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC;QACD,6BAA6B;QAC7B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -12,7 +12,7 @@
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
14
  "@aws-sdk/client-codebuild": "^3.948.0",
15
- "@aws-sdk/client-cloudwatch-logs": "^3.940.0",
15
+ "@aws-sdk/client-cloudwatch-logs": "^3.962.0",
16
16
  "@aws-sdk/client-dynamodb": "^3.956.0",
17
17
  "@aws-sdk/client-ecr": "^3.948.0",
18
18
  "@aws-sdk/client-ecs": "^3.956.0",
@@ -4,3 +4,4 @@ export {
4
4
  getPresignedUploadUrl,
5
5
  getPresignedDownloadUrl,
6
6
  } from '../src/lib/s3/getPresignedUrl';
7
+ export { default as checkS3ObjectExists } from '../src/lib/s3/checkS3ObjectExists';
@@ -0,0 +1,47 @@
1
+ import { S3Client, HeadObjectCommand } from '@aws-sdk/client-s3';
2
+
3
+ interface CheckS3ObjectExistsArgs {
4
+ bucketName: string;
5
+ key: string;
6
+ }
7
+
8
+ interface CheckS3ObjectExistsResult {
9
+ exists: boolean;
10
+ size?: number;
11
+ }
12
+
13
+ /**
14
+ * Check if an object exists in S3 using a HEAD request.
15
+ * Returns the object size if it exists.
16
+ */
17
+ export default async function checkS3ObjectExists({
18
+ bucketName,
19
+ key,
20
+ }: CheckS3ObjectExistsArgs): Promise<CheckS3ObjectExistsResult> {
21
+ const s3Client = new S3Client({});
22
+
23
+ const command = new HeadObjectCommand({
24
+ Bucket: bucketName,
25
+ Key: key,
26
+ });
27
+
28
+ try {
29
+ const response = await s3Client.send(command);
30
+ return {
31
+ exists: true,
32
+ size: response.ContentLength,
33
+ };
34
+ } catch (error: unknown) {
35
+ // NotFound is expected when object doesn't exist
36
+ if (
37
+ error &&
38
+ typeof error === 'object' &&
39
+ 'name' in error &&
40
+ error.name === 'NotFound'
41
+ ) {
42
+ return { exists: false };
43
+ }
44
+ // Re-throw unexpected errors
45
+ throw error;
46
+ }
47
+ }
@@ -33,8 +33,8 @@ import {
33
33
  } from './tables/commitBranchesTable';
34
34
  import { CommitsTable, createCommitsTable } from './tables/commitsTable';
35
35
  import {
36
- createDebugReportsTable,
37
- DebugReportsTable,
36
+ createDebugBundlesTable,
37
+ DebugBundlesTable,
38
38
  } from './tables/debugReportsTable';
39
39
  import { createEntitiesTable, EntitiesTable } from './tables/entitiesTable';
40
40
  import {
@@ -101,7 +101,7 @@ const databaseSchema = {
101
101
  branches: schemaField<BranchesTable>(),
102
102
  commit_branches: schemaField<CommitBranchesTable>(),
103
103
  commits: schemaField<CommitsTable>(),
104
- debug_reports: schemaField<DebugReportsTable>(),
104
+ debug_reports: schemaField<DebugBundlesTable>(),
105
105
  entities: schemaField<EntitiesTable>(),
106
106
  entity_branches: schemaField<EntityBranchesTable>(),
107
107
  entity_statements: schemaField<EntityStatementsTable>(),
@@ -377,7 +377,7 @@ export async function createSqliteSchema(db: Kysely<Database>): Promise<void> {
377
377
  await createBranchesTable(db);
378
378
  await createCommitBranchesTable(db);
379
379
  await createCommitsTable(db);
380
- await createDebugReportsTable(db);
380
+ await createDebugBundlesTable(db);
381
381
  await createEntitiesTable(db);
382
382
  await createEntityBranchesTable(db);
383
383
  await createEntityStatementsTable(db);
@@ -6,7 +6,7 @@ import { BackgroundJobsTable } from './tables/backgroundJobsTable';
6
6
  import { BranchesTable } from './tables/branchesTable';
7
7
  import { CommitsTable } from './tables/commitsTable';
8
8
  import { CommitBranchesTable } from './tables/commitBranchesTable';
9
- import { DebugReportsTable } from './tables/debugReportsTable';
9
+ import { DebugBundlesTable } from './tables/debugReportsTable';
10
10
  import { EntitiesTable } from './tables/entitiesTable';
11
11
  import { EntityBranchesTable } from './tables/entityBranchesTable';
12
12
  import { FilesTable } from './tables/filesTable';
@@ -105,4 +105,4 @@ export type DbUserScenario = Selectable<UserScenariosTable> & {
105
105
 
106
106
  export type DbStatement = Selectable<StatementsTable>;
107
107
 
108
- export type DbDebugReport = Selectable<DebugReportsTable>;
108
+ export type DbDebugBundle = Selectable<DebugBundlesTable>;
@@ -3,7 +3,12 @@ import type { Generated, JSONColumnType } from 'kysely';
3
3
 
4
4
  import { schemaField, defaultNow } from '../schemaHelpers';
5
5
 
6
- interface DebugReportMetadata {
6
+ /**
7
+ * Metadata for a debug bundle upload.
8
+ * Note: "bundle" refers to the tarball upload (base + delta).
9
+ * The markdown "debug report" from /debug-codeyam is stored in feedback.debugReport.
10
+ */
11
+ interface DebugBundleMetadata {
7
12
  timestamp: string;
8
13
  git: {
9
14
  sha: string;
@@ -22,26 +27,30 @@ interface DebugReportMetadata {
22
27
  };
23
28
  }
24
29
 
25
- const debugReportsSchema = {
30
+ // Table name remains 'debug_reports' in the database for backwards compatibility
31
+ const debugBundlesSchema = {
26
32
  id: schemaField<Generated<string>>(),
27
33
  project_slug: schemaField<string>(),
28
34
  s3_key: schemaField<string>(),
29
35
  file_size_bytes: schemaField<number | null>(),
30
- metadata: schemaField<JSONColumnType<DebugReportMetadata> | null>(),
36
+ metadata: schemaField<JSONColumnType<DebugBundleMetadata> | null>(),
31
37
  status: schemaField<string | null>(),
32
38
  created_at: schemaField<Generated<string>>(),
33
39
  uploaded_at: schemaField<string | null>(),
40
+ base_sha: schemaField<string | null>(),
41
+ delta_size_bytes: schemaField<number | null>(),
34
42
  } as const;
35
43
 
36
- export type DebugReportsTable = {
37
- [K in keyof typeof debugReportsSchema]: (typeof debugReportsSchema)[K];
44
+ export type DebugBundlesTable = {
45
+ [K in keyof typeof debugBundlesSchema]: (typeof debugBundlesSchema)[K];
38
46
  };
39
47
 
40
- export const DebugReportsTableColumns = Object.keys(
41
- debugReportsSchema,
42
- ) as (keyof DebugReportsTable)[];
48
+ export const DebugBundlesTableColumns = Object.keys(
49
+ debugBundlesSchema,
50
+ ) as (keyof DebugBundlesTable)[];
43
51
 
44
- export async function createDebugReportsTable(db: Kysely<any>): Promise<void> {
52
+ export async function createDebugBundlesTable(db: Kysely<any>): Promise<void> {
53
+ // Table name remains 'debug_reports' for backwards compatibility
45
54
  await db.schema
46
55
  .createTable('debug_reports')
47
56
  .addColumn('id', 'uuid', (col: ColumnDefinitionBuilder) => col.primaryKey())
@@ -56,6 +65,8 @@ export async function createDebugReportsTable(db: Kysely<any>): Promise<void> {
56
65
  .addColumn('status', 'varchar')
57
66
  .addColumn('created_at', 'datetime', defaultNow(true))
58
67
  .addColumn('uploaded_at', 'datetime')
68
+ .addColumn('base_sha', 'varchar')
69
+ .addColumn('delta_size_bytes', 'bigint')
59
70
  .ifNotExists()
60
71
  .execute();
61
72
  }
@@ -41,13 +41,14 @@ export default async function loadReadyToBeCapturedAnalyses(
41
41
  ).as('scenarios'),
42
42
  ])
43
43
  .where(
44
- sql<string>` ${sql.ref('analyses.status')} -> 'readyToBeCaptured'`,
44
+ // Use ->> to extract as text for proper comparison (-> returns JSONB which doesn't compare to string)
45
+ sql<string>` ${sql.ref('analyses.status')} ->> 'readyToBeCaptured'`,
45
46
  '=',
46
47
  'true',
47
48
  )
48
49
  // Exclude entities that are not exported - they cannot be captured because they can't be imported
49
50
  .where(
50
- sql<boolean>`(${sql.ref('entities.metadata')} -> 'notExported') IS NULL OR (${sql.ref('entities.metadata')} -> 'notExported') != 'true'`,
51
+ sql<boolean>`(${sql.ref('entities.metadata')} ->> 'notExported') IS NULL OR (${sql.ref('entities.metadata')} ->> 'notExported') != 'true'`,
51
52
  );
52
53
 
53
54
  if (projectId) {
@@ -3,6 +3,11 @@ export default function getIFrameMessageListenerCode({
3
3
  }: {
4
4
  scenarioName: string;
5
5
  }): string {
6
+ // Escape backslashes first, then single quotes to produce valid JS string literals
7
+ const escapedScenarioName = scenarioName
8
+ .replace(/\\/g, '\\\\')
9
+ .replace(/'/g, "\\'");
10
+
6
11
  return `const [version, setVersion] = useState(1);
7
12
 
8
13
  function _getScenarioProps({ argumentIndex, propName }: { argumentIndex: number, propName?: string }) {
@@ -14,7 +19,7 @@ export default function getIFrameMessageListenerCode({
14
19
  try {
15
20
  window.parent.postMessage({
16
21
  type: 'codeyam-update',
17
- name: '${scenarioName}',
22
+ name: '${escapedScenarioName}',
18
23
  message,
19
24
  }, '*');
20
25
  } catch (e) {
@@ -28,7 +33,7 @@ export default function getIFrameMessageListenerCode({
28
33
  const parsedData = JSON.parse(event.data.data);
29
34
  console.log("Override data received");
30
35
  respond("Set override data to " + JSON.stringify(parsedData, null, 2));
31
- scenarios().updateData('${scenarioName}', parsedData);
36
+ scenarios().updateData('${escapedScenarioName}', parsedData);
32
37
  setVersion(prev => prev + 1);
33
38
  }
34
39
  }
@@ -44,7 +49,7 @@ export default function getIFrameMessageListenerCode({
44
49
  try {
45
50
  window.parent.postMessage({
46
51
  type: 'codeyam-log',
47
- name: '${scenarioName}',
52
+ name: '${escapedScenarioName}',
48
53
  data: {
49
54
  log: {
50
55
  name: "console.log",
@@ -62,7 +67,7 @@ export default function getIFrameMessageListenerCode({
62
67
  oldConsoleError(...args);
63
68
  window.parent.postMessage({
64
69
  type: 'codeyam-log',
65
- name: '${scenarioName}',
70
+ name: '${escapedScenarioName}',
66
71
  data: {
67
72
  log: {
68
73
  name: "console.log",
@@ -14,6 +14,26 @@ export default function deepMerge(
14
14
  seen.add(changes);
15
15
  }
16
16
 
17
+ // Handle arrays at the top level - this is critical for nested arrays (tuples)
18
+ // like [["path", { data }]] which should NOT be converted to objects
19
+ if (Array.isArray(changes)) {
20
+ const defaultArray = Array.isArray(defaultData) ? defaultData : [];
21
+ const result: any[] = [];
22
+ for (let i = 0; i < changes.length; i++) {
23
+ const item = changes[i];
24
+ if (item && typeof item === 'object' && !Array.isArray(item)) {
25
+ // Merge object items with corresponding default array item
26
+ result[i] = deepMerge(defaultArray[i], item, seen);
27
+ } else if (Array.isArray(item)) {
28
+ // Recursively handle nested arrays (tuples)
29
+ result[i] = deepMerge(defaultArray[i], item, seen);
30
+ } else {
31
+ result[i] = item;
32
+ }
33
+ }
34
+ return result;
35
+ }
36
+
17
37
  const merge = { ...defaultData };
18
38
  for (const key in changes) {
19
39
  if (changes[key] === null) {
@@ -21,11 +41,16 @@ export default function deepMerge(
21
41
  // to distinguish between "not loaded" (undefined) and "explicitly null" (null)
22
42
  merge[key] = null;
23
43
  } else if (Array.isArray(changes[key])) {
44
+ // Get the original default array BEFORE we replace it
45
+ const defaultArray = Array.isArray(defaultData[key])
46
+ ? defaultData[key]
47
+ : [];
24
48
  merge[key] = [];
25
49
  for (let i = 0; i < changes[key].length; i++) {
26
50
  const item = changes[key][i];
27
51
  if (typeof item === 'object' && item !== null) {
28
- merge[key][i] = deepMerge(merge?.[key]?.[i], item, seen);
52
+ // Merge with corresponding item from default array by index position
53
+ merge[key][i] = deepMerge(defaultArray[i], item, seen);
29
54
  } else {
30
55
  merge[key][i] = item;
31
56
  }
@@ -23,13 +23,18 @@ export default function getComponentScenarioPath(
23
23
  getRelativePath(currentPath, filePath).split('/').slice(0, -1).join('/'),
24
24
  );
25
25
 
26
+ // Check if the file is an index file (e.g., index.tsx, index.ts)
27
+ // This must match the logic in writeScenarioComponents.ts
28
+ const isIndexFile = file.name.startsWith('index.');
29
+ const indexPrefix = isIndexFile ? 'index_' : '';
30
+
26
31
  if (scenario) {
27
32
  // Include scenario name in path to allow multiple scenarios to coexist
28
33
  const importPath = isLibraryDemoPage
29
- ? `${relativePath}/${entity.sha}_${safeFileName(entityName)}_${safeFileName(scenario.name)}`
30
- : `${relativePath}/${entity.sha}_${safeFileName(entityName)}_${safeFileName(scenario.name)}`;
34
+ ? `${relativePath}/${entity.sha}_${indexPrefix}${safeFileName(entityName)}_${safeFileName(scenario.name)}`
35
+ : `${relativePath}/${entity.sha}_${indexPrefix}${safeFileName(entityName)}_${safeFileName(scenario.name)}`;
31
36
  return `${importPath}`;
32
37
  }
33
38
 
34
- return `${relativePath}_${entity.sha}_${safeFileName(entityName)}`;
39
+ return `${relativePath}_${entity.sha}_${indexPrefix}${safeFileName(entityName)}`;
35
40
  }
@@ -7,7 +7,7 @@ import { BackgroundJobsTable } from './tables/backgroundJobsTable';
7
7
  import { BranchesTable } from './tables/branchesTable';
8
8
  import { CommitBranchesTable } from './tables/commitBranchesTable';
9
9
  import { CommitsTable } from './tables/commitsTable';
10
- import { DebugReportsTable } from './tables/debugReportsTable';
10
+ import { DebugBundlesTable } from './tables/debugReportsTable';
11
11
  import { EntitiesTable } from './tables/entitiesTable';
12
12
  import { EntityBranchesTable } from './tables/entityBranchesTable';
13
13
  import { EntityStatementsTable } from './tables/entityStatementsTable';
@@ -29,7 +29,7 @@ declare const databaseSchema: {
29
29
  readonly branches: BranchesTable;
30
30
  readonly commit_branches: CommitBranchesTable;
31
31
  readonly commits: CommitsTable;
32
- readonly debug_reports: DebugReportsTable;
32
+ readonly debug_reports: DebugBundlesTable;
33
33
  readonly entities: EntitiesTable;
34
34
  readonly entity_branches: EntityBranchesTable;
35
35
  readonly entity_statements: EntityStatementsTable;
@@ -13,7 +13,7 @@ import { createBackgroundJobsTable, } from './tables/backgroundJobsTable';
13
13
  import { createBranchesTable } from './tables/branchesTable';
14
14
  import { createCommitBranchesTable, } from './tables/commitBranchesTable';
15
15
  import { createCommitsTable } from './tables/commitsTable';
16
- import { createDebugReportsTable, } from './tables/debugReportsTable';
16
+ import { createDebugBundlesTable, } from './tables/debugReportsTable';
17
17
  import { createEntitiesTable } from './tables/entitiesTable';
18
18
  import { createEntityBranchesTable, } from './tables/entityBranchesTable';
19
19
  import { createEntityStatementsTable, } from './tables/entityStatementsTable';
@@ -274,7 +274,7 @@ export async function createSqliteSchema(db) {
274
274
  await createBranchesTable(db);
275
275
  await createCommitBranchesTable(db);
276
276
  await createCommitsTable(db);
277
- await createDebugReportsTable(db);
277
+ await createDebugBundlesTable(db);
278
278
  await createEntitiesTable(db);
279
279
  await createEntityBranchesTable(db);
280
280
  await createEntityStatementsTable(db);
@@ -6,7 +6,7 @@ import { BackgroundJobsTable } from './tables/backgroundJobsTable';
6
6
  import { BranchesTable } from './tables/branchesTable';
7
7
  import { CommitsTable } from './tables/commitsTable';
8
8
  import { CommitBranchesTable } from './tables/commitBranchesTable';
9
- import { DebugReportsTable } from './tables/debugReportsTable';
9
+ import { DebugBundlesTable } from './tables/debugReportsTable';
10
10
  import { EntitiesTable } from './tables/entitiesTable';
11
11
  import { EntityBranchesTable } from './tables/entityBranchesTable';
12
12
  import { FilesTable } from './tables/filesTable';
@@ -85,5 +85,5 @@ export type DbUserScenario = Selectable<UserScenariosTable> & {
85
85
  user?: DbUser;
86
86
  };
87
87
  export type DbStatement = Selectable<StatementsTable>;
88
- export type DbDebugReport = Selectable<DebugReportsTable>;
88
+ export type DbDebugBundle = Selectable<DebugBundlesTable>;
89
89
  //# sourceMappingURL=tableRelations.d.ts.map
@@ -43,7 +43,14 @@ declare const analysesSchema: {
43
43
  validValueOptions: string[];
44
44
  errorValueOptions: string[];
45
45
  valueType?: string;
46
- dependencies?: Record<string, string>[];
46
+ dependencies?: {
47
+ path: string;
48
+ requiredValue: string | boolean;
49
+ description: string;
50
+ fromChainId?: string;
51
+ }[];
52
+ compoundConditionalIds?: string[];
53
+ sourceLocations?: import("~codeyam/types").SourceLocation[];
47
54
  }[];
48
55
  dependencyTree?: import("~codeyam/types").DependencyTreeNode;
49
56
  dependentAnalyses?: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"analysesTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/analysesTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EAEf,MAAM,QAAQ,CAAC;AAKhB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;kBA6Bc,CAAA;;;;;;;;;;;+BAUZ,CAAC;;;6BAEa,CAAC;;;;qBAKhB,CAAC;wBAGf,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAUoZ,CAAC;iBAAqB,CAAC;sBAA0B,CAAC;;;;oBAAuE,CAAC;+BAAmC,CAAC;gCAAoC,CAAC;gCAAoC,CAAC;iCAAqC,CAAC;sBAA0B,CAAC;;qBAAkD,CAAC;sBAA0B,CAAC;iBAAqB,CAAC;sBAA0B,CAAC;;;;;;CAtC1zB,CAAC;AAGX,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,OAAO,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;CAC/D,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAE5B,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;AAE7B,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBxE"}
1
+ {"version":3,"file":"analysesTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/analysesTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EAEf,MAAM,QAAQ,CAAC;AAKhB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;kBA4C4B,CAAC;;;;;;;;;;;+BAQvB,CAAC;;;6BAEG,CAAC;;;;qBAKgK,CAAC;wBAAuH,CAAC;;;;2BAAqW,CAAC;;kCAA0H,CAAC;2BAA4G,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAA2tB,CAAC;iBAAqB,CAAC;sBAA0B,CAAC;;;;oBAAuE,CAAC;+BAAmC,CAAC;gCAAoC,CAAC;gCAAoC,CAAC;iCAAqC,CAAC;sBAA0B,CAAC;;qBAAkD,CAAC;sBAA0B,CAAC;iBAAqB,CAAC;sBAA0B,CAAC;;;;;;CAtC//D,CAAC;AAGX,MAAM,MAAM,aAAa,GAAG;KACzB,CAAC,IAAI,MAAM,OAAO,cAAc,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;CAC/D,CAAC;AAGF,eAAO,MAAM,oBAAoB,EAE5B,CAAC,MAAM,aAAa,CAAC,EAAE,CAAC;AAE7B,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBxE"}