@codeyam/codeyam-cli 0.1.0-staging.b8a55ba → 0.1.0-staging.d0ad4ae

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 (340) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +7 -4
  5. package/analyzer-template/packages/ai/package.json +1 -1
  6. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +14 -1
  7. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +120 -19
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +91 -35
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +110 -74
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +11 -0
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  14. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  15. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +24 -17
  16. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +214 -39
  17. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +54 -1
  18. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +72 -6
  19. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +12 -5
  20. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +39 -23
  21. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -0
  22. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
  23. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  24. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  25. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +73 -69
  26. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -0
  27. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  28. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +22 -6
  29. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +9 -5
  30. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +49 -11
  31. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  32. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +399 -52
  33. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +128 -2
  34. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +114 -70
  35. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +34 -129
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +155 -79
  37. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  38. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  39. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  40. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  41. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  42. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  43. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  44. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  45. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  46. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  47. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  48. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  49. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  50. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  51. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  52. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  53. package/analyzer-template/packages/aws/package.json +1 -1
  54. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  55. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  56. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  57. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  58. package/analyzer-template/packages/generate/index.ts +3 -0
  59. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  60. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  61. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  62. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -0
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  68. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  70. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  73. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  75. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  76. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  77. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  78. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  79. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  80. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  81. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  82. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  83. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  84. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  85. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  86. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  87. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  88. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  89. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  90. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  91. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  92. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  93. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +6 -0
  95. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  96. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  97. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  98. package/analyzer-template/packages/process/index.ts +2 -0
  99. package/analyzer-template/packages/process/package.json +12 -0
  100. package/analyzer-template/packages/process/tsconfig.json +8 -0
  101. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  102. package/analyzer-template/packages/types/src/types/Scenario.ts +6 -0
  103. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  104. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  105. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +6 -0
  106. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  107. package/analyzer-template/playwright/capture.ts +37 -18
  108. package/analyzer-template/playwright/waitForServer.ts +21 -6
  109. package/analyzer-template/project/constructMockCode.ts +781 -140
  110. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  111. package/analyzer-template/project/orchestrateCapture.ts +10 -3
  112. package/analyzer-template/project/reconcileMockDataKeys.ts +28 -100
  113. package/analyzer-template/project/runAnalysis.ts +5 -0
  114. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  115. package/analyzer-template/project/start.ts +5 -3
  116. package/analyzer-template/project/startScenarioCapture.ts +6 -0
  117. package/analyzer-template/project/writeMockDataTsx.ts +50 -22
  118. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  119. package/analyzer-template/project/writeScenarioComponents.ts +162 -100
  120. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  121. package/analyzer-template/project/writeSimpleRoot.ts +11 -35
  122. package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
  123. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  124. package/background/src/lib/local/createLocalAnalyzer.js +1 -29
  125. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  126. package/background/src/lib/local/execAsync.js +1 -1
  127. package/background/src/lib/local/execAsync.js.map +1 -1
  128. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  129. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  130. package/background/src/lib/virtualized/project/constructMockCode.js +718 -127
  131. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  132. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  133. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  134. package/background/src/lib/virtualized/project/orchestrateCapture.js +7 -4
  135. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  136. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +25 -61
  137. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  138. package/background/src/lib/virtualized/project/runAnalysis.js +4 -0
  139. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  140. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  141. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  142. package/background/src/lib/virtualized/project/start.js +5 -3
  143. package/background/src/lib/virtualized/project/start.js.map +1 -1
  144. package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
  145. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  146. package/background/src/lib/virtualized/project/writeMockDataTsx.js +52 -23
  147. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  148. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  149. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  150. package/background/src/lib/virtualized/project/writeScenarioComponents.js +136 -83
  151. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  152. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  153. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  154. package/background/src/lib/virtualized/project/writeSimpleRoot.js +11 -34
  155. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  156. package/codeyam-cli/src/cli.js +5 -1
  157. package/codeyam-cli/src/cli.js.map +1 -1
  158. package/codeyam-cli/src/commands/analyze.js +1 -1
  159. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  160. package/codeyam-cli/src/commands/baseline.js +177 -0
  161. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  162. package/codeyam-cli/src/commands/status.js +23 -1
  163. package/codeyam-cli/src/commands/status.js.map +1 -1
  164. package/codeyam-cli/src/commands/test-startup.js +1 -1
  165. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  166. package/codeyam-cli/src/commands/wipe.js +108 -0
  167. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  168. package/codeyam-cli/src/utils/database.js +91 -5
  169. package/codeyam-cli/src/utils/database.js.map +1 -1
  170. package/codeyam-cli/src/utils/git.js +79 -0
  171. package/codeyam-cli/src/utils/git.js.map +1 -0
  172. package/codeyam-cli/src/utils/queue/job.js +104 -0
  173. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  174. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  175. package/codeyam-cli/src/utils/wipe.js +128 -0
  176. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  177. package/codeyam-cli/src/webserver/app/lib/database.js +66 -17
  178. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  179. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-wXL1Z2Aq.js → EntityItem-Cmysw5OP.js} +1 -1
  180. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-DLqD3qNt.js} +1 -1
  181. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CXFKsCOD.js → EntityTypeIcon-CAneekK2.js} +1 -1
  182. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D-9pXIaY.js → InteractivePreview-Cu16OUmx.js} +2 -2
  183. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-CVtiBnY5.js} +1 -1
  184. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-B0GLXMsr.js} +1 -1
  185. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-xgeCVgSM.js} +1 -1
  186. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-4lcOlid-.js → ReportIssueModal-DcAUIpD_.js} +1 -1
  187. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-DuDvi0jm.js} +1 -1
  188. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BMKg0SAF.js +15 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-DyFZkK0l.js} +1 -1
  190. package/codeyam-cli/src/webserver/build/client/assets/_index-DSmTpjmK.js +11 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BF_aK4y6.js +32 -0
  192. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-Cx24_aWc.js} +1 -1
  193. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +51 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-BOARzkeR.js} +1 -1
  195. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-BdhJEx6B.js} +1 -1
  196. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-DW_hdGUc.js → dev.empty-RJCf3Tvw.js} +1 -1
  197. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-zUEpfPsu.js → entity._sha._-D0-YwkBh.js} +12 -12
  198. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-EylcgScH.js +1 -0
  199. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-D_3ero5o.js → entity._sha_.create-scenario-DMe7kvgo.js} +1 -1
  200. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-C1H_a_Y3.js} +1 -1
  201. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-CS2cb_eZ.js} +6 -6
  202. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-DMJ7zii9.js} +1 -1
  203. package/codeyam-cli/src/webserver/build/client/assets/{files-ClR0d32A.js → files-BW7Cyeyi.js} +1 -1
  204. package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-CZu4fif0.js} +2 -2
  205. package/codeyam-cli/src/webserver/build/client/assets/globals-wHVy_II5.css +1 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-B1h680n5.js} +1 -1
  207. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-lzqtyFU8.js} +1 -1
  208. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-B7B9V-bu.js} +1 -1
  209. package/codeyam-cli/src/webserver/build/client/assets/{manifest-09d684be.js → manifest-2d191949.js} +1 -1
  210. package/codeyam-cli/src/webserver/build/client/assets/root-FHgpM6gc.js +56 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-CxXUmBSd.js} +1 -1
  212. package/codeyam-cli/src/webserver/build/client/assets/{settings-DgTyB-Wg.js → settings-6D8k8Jp5.js} +1 -1
  213. package/codeyam-cli/src/webserver/build/client/assets/simulations-CDJZnWhN.js +1 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-B6LgvRJg.js} +1 -1
  215. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BMIGFP-m.js → useCustomSizes-Dv18q8LD.js} +1 -1
  216. package/codeyam-cli/src/webserver/build/client/assets/{useInteractiveMode-Dk_FQqWJ.js → useInteractiveMode-0ToGk4K3.js} +1 -1
  217. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-aSv48UbS.js} +1 -1
  218. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DsJbgMY9.js → useReportContext-1BX144Eg.js} +1 -1
  219. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-mBRpZPiu.js} +1 -1
  220. package/codeyam-cli/src/webserver/build/server/assets/{index-CV6i1S1A.js → index-pU0o5t1o.js} +1 -1
  221. package/codeyam-cli/src/webserver/build/server/assets/server-build-YzfkRwdn.js +178 -0
  222. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  223. package/codeyam-cli/src/webserver/build-info.json +5 -5
  224. package/codeyam-cli/templates/codeyam-setup-skill.md +138 -3
  225. package/codeyam-cli/templates/debug-codeyam.md +7 -2
  226. package/package.json +5 -5
  227. package/packages/ai/src/lib/astScopes/processExpression.js +13 -1
  228. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  229. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  230. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  231. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +94 -18
  232. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  233. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
  234. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  235. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +51 -23
  236. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  237. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +70 -54
  238. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  239. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +11 -0
  240. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  241. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  242. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  243. package/packages/ai/src/lib/deepEqual.js +32 -0
  244. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  245. package/packages/ai/src/lib/findMatchingAttribute.js +20 -16
  246. package/packages/ai/src/lib/findMatchingAttribute.js.map +1 -1
  247. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +168 -41
  248. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  249. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +42 -1
  250. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  251. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +59 -3
  252. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  253. package/packages/ai/src/lib/generateChangesEntityScenarios.js +6 -6
  254. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  255. package/packages/ai/src/lib/generateEntityScenarioData.js +32 -23
  256. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  257. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +20 -1
  258. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  259. package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
  260. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  261. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  262. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  263. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  264. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  265. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +59 -50
  266. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  267. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -0
  268. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  269. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  270. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  271. package/packages/analyze/src/lib/files/analyzeChange.js +14 -4
  272. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  273. package/packages/analyze/src/lib/files/analyzeEntity.js +7 -6
  274. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  275. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +44 -10
  276. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  277. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  278. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  279. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +314 -52
  280. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  281. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +97 -2
  282. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  283. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +88 -52
  284. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  285. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +26 -98
  286. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  287. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +141 -75
  288. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  289. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  290. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  291. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  292. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  293. package/packages/generate/index.js +3 -0
  294. package/packages/generate/index.js.map +1 -1
  295. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  296. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  297. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  298. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  299. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  300. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  301. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  302. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  303. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  304. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  305. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  306. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  307. package/packages/process/index.js +3 -0
  308. package/packages/process/index.js.map +1 -0
  309. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  310. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  311. package/packages/process/src/ProcessManager.js.map +1 -0
  312. package/packages/process/src/index.js.map +1 -0
  313. package/packages/process/src/managedExecAsync.js.map +1 -0
  314. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  315. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  316. package/analyzer-template/process/README.md +0 -507
  317. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  318. package/background/src/lib/process/ProcessManager.js.map +0 -1
  319. package/background/src/lib/process/index.js.map +0 -1
  320. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  321. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  322. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  323. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
  324. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
  325. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  326. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  327. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
  328. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  329. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  330. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
  331. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
  332. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  333. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
  334. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  335. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  336. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  337. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  338. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  339. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  340. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -0,0 +1,114 @@
