@codeyam/codeyam-cli 0.1.0-staging.8e7b1bd → 0.1.0-staging.b8a55ba
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +7 -6
- package/analyzer-template/packages/ai/package.json +1 -1
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +2 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +22 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +23 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +401 -106
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +60 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +661 -50
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +14 -2
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +715 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +123 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +23 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +34 -1
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +236 -24
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +18 -1
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +37 -4
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +5 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +213 -12
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +11 -15
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +114 -11
- package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
- package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +42 -2
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +38 -2
- package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +5 -0
- package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +339 -145
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +20 -0
- package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +8 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +158 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +107 -18
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +223 -103
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +10 -5
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +172 -83
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -5
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +97 -27
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
- package/analyzer-template/packages/aws/package.json +1 -1
- package/analyzer-template/packages/aws/s3/index.ts +1 -0
- package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
- package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +20 -9
- package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +3 -2
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
- package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
- package/analyzer-template/packages/generate/src/lib/getComponentScenarioPath.ts +8 -3
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +8 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +14 -7
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js +7 -3
- package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts +4 -3
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.js +1 -0
- package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +31 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +51 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +21 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js +26 -2
- package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/types/index.ts +8 -0
- package/analyzer-template/packages/types/src/types/Analysis.ts +32 -1
- package/analyzer-template/packages/types/src/types/Scenario.ts +75 -6
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +49 -0
- package/analyzer-template/packages/ui-components/package.json +4 -4
- package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
- package/analyzer-template/packages/utils/dist/types/index.d.ts +4 -3
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/index.js +1 -0
- package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +31 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +51 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +21 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js +26 -2
- package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/applyUniversalMocks.ts +28 -2
- package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
- package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
- package/analyzer-template/playwright/takeScreenshot.ts +9 -7
- package/analyzer-template/project/TESTING.md +83 -0
- package/analyzer-template/project/constructMockCode.ts +151 -30
- package/analyzer-template/project/loadReadyToBeCaptured.ts +17 -1
- package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +16 -9
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +77 -37
- package/analyzer-template/project/reconcileMockDataKeys.ts +104 -3
- package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
- package/analyzer-template/project/serverOnlyModules.ts +288 -0
- package/analyzer-template/project/start.ts +10 -0
- package/analyzer-template/project/startScenarioCapture.ts +73 -41
- package/analyzer-template/project/writeMockDataTsx.ts +103 -40
- package/analyzer-template/project/writeScenarioComponents.ts +1162 -203
- package/analyzer-template/project/writeSimpleRoot.ts +26 -4
- package/analyzer-template/project/writeUniversalMocks.ts +32 -11
- package/background/src/lib/virtualized/project/constructMockCode.js +132 -25
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +15 -1
- package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +11 -6
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +67 -32
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +65 -4
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
- package/background/src/lib/virtualized/project/serverOnlyModules.js +235 -0
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -0
- package/background/src/lib/virtualized/project/start.js +6 -0
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +54 -31
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +87 -34
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +852 -133
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +25 -2
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/background/src/lib/virtualized/project/writeUniversalMocks.js +27 -12
- package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +7 -0
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +1 -0
- package/codeyam-cli/src/cli.js +2 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/debug.js +14 -2
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/recapture.js +215 -0
- package/codeyam-cli/src/commands/recapture.js.map +1 -0
- package/codeyam-cli/src/commands/report.js +26 -23
- package/codeyam-cli/src/commands/report.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +2 -2
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +252 -106
- package/codeyam-cli/src/utils/generateReport.js.map +1 -1
- package/codeyam-cli/src/utils/install-skills.js +2 -7
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +140 -16
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +19 -7
- package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
- package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +47 -0
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +9 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DQeyk25_.js → EntityTypeBadge-CzGX-miz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +25 -0
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CBQPrpT0.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-D1CdlbrV.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-wDPcZNKx.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BfmDgXxG.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +15 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-ayCJdUAc.js → TruncatedFilePath-6J7zDUD5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +32 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.link-scenario-value-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.update-key-attributes-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.update-valid-values-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BYimnrHg.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-CaVsIRxt.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgUsG7ib.js +21 -0
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-FHOVOgFN.js → entity._sha._-zUEpfPsu.js} +22 -15
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-CfLCUi9S.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-DKJyZfAY.js +29 -0
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DAtOlaWE.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-D62Lxxmv.js +15 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-BosqDOlH.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-CzNNiTkw.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-CNp9QFCX.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +56 -0
- package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/search-DDGjYAMJ.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CBc5dE1s.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-DOGXmJcI.js → useLastLogLine-BqPPNjAl.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-C07gRg7Z.js → useToast-DWHcCcl1.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +175 -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/src/webserver/devServer.js +1 -3
- package/codeyam-cli/src/webserver/devServer.js.map +1 -1
- package/codeyam-cli/templates/debug-codeyam.md +620 -0
- package/package.json +14 -14
- package/packages/ai/src/lib/analyzeScope.js +2 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +16 -0
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +16 -0
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +305 -88
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +523 -42
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +12 -2
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +454 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +103 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +19 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +28 -2
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +179 -17
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +6 -0
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +37 -4
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js +4 -0
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +176 -9
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +11 -15
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +105 -9
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +38 -2
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +38 -2
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
- package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +258 -110
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +18 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/getImportedExports.js +6 -1
- package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +125 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +74 -19
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +175 -58
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +10 -5
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +127 -69
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -5
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +74 -23
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/database/src/lib/kysely/db.js +2 -2
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/packages/generate/src/lib/deepMerge.js +27 -1
- package/packages/generate/src/lib/deepMerge.js.map +1 -1
- package/packages/generate/src/lib/getComponentScenarioPath.js +7 -3
- package/packages/generate/src/lib/getComponentScenarioPath.js.map +1 -1
- package/packages/types/index.js +1 -0
- package/packages/types/index.js.map +1 -1
- package/packages/types/src/types/Scenario.js +21 -1
- package/packages/types/src/types/Scenario.js.map +1 -1
- package/packages/utils/src/lib/applyUniversalMocks.js +26 -2
- package/packages/utils/src/lib/applyUniversalMocks.js.map +1 -1
- package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +3 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-CWKV2GEz.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-D2hFeDeg.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-C8K-4kKP.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DgXLv61M.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-DFdLQbPS.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DlRDjT4h.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-7UkVL-UI.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-XjtsGuPo.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-D2eJjWLf.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-w6sbwlOd.js +0 -7
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BBNQ8hup.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-Bex4RrGs.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-cdhjVtom.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DkgmwwRC.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CwLmCS0J.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-YZ-kM3ZG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BeQlz94_.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-DN2XXM7Z.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-CUeAIQNI.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-ccMQfhGf.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-JmESAHx5.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/index-DsL9BiOc.js +0 -8
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-COYCR2oZ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-90adba57.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-DfbVEEjF.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-DvK9iMBu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-9LTbit4Z.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-BrxN5ZtV.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-Iv0p8T-1.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BWmSRPH6.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-CE_1qXCG.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BY_VDhiD.js +0 -166
- package/codeyam-cli/templates/debug-command.md +0 -141
- /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { DataStructure } from '~codeyam/types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Enriches mocked dependency array types with fields from child component signatures.
|
|
5
|
+
*
|
|
6
|
+
* When a mocked dependency (e.g., getSurveysAction) returns an array, and elements
|
|
7
|
+
* from that array are passed to child components (e.g., SurveyCard), the child's
|
|
8
|
+
* signatureSchema specifies required fields (e.g., survey.updatedAt). This function
|
|
9
|
+
* enriches the mocked dependency's returnValueSchema so the LLM knows what fields
|
|
10
|
+
* to generate for array elements.
|
|
11
|
+
*
|
|
12
|
+
* Example:
|
|
13
|
+
* - getSurveysAction returns { data: array }
|
|
14
|
+
* - SurveyCard expects signature[0].survey.updatedAt: date
|
|
15
|
+
* - After enrichment: getSurveysAction().data[]: object, data[].updatedAt: date
|
|
16
|
+
*/
|
|
17
|
+
export default function enrichArrayTypesFromChildSignatures(
|
|
18
|
+
importedExports: {
|
|
19
|
+
filePath?: string;
|
|
20
|
+
name: string;
|
|
21
|
+
isMocked?: boolean;
|
|
22
|
+
}[],
|
|
23
|
+
dependencySchemas: DataStructure['dependencySchemas'],
|
|
24
|
+
): void {
|
|
25
|
+
// Find all mocked dependencies with array return types
|
|
26
|
+
const mockedArrayPaths: {
|
|
27
|
+
filePath: string;
|
|
28
|
+
entityName: string;
|
|
29
|
+
arrayPath: string; // e.g., "getSurveysAction().functionCallReturnValue.data"
|
|
30
|
+
}[] = [];
|
|
31
|
+
|
|
32
|
+
for (const importedExport of importedExports) {
|
|
33
|
+
if (!importedExport.isMocked || !importedExport.filePath) continue;
|
|
34
|
+
|
|
35
|
+
const schema =
|
|
36
|
+
dependencySchemas?.[importedExport.filePath]?.[importedExport.name]
|
|
37
|
+
?.returnValueSchema;
|
|
38
|
+
if (!schema) continue;
|
|
39
|
+
|
|
40
|
+
// Find paths that are top-level data arrays (not deeply nested, not direct returns)
|
|
41
|
+
// We only want to enrich arrays that likely contain objects passed to children
|
|
42
|
+
// e.g., getSurveysAction().data but NOT:
|
|
43
|
+
// - wrapThrows().data.createdBy (deeply nested)
|
|
44
|
+
// - getStatusOptions().functionCallReturnValue (direct array return - usually options/primitives)
|
|
45
|
+
for (const [path, type] of Object.entries(schema)) {
|
|
46
|
+
if (type !== 'array') continue;
|
|
47
|
+
|
|
48
|
+
// Skip paths with computed property patterns like [key], [i], [0], etc.
|
|
49
|
+
// These represent dynamic access patterns, not simple data arrays
|
|
50
|
+
// We only match brackets with content (not empty [] which indicates array element type)
|
|
51
|
+
if (/\[[^\]]+\]/.test(path)) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Skip direct array returns (e.g., getStatusOptions().functionCallReturnValue)
|
|
56
|
+
// These are typically specialized arrays like [{label, value}], not entity arrays
|
|
57
|
+
if (path.endsWith('.functionCallReturnValue')) {
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Check if this is a top-level array (at most one property after functionCallReturnValue)
|
|
62
|
+
// e.g., "foo().functionCallReturnValue.data" is top-level
|
|
63
|
+
// e.g., "foo().functionCallReturnValue.data.createdBy" is nested (skip)
|
|
64
|
+
const returnValueMatch = path.match(/\.functionCallReturnValue\.(.+)$/);
|
|
65
|
+
if (returnValueMatch) {
|
|
66
|
+
const afterReturnValue = returnValueMatch[1];
|
|
67
|
+
// If there's more than one property access, it's nested
|
|
68
|
+
const propertyCount = afterReturnValue.split('.').length;
|
|
69
|
+
if (propertyCount > 1) {
|
|
70
|
+
continue; // Skip deeply nested arrays
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
mockedArrayPaths.push({
|
|
75
|
+
filePath: importedExport.filePath,
|
|
76
|
+
entityName: importedExport.name,
|
|
77
|
+
arrayPath: path,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (mockedArrayPaths.length === 0) return;
|
|
83
|
+
|
|
84
|
+
// Find all non-mocked child components and extract their signature fields
|
|
85
|
+
const childSignatureFields: {
|
|
86
|
+
filePath: string;
|
|
87
|
+
entityName: string;
|
|
88
|
+
// Map of prop paths to types, e.g., { "survey.id": "string", "survey.updatedAt": "date" }
|
|
89
|
+
propFields: Record<string, string>;
|
|
90
|
+
}[] = [];
|
|
91
|
+
|
|
92
|
+
for (const importedExport of importedExports) {
|
|
93
|
+
// Skip mocked dependencies - we want child components
|
|
94
|
+
if (importedExport.isMocked || !importedExport.filePath) continue;
|
|
95
|
+
|
|
96
|
+
const schema =
|
|
97
|
+
dependencySchemas?.[importedExport.filePath]?.[importedExport.name]
|
|
98
|
+
?.signatureSchema;
|
|
99
|
+
if (!schema) continue;
|
|
100
|
+
|
|
101
|
+
// Extract signature[0].* fields (first prop of child component)
|
|
102
|
+
const propFields: Record<string, string> = {};
|
|
103
|
+
for (const [path, type] of Object.entries(schema)) {
|
|
104
|
+
// Match signature[0].propName.field patterns
|
|
105
|
+
const match = path.match(/^signature\[0\]\.(\w+)\.(.+)$/);
|
|
106
|
+
if (match) {
|
|
107
|
+
const [, propName, fieldPath] = match;
|
|
108
|
+
// Store as "fieldPath" without the prop name prefix
|
|
109
|
+
// e.g., signature[0].survey.updatedAt -> updatedAt
|
|
110
|
+
propFields[fieldPath] = type;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (Object.keys(propFields).length > 0) {
|
|
115
|
+
childSignatureFields.push({
|
|
116
|
+
filePath: importedExport.filePath,
|
|
117
|
+
entityName: importedExport.name,
|
|
118
|
+
propFields,
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (childSignatureFields.length === 0) return;
|
|
124
|
+
|
|
125
|
+
// Enrich mocked dependency arrays with child signature fields
|
|
126
|
+
// Only enrich arrays that don't already have element types defined
|
|
127
|
+
// A more sophisticated approach would trace the data flow to match specific arrays to specific children
|
|
128
|
+
for (const { filePath, entityName, arrayPath } of mockedArrayPaths) {
|
|
129
|
+
const schema = dependencySchemas[filePath][entityName].returnValueSchema;
|
|
130
|
+
|
|
131
|
+
// Check if this array already has element type definitions
|
|
132
|
+
// If so, skip it - it's likely a specialized array like [null] for refs
|
|
133
|
+
const elementPathPrefix = `${arrayPath}[`;
|
|
134
|
+
const hasExistingElementType = Object.keys(schema).some((path) =>
|
|
135
|
+
path.startsWith(elementPathPrefix),
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
if (hasExistingElementType) {
|
|
139
|
+
// Array already has element type info (e.g., useAutoAnimate()[0]: null)
|
|
140
|
+
// Don't override it with child signature fields
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Add array element type
|
|
145
|
+
const elementPath = `${arrayPath}[]`;
|
|
146
|
+
schema[elementPath] = 'object';
|
|
147
|
+
|
|
148
|
+
// Add fields from all child signatures to the array element
|
|
149
|
+
for (const { propFields } of childSignatureFields) {
|
|
150
|
+
for (const [fieldPath, type] of Object.entries(propFields)) {
|
|
151
|
+
const fullPath = `${elementPath}.${fieldPath}`;
|
|
152
|
+
if (!schema[fullPath]) {
|
|
153
|
+
schema[fullPath] = type;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -68,6 +68,18 @@ function preprocessSchemaForMocks(
|
|
|
68
68
|
return result;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Options for gatherDataForMocks
|
|
73
|
+
*/
|
|
74
|
+
export interface GatherDataForMocksOptions {
|
|
75
|
+
/**
|
|
76
|
+
* When provided, generates canonical keys in format `EntityName::hookName::index`.
|
|
77
|
+
* This ensures consistent keys across scenarios regardless of variable names
|
|
78
|
+
* chosen during analysis.
|
|
79
|
+
*/
|
|
80
|
+
entityName?: string;
|
|
81
|
+
}
|
|
82
|
+
|
|
71
83
|
/**
|
|
72
84
|
* Processes a single call (with optional variable name) and returns the mock data entry.
|
|
73
85
|
* Returns null if no valid schema is found.
|
|
@@ -78,6 +90,8 @@ function preprocessSchemaForMocks(
|
|
|
78
90
|
* @param variableNameOccurrence - When a variable name is reused, this is the occurrence index
|
|
79
91
|
* (e.g., first 'data' = 0, second 'data' = 1)
|
|
80
92
|
* Used to disambiguate keys when the same variable is reused.
|
|
93
|
+
* @param options - Additional options including entityName for canonical key generation
|
|
94
|
+
* @param hookCallIndex - The global index of this hook call for canonical key generation
|
|
81
95
|
*/
|
|
82
96
|
function processCall(
|
|
83
97
|
importedExport: {
|
|
@@ -89,20 +103,58 @@ function processCall(
|
|
|
89
103
|
},
|
|
90
104
|
dependencySchemas: DataStructure['dependencySchemas'],
|
|
91
105
|
callIndex: number,
|
|
92
|
-
variableNameOccurrence
|
|
106
|
+
variableNameOccurrence: number | undefined,
|
|
107
|
+
options: GatherDataForMocksOptions | undefined,
|
|
108
|
+
hookCallIndex: number,
|
|
93
109
|
): { key: string; value: JsonTypeDefinition } | null {
|
|
94
110
|
const callName = importedExport.calls?.[callIndex] ?? importedExport.name;
|
|
95
|
-
|
|
111
|
+
// Determine if we should use variable-qualified schema or base schema.
|
|
112
|
+
// Use variable-qualified schema when:
|
|
113
|
+
// 1. variableNameOccurrence is defined (we're processing multiple calls with matching variable names), OR
|
|
114
|
+
// 2. calls.length equals callVariableNames.length (single call with single variable name)
|
|
115
|
+
// Use base schema when:
|
|
116
|
+
// - calls.length !== callVariableNames.length (rest spread or method chain case)
|
|
117
|
+
// This is important for rest spread destructuring like: const { x, y, ...data } = useLoaderData()
|
|
118
|
+
// where data.queueState.jobs should come from the base schema, not from a variable-qualified schema.
|
|
119
|
+
const callsLength = importedExport.calls?.length ?? 0;
|
|
120
|
+
const varNamesLength = importedExport.callVariableNames?.length ?? 0;
|
|
121
|
+
const shouldUseVariableQualifiedSchema =
|
|
122
|
+
variableNameOccurrence !== undefined || callsLength === varNamesLength;
|
|
123
|
+
const variableName = shouldUseVariableQualifiedSchema
|
|
124
|
+
? importedExport.callVariableNames?.[callIndex]
|
|
125
|
+
: undefined;
|
|
96
126
|
|
|
97
127
|
// Build the schema lookup key - use variable-qualified key if available
|
|
98
|
-
|
|
99
|
-
|
|
128
|
+
// When the same variable name is reused (variableNameOccurrence > 0), try indexed lookup first
|
|
129
|
+
// e.g., "useFetcher::fetcher[1]" for the second use of "fetcher"
|
|
130
|
+
const indexedVariableName =
|
|
131
|
+
variableName &&
|
|
132
|
+
variableNameOccurrence !== undefined &&
|
|
133
|
+
variableNameOccurrence > 0
|
|
134
|
+
? `${variableName}[${variableNameOccurrence}]`
|
|
135
|
+
: variableName;
|
|
136
|
+
|
|
137
|
+
const schemaLookupKey = indexedVariableName
|
|
138
|
+
? `${importedExport.name}::${indexedVariableName}`
|
|
100
139
|
: importedExport.name;
|
|
101
140
|
|
|
102
|
-
|
|
141
|
+
let rawSchema =
|
|
103
142
|
dependencySchemas?.[importedExport.filePath]?.[schemaLookupKey]
|
|
104
143
|
?.returnValueSchema ?? {};
|
|
105
144
|
|
|
145
|
+
// If no schema found with indexed key, try without the index as fallback
|
|
146
|
+
if (
|
|
147
|
+
Object.keys(rawSchema).length === 0 &&
|
|
148
|
+
variableNameOccurrence !== undefined &&
|
|
149
|
+
variableNameOccurrence > 0 &&
|
|
150
|
+
variableName
|
|
151
|
+
) {
|
|
152
|
+
const nonIndexedKey = `${importedExport.name}::${variableName}`;
|
|
153
|
+
rawSchema =
|
|
154
|
+
dependencySchemas?.[importedExport.filePath]?.[nonIndexedKey]
|
|
155
|
+
?.returnValueSchema ?? {};
|
|
156
|
+
}
|
|
157
|
+
|
|
106
158
|
// If no schema found with variable-qualified key, fall back to base name
|
|
107
159
|
const fallbackSchema =
|
|
108
160
|
Object.keys(rawSchema).length === 0
|
|
@@ -245,13 +297,19 @@ function processCall(
|
|
|
245
297
|
? `${baseSchemaKey}::${variableName}`
|
|
246
298
|
: baseSchemaKey;
|
|
247
299
|
|
|
248
|
-
// Build output key
|
|
249
|
-
//
|
|
250
|
-
//
|
|
300
|
+
// Build output key
|
|
301
|
+
// When entityName is provided, use canonical key format for consistency across scenarios
|
|
302
|
+
// Otherwise, use the variable-based format for backward compatibility
|
|
251
303
|
let outputKey: string;
|
|
252
|
-
if (
|
|
253
|
-
//
|
|
254
|
-
//
|
|
304
|
+
if (options?.entityName) {
|
|
305
|
+
// Canonical key format: EntityName::hookName::index
|
|
306
|
+
// This ensures consistent keys regardless of variable names chosen during analysis
|
|
307
|
+
const hookName = cleanFunctionName(importedExport.name);
|
|
308
|
+
outputKey = `${options.entityName}::${hookName}::${hookCallIndex}`;
|
|
309
|
+
} else if (variableName) {
|
|
310
|
+
// Legacy format: "variableName <- functionName"
|
|
311
|
+
// This reads naturally as "variableName receives from functionName"
|
|
312
|
+
// When a variable name is reused (variableNameOccurrence > 0), disambiguate with index
|
|
255
313
|
const disambiguator =
|
|
256
314
|
variableNameOccurrence !== undefined && variableNameOccurrence > 0
|
|
257
315
|
? `[${variableNameOccurrence}]`
|
|
@@ -271,6 +329,10 @@ function processCall(
|
|
|
271
329
|
if (!returnValue) {
|
|
272
330
|
returnValue = schema['returnValue'];
|
|
273
331
|
}
|
|
332
|
+
// Fallback for function call return values (e.g., useFetcher returns via functionCallReturnValue)
|
|
333
|
+
if (!returnValue) {
|
|
334
|
+
returnValue = schema['functionCallReturnValue'];
|
|
335
|
+
}
|
|
274
336
|
|
|
275
337
|
if (!returnValue) {
|
|
276
338
|
return null;
|
|
@@ -288,11 +350,19 @@ export default function gatherDataForMocks(
|
|
|
288
350
|
callVariableNames?: string[];
|
|
289
351
|
}[],
|
|
290
352
|
dependencySchemas: DataStructure['dependencySchemas'],
|
|
353
|
+
options?: GatherDataForMocksOptions,
|
|
291
354
|
) {
|
|
292
|
-
|
|
355
|
+
// Track the global index for each hook name across all imports
|
|
356
|
+
// This enables canonical keys like EntityName::useLoaderData::0, EntityName::useFetcher::0, etc.
|
|
357
|
+
const hookCallIndices: Record<string, number> = {};
|
|
358
|
+
|
|
359
|
+
const result = importedExports.reduce(
|
|
293
360
|
(acc, importedExport) => {
|
|
294
361
|
if (!importedExport.isMocked) return acc;
|
|
295
362
|
|
|
363
|
+
// Get the clean hook name for indexing
|
|
364
|
+
const hookName = cleanFunctionName(importedExport.name);
|
|
365
|
+
|
|
296
366
|
// Check if we have multiple calls with variable names
|
|
297
367
|
const hasMultipleCalls =
|
|
298
368
|
importedExport.calls &&
|
|
@@ -313,21 +383,38 @@ export default function gatherDataForMocks(
|
|
|
313
383
|
const occurrence = variableNameCounts[varName] ?? 0;
|
|
314
384
|
variableNameCounts[varName] = occurrence + 1;
|
|
315
385
|
|
|
316
|
-
|
|
386
|
+
// Get the current hook call index and increment for next call
|
|
387
|
+
const hookCallIndex = hookCallIndices[hookName] ?? 0;
|
|
388
|
+
hookCallIndices[hookName] = hookCallIndex + 1;
|
|
389
|
+
|
|
390
|
+
const processResult = processCall(
|
|
317
391
|
importedExport,
|
|
318
392
|
dependencySchemas,
|
|
319
393
|
i,
|
|
320
394
|
occurrence,
|
|
395
|
+
options,
|
|
396
|
+
hookCallIndex,
|
|
321
397
|
);
|
|
322
|
-
if (
|
|
323
|
-
acc[
|
|
398
|
+
if (processResult) {
|
|
399
|
+
acc[processResult.key] = processResult.value;
|
|
324
400
|
}
|
|
325
401
|
}
|
|
326
402
|
} else {
|
|
327
403
|
// Original behavior for single calls or calls without variable names
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
404
|
+
// Get the current hook call index and increment for next call
|
|
405
|
+
const hookCallIndex = hookCallIndices[hookName] ?? 0;
|
|
406
|
+
hookCallIndices[hookName] = hookCallIndex + 1;
|
|
407
|
+
|
|
408
|
+
const processResult = processCall(
|
|
409
|
+
importedExport,
|
|
410
|
+
dependencySchemas,
|
|
411
|
+
0,
|
|
412
|
+
undefined,
|
|
413
|
+
options,
|
|
414
|
+
hookCallIndex,
|
|
415
|
+
);
|
|
416
|
+
if (processResult) {
|
|
417
|
+
acc[processResult.key] = processResult.value;
|
|
331
418
|
}
|
|
332
419
|
}
|
|
333
420
|
|
|
@@ -335,4 +422,6 @@ export default function gatherDataForMocks(
|
|
|
335
422
|
},
|
|
336
423
|
{} as { [importAlias: string]: JsonTypeDefinition },
|
|
337
424
|
);
|
|
425
|
+
|
|
426
|
+
return result;
|
|
338
427
|
}
|
package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts
CHANGED
|
@@ -38,7 +38,7 @@ export default async function generateChangesScenarioData({
|
|
|
38
38
|
const fullStructure = analysis.metadata.scenariosDataStructure;
|
|
39
39
|
const structure: Analysis['metadata']['scenariosDataStructure'] = {
|
|
40
40
|
arguments: fullStructure.arguments ?? [],
|
|
41
|
-
dataForMocks: gatherDataForMocks(analysis, dependentAnalyses),
|
|
41
|
+
dataForMocks: gatherDataForMocks(analysis, dependentAnalyses, entity.name),
|
|
42
42
|
};
|
|
43
43
|
|
|
44
44
|
for (const key in fullStructure.dataForMocks) {
|