@codeyam/codeyam-cli 0.1.0-staging.596f0eb → 0.1.0-staging.76566f9
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 +2 -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 +734 -45
- 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 +715 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +233 -75
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +34 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -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/generateChangesEntityScenarioData.ts +41 -0
- 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 +36 -25
- 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 +127 -43
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +158 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +405 -45
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +260 -133
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +10 -5
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +77 -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 +196 -86
- 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/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
- package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
- 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/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/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/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/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/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/lightweightEntityExtractor.ts +27 -0
- package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
- package/analyzer-template/playwright/takeScreenshot.ts +9 -7
- package/analyzer-template/project/constructMockCode.ts +286 -84
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +77 -37
- package/analyzer-template/project/reconcileMockDataKeys.ts +5 -2
- package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
- package/analyzer-template/project/serverOnlyModules.ts +71 -23
- package/analyzer-template/project/start.ts +10 -0
- package/analyzer-template/project/startScenarioCapture.ts +73 -41
- package/analyzer-template/project/writeMockDataTsx.ts +115 -54
- package/analyzer-template/project/writeScenarioComponents.ts +571 -162
- package/analyzer-template/project/writeSimpleRoot.ts +11 -13
- package/background/src/lib/virtualized/project/constructMockCode.js +265 -75
- package/background/src/lib/virtualized/project/constructMockCode.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 +5 -2
- 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 +62 -25
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
- 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 +106 -46
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +399 -106
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +11 -11
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- 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 -2
- 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-efWKDYMr.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-COPstp9J.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)-CVP_WGQ3.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._-Dt-SjPsw.js +23 -0
- 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-C9s7Lhdl.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-0d27da29.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-B_wIKCIf.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-3pmpUQB-.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-DEyawJ8r.js → useToast-DWHcCcl1.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-CU58-Ttc.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-D35o2uae.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/codeyam-setup-skill.md +138 -3
- package/codeyam-cli/templates/debug-codeyam.md +625 -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 +582 -41
- 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 +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 +173 -55
- 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 +30 -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/convertNullToUndefinedBySchema.js +86 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
- 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/generateChangesEntityScenarioData.js +41 -0
- package/packages/ai/src/lib/generateChangesEntityScenarioData.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 +29 -25
- 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 +100 -23
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.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 +298 -45
- 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 +201 -80
- 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 +55 -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 +171 -81
- 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/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/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/lightweightEntityExtractor.js +25 -0
- package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +3 -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/src/webserver/build/client/assets/EntityItem-CVbSvOjo.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-DcwcHyl5.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-WgwC1GfJ.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-IEKom9O2.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-BYnfxbUG.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-_lBPJCzG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-lHVhvsu_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-d_TBk4GQ.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-kGT7VUqj.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DDGmhu7P.js +0 -7
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-n_HPRfM_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CbVoyx1U.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-D1VOYveA.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-YR8jjAlu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-B8vP3V_s.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CN6aLCT1.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DA5Jeu2P.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BTeitalf.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-du6UEYD-.js +0 -13
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-BpjkhMoi.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-BQGvk4lJ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-DVdYRT-I.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-DCG-vks0.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-GazdNeLl.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-0b694d28.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-D3tQP7hx.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-CIY6XmtE.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-CoMDgElu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-agkniXp2.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-B2VUcygF.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-EvdK-zXP.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-DGVHQEXD.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CghkTkIL.js +0 -166
- package/codeyam-cli/templates/debug-command.md +0 -303
- /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
|
@@ -9,10 +9,12 @@ import {
|
|
|
9
9
|
fillInDirectSchemaGapsAndUnknowns,
|
|
10
10
|
deduplicateFunctionSchemas,
|
|
11
11
|
clearAttributesFromMapping,
|
|
12
|
+
mergeJsonTypeDefinitions,
|
|
12
13
|
} from '~codeyam/ai';
|
|
13
14
|
import mergeInDependentDataStructure from './mergeInDependentDataStructure';
|
|
14
15
|
import { awsLog } from '~codeyam/utils';
|
|
15
16
|
import gatherDataForMocks from './gatherDataForMocks';
|
|
17
|
+
import enrichArrayTypesFromChildSignatures from './enrichArrayTypesFromChildSignatures';
|
|
16
18
|
|
|
17
19
|
export interface GenerateDataStructureArgs {
|
|
18
20
|
entity: Entity;
|
|
@@ -109,55 +111,6 @@ export default function generateDataStructure({
|
|
|
109
111
|
const relevantDependencyAnalysis =
|
|
110
112
|
dependentAnalyses[lookupPath]?.[importedExport.name];
|
|
111
113
|
|
|
112
|
-
// DEBUG: Track buildBranchFileMap and fileComparisons
|
|
113
|
-
if (
|
|
114
|
-
importedExport.name === 'buildBranchFileMap' ||
|
|
115
|
-
entity.name === 'GitView'
|
|
116
|
-
) {
|
|
117
|
-
console.log('🔍 DEBUG generateDataStructure:', {
|
|
118
|
-
entityName: entity.name,
|
|
119
|
-
importedExportName: importedExport.name,
|
|
120
|
-
lookupPath,
|
|
121
|
-
hasAnalysis: !!relevantDependencyAnalysis,
|
|
122
|
-
signatureSchema:
|
|
123
|
-
relevantDependencyAnalysis?.metadata?.mergedDataStructure
|
|
124
|
-
?.signatureSchema,
|
|
125
|
-
dependencySchemas: relevantDependencyAnalysis?.metadata
|
|
126
|
-
?.mergedDataStructure?.dependencySchemas
|
|
127
|
-
? Object.keys(
|
|
128
|
-
relevantDependencyAnalysis.metadata.mergedDataStructure
|
|
129
|
-
.dependencySchemas,
|
|
130
|
-
)
|
|
131
|
-
: null,
|
|
132
|
-
});
|
|
133
|
-
if (
|
|
134
|
-
relevantDependencyAnalysis?.metadata?.mergedDataStructure
|
|
135
|
-
?.signatureSchema
|
|
136
|
-
) {
|
|
137
|
-
const sig =
|
|
138
|
-
relevantDependencyAnalysis.metadata.mergedDataStructure
|
|
139
|
-
.signatureSchema;
|
|
140
|
-
console.log(
|
|
141
|
-
'🔍 DEBUG buildBranchFileMap signature keys:',
|
|
142
|
-
Object.keys(sig),
|
|
143
|
-
);
|
|
144
|
-
// Look for fileComparisons in the signature
|
|
145
|
-
for (const key of Object.keys(sig)) {
|
|
146
|
-
if (
|
|
147
|
-
key.includes('fileComparisons') ||
|
|
148
|
-
key.includes('entityDiff')
|
|
149
|
-
) {
|
|
150
|
-
console.log(
|
|
151
|
-
'🔍 DEBUG Found relevant key:',
|
|
152
|
-
key,
|
|
153
|
-
'=',
|
|
154
|
-
JSON.stringify(sig[key], null, 2),
|
|
155
|
-
);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
114
|
if (!relevantDependencyAnalysis) {
|
|
162
115
|
// console.info(
|
|
163
116
|
// 'CodeYam Warn: No relevant dependency analysis found for importedExport',
|
|
@@ -207,6 +160,227 @@ export default function generateDataStructure({
|
|
|
207
160
|
return acc;
|
|
208
161
|
}, {} as ReadonlyAnalysisMap);
|
|
209
162
|
|
|
163
|
+
// For non-mocked child components (like visual components), include their mocked
|
|
164
|
+
// dependencies in allImportedExports. This ensures that when a parent component
|
|
165
|
+
// renders a child that uses the same hook with different destructure patterns,
|
|
166
|
+
// both patterns get separate mock data keys.
|
|
167
|
+
//
|
|
168
|
+
// Example: DashboardPage uses QuotesTableCompact (child, not mocked).
|
|
169
|
+
// Both use useFlags hook but destructure different properties:
|
|
170
|
+
// - DashboardPage: const { enableNewAdminDashboard } = useFlags()
|
|
171
|
+
// - QuotesTableCompact: const { flagShowReferenceIdOnQuoteTable } = useFlags()
|
|
172
|
+
// We need mock data keys for BOTH destructure patterns.
|
|
173
|
+
//
|
|
174
|
+
// We need to traverse the ENTIRE dependency tree recursively because nested
|
|
175
|
+
// child components (e.g., QuotesTableCompact inside AdminDashboard inside
|
|
176
|
+
// DashboardPage) also have mocked dependencies that need mock data keys.
|
|
177
|
+
|
|
178
|
+
// Collect child dependency schemas to merge after mergeInDependentDataStructure
|
|
179
|
+
// This ensures that when we look up schemas for child imports in gatherDataForMocks,
|
|
180
|
+
// the child's schemas are available in mergedDataStructure.dependencySchemas.
|
|
181
|
+
type DependencySchemas = NonNullable<
|
|
182
|
+
Analysis['metadata']['mergedDataStructure']
|
|
183
|
+
>['dependencySchemas'];
|
|
184
|
+
const childDependencySchemas: DependencySchemas = {};
|
|
185
|
+
|
|
186
|
+
// Helper function to add mocked imports from an entity to allImportedExports
|
|
187
|
+
const addMockedImportsFromEntity = (childEntity: Entity | undefined) => {
|
|
188
|
+
if (!childEntity?.metadata) return;
|
|
189
|
+
|
|
190
|
+
// Add child's mocked nodeModuleImports
|
|
191
|
+
const childNodeModuleImports = childEntity.metadata.nodeModuleImports;
|
|
192
|
+
if (childNodeModuleImports) {
|
|
193
|
+
for (const moduleName of Object.keys(childNodeModuleImports)) {
|
|
194
|
+
const moduleImports = childNodeModuleImports[moduleName] || [];
|
|
195
|
+
for (const imported of moduleImports) {
|
|
196
|
+
if (!imported.isMocked) continue;
|
|
197
|
+
|
|
198
|
+
// Check if this import already exists in allImportedExports
|
|
199
|
+
const existingImport = allImportedExports.find(
|
|
200
|
+
(existing) =>
|
|
201
|
+
existing.filePath === moduleName &&
|
|
202
|
+
existing.name === imported.name,
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
if (existingImport) {
|
|
206
|
+
// Merge callVariableNames if the same dependency exists with different patterns
|
|
207
|
+
if (imported.callVariableNames && imported.calls) {
|
|
208
|
+
existingImport.calls = existingImport.calls || [];
|
|
209
|
+
existingImport.callVariableNames =
|
|
210
|
+
existingImport.callVariableNames || [];
|
|
211
|
+
|
|
212
|
+
// Add each call/variable pair that doesn't already exist
|
|
213
|
+
for (let i = 0; i < imported.calls.length; i++) {
|
|
214
|
+
const call = imported.calls[i];
|
|
215
|
+
const varName = imported.callVariableNames[i];
|
|
216
|
+
if (!varName) continue;
|
|
217
|
+
|
|
218
|
+
// Check if this specific callVariableName already exists
|
|
219
|
+
if (!existingImport.callVariableNames.includes(varName)) {
|
|
220
|
+
existingImport.calls.push(call);
|
|
221
|
+
existingImport.callVariableNames.push(varName);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
// Add new import
|
|
227
|
+
allImportedExports.push({
|
|
228
|
+
filePath: moduleName,
|
|
229
|
+
name: imported.name,
|
|
230
|
+
isDefault: imported.isDefault,
|
|
231
|
+
isMocked: imported.isMocked,
|
|
232
|
+
calls: imported.calls ? [...imported.calls] : undefined,
|
|
233
|
+
callVariableNames: imported.callVariableNames
|
|
234
|
+
? [...imported.callVariableNames]
|
|
235
|
+
: undefined,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// Add child's mocked importedExports
|
|
243
|
+
const childImportedExports = childEntity.metadata.importedExports;
|
|
244
|
+
if (childImportedExports) {
|
|
245
|
+
for (const imported of childImportedExports) {
|
|
246
|
+
if (!imported.isMocked) continue;
|
|
247
|
+
|
|
248
|
+
// Check if this import already exists in allImportedExports
|
|
249
|
+
const existingImport = allImportedExports.find(
|
|
250
|
+
(existing) =>
|
|
251
|
+
existing.filePath === imported.filePath &&
|
|
252
|
+
existing.name === imported.name,
|
|
253
|
+
);
|
|
254
|
+
|
|
255
|
+
if (existingImport) {
|
|
256
|
+
// Merge callVariableNames if the same dependency exists with different patterns
|
|
257
|
+
if (imported.callVariableNames && imported.calls) {
|
|
258
|
+
existingImport.calls = existingImport.calls || [];
|
|
259
|
+
existingImport.callVariableNames =
|
|
260
|
+
existingImport.callVariableNames || [];
|
|
261
|
+
|
|
262
|
+
// Add each call/variable pair that doesn't already exist
|
|
263
|
+
for (let i = 0; i < imported.calls.length; i++) {
|
|
264
|
+
const call = imported.calls[i];
|
|
265
|
+
const varName = imported.callVariableNames[i];
|
|
266
|
+
if (!varName) continue;
|
|
267
|
+
|
|
268
|
+
// Check if this specific callVariableName already exists
|
|
269
|
+
if (!existingImport.callVariableNames.includes(varName)) {
|
|
270
|
+
existingImport.calls.push(call);
|
|
271
|
+
existingImport.callVariableNames.push(varName);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
} else {
|
|
276
|
+
// Add new import
|
|
277
|
+
allImportedExports.push({
|
|
278
|
+
filePath: imported.filePath,
|
|
279
|
+
name: imported.name,
|
|
280
|
+
isDefault: imported.isDefault,
|
|
281
|
+
isMocked: imported.isMocked,
|
|
282
|
+
calls: imported.calls ? [...imported.calls] : undefined,
|
|
283
|
+
callVariableNames: imported.callVariableNames
|
|
284
|
+
? [...imported.callVariableNames]
|
|
285
|
+
: undefined,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
// Recursive function to traverse the dependency tree
|
|
293
|
+
const processedAnalyses = new Set<string>();
|
|
294
|
+
const traverseDependencyTree = (analyses: ReadonlyAnalysisMap) => {
|
|
295
|
+
for (const filePath in analyses) {
|
|
296
|
+
for (const name in analyses[filePath]) {
|
|
297
|
+
const analysisKey = `${filePath}:${name}`;
|
|
298
|
+
if (processedAnalyses.has(analysisKey)) continue;
|
|
299
|
+
processedAnalyses.add(analysisKey);
|
|
300
|
+
|
|
301
|
+
const childAnalysis = analyses[filePath][name];
|
|
302
|
+
const childEntity = childAnalysis?.entity;
|
|
303
|
+
|
|
304
|
+
// Add mocked imports from this child entity
|
|
305
|
+
addMockedImportsFromEntity(childEntity as Entity | undefined);
|
|
306
|
+
|
|
307
|
+
// Recursively process this child's non-mocked children
|
|
308
|
+
// via their mergedDataStructure's nested dependentAnalyses
|
|
309
|
+
const childMergedDataStructure =
|
|
310
|
+
childAnalysis?.metadata?.mergedDataStructure;
|
|
311
|
+
|
|
312
|
+
// Collect the child's dependency schemas for merging later.
|
|
313
|
+
// This ensures schemas for child imports are available in gatherDataForMocks.
|
|
314
|
+
if (childMergedDataStructure?.dependencySchemas) {
|
|
315
|
+
for (const schemaFilePath in childMergedDataStructure.dependencySchemas) {
|
|
316
|
+
for (const schemaName in childMergedDataStructure
|
|
317
|
+
.dependencySchemas[schemaFilePath]) {
|
|
318
|
+
childDependencySchemas[schemaFilePath] ||= {};
|
|
319
|
+
const existingSchema =
|
|
320
|
+
childDependencySchemas[schemaFilePath][schemaName];
|
|
321
|
+
const newSchema =
|
|
322
|
+
childMergedDataStructure.dependencySchemas[schemaFilePath][
|
|
323
|
+
schemaName
|
|
324
|
+
];
|
|
325
|
+
|
|
326
|
+
if (existingSchema) {
|
|
327
|
+
// Merge schemas if the same dependency exists from multiple children
|
|
328
|
+
childDependencySchemas[schemaFilePath][schemaName] = {
|
|
329
|
+
signatureSchema: {
|
|
330
|
+
...existingSchema.signatureSchema,
|
|
331
|
+
...newSchema.signatureSchema,
|
|
332
|
+
},
|
|
333
|
+
returnValueSchema: mergeJsonTypeDefinitions(
|
|
334
|
+
existingSchema.returnValueSchema as Record<
|
|
335
|
+
string,
|
|
336
|
+
unknown
|
|
337
|
+
>,
|
|
338
|
+
newSchema.returnValueSchema as Record<string, unknown>,
|
|
339
|
+
) as Record<string, string>,
|
|
340
|
+
};
|
|
341
|
+
} else {
|
|
342
|
+
childDependencySchemas[schemaFilePath][schemaName] = {
|
|
343
|
+
signatureSchema: { ...newSchema.signatureSchema },
|
|
344
|
+
returnValueSchema: { ...newSchema.returnValueSchema },
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
if (childMergedDataStructure?.dependencySchemas) {
|
|
352
|
+
// We need to find non-mocked child components in the dependency tree
|
|
353
|
+
// These would be in the child's importedExports that are NOT mocked
|
|
354
|
+
const childImportedExports =
|
|
355
|
+
childEntity?.metadata?.importedExports ?? [];
|
|
356
|
+
const nonMockedChildDeps: ReadonlyAnalysisMap = {};
|
|
357
|
+
|
|
358
|
+
for (const dep of childImportedExports) {
|
|
359
|
+
if (dep.isMocked) continue;
|
|
360
|
+
if (dep.entityType !== 'visual') continue;
|
|
361
|
+
|
|
362
|
+
// Try to find this dependency in dependentAnalyses
|
|
363
|
+
const depFilePath = dep.resolvedFilePath ?? dep.filePath;
|
|
364
|
+
const depName = dep.resolvedName ?? dep.name;
|
|
365
|
+
|
|
366
|
+
if (dependentAnalyses[depFilePath]?.[depName]) {
|
|
367
|
+
nonMockedChildDeps[depFilePath] ||= {};
|
|
368
|
+
nonMockedChildDeps[depFilePath][depName] =
|
|
369
|
+
dependentAnalyses[depFilePath][depName];
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
if (Object.keys(nonMockedChildDeps).length > 0) {
|
|
374
|
+
traverseDependencyTree(nonMockedChildDeps);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
// Start traversal from direct non-mocked children
|
|
382
|
+
traverseDependencyTree(nonMockedDependentAnalyses);
|
|
383
|
+
|
|
210
384
|
// console.info(
|
|
211
385
|
// 'CODEYAM DEBUG: start merge',
|
|
212
386
|
// JSON.stringify(
|
|
@@ -239,42 +413,39 @@ export default function generateDataStructure({
|
|
|
239
413
|
dependencySchemas: isolatedDataStructure?.dependencySchemas || {},
|
|
240
414
|
});
|
|
241
415
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
mergedDataStructure.dependencySchemas[
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
416
|
+
mergedDataStructure.environmentVariables =
|
|
417
|
+
isolatedDataStructure.environmentVariables || [];
|
|
418
|
+
|
|
419
|
+
// Merge collected child dependency schemas into mergedDataStructure.
|
|
420
|
+
// This ensures that when gatherDataForMocks looks up schemas for child imports,
|
|
421
|
+
// the child's schemas are available.
|
|
422
|
+
for (const schemaFilePath in childDependencySchemas) {
|
|
423
|
+
for (const schemaName in childDependencySchemas[schemaFilePath]) {
|
|
424
|
+
mergedDataStructure.dependencySchemas[schemaFilePath] ||= {};
|
|
425
|
+
const existingSchema =
|
|
426
|
+
mergedDataStructure.dependencySchemas[schemaFilePath][schemaName];
|
|
427
|
+
const childSchema = childDependencySchemas[schemaFilePath][schemaName];
|
|
428
|
+
|
|
429
|
+
if (existingSchema) {
|
|
430
|
+
// Merge schemas - child schemas add to parent schemas
|
|
431
|
+
mergedDataStructure.dependencySchemas[schemaFilePath][schemaName] = {
|
|
432
|
+
signatureSchema: {
|
|
433
|
+
...existingSchema.signatureSchema,
|
|
434
|
+
...childSchema.signatureSchema,
|
|
435
|
+
},
|
|
436
|
+
returnValueSchema: mergeJsonTypeDefinitions(
|
|
437
|
+
existingSchema.returnValueSchema as Record<string, unknown>,
|
|
438
|
+
childSchema.returnValueSchema as Record<string, unknown>,
|
|
439
|
+
) as Record<string, string>,
|
|
440
|
+
};
|
|
441
|
+
} else {
|
|
442
|
+
// No existing schema - just add the child's schema
|
|
443
|
+
mergedDataStructure.dependencySchemas[schemaFilePath][schemaName] =
|
|
444
|
+
childSchema;
|
|
271
445
|
}
|
|
272
446
|
}
|
|
273
447
|
}
|
|
274
448
|
|
|
275
|
-
mergedDataStructure.environmentVariables =
|
|
276
|
-
isolatedDataStructure.environmentVariables || [];
|
|
277
|
-
|
|
278
449
|
// console.info(
|
|
279
450
|
// 'CODEYAM DEBUG: end merge',
|
|
280
451
|
// JSON.stringify(
|
|
@@ -326,63 +497,19 @@ export default function generateDataStructure({
|
|
|
326
497
|
analysis.metadata ||= {};
|
|
327
498
|
analysis.metadata.mergedDataStructure = mergedDataStructure;
|
|
328
499
|
|
|
329
|
-
|
|
500
|
+
// Enrich mocked dependency array types with fields from child component signatures
|
|
501
|
+
// This ensures that when getSurveysAction returns { data: array }, and SurveyCard
|
|
502
|
+
// expects survey.updatedAt, the array element type includes updatedAt
|
|
503
|
+
enrichArrayTypesFromChildSignatures(
|
|
330
504
|
allImportedExports,
|
|
331
505
|
mergedDataStructure.dependencySchemas,
|
|
332
506
|
);
|
|
333
507
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
Object.keys(dataForMocks),
|
|
339
|
-
);
|
|
340
|
-
for (const key of Object.keys(dataForMocks)) {
|
|
341
|
-
if (
|
|
342
|
-
key.includes('buildBranchFileMap') ||
|
|
343
|
-
key.includes('fileComparisons') ||
|
|
344
|
-
key.includes('entityDiff')
|
|
345
|
-
) {
|
|
346
|
-
console.log(
|
|
347
|
-
'🔍 DEBUG dataForMocks relevant key:',
|
|
348
|
-
key,
|
|
349
|
-
'=',
|
|
350
|
-
JSON.stringify(dataForMocks[key], null, 2),
|
|
351
|
-
);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// console.info(
|
|
357
|
-
// 'CODEYAM DEBUG: dataForMocks',
|
|
358
|
-
// JSON.stringify(
|
|
359
|
-
// {
|
|
360
|
-
// filePath: entity.filePath,
|
|
361
|
-
// entityName: entity.name,
|
|
362
|
-
// dataForMocks,
|
|
363
|
-
// },
|
|
364
|
-
// null,
|
|
365
|
-
// 2,
|
|
366
|
-
// ),
|
|
367
|
-
// );
|
|
368
|
-
|
|
369
|
-
// Log union types in signatureSchema before processing
|
|
370
|
-
const unionTypeEntries = Object.entries(
|
|
371
|
-
mergedDataStructure.signatureSchema,
|
|
372
|
-
).filter(
|
|
373
|
-
([_, value]) =>
|
|
374
|
-
typeof value === 'string' &&
|
|
375
|
-
value.includes("'") &&
|
|
376
|
-
value.includes(' | '),
|
|
508
|
+
const dataForMocks = gatherDataForMocks(
|
|
509
|
+
allImportedExports,
|
|
510
|
+
mergedDataStructure.dependencySchemas,
|
|
511
|
+
{ entityName: entity.name },
|
|
377
512
|
);
|
|
378
|
-
if (unionTypeEntries.length > 0) {
|
|
379
|
-
console.log(
|
|
380
|
-
`[UNION-TYPE] generateDataStructure for ${entity.name}: Found union types in signatureSchema:`,
|
|
381
|
-
);
|
|
382
|
-
unionTypeEntries.forEach(([key, value]) => {
|
|
383
|
-
console.log(`[UNION-TYPE] "${key}": ${value}`);
|
|
384
|
-
});
|
|
385
|
-
}
|
|
386
513
|
|
|
387
514
|
const finalizedArgumentsSchema = fillInDirectSchemaGapsAndUnknowns({
|
|
388
515
|
schema: { ...mergedDataStructure.signatureSchema },
|
|
@@ -29,13 +29,10 @@ export default async function generateKeyAttributes({
|
|
|
29
29
|
}: GenerateEntityKeyAttributesArgs): Promise<void> {
|
|
30
30
|
if (!['visual', 'library'].includes(entity.entityType)) return;
|
|
31
31
|
|
|
32
|
-
//
|
|
32
|
+
// Gather all mock data, consolidated under the root entity name
|
|
33
33
|
const structure = {
|
|
34
34
|
arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
|
|
35
|
-
dataForMocks:
|
|
36
|
-
...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
|
|
37
|
-
...gatherDataForMocks(analysis, dependentAnalyses),
|
|
38
|
-
},
|
|
35
|
+
dataForMocks: gatherDataForMocks(analysis, dependentAnalyses, entity.name),
|
|
39
36
|
};
|
|
40
37
|
|
|
41
38
|
awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
|
|
@@ -98,6 +95,14 @@ export default async function generateKeyAttributes({
|
|
|
98
95
|
...(ka.dependencies && {
|
|
99
96
|
dependencies: ka.dependencies.map((dep) => ({ ...dep })),
|
|
100
97
|
}),
|
|
98
|
+
// Convert readonly sourceLocations array to mutable if present
|
|
99
|
+
...(ka.sourceLocations && {
|
|
100
|
+
sourceLocations: ka.sourceLocations.map((loc) => ({ ...loc })),
|
|
101
|
+
}),
|
|
102
|
+
// Convert readonly compoundConditionalIds array to mutable if present
|
|
103
|
+
...(ka.compoundConditionalIds && {
|
|
104
|
+
compoundConditionalIds: [...ka.compoundConditionalIds],
|
|
105
|
+
}),
|
|
101
106
|
})),
|
|
102
107
|
].filter(
|
|
103
108
|
(ka, index, self) =>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Analysis,
|
|
3
3
|
Entity,
|
|
4
|
+
JsonTypeDefinition,
|
|
4
5
|
ReadonlyAnalysis,
|
|
5
6
|
ReadonlyAnalysisMap,
|
|
6
7
|
} from '~codeyam/types';
|
|
@@ -21,17 +22,91 @@ export interface GenerateScenarioDataArgs {
|
|
|
21
22
|
updateProgress?: (detail: string) => void;
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
/**
|
|
26
|
+
* Consolidates dataForMocks from the current analysis and all dependent analyses.
|
|
27
|
+
*
|
|
28
|
+
* Keys are preserved as original call signatures (e.g., 'useFetcher<UserData>()',
|
|
29
|
+
* 'db.select(usersQuery)'). When the same call signature appears from multiple
|
|
30
|
+
* analyses, schemas are merged.
|
|
31
|
+
*/
|
|
24
32
|
export function gatherDataForMocks(
|
|
25
33
|
analysis: ReadonlyAnalysis,
|
|
26
34
|
dependentAnalyses: ReadonlyAnalysisMap,
|
|
35
|
+
_rootEntityName?: string, // Kept for API compatibility but no longer used for key transformation
|
|
27
36
|
): Analysis['metadata']['scenariosDataStructure']['dataForMocks'] {
|
|
28
|
-
const dataForMocks =
|
|
37
|
+
const dataForMocks: Analysis['metadata']['scenariosDataStructure']['dataForMocks'] =
|
|
38
|
+
{};
|
|
29
39
|
const analysesGathered = new Set<string>();
|
|
30
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Helper to merge schemas (only works for objects, otherwise just returns new value)
|
|
43
|
+
*/
|
|
44
|
+
const mergeSchemas = (
|
|
45
|
+
existing: JsonTypeDefinition[keyof JsonTypeDefinition],
|
|
46
|
+
incoming: JsonTypeDefinition[keyof JsonTypeDefinition],
|
|
47
|
+
): JsonTypeDefinition[keyof JsonTypeDefinition] => {
|
|
48
|
+
// Only merge if both are objects (not arrays, not primitives)
|
|
49
|
+
if (
|
|
50
|
+
typeof existing === 'object' &&
|
|
51
|
+
existing !== null &&
|
|
52
|
+
!Array.isArray(existing) &&
|
|
53
|
+
typeof incoming === 'object' &&
|
|
54
|
+
incoming !== null &&
|
|
55
|
+
!Array.isArray(incoming)
|
|
56
|
+
) {
|
|
57
|
+
return mergeJsonTypeDefinitions(
|
|
58
|
+
existing as JsonTypeDefinition,
|
|
59
|
+
incoming as JsonTypeDefinition,
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
// For primitives/arrays, just use the incoming value
|
|
63
|
+
return incoming;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Add mock data, preserving original call signature as key.
|
|
68
|
+
* Merges schemas when the same key appears from multiple sources.
|
|
69
|
+
*/
|
|
70
|
+
const addMockData = (
|
|
71
|
+
key: string,
|
|
72
|
+
schema: JsonTypeDefinition[keyof JsonTypeDefinition],
|
|
73
|
+
): void => {
|
|
74
|
+
// Skip if schema is empty object
|
|
75
|
+
if (
|
|
76
|
+
typeof schema === 'object' &&
|
|
77
|
+
schema !== null &&
|
|
78
|
+
!Array.isArray(schema) &&
|
|
79
|
+
Object.keys(schema).length === 0
|
|
80
|
+
) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Skip null/undefined
|
|
85
|
+
if (schema === null || schema === undefined) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Preserve original key (call signature), merge if exists
|
|
90
|
+
if (dataForMocks[key]) {
|
|
91
|
+
dataForMocks[key] = mergeSchemas(dataForMocks[key], schema);
|
|
92
|
+
} else {
|
|
93
|
+
dataForMocks[key] = schema;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
|
|
31
97
|
// inner recursive function to gather data for mocks
|
|
32
98
|
const gatherDataForMocksRecursive = (
|
|
33
99
|
activeAnalysis: ReadonlyAnalysis,
|
|
34
100
|
): void => {
|
|
101
|
+
// First, process ALL keys from this analysis's dataForMocks
|
|
102
|
+
const localDataForMocks =
|
|
103
|
+
activeAnalysis.metadata?.scenariosDataStructure?.dataForMocks ?? {};
|
|
104
|
+
|
|
105
|
+
for (const [key, schema] of Object.entries(localDataForMocks)) {
|
|
106
|
+
addMockData(key, schema as JsonTypeDefinition[keyof JsonTypeDefinition]);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Then, recurse into dependent analyses based on imports
|
|
35
110
|
const allImportedExports = [
|
|
36
111
|
...(activeAnalysis.entity?.metadata.importedExports ?? []),
|
|
37
112
|
...Object.keys(
|
|
@@ -46,68 +121,7 @@ export function gatherDataForMocks(
|
|
|
46
121
|
),
|
|
47
122
|
];
|
|
48
123
|
|
|
49
|
-
// console.info('CODEYAM DEBUG: gatherDataForMocksRecursive START', {
|
|
50
|
-
// filePath: activeAnalysis.filePath,
|
|
51
|
-
// analysisEntityName: activeAnalysis.entityName,
|
|
52
|
-
// analysisId: activeAnalysis.id,
|
|
53
|
-
// entity: !!activeAnalysis.entity,
|
|
54
|
-
// entityName: activeAnalysis.entity?.name,
|
|
55
|
-
// allImportedExports: allImportedExports.map((ie) => ({
|
|
56
|
-
// filePath: ie.filePath,
|
|
57
|
-
// name: ie.name,
|
|
58
|
-
// })),
|
|
59
|
-
// });
|
|
60
|
-
|
|
61
124
|
for (const importedExport of allImportedExports) {
|
|
62
|
-
const localDataForMocks =
|
|
63
|
-
activeAnalysis.metadata?.scenariosDataStructure?.dataForMocks ?? {};
|
|
64
|
-
// Find relevant keys - handle both old format (starts with name)
|
|
65
|
-
// and new variable-qualified format ("varName <- functionName")
|
|
66
|
-
const relevantKeys = Object.keys(localDataForMocks).filter(
|
|
67
|
-
(key) =>
|
|
68
|
-
key.startsWith(importedExport.name) ||
|
|
69
|
-
key.endsWith(` <- ${importedExport.name}`),
|
|
70
|
-
);
|
|
71
|
-
|
|
72
|
-
// console.info('CODEYAM DEBUG: Processing import', {
|
|
73
|
-
// importedExportName: importedExport.name,
|
|
74
|
-
// importedExportFilePath: importedExport.filePath,
|
|
75
|
-
// relevantKeys,
|
|
76
|
-
// hasLocalDataForMocks: Object.keys(localDataForMocks).length > 0,
|
|
77
|
-
// localDataForMocksKeys: Object.keys(localDataForMocks),
|
|
78
|
-
// });
|
|
79
|
-
|
|
80
|
-
// First, if we have local data for this mock, add it
|
|
81
|
-
for (const relevantKey of relevantKeys) {
|
|
82
|
-
const localDataForMock = localDataForMocks[relevantKey];
|
|
83
|
-
|
|
84
|
-
// console.info('CODEYAM DEBUG: Found relevantKey', {
|
|
85
|
-
// relevantKey,
|
|
86
|
-
// localDataForMockType: typeof localDataForMock,
|
|
87
|
-
// localDataForMockValue: localDataForMock,
|
|
88
|
-
// isObject: typeof localDataForMock === 'object',
|
|
89
|
-
// objectKeysLength:
|
|
90
|
-
// typeof localDataForMock === 'object' && localDataForMock !== null
|
|
91
|
-
// ? Object.keys(localDataForMock).length
|
|
92
|
-
// : 'N/A',
|
|
93
|
-
// });
|
|
94
|
-
|
|
95
|
-
if (Object.keys(localDataForMock).length > 0) {
|
|
96
|
-
if ((dataForMocks as any)[relevantKey]) {
|
|
97
|
-
(dataForMocks as any)[relevantKey] = mergeJsonTypeDefinitions(
|
|
98
|
-
(dataForMocks as any)[relevantKey],
|
|
99
|
-
localDataForMock,
|
|
100
|
-
);
|
|
101
|
-
} else {
|
|
102
|
-
(dataForMocks as any)[relevantKey] = localDataForMock;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// ALWAYS check for dependent analysis to gather nested dependencies,
|
|
108
|
-
// regardless of whether we found a relevantKey above.
|
|
109
|
-
// This ensures transitive dependencies are included.
|
|
110
|
-
// For example: Activity -> CurrentActivityTab -> useLastLogLine
|
|
111
125
|
// Use resolvedFilePath when available (for re-exports from index files)
|
|
112
126
|
const lookupPath =
|
|
113
127
|
('resolvedFilePath' in importedExport &&
|
|
@@ -121,30 +135,10 @@ export function gatherDataForMocks(
|
|
|
121
135
|
gatherDataForMocksRecursive(dependentAnalysis);
|
|
122
136
|
}
|
|
123
137
|
}
|
|
124
|
-
|
|
125
|
-
// console.info('CODEYAM DEBUG: gatherDataForMocksRecursive END', {
|
|
126
|
-
// filePath: activeAnalysis.filePath,
|
|
127
|
-
// entityName: activeAnalysis.entityName,
|
|
128
|
-
// currentDataForMocksKeys: Object.keys(dataForMocks),
|
|
129
|
-
// });
|
|
130
138
|
};
|
|
131
139
|
|
|
132
140
|
gatherDataForMocksRecursive(analysis);
|
|
133
141
|
|
|
134
|
-
// console.info(
|
|
135
|
-
// 'CODEYAM DEBUG: gatherDataForMocks FINAL RESULT',
|
|
136
|
-
// JSON.stringify(
|
|
137
|
-
// {
|
|
138
|
-
// filePath: analysis.filePath,
|
|
139
|
-
// entityName: analysis.entityName,
|
|
140
|
-
// dataForMocksKeys: Object.keys(dataForMocks),
|
|
141
|
-
// dataForMocks,
|
|
142
|
-
// },
|
|
143
|
-
// null,
|
|
144
|
-
// 2,
|
|
145
|
-
// ),
|
|
146
|
-
// );
|
|
147
|
-
|
|
148
142
|
return dataForMocks;
|
|
149
143
|
}
|
|
150
144
|
|
|
@@ -159,7 +153,7 @@ export default async function generateScenarioData({
|
|
|
159
153
|
|
|
160
154
|
const structure: Analysis['metadata']['scenariosDataStructure'] = {
|
|
161
155
|
arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
|
|
162
|
-
dataForMocks: gatherDataForMocks(analysis, dependentAnalyses),
|
|
156
|
+
dataForMocks: gatherDataForMocks(analysis, dependentAnalyses, entity.name),
|
|
163
157
|
};
|
|
164
158
|
|
|
165
159
|
const scenarios = analysis.scenarios;
|