1
+ import type { Analysis, Entity, Scenario } from '~codeyam/types';
2
+ import { safeFileName } from '~codeyam/utils';
3
+ import handleWrappers from './handleWrappers';
4
+
5
+ // Escape double quotes for use in JavaScript string literals
6
+ const escapeForJsString = (s: string): string => s.replace(/"/g, '\\"');
7
+
8
+ const dimensionString = (dimension?: string | number) => {
9
+ if (!dimension) return 'auto';
10
+ if (typeof dimension === 'string') {
11
+ if (dimension === 'full') return '100%';
12
+ if (dimension.indexOf('%') > -1) return dimension;
13
+ if (dimension.indexOf('px') > -1) return dimension;
14
+ }
15
+ return `${dimension}px`;
16
+ };
17
+
18
+ /**
19
+ * Generates the component JSX for Server Component pages.
20
+ * Unlike scenarioComponent, this doesn't wrap in a Scenario component
21
+ * (the ScenarioClientWrapper handles that on the client).
22
+ */
23
+ export default function scenarioComponentForServer(
24
+ entity: Entity,
25
+ analysis: Analysis,
26
+ scenario: Scenario,
27
+ ) {
28
+ let entityComponentName =
29
+ entity.entityType === 'library' ? safeFileName(entity.name) : entity.name;
30
+
31
+ if (entityComponentName === 'default') {
32
+ entityComponentName =
33
+ entity.entityType === 'library' ? 'defaultExport' : 'DefaultExport';
34
+ }
35
+
36
+ const positionalArguments =
37
+ analysis.metadata?.scenariosDataStructure?.arguments ?? [];
38
+ const namedArguments =
39
+ typeof positionalArguments?.[0] === 'object'
40
+ ? Object.keys(positionalArguments?.[0])
41
+ : [];
42
+
43
+ // Use analysis.metadata.defaultWidth as override, otherwise fall back to entity.metadata.defaultWidth
44
+ const width = dimensionString(
45
+ entity?.entityType === 'library'
46
+ ? '100%'
47
+ : (analysis.metadata?.defaultWidth ?? entity.metadata?.defaultWidth),
48
+ );
49
+
50
+ console.log('CodeYam: Server Scenario', {
51
+ analysisId: scenario.analysisId,
52
+ scenarioId: scenario.id,
53
+ scenarioName: scenario.name,
54
+ scenarioDescription: scenario.description,
55
+ width,
56
+ });
57
+
58
+ const childrenArg = namedArguments.find((name) => name === 'children');
59
+ const nonChildrenAndRefProps = namedArguments.filter(
60
+ (name) => name !== 'children' && name !== 'ref',
61
+ );
62
+
63
+ // Deduplicate props by their base name (before parentheses for function overloads)
64
+ const seenBaseNames = new Set<string>();
65
+ const uniqueProps = nonChildrenAndRefProps.filter((name) => {
66
+ const baseName = name.endsWith(')') ? name.split('(')[0] : name;
67
+ if (seenBaseNames.has(baseName)) {
68
+ return false;
69
+ }
70
+ seenBaseNames.add(baseName);
71
+ return true;
72
+ });
73
+
74
+ const argsSpacing = '\n ';
75
+ let args = `${argsSpacing}`;
76
+
77
+ if (positionalArguments.length === 0) {
78
+ args += '>';
79
+ } else if (positionalArguments.length === 1) {
80
+ if (typeof positionalArguments[0] === 'object') {
81
+ args +=
82
+ uniqueProps?.length > 0
83
+ ? `${uniqueProps
84
+ .map((name) =>
85
+ isNaN(parseInt(name))
86
+ ? name.endsWith(')')
87
+ ? `${name.split('(')[0]}={() => getScenarioProps({ argumentIndex: 0, propName: "${escapeForJsString(name)}" }) as any}`
88
+ : `${name}={getScenarioProps({ argumentIndex: 0, propName: "${escapeForJsString(name)}" }) as any}`
89
+ : `positionalArgument_${name}={getScenarioProps({ argumentIndex: 0, propName: "positionalArgument_${escapeForJsString(name)}" }) as any}`,
90
+ )
91
+ .join(argsSpacing)}\n >`
92
+ : `>`;
93
+ } else {
94
+ args += `positionalArgument_0={getScenarioProps({ argumentIndex: 0 }) as any}${argsSpacing}\n >`;
95
+ }
96
+ } else if (positionalArguments.length > 1) {
97
+ args += `${positionalArguments
98
+ .map(
99
+ (_, index) =>
100
+ `positionalArgument_${index}={getScenarioProps({ argumentIndex: ${index} }) as any}`,
101
+ )
102
+ .join(argsSpacing)}\n >`;
103
+ }
104
+
105
+ const children = childrenArg
106
+ ? `\n {getScenarioProps({ argumentIndex: 0, propName: 'children'})}`
107
+ : '';
108
+
109
+ // For server components, we don't wrap in Scenario - that's handled by ScenarioClientWrapper
110
+ return handleWrappers(
111
+ `<${entityComponentName}${args}${children}\n </${entityComponentName}>`,
112
+ analysis,
113
+ );
114
+ }
@@ -51,6 +51,7 @@ declare const entitiesSchema: {
51
51
  previousVersionWithAnalyses?: string;
52
52
  isSuperseded?: boolean;
53
53
  mockInfo?: any;
54
+ isAsync?: boolean;
54
55
  }>;
55
56
  readonly name: string;
56
57
  readonly project_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"entitiesTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/entitiesTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;gCAiD2O,CAAC;oBAAyB,CAAC;iBAAsB,CAAC;6BAAmC,CAAC;;;;;;wBAAyI,CAAC;qBAAwB,CAAC;iCAAqC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAnCphB,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,CAsBxE"}
