@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.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/common/execAsync.ts +1 -1
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +7 -4
- package/analyzer-template/packages/ai/package.json +1 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +14 -1
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +120 -19
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +91 -35
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +110 -74
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +11 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
- package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
- package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +24 -17
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +214 -39
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +54 -1
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +72 -6
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +12 -5
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +39 -23
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +73 -69
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +22 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +9 -5
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +49 -11
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +399 -52
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +128 -2
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +114 -70
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +34 -129
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +155 -79
- package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
- package/analyzer-template/packages/aws/package.json +1 -1
- package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
- package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
- package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
- package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
- package/analyzer-template/packages/generate/index.ts +3 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
- package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
- package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.js +3 -0
- package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +6 -0
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
- package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
- package/analyzer-template/packages/process/index.ts +2 -0
- package/analyzer-template/packages/process/package.json +12 -0
- package/analyzer-template/packages/process/tsconfig.json +8 -0
- package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
- package/analyzer-template/packages/types/src/types/Scenario.ts +6 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +6 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/playwright/capture.ts +37 -18
- package/analyzer-template/playwright/waitForServer.ts +21 -6
- package/analyzer-template/project/constructMockCode.ts +781 -140
- package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
- package/analyzer-template/project/orchestrateCapture.ts +10 -3
- package/analyzer-template/project/reconcileMockDataKeys.ts +28 -100
- package/analyzer-template/project/runAnalysis.ts +5 -0
- package/analyzer-template/project/serverOnlyModules.ts +127 -2
- package/analyzer-template/project/start.ts +5 -3
- package/analyzer-template/project/startScenarioCapture.ts +6 -0
- package/analyzer-template/project/writeMockDataTsx.ts +50 -22
- package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
- package/analyzer-template/project/writeScenarioComponents.ts +162 -100
- package/analyzer-template/project/writeScenarioFiles.ts +26 -0
- package/analyzer-template/project/writeSimpleRoot.ts +11 -35
- package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
- package/analyzer-template/scripts/defaultCmd.sh +9 -0
- package/background/src/lib/local/createLocalAnalyzer.js +1 -29
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- package/background/src/lib/local/execAsync.js +1 -1
- package/background/src/lib/local/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/common/execAsync.js +1 -1
- package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +718 -127
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +7 -4
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +25 -61
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +4 -0
- package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
- package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +5 -3
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +52 -23
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +136 -83
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
- package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +11 -34
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/src/cli.js +5 -1
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +1 -1
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +177 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -0
- package/codeyam-cli/src/commands/status.js +23 -1
- package/codeyam-cli/src/commands/status.js.map +1 -1
- package/codeyam-cli/src/commands/test-startup.js +1 -1
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/wipe.js +108 -0
- package/codeyam-cli/src/commands/wipe.js.map +1 -0
- package/codeyam-cli/src/utils/database.js +91 -5
- package/codeyam-cli/src/utils/database.js.map +1 -1
- package/codeyam-cli/src/utils/git.js +79 -0
- package/codeyam-cli/src/utils/git.js.map +1 -0
- package/codeyam-cli/src/utils/queue/job.js +104 -0
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
- package/codeyam-cli/src/utils/wipe.js +128 -0
- package/codeyam-cli/src/utils/wipe.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +66 -17
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-wXL1Z2Aq.js → EntityItem-Cmysw5OP.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-DLqD3qNt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CXFKsCOD.js → EntityTypeIcon-CAneekK2.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D-9pXIaY.js → InteractivePreview-Cu16OUmx.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-CVtiBnY5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-B0GLXMsr.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-xgeCVgSM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-4lcOlid-.js → ReportIssueModal-DcAUIpD_.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-DuDvi0jm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BMKg0SAF.js +15 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-DyFZkK0l.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-DSmTpjmK.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BF_aK4y6.js +32 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-Cx24_aWc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-BOARzkeR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-BdhJEx6B.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-DW_hdGUc.js → dev.empty-RJCf3Tvw.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-zUEpfPsu.js → entity._sha._-D0-YwkBh.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-EylcgScH.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-D_3ero5o.js → entity._sha_.create-scenario-DMe7kvgo.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-C1H_a_Y3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-CS2cb_eZ.js} +6 -6
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-DMJ7zii9.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{files-ClR0d32A.js → files-BW7Cyeyi.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-CZu4fif0.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/globals-wHVy_II5.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-B1h680n5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-lzqtyFU8.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-B7B9V-bu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{manifest-09d684be.js → manifest-2d191949.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-FHgpM6gc.js +56 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-CxXUmBSd.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{settings-DgTyB-Wg.js → settings-6D8k8Jp5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CDJZnWhN.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-B6LgvRJg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BMIGFP-m.js → useCustomSizes-Dv18q8LD.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useInteractiveMode-Dk_FQqWJ.js → useInteractiveMode-0ToGk4K3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-aSv48UbS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DsJbgMY9.js → useReportContext-1BX144Eg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-mBRpZPiu.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{index-CV6i1S1A.js → index-pU0o5t1o.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-YzfkRwdn.js +178 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/templates/codeyam-setup-skill.md +138 -3
- package/codeyam-cli/templates/debug-codeyam.md +7 -2
- package/package.json +5 -5
- package/packages/ai/src/lib/astScopes/processExpression.js +13 -1
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +24 -9
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +94 -18
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +51 -23
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +70 -54
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +11 -0
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
- package/packages/ai/src/lib/deepEqual.js +32 -0
- package/packages/ai/src/lib/deepEqual.js.map +1 -0
- package/packages/ai/src/lib/findMatchingAttribute.js +20 -16
- package/packages/ai/src/lib/findMatchingAttribute.js.map +1 -1
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +168 -41
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +42 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +59 -3
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +6 -6
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +32 -23
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +20 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +59 -50
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +14 -4
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +7 -6
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +44 -10
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +314 -52
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +97 -2
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +88 -52
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +26 -98
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +141 -75
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/packages/generate/index.js +3 -0
- package/packages/generate/index.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
- package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
- package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/packages/process/index.js +3 -0
- package/packages/process/index.js.map +1 -0
- package/packages/process/src/GlobalProcessManager.js.map +1 -0
- package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
- package/packages/process/src/ProcessManager.js.map +1 -0
- package/packages/process/src/index.js.map +1 -0
- package/packages/process/src/managedExecAsync.js.map +1 -0
- package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
- package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
- package/analyzer-template/process/README.md +0 -507
- package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
- package/background/src/lib/process/ProcessManager.js.map +0 -1
- package/background/src/lib/process/index.js.map +0 -1
- package/background/src/lib/process/managedExecAsync.js.map +0 -1
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
- package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
- package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
- /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
- /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
- /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
|
+
}
|
package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map
CHANGED
|
@@ -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
|
|
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 +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
|
|
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;
|
|
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;
|
|
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"}
|
package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts
ADDED
|
@@ -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
|
package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map
ADDED
|
@@ -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
|