1
+ {"version":3,"file":"entitiesTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/entitiesTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;gCAiD2O,CAAC;oBAAyB,CAAC;iBAAsB,CAAC;6BAAmC,CAAC;;;;;;wBAAyI,CAAC;qBAAwB,CAAC;iCAAqC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAnCphB,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,CAsBxE"}
@@ -51,6 +51,7 @@ declare const scenariosSchema: {
51
51
  approved?: boolean;
52
52
  comments?: any[];
53
53
  runAlone?: boolean;
54
+ needsRecapture?: boolean;
54
55
  }>;
55
56
  readonly name: string;
56
57
  readonly previous_version_id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"scenariosTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/scenariosTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAKxD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;eAqCyuE,CAAC;0BAA8B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA3BpxE,CAAC;AAGX,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,OAAO,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAE7B,CAAC,MAAM,cAAc,CAAC,EAAE,CAAC;AAE9B,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAczE"}
1
+ {"version":3,"file":"scenariosTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/scenariosTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAKxD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;eAqCyuE,CAAC;0BAA8B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA3BpxE,CAAC;AAGX,MAAM,MAAM,cAAc,GAAG;KAC1B,CAAC,IAAI,MAAM,OAAO,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;CACjE,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAE7B,CAAC,MAAM,cAAc,CAAC,EAAE,CAAC;AAE9B,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAczE"}
@@ -1,6 +1,8 @@
1
1
  export { default as getComponentImportStatements } from './src/lib/getComponentImportStatements';
2
2
  export { default as componentScenarioPageRemix } from './src/lib/componentScenarioPage/componentScenarioPageRemix';
3
3
  export { default as componentScenarioPageNext } from './src/lib/componentScenarioPage/componentScenarioPageNext';
4
+ export { default as generateScenarioServerComponent } from './src/lib/componentScenarioPage/generateScenarioServerComponent';
5
+ export { default as generateScenarioClientWrapper } from './src/lib/componentScenarioPage/generateScenarioClientWrapper';
4
6
  export { default as getComponentScenarioPath } from './src/lib/getComponentScenarioPath';
5
7
  export { default as libDemoComponent } from './src/lib/libDemoComponent';
6
8
  export { default as directExecutionScript } from './src/lib/directExecutionScript';
@@ -9,5 +11,6 @@ export { default as safeFolder } from './src/lib/safeFolder';
9
11
  export { default as deepMerge } from './src/lib/deepMerge';
10
12
  export { default as simpleRootRemix } from './src/lib/simpleRootRemix';
11
13
  export { default as mergeRootRemix } from './src/lib/mergeRootRemix';
14
+ export { default as scenarioComponentForServer } from './src/lib/scenarioComponentForServer';
12
15
  export { PLACEHOLDER_IMAGE_SRC } from './src/lib/constants';
13
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AACjH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AACjH,OAAO,EAAE,OAAO,IAAI,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAC7H,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AACzH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  export { default as getComponentImportStatements } from './src/lib/getComponentImportStatements';
2
2
  export { default as componentScenarioPageRemix } from './src/lib/componentScenarioPage/componentScenarioPageRemix';
3
3
  export { default as componentScenarioPageNext } from './src/lib/componentScenarioPage/componentScenarioPageNext';
4
+ export { default as generateScenarioServerComponent } from './src/lib/componentScenarioPage/generateScenarioServerComponent';
5
+ export { default as generateScenarioClientWrapper } from './src/lib/componentScenarioPage/generateScenarioClientWrapper';
4
6
  export { default as getComponentScenarioPath } from './src/lib/getComponentScenarioPath';
5
7
  export { default as libDemoComponent } from './src/lib/libDemoComponent';
6
8
  export { default as directExecutionScript } from './src/lib/directExecutionScript';
@@ -9,5 +11,6 @@ export { default as safeFolder } from './src/lib/safeFolder';
9
11
  export { default as deepMerge } from './src/lib/deepMerge';
10
12
  export { default as simpleRootRemix } from './src/lib/simpleRootRemix';
11
13
  export { default as mergeRootRemix } from './src/lib/mergeRootRemix';
14
+ export { default as scenarioComponentForServer } from './src/lib/scenarioComponentForServer';
12
15
  export { PLACEHOLDER_IMAGE_SRC } from './src/lib/constants';
13
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AACjH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../generate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACjG,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,4DAA4D,CAAC;AACnH,OAAO,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,2DAA2D,CAAC;AACjH,OAAO,EAAE,OAAO,IAAI,+BAA+B,EAAE,MAAM,iEAAiE,CAAC;AAC7H,OAAO,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AACzH,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"componentScenarioPageNext.d.ts","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW5E,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UAiHA"}
1
+ {"version":3,"file":"componentScenarioPageNext.d.ts","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAY5E,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UAgIA"}
@@ -5,9 +5,24 @@ import escapeQuotes from '../escapeQuotes';
5
5
  import getIFrameMessageListenerCode from './getIFrameMessageListenerCode';
6
6
  import getImageReplacementCode from './getImageReplacementCode';
7
7
  import getNextJsErrorClosingCode from './getNextJsErrorClosingCode';
8
+ import generateScenarioServerComponent from './generateScenarioServerComponent';
8
9
  const VERSION = '0.5.1';
9
10
  export default function componentScenarioPageNext({ file, entity, analysis, currentPath, appPath, scenario, relativeMocksDir, }) {
10
11
  const fileName = file.name.split('.')[0];
12
+ // For async components (Server Components), generate a Server Component page
13
+ // that uses a separate client wrapper for interactive features
14
+ if (entity.metadata?.isAsync) {
15
+ return generateScenarioServerComponent({
16
+ file,
17
+ entity,
18
+ analysis,
19
+ currentPath,
20
+ appPath,
21
+ scenario,
22
+ relativeMocksDir,
23
+ });
24
+ }
25
+ // For non-async components, use the existing client component approach
11
26
  return `/* eslint-disable */
12
27
  "use client";
13
28
  import {
@@ -37,7 +52,7 @@ ${getComponentImportStatement({
37
52
  ${getImageReplacementCode()}
38
53
 
39
54
  function Scenario({ name, width, height, children }: { name: string, width: string, height: string, children: ReactNode }) {
40
-
55
+
41
56
  useEffect(() => {
42
57
  if (typeof window === 'undefined') return;
43
58
 
@@ -1 +1 @@
1
- {"version":3,"file":"componentScenarioPageNext.js","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,2BAA2B,MAAM,gCAAgC,CAAC;AACzE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GASjB;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO;;;;;;;;;;;EAWP,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,8BAA8B,gBAAgB,aAAa,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;EAC5H,2BAA2B,CAAC;QAC5B,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,WAAW,EACT,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC7D,MAAM,CAAC,UAAU,KAAK,SAAS;KAClC,CAAC;;;EAGA,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgEH,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,OAAO;;;;;;;8DAO3B,QAAQ;;;IAGlE,4BAA4B,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7D,yBAAyB,EAAE;;;;QAIvB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;;EAG3E,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"componentScenarioPageNext.js","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,2BAA2B,MAAM,gCAAgC,CAAC;AACzE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,+BAA+B,MAAM,mCAAmC,CAAC;AAEhF,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GASjB;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,6EAA6E;IAC7E,+DAA+D;IAC/D,IAAI,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,+BAA+B,CAAC;YACrC,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,WAAW;YACX,OAAO;YACP,QAAQ;YACR,gBAAgB;SACjB,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,OAAO;;;;;;;;;;;EAWP,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,8BAA8B,gBAAgB,aAAa,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;EAC5H,2BAA2B,CAAC;QAC5B,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,WAAW,EACT,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC7D,MAAM,CAAC,UAAU,KAAK,SAAS;KAClC,CAAC;;;EAGA,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgEH,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,OAAO;;;;;;;8DAO3B,QAAQ;;;IAGlE,4BAA4B,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7D,yBAAyB,EAAE;;;;QAIvB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;;EAG3E,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Scenario } from '~codeyam/types';
2
+ /**
3
+ * Generates the ScenarioClientWrapper component code.
4
+ * This is a Client Component that handles all the interactive features
5
+ * (iframe messaging, console interception, error closing, etc.)
6
+ * while allowing the actual page to be a Server Component.
7
+ */
8
+ export default function generateScenarioClientWrapper(scenario: Scenario): string;
9
+ //# sourceMappingURL=generateScenarioClientWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateScenarioClientWrapper.d.ts","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK/C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,6BAA6B,CACnD,QAAQ,EAAE,QAAQ,GACjB,MAAM,CAmLR"}
@@ -0,0 +1,189 @@
1
+ import { safeFileName } from '~codeyam/utils';
2
+ import getImageReplacementCode from './getImageReplacementCode';
3
+ import getNextJsErrorClosingCode from './getNextJsErrorClosingCode';
4
+ /**
5
+ * Generates the ScenarioClientWrapper component code.
6
+ * This is a Client Component that handles all the interactive features
7
+ * (iframe messaging, console interception, error closing, etc.)
8
+ * while allowing the actual page to be a Server Component.
9
+ */
10
+ export default function generateScenarioClientWrapper(scenario) {
11
+ const safeScenarioName = safeFileName(scenario.name);
12
+ return `"use client";
13
+ /* eslint-disable */
14
+ // ScenarioClientWrapper - Client Component for interactive features
15
+ // This wraps Server Components to add client-side interactivity
16
+
17
+ import {
18
+ useCallback,
19
+ useEffect,
20
+ useState,
21
+ type ReactNode,
22
+ } from 'react';
23
+ import { scenarios } from "./MockData_${safeScenarioName}";
24
+
25
+ // Inject image interception code at module level
26
+ ${getImageReplacementCode()}
27
+
28
+ interface ScenarioClientWrapperProps {
29
+ scenarioName: string;
30
+ fileName: string;
31
+ version: string;
32
+ children: ReactNode;
33
+ }
34
+
35
+ export function ScenarioClientWrapper({
36
+ scenarioName,
37
+ fileName,
38
+ version,
39
+ children,
40
+ }: ScenarioClientWrapperProps) {
41
+ const [internalVersion, setInternalVersion] = useState(1);
42
+ const [searchParams] = useState(() =>
43
+ typeof window !== 'undefined'
44
+ ? new URLSearchParams(window.location.search)
45
+ : new URLSearchParams()
46
+ );
47
+ const widthOverride = searchParams.get('width');
48
+ const heightOverride = searchParams.get('height') || 'auto';
49
+
50
+ // Set page metadata
51
+ useEffect(() => {
52
+ document.title = \`\${fileName}: \${scenarioName} CodeYam Demo v\${version}\`;
53
+ let metaDesc = document.querySelector('meta[name="description"]');
54
+ if (!metaDesc) {
55
+ metaDesc = document.createElement('meta');
56
+ metaDesc.setAttribute('name', 'description');
57
+ document.head.appendChild(metaDesc);
58
+ }
59
+ metaDesc.setAttribute('content', \`This is a demo of the \${fileName} component\`);
60
+ }, [fileName, scenarioName, version]);
61
+
62
+ // Message posting helper
63
+ const respond = useCallback((message: any) => {
64
+ try {
65
+ window.parent.postMessage({
66
+ type: 'codeyam-update',
67
+ name: scenarioName,
68
+ message,
69
+ }, '*');
70
+ } catch (e) {
71
+ console.warn('Error posting message to parent', message, e);
72
+ }
73
+ }, [scenarioName]);
74
+
75
+ // Handle data override messages from parent
76
+ useEffect(() => {
77
+ const eventListener = (event: MessageEvent) => {
78
+ if (event.data.type === 'codeyam-override-data') {
79
+ const parsedData = JSON.parse(event.data.data);
80
+ console.log("Override data received");
81
+ respond("Set override data to " + JSON.stringify(parsedData, null, 2));
82
+ scenarios().updateData(scenarioName, parsedData);
83
+ setInternalVersion(prev => prev + 1);
84
+ }
85
+ };
86
+ window.addEventListener('message', eventListener);
87
+ return () => window.removeEventListener('message', eventListener);
88
+ }, [respond, scenarioName]);
89
+
90
+ // Console interception
91
+ useEffect(() => {
92
+ const oldConsoleLog = console.log;
93
+ console.log = function(...args: any[]) {
94
+ oldConsoleLog(...args);
95
+ try {
96
+ window.parent.postMessage({
97
+ type: 'codeyam-log',
98
+ name: scenarioName,
99
+ data: {
100
+ log: {
101
+ name: "console.log",
102
+ args
103
+ }
104
+ }
105
+ }, '*');
106
+ } catch (e) {
107
+ oldConsoleLog('Error posting message to parent', e);
108
+ }
109
+ };
110
+
111
+ const oldConsoleError = console.error;
112
+ console.error = function(...args: any[]) {
113
+ oldConsoleError(...args);
114
+ window.parent.postMessage({
115
+ type: 'codeyam-log',
116
+ name: scenarioName,
117
+ data: {
118
+ log: {
119
+ name: "console.error",
120
+ args
121
+ }
122
+ }
123
+ }, '*');
124
+ };
125
+
126
+ return () => {
127
+ console.log = oldConsoleLog;
128
+ console.error = oldConsoleError;
129
+ };
130
+ }, [scenarioName]);
131
+
132
+ // Next.js error closing
133
+ ${getNextJsErrorClosingCode()}
134
+
135
+ // Height calculation and resize messaging
136
+ useEffect(() => {
137
+ if (typeof window === 'undefined') return;
138
+
139
+ const calculateHeight = () => {
140
+ const bodyHeight = document.body.offsetHeight;
141
+ const htmlHeight = document.documentElement.offsetHeight;
142
+ const scrollHeight = Math.max(
143
+ document.body.scrollHeight,
144
+ document.documentElement.scrollHeight,
145
+ document.body.offsetHeight,
146
+ document.documentElement.offsetHeight,
147
+ document.body.clientHeight,
148
+ document.documentElement.clientHeight
149
+ );
150
+ return Math.max(100, bodyHeight, htmlHeight, scrollHeight);
151
+ };
152
+
153
+ const calculatedHeight = calculateHeight();
154
+ parent.postMessage({ type: 'codeyam-resize', name: scenarioName, height: calculatedHeight }, '*');
155
+
156
+ const eventListener = (event: MessageEvent) => {
157
+ if (event.data.name === scenarioName) {
158
+ if (event.data.type === 'codeyam-respond') {
159
+ const calculatedHeight = calculateHeight();
160
+ parent.postMessage({ type: 'codeyam-resize', name: scenarioName, height: calculatedHeight }, '*');
161
+ }
162
+ }
163
+ };
164
+
165
+ window.addEventListener('message', eventListener);
166
+ return () => window.removeEventListener('message', eventListener);
167
+ }, [scenarioName]);
168
+
169
+ const width = widthOverride || 'auto';
170
+
171
+ return (
172
+ <div className='flex flex-col justify-center items-center h-screen' data-version={internalVersion}>
173
+ <div className='w-full flex items-center justify-center'>
174
+ <div id='component' style={{
175
+ minWidth: width !== 'auto' ? \`min(\${width}, 100vw)\` : undefined,
176
+ height: heightOverride !== 'auto' ? heightOverride : undefined,
177
+ minHeight: heightOverride !== 'auto' ? heightOverride : undefined,
178
+ display: 'block',
179
+ padding: '6px'
180
+ }}>
181
+ {children}
182
+ </div>
183
+ </div>
184
+ </div>
185
+ );
186
+ }
187
+ `;
188
+ }
189
+ //# sourceMappingURL=generateScenarioClientWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateScenarioClientWrapper.js","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,6BAA6B,CACnD,QAAkB;IAElB,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErD,OAAO;;;;;;;;;;;wCAW+B,gBAAgB;;;EAGtD,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2GvB,yBAAyB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsD9B,CAAC;AACF,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { Entity, Analysis, type File, type Scenario } from '~codeyam/types';
2
+ /**
3
+ * Generates a Server Component page for async components (Server Components in Next.js).
4
+ *
5
+ * This is needed because:
6
+ * 1. Async components use await, which only works in Server Components
7
+ * 2. Client Components ("use client") don't support async/await in the component body
8
+ * 3. We use Next.js composition pattern: Server Component page renders the async component,
9
+ * then wraps it in a Client Component (ScenarioClientWrapper) for interactive features
10
+ */
11
+ export default function generateScenarioServerComponent({ file, entity, analysis, currentPath, appPath, scenario, relativeMocksDir, }: {
12
+ file: File;
13
+ entity: Entity;
14
+ analysis: Analysis;
15
+ currentPath: string;
16
+ appPath: string;
17
+ scenario: Scenario;
18
+ relativeMocksDir: string;
19
+ }): string;
20
+ //# sourceMappingURL=generateScenarioServerComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateScenarioServerComponent.d.ts","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO5E;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,EACtD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UAwCA"}
@@ -0,0 +1,53 @@
1
+ import { safeFileName } from '~codeyam/utils';
2
+ import getComponentImportStatement from '../getComponentImportStatement';
3
+ import scenarioComponentForServer from '../scenarioComponentForServer';
4
+ const VERSION = '0.5.1';
5
+ /**
6
+ * Generates a Server Component page for async components (Server Components in Next.js).
7
+ *
8
+ * This is needed because:
9
+ * 1. Async components use await, which only works in Server Components
10
+ * 2. Client Components ("use client") don't support async/await in the component body
11
+ * 3. We use Next.js composition pattern: Server Component page renders the async component,
12
+ * then wraps it in a Client Component (ScenarioClientWrapper) for interactive features
13
+ */
14
+ export default function generateScenarioServerComponent({ file, entity, analysis, currentPath, appPath, scenario, relativeMocksDir, }) {
15
+ const fileName = file.name.split('.')[0];
16
+ const safeScenarioName = safeFileName(scenario.name);
17
+ return `/* eslint-disable */
18
+ // Server Component page for async component: ${entity.name}
19
+ // This page does NOT have "use client" - it runs on the server
20
+ import { ScenarioClientWrapper } from "${relativeMocksDir}/ScenarioClientWrapper";
21
+ ${analysis.scenarios?.length > 0 ? `import { scenarios } from "${relativeMocksDir}/MockData_${safeScenarioName}";` : ''}
22
+ ${getComponentImportStatement({
23
+ file,
24
+ entity,
25
+ analysis,
26
+ currentPath,
27
+ appPath,
28
+ scenario,
29
+ primary: true,
30
+ namedExport: entity.name !== 'default' &&
31
+ (entity.metadata?.notExported || entity.metadata?.namedExport) &&
32
+ entity.entityType !== 'library',
33
+ })}
34
+
35
+ function getScenarioProps({ argumentIndex, propName }: { argumentIndex: number, propName?: string }) {
36
+ const data = scenarios().data();
37
+ const argument = data['arguments'][argumentIndex];
38
+ return propName ? argument[propName] : argument;
39
+ }
40
+
41
+ export default async function Index() {
42
+ return (
43
+ <ScenarioClientWrapper
44
+ scenarioName="${scenario.name}"
45
+ fileName="${fileName}"
46
+ version="${VERSION}"
47
+ >
48
+ ${scenarioComponentForServer(entity, analysis, scenario)}
49
+ </ScenarioClientWrapper>
50
+ );
51
+ }`;
52
+ }
53
+ //# sourceMappingURL=generateScenarioServerComponent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateScenarioServerComponent.js","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,2BAA2B,MAAM,gCAAgC,CAAC;AACzE,OAAO,0BAA0B,MAAM,+BAA+B,CAAC;AAEvE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,EACtD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GASjB;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAErD,OAAO;gDACuC,MAAM,CAAC,IAAI;;yCAElB,gBAAgB;EACvD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,8BAA8B,gBAAgB,aAAa,gBAAgB,IAAI,CAAC,CAAC,CAAC,EAAE;EACrH,2BAA2B,CAAC;QAC5B,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,WAAW,EACT,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC9D,MAAM,CAAC,UAAU,KAAK,SAAS;KAClC,CAAC;;;;;;;;;;;sBAWoB,QAAQ,CAAC,IAAI;kBACjB,QAAQ;iBACT,OAAO;;QAEhB,0BAA0B,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;;;EAG5D,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Analysis, Entity, Scenario } from '~codeyam/types';
2
+ /**
3
+ * Generates the component JSX for Server Component pages.
4
+ * Unlike scenarioComponent, this doesn't wrap in a Scenario component
5
+ * (the ScenarioClientWrapper handles that on the client).
6
+ */
7
+ export default function scenarioComponentForServer(entity: Entity, analysis: Analysis, scenario: Scenario): string;
8
+ //# sourceMappingURL=scenarioComponentForServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scenarioComponentForServer.d.ts","sourceRoot":"","sources":["../../../../../generate/src/lib/scenarioComponentForServer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAiBjE;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,UAwFnB"}
@@ -0,0 +1,89 @@
1
+ import { safeFileName } from '~codeyam/utils';
2
+ import handleWrappers from './handleWrappers';
3
+ // Escape double quotes for use in JavaScript string literals
4
+ const escapeForJsString = (s) => s.replace(/"/g, '\\"');
5
+ const dimensionString = (dimension) => {
6
+ if (!dimension)
7
+ return 'auto';
8
+ if (typeof dimension === 'string') {
9
+ if (dimension === 'full')
10
+ return '100%';
11
+ if (dimension.indexOf('%') > -1)
12
+ return dimension;
13
+ if (dimension.indexOf('px') > -1)
14
+ return dimension;
15
+ }
16
+ return `${dimension}px`;
17
+ };
18
+ /**
19
+ * Generates the component JSX for Server Component pages.
20
+ * Unlike scenarioComponent, this doesn't wrap in a Scenario component
21
+ * (the ScenarioClientWrapper handles that on the client).
22
+ */
23
+ export default function scenarioComponentForServer(entity, analysis, scenario) {
24
+ let entityComponentName = entity.entityType === 'library' ? safeFileName(entity.name) : entity.name;
25
+ if (entityComponentName === 'default') {
26
+ entityComponentName =
27
+ entity.entityType === 'library' ? 'defaultExport' : 'DefaultExport';
28
+ }
29
+ const positionalArguments = analysis.metadata?.scenariosDataStructure?.arguments ?? [];
30
+ const namedArguments = typeof positionalArguments?.[0] === 'object'
31
+ ? Object.keys(positionalArguments?.[0])
32
+ : [];
33
+ // Use analysis.metadata.defaultWidth as override, otherwise fall back to entity.metadata.defaultWidth
34
+ const width = dimensionString(entity?.entityType === 'library'
35
+ ? '100%'
36
+ : (analysis.metadata?.defaultWidth ?? entity.metadata?.defaultWidth));
37
+ console.log('CodeYam: Server Scenario', {
38
+ analysisId: scenario.analysisId,
39
+ scenarioId: scenario.id,
40
+ scenarioName: scenario.name,
41
+ scenarioDescription: scenario.description,
42
+ width,
43
+ });
44
+ const childrenArg = namedArguments.find((name) => name === 'children');
45
+ const nonChildrenAndRefProps = namedArguments.filter((name) => name !== 'children' && name !== 'ref');
46
+ // Deduplicate props by their base name (before parentheses for function overloads)
47
+ const seenBaseNames = new Set();
48
+ const uniqueProps = nonChildrenAndRefProps.filter((name) => {
49
+ const baseName = name.endsWith(')') ? name.split('(')[0] : name;
50
+ if (seenBaseNames.has(baseName)) {
51
+ return false;
52
+ }
53
+ seenBaseNames.add(baseName);
54
+ return true;
55
+ });
56
+ const argsSpacing = '\n ';
57
+ let args = `${argsSpacing}`;
58
+ if (positionalArguments.length === 0) {
59
+ args += '>';
60
+ }
61
+ else if (positionalArguments.length === 1) {
62
+ if (typeof positionalArguments[0] === 'object') {
63
+ args +=
64
+ uniqueProps?.length > 0
65
+ ? `${uniqueProps
66
+ .map((name) => isNaN(parseInt(name))
67
+ ? name.endsWith(')')
68
+ ? `${name.split('(')[0]}={() => getScenarioProps({ argumentIndex: 0, propName: "${escapeForJsString(name)}" }) as any}`
69
+ : `${name}={getScenarioProps({ argumentIndex: 0, propName: "${escapeForJsString(name)}" }) as any}`
70
+ : `positionalArgument_${name}={getScenarioProps({ argumentIndex: 0, propName: "positionalArgument_${escapeForJsString(name)}" }) as any}`)
71
+ .join(argsSpacing)}\n >`
72
+ : `>`;
73
+ }
74
+ else {
75
+ args += `positionalArgument_0={getScenarioProps({ argumentIndex: 0 }) as any}${argsSpacing}\n >`;
76
+ }
77
+ }
78
+ else if (positionalArguments.length > 1) {
79
+ args += `${positionalArguments
80
+ .map((_, index) => `positionalArgument_${index}={getScenarioProps({ argumentIndex: ${index} }) as any}`)
81
+ .join(argsSpacing)}\n >`;
82
+ }
83
+ const children = childrenArg
84
+ ? `\n {getScenarioProps({ argumentIndex: 0, propName: 'children'})}`
85
+ : '';
86
+ // For server components, we don't wrap in Scenario - that's handled by ScenarioClientWrapper
87
+ return handleWrappers(`<${entityComponentName}${args}${children}\n </${entityComponentName}>`, analysis);
88
+ }
89
+ //# sourceMappingURL=scenarioComponentForServer.js.map