@codeyam/codeyam-cli 0.1.0-staging.b8a55ba → 0.1.0-staging.c90f8c9
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 +8 -8
- package/analyzer-template/common/execAsync.ts +1 -1
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +9 -6
- package/analyzer-template/packages/ai/index.ts +10 -3
- package/analyzer-template/packages/ai/package.json +1 -1
- package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +126 -6
- package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +116 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +140 -6
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +849 -9
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +244 -0
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
- package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +892 -117
- 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 +296 -35
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +120 -76
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +80 -5
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +8 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
- package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +156 -0
- package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
- package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
- package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +1 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1111 -87
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +191 -191
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +570 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1977 -0
- package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
- package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
- package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +276 -3
- package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +33 -3
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +90 -6
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
- package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
- package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +812 -0
- package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
- package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +118 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
- package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
- package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +381 -265
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +18 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -7
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
- package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +148 -41
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +506 -59
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +157 -74
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +156 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +35 -129
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +420 -87
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
- package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
- package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
- package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
- package/analyzer-template/packages/aws/package.json +3 -3
- package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
- package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
- package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
- package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
- package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
- package/analyzer-template/packages/database/src/lib/loadCommits.ts +16 -0
- package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
- package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
- package/analyzer-template/packages/generate/index.ts +3 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
- package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
- 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 +17 -1
- 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.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
- 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/loadAnalyses.d.ts +2 -0
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +13 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.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 +7 -4
- package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
- package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/index.js +3 -0
- package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
- package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
- package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/index.js +0 -1
- package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
- package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +9 -54
- 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 +1 -21
- 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 +148 -0
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
- package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
- package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
- package/analyzer-template/packages/process/index.ts +2 -0
- package/analyzer-template/packages/process/package.json +12 -0
- package/analyzer-template/packages/process/tsconfig.json +8 -0
- package/analyzer-template/packages/types/index.ts +3 -6
- package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
- package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
- package/analyzer-template/packages/types/src/types/Scenario.ts +9 -77
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +175 -0
- package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/index.js +0 -1
- package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
- package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +9 -54
- 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 +1 -21
- 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 +148 -0
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
- package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
- package/analyzer-template/playwright/capture.ts +37 -18
- package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
- package/analyzer-template/playwright/waitForServer.ts +21 -6
- package/analyzer-template/project/analyzeBaselineCommit.ts +4 -0
- package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
- package/analyzer-template/project/analyzeFileEntities.ts +4 -0
- package/analyzer-template/project/analyzeRegularCommit.ts +4 -0
- package/analyzer-template/project/constructMockCode.ts +1112 -169
- package/analyzer-template/project/controller/startController.ts +16 -1
- package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
- package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
- package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
- package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +7 -1
- package/analyzer-template/project/orchestrateCapture.ts +36 -3
- package/analyzer-template/project/reconcileMockDataKeys.ts +220 -78
- package/analyzer-template/project/runAnalysis.ts +11 -0
- package/analyzer-template/project/serverOnlyModules.ts +127 -2
- package/analyzer-template/project/start.ts +16 -4
- package/analyzer-template/project/startScenarioCapture.ts +6 -0
- package/analyzer-template/project/writeMockDataTsx.ts +164 -24
- package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
- package/analyzer-template/project/writeScenarioComponents.ts +304 -112
- package/analyzer-template/project/writeScenarioFiles.ts +26 -0
- package/analyzer-template/project/writeSimpleRoot.ts +11 -35
- package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
- package/analyzer-template/scripts/defaultCmd.sh +9 -0
- package/analyzer-template/tsconfig.json +2 -1
- package/background/src/lib/local/createLocalAnalyzer.js +1 -29
- package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
- package/background/src/lib/local/execAsync.js +1 -1
- package/background/src/lib/local/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/common/execAsync.js +1 -1
- package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
- package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js +2 -1
- package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
- package/background/src/lib/virtualized/project/constructMockCode.js +987 -130
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/controller/startController.js +11 -1
- package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
- package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
- package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
- package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
- package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
- package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +3 -1
- package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
- package/background/src/lib/virtualized/project/orchestrateCapture.js +27 -4
- package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +188 -47
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
- package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
- package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +15 -4
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +139 -23
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
- package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +228 -95
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
- package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
- package/background/src/lib/virtualized/project/writeSimpleRoot.js +11 -34
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/src/cli.js +5 -1
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/analyze.js +1 -1
- package/codeyam-cli/src/commands/analyze.js.map +1 -1
- package/codeyam-cli/src/commands/baseline.js +174 -0
- package/codeyam-cli/src/commands/baseline.js.map +1 -0
- package/codeyam-cli/src/commands/debug.js +28 -18
- package/codeyam-cli/src/commands/debug.js.map +1 -1
- package/codeyam-cli/src/commands/default.js +0 -15
- package/codeyam-cli/src/commands/default.js.map +1 -1
- package/codeyam-cli/src/commands/recapture.js +29 -18
- package/codeyam-cli/src/commands/recapture.js.map +1 -1
- package/codeyam-cli/src/commands/report.js +46 -1
- package/codeyam-cli/src/commands/report.js.map +1 -1
- package/codeyam-cli/src/commands/start.js +8 -12
- package/codeyam-cli/src/commands/start.js.map +1 -1
- package/codeyam-cli/src/commands/status.js +23 -1
- package/codeyam-cli/src/commands/status.js.map +1 -1
- package/codeyam-cli/src/commands/test-startup.js +1 -1
- package/codeyam-cli/src/commands/test-startup.js.map +1 -1
- package/codeyam-cli/src/commands/wipe.js +108 -0
- package/codeyam-cli/src/commands/wipe.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
- package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +31 -27
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +28 -14
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +12 -2
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/database.js +91 -5
- package/codeyam-cli/src/utils/database.js.map +1 -1
- package/codeyam-cli/src/utils/generateReport.js +4 -3
- package/codeyam-cli/src/utils/generateReport.js.map +1 -1
- package/codeyam-cli/src/utils/git.js +79 -0
- package/codeyam-cli/src/utils/git.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +31 -17
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +105 -0
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +6 -0
- 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/utils/serverState.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +7 -5
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/versionInfo.js +25 -19
- package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
- package/codeyam-cli/src/utils/wipe.js +128 -0
- package/codeyam-cli/src/utils/wipe.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/database.js +73 -20
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +40 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BXhEawa3.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-DLqD3qNt.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-Ba2JVPzP.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-aht4aafF.js +25 -0
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-CVtiBnY5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-B0GLXMsr.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-xgeCVgSM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-D4TZhLuw.js +21 -0
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-DuDvi0jm.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DEx02QDa.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-DyFZkK0l.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/_index-BwqWJOgH.js +11 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DoLIqZX2.js +37 -0
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-Cx24_aWc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-BOARzkeR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-BdhJEx6B.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BRb-0kQl.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-zUEpfPsu.js → entity._sha._-C2N4Op8e.js} +12 -12
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-CTBG2mmz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-CS2cb_eZ.js} +6 -6
- package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-DMJ7zii9.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-Cs4MdYtv.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-B4RJRvYB.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/git-commit-horizontal-CysbcZxi.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-DMUaGAqV.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-B1h680n5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-lzqtyFU8.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-B7B9V-bu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-f874c610.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-Bz5TunQg.js +57 -0
- package/codeyam-cli/src/webserver/build/client/assets/rules-hEkvVw2-.js +97 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-CxXUmBSd.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-DwFIBT09.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-B6LgvRJg.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C1v1PQzo.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-aSv48UbS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DYxHZQuP.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-mBRpZPiu.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-uNNbimct.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-B08qC4Y7.js +257 -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/server.js +35 -25
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/codeyam-power-rules-hook.sh +200 -0
- package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam:debug.md} +48 -4
- package/codeyam-cli/templates/{debug-codeyam.md → codeyam:diagnose.md} +185 -23
- package/codeyam-cli/templates/codeyam:new-rule.md +13 -0
- package/codeyam-cli/templates/codeyam:power-rules.md +449 -0
- package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam:setup.md} +139 -4
- package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam:sim.md} +1 -1
- package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam:test.md} +1 -1
- package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam:verify.md} +1 -1
- package/package.json +6 -5
- package/packages/ai/index.js +5 -4
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +97 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
- package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +84 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
- package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js +97 -6
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
- package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
- package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
- package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +654 -13
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +24 -9
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/completionCall.js +178 -31
- package/packages/ai/src/lib/completionCall.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +715 -64
- 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 +230 -23
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +77 -55
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +67 -3
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +6 -1
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
- package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructureChunking.js +111 -0
- package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
- package/packages/ai/src/lib/deepEqual.js +32 -0
- package/packages/ai/src/lib/deepEqual.js.map +1 -0
- package/packages/ai/src/lib/e2eDataTracking.js +241 -0
- package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
- package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js +1 -0
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +906 -82
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +170 -162
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateExecutionFlows.js +392 -0
- package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1440 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
- package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
- package/packages/ai/src/lib/isolateScopes.js +231 -4
- package/packages/ai/src/lib/isolateScopes.js.map +1 -1
- package/packages/ai/src/lib/mergeStatements.js +26 -3
- package/packages/ai/src/lib/mergeStatements.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
- package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +68 -6
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
- package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
- package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
- package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
- package/packages/ai/src/lib/resolvePathToControllable.js +667 -0
- package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
- package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
- package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/analysisContext.js +30 -5
- package/packages/analyze/src/lib/analysisContext.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
- package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
- package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +151 -52
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +10 -0
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -7
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/enums/steps.js +1 -1
- package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +121 -37
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
- package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +410 -55
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +126 -57
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +96 -0
- package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +27 -98
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +342 -83
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
- package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
- package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
- package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/packages/database/src/lib/loadAnalyses.js +45 -2
- package/packages/database/src/lib/loadAnalyses.js.map +1 -1
- package/packages/database/src/lib/loadCommits.js +13 -1
- package/packages/database/src/lib/loadCommits.js.map +1 -1
- package/packages/database/src/lib/loadEntities.js +23 -4
- package/packages/database/src/lib/loadEntities.js.map +1 -1
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
- package/packages/generate/index.js +3 -0
- package/packages/generate/index.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
- package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
- package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
- package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
- package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
- package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
- package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
- package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
- package/packages/process/index.js +3 -0
- package/packages/process/index.js.map +1 -0
- package/packages/process/src/GlobalProcessManager.js.map +1 -0
- package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
- package/packages/process/src/ProcessManager.js.map +1 -0
- package/packages/process/src/index.js.map +1 -0
- package/packages/process/src/managedExecAsync.js.map +1 -0
- package/packages/types/index.js +0 -1
- package/packages/types/index.js.map +1 -1
- package/packages/types/src/types/Scenario.js +1 -21
- package/packages/types/src/types/Scenario.js.map +1 -1
- package/packages/utils/src/lib/safeFileName.js +29 -3
- package/packages/utils/src/lib/safeFileName.js.map +1 -1
- package/scripts/finalize-analyzer.cjs +3 -3
- package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
- package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
- package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
- package/analyzer-template/process/README.md +0 -507
- package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
- package/background/src/lib/process/ProcessManager.js.map +0 -1
- package/background/src/lib/process/index.js.map +0 -1
- package/background/src/lib/process/managedExecAsync.js.map +0 -1
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
- package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
- package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
- package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
- package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
- package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
- package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -298
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/isFrontend.js +0 -5
- package/packages/ai/src/lib/isFrontend.js.map +0 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
- package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
- /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
- /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
- /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
- /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.restart-server-l0sNRNKZ.js} +0 -0
- /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.rules-l0sNRNKZ.js} +0 -0
- /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
- /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
|
@@ -4,19 +4,26 @@ import { awsLog, awsLogDebugLevel } from '~codeyam/utils';
|
|
|
4
4
|
import measureAndReportExecutionTime from '../../../utils/measureAndReportExecutionTime';
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
|
+
deduplicateFunctionSchemas,
|
|
8
|
+
detectWrapperRequirements,
|
|
7
9
|
fillInDirectSchemaGapsAndUnknowns,
|
|
8
10
|
generateEntityDataStructure,
|
|
9
|
-
|
|
11
|
+
getConditionalUsages,
|
|
10
12
|
getEquivalentSignatureVariables,
|
|
11
13
|
getFunctionSignature,
|
|
12
14
|
getReturnValue,
|
|
13
15
|
getSourceEquivalencies,
|
|
14
16
|
getUsageEquivalencies,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
getConditionalEffects,
|
|
18
|
+
getCompoundConditionals,
|
|
19
|
+
getChildBoundaryGatingConditions,
|
|
20
|
+
getJsxRenderingUsages,
|
|
17
21
|
} from '~codeyam/ai';
|
|
18
22
|
import type { AnalysisOptions } from '../analyzeEntities';
|
|
19
23
|
|
|
24
|
+
// Set to true to process entities one at a time for easier debugging.
|
|
25
|
+
const DEBUG_SEQUENTIAL_EXECUTION = false;
|
|
26
|
+
|
|
20
27
|
// VERSION MARKER: server-only-detection-v2 (2025-12-28)
|
|
21
28
|
// This version includes automatic detection of "use server" and "server-only" files
|
|
22
29
|
// and runs server-only detection even for cached entities
|
|
@@ -31,254 +38,251 @@ export default async function prepareEntityDataStructures(
|
|
|
31
38
|
projectAnalyzer: ProjectAnalyzer,
|
|
32
39
|
options: AnalysisOptions,
|
|
33
40
|
): Promise<void> {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
const processEntity = async (entity: Entity) => {
|
|
42
|
+
// Check if already has cached data structure (unless force is set)
|
|
43
|
+
const hasCache = !!entity.metadata?.isolatedDataStructure;
|
|
44
|
+
const shouldRegenerateDataStructure =
|
|
45
|
+
!hasCache || options.force || options.forceAll;
|
|
46
|
+
|
|
47
|
+
// PHASE 1: Generate data structure (only for non-cached entities or when forced)
|
|
48
|
+
// Wrapped in its own try-catch so PHASE 2 always runs even if this fails
|
|
49
|
+
if (shouldRegenerateDataStructure) {
|
|
50
|
+
try {
|
|
51
|
+
const fileAnalyzer = projectAnalyzer.getFileAnalyzerByPath(
|
|
52
|
+
entity.resolvedFilePath ?? entity.filePath,
|
|
53
|
+
);
|
|
54
|
+
if (!fileAnalyzer) {
|
|
55
|
+
awsLog(
|
|
56
|
+
`CodeYam: prepareEntityDataStructures: FileAnalyzer not found`,
|
|
57
|
+
{
|
|
58
|
+
entityFilePath: entity.filePath,
|
|
59
|
+
entityName: entity.name,
|
|
60
|
+
},
|
|
48
61
|
);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
// Still continue to PHASE 2 for server-only detection
|
|
63
|
+
} else {
|
|
64
|
+
const dataStructureInfo =
|
|
65
|
+
await getEntityDataStructureAndFunctionCalls({
|
|
66
|
+
entity,
|
|
67
|
+
fileAnalyzer,
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if (!dataStructureInfo?.isolatedDataStructure) {
|
|
71
|
+
// Data structure generation failed - entity will proceed with empty schemas
|
|
72
|
+
// This is okay - the entity can still be analyzed, just without detailed type info
|
|
73
|
+
if (['visual', 'library'].includes(entity.entityType)) {
|
|
74
|
+
// we'd really expect these to have data structures
|
|
75
|
+
awsLog(
|
|
76
|
+
`CodeYam: prepareEntityDataStructures: Failed to generate data structure for ${entity.filePath}:${entity.name}`,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
57
79
|
// Still continue to PHASE 2 for server-only detection
|
|
58
80
|
} else {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
const { isolatedDataStructure, functionCalls, callVariableNames } =
|
|
82
|
+
dataStructureInfo;
|
|
83
|
+
|
|
84
|
+
// Store data structure in entity metadata
|
|
85
|
+
entity.metadata ||= {};
|
|
86
|
+
|
|
87
|
+
// Deep clone dependencySchemas to avoid shared references
|
|
88
|
+
// We need to clone because getReturnValue() returns direct references to schema objects
|
|
89
|
+
// and multiple entities might reference the same dependency
|
|
90
|
+
const clonedDependencySchemas: typeof isolatedDataStructure.dependencySchemas =
|
|
91
|
+
{};
|
|
92
|
+
for (const filePath in isolatedDataStructure.dependencySchemas) {
|
|
93
|
+
clonedDependencySchemas[filePath] = {};
|
|
94
|
+
for (const entityName in isolatedDataStructure.dependencySchemas[
|
|
95
|
+
filePath
|
|
96
|
+
]) {
|
|
97
|
+
const depSchema =
|
|
98
|
+
isolatedDataStructure.dependencySchemas[filePath][entityName];
|
|
99
|
+
clonedDependencySchemas[filePath][entityName] = {
|
|
100
|
+
signatureSchema: { ...depSchema.signatureSchema },
|
|
101
|
+
returnValueSchema: { ...depSchema.returnValueSchema },
|
|
102
|
+
usageEquivalencies: depSchema.usageEquivalencies,
|
|
103
|
+
sourceEquivalencies: depSchema.sourceEquivalencies,
|
|
104
|
+
};
|
|
73
105
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
// Store data structure in entity metadata
|
|
83
|
-
entity.metadata ||= {};
|
|
84
|
-
|
|
85
|
-
// Deep clone dependencySchemas to avoid shared references
|
|
86
|
-
// We need to clone because getReturnValue() returns direct references to schema objects
|
|
87
|
-
// and multiple entities might reference the same dependency
|
|
88
|
-
const clonedDependencySchemas: typeof isolatedDataStructure.dependencySchemas =
|
|
89
|
-
{};
|
|
90
|
-
for (const filePath in isolatedDataStructure.dependencySchemas) {
|
|
91
|
-
clonedDependencySchemas[filePath] = {};
|
|
92
|
-
for (const entityName in isolatedDataStructure
|
|
93
|
-
.dependencySchemas[filePath]) {
|
|
94
|
-
const depSchema =
|
|
95
|
-
isolatedDataStructure.dependencySchemas[filePath][
|
|
96
|
-
entityName
|
|
97
|
-
];
|
|
98
|
-
clonedDependencySchemas[filePath][entityName] = {
|
|
99
|
-
signatureSchema: { ...depSchema.signatureSchema },
|
|
100
|
-
returnValueSchema: { ...depSchema.returnValueSchema },
|
|
101
|
-
usageEquivalencies: depSchema.usageEquivalencies,
|
|
102
|
-
sourceEquivalencies: depSchema.sourceEquivalencies,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// LOGGING: Track dependencySchemas entity names for debugging :: format issues
|
|
109
|
+
const allEntityNames: string[] = [];
|
|
110
|
+
for (const filePath in clonedDependencySchemas) {
|
|
111
|
+
for (const entityName in clonedDependencySchemas[filePath]) {
|
|
112
|
+
allEntityNames.push(`${filePath}:${entityName}`);
|
|
105
113
|
}
|
|
114
|
+
}
|
|
115
|
+
entity.metadata.isolatedDataStructure = {
|
|
116
|
+
signatureSchema: deduplicateFunctionSchemas(
|
|
117
|
+
isolatedDataStructure.signatureSchema,
|
|
118
|
+
),
|
|
119
|
+
returnValueSchema: deduplicateFunctionSchemas(
|
|
120
|
+
isolatedDataStructure.returnValueSchema,
|
|
121
|
+
),
|
|
122
|
+
equivalentSignatureVariables:
|
|
123
|
+
isolatedDataStructure.equivalentSignatureVariables,
|
|
124
|
+
dependencySchemas: clonedDependencySchemas,
|
|
125
|
+
environmentVariables: isolatedDataStructure.environmentVariables,
|
|
126
|
+
// Use enriched conditional usages with source tracing from analysis
|
|
127
|
+
conditionalUsages: isolatedDataStructure.conditionalUsages,
|
|
128
|
+
// Include conditional effects for execution flow generation
|
|
129
|
+
conditionalEffects: isolatedDataStructure.conditionalEffects,
|
|
130
|
+
// Include compound conditionals for complete execution flow generation
|
|
131
|
+
compoundConditionals: isolatedDataStructure.compoundConditionals,
|
|
132
|
+
// Include root entity's equivalencies for merge step
|
|
133
|
+
usageEquivalencies: isolatedDataStructure.usageEquivalencies,
|
|
134
|
+
sourceEquivalencies: isolatedDataStructure.sourceEquivalencies,
|
|
135
|
+
// Include child boundary gating conditions for child component flow merging
|
|
136
|
+
childBoundaryGatingConditions:
|
|
137
|
+
isolatedDataStructure.childBoundaryGatingConditions,
|
|
138
|
+
// Include JSX rendering usages for array size and text length flow generation
|
|
139
|
+
jsxRenderingUsages: isolatedDataStructure.jsxRenderingUsages,
|
|
140
|
+
};
|
|
106
141
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const wrapperRequirements = detectWrapperRequirements({
|
|
128
|
-
entity,
|
|
129
|
-
fileAnalyzer,
|
|
130
|
-
});
|
|
131
|
-
if (wrapperRequirements.length > 0) {
|
|
132
|
-
entity.metadata.wrapperRequirements = wrapperRequirements;
|
|
142
|
+
// Detect wrapper requirements (Context providers, etc.)
|
|
143
|
+
const wrapperRequirements = detectWrapperRequirements({
|
|
144
|
+
entity,
|
|
145
|
+
fileAnalyzer,
|
|
146
|
+
});
|
|
147
|
+
if (wrapperRequirements.length > 0) {
|
|
148
|
+
entity.metadata.wrapperRequirements = wrapperRequirements;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Annotate imported exports with function call information
|
|
152
|
+
const importedExports = entity.metadata.importedExports ?? [];
|
|
153
|
+
for (const importedExport of importedExports) {
|
|
154
|
+
const relevantCalls = functionCalls[importedExport.name];
|
|
155
|
+
if (relevantCalls) {
|
|
156
|
+
importedExport.calls = relevantCalls;
|
|
157
|
+
}
|
|
158
|
+
const relevantVariableNames =
|
|
159
|
+
callVariableNames[importedExport.name];
|
|
160
|
+
if (relevantVariableNames) {
|
|
161
|
+
importedExport.callVariableNames = relevantVariableNames;
|
|
133
162
|
}
|
|
163
|
+
}
|
|
134
164
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
165
|
+
// Annotate node module imports with function call information
|
|
166
|
+
for (const [path, infos] of Object.entries(
|
|
167
|
+
entity.metadata.nodeModuleImports ?? {},
|
|
168
|
+
)) {
|
|
169
|
+
for (const info of infos) {
|
|
170
|
+
const relevantCalls = functionCalls[info.name];
|
|
139
171
|
if (relevantCalls) {
|
|
140
|
-
|
|
172
|
+
info.calls = relevantCalls;
|
|
141
173
|
}
|
|
142
|
-
const relevantVariableNames =
|
|
143
|
-
callVariableNames[importedExport.name];
|
|
174
|
+
const relevantVariableNames = callVariableNames[info.name];
|
|
144
175
|
if (relevantVariableNames) {
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
// Annotate node module imports with function call information
|
|
150
|
-
for (const [path, infos] of Object.entries(
|
|
151
|
-
entity.metadata.nodeModuleImports ?? {},
|
|
152
|
-
)) {
|
|
153
|
-
for (const info of infos) {
|
|
154
|
-
const relevantCalls = functionCalls[info.name];
|
|
155
|
-
if (relevantCalls) {
|
|
156
|
-
info.calls = relevantCalls;
|
|
157
|
-
}
|
|
158
|
-
const relevantVariableNames = callVariableNames[info.name];
|
|
159
|
-
if (relevantVariableNames) {
|
|
160
|
-
info.callVariableNames = relevantVariableNames;
|
|
161
|
-
}
|
|
176
|
+
info.callVariableNames = relevantVariableNames;
|
|
162
177
|
}
|
|
163
178
|
}
|
|
164
179
|
}
|
|
165
180
|
}
|
|
166
|
-
} catch (phase1Error) {
|
|
167
|
-
console.warn(
|
|
168
|
-
`CodeYam: prepareEntityDataStructures: PHASE 1 error for ${entity.filePath}:${entity.name}:`,
|
|
169
|
-
phase1Error,
|
|
170
|
-
);
|
|
171
|
-
// Continue to PHASE 2 - server-only detection should still run
|
|
172
181
|
}
|
|
182
|
+
} catch (phase1Error) {
|
|
183
|
+
console.warn(
|
|
184
|
+
`CodeYam: prepareEntityDataStructures: PHASE 1 error for ${entity.filePath}:${entity.name}:`,
|
|
185
|
+
phase1Error,
|
|
186
|
+
);
|
|
187
|
+
// Continue to PHASE 2 - server-only detection should still run
|
|
173
188
|
}
|
|
189
|
+
}
|
|
174
190
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
);
|
|
191
|
-
continue;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
// Never mock visual components - they render UI and should use real implementation
|
|
195
|
-
if (importedExport.entityType === 'visual') {
|
|
196
|
-
console.log(
|
|
197
|
-
`CodeYam: [${entity.name}] SKIP ${importedExport.name} - visual component, setting isMocked=false`,
|
|
198
|
-
);
|
|
199
|
-
importedExport.isMocked = false;
|
|
200
|
-
continue;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Always mock imports from server-only files ("use server" or import "server-only")
|
|
204
|
-
// These files contain Server Actions or server-only code that cannot run on the client
|
|
205
|
-
const importedFilePath =
|
|
206
|
-
importedExport.resolvedFilePath ?? importedExport.filePath;
|
|
207
|
-
const importedFileAnalyzer =
|
|
208
|
-
projectAnalyzer.getFileAnalyzerByPath(importedFilePath);
|
|
209
|
-
// Use sourceFile.getText() which is always available, unlike file.content which is lazy-loaded
|
|
210
|
-
const importedFileContent =
|
|
211
|
-
importedFileAnalyzer?.sourceFile?.getText();
|
|
212
|
-
|
|
213
|
-
const isServerOnly = importedFileContent
|
|
214
|
-
? isServerOnlyFile(importedFileContent)
|
|
215
|
-
: false;
|
|
216
|
-
console.log(
|
|
217
|
-
`CodeYam: [${entity.name}] CHECK ${importedExport.name} from ${importedFilePath}:`,
|
|
218
|
-
{
|
|
219
|
-
hasFileAnalyzer: !!importedFileAnalyzer,
|
|
220
|
-
hasSourceFile: !!importedFileAnalyzer?.sourceFile,
|
|
221
|
-
hasFileContent: !!importedFileContent,
|
|
222
|
-
contentFirst50Chars: importedFileContent
|
|
223
|
-
?.substring(0, 50)
|
|
224
|
-
?.replace(/\n/g, '\\n'),
|
|
225
|
-
isServerOnly,
|
|
226
|
-
},
|
|
227
|
-
);
|
|
191
|
+
try {
|
|
192
|
+
// PHASE 2: Server-only detection and isMocked determination
|
|
193
|
+
// This runs for ALL entities, even those with cached data structures
|
|
194
|
+
// because server-only detection may have been added after the entity was cached
|
|
195
|
+
const importedExports = entity.metadata?.importedExports ?? [];
|
|
196
|
+
const mockedDependencies = determineMockedDependencies(entity);
|
|
197
|
+
for (const importedExport of importedExports) {
|
|
198
|
+
// Skip if already has a definitive isMocked value (true or false, not null)
|
|
199
|
+
// But re-check if isMocked is null or undefined - this handles previously cached entities
|
|
200
|
+
if (
|
|
201
|
+
importedExport.isMocked === true ||
|
|
202
|
+
importedExport.isMocked === false
|
|
203
|
+
) {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
228
206
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
continue;
|
|
235
|
-
}
|
|
207
|
+
// Never mock visual components - they render UI and should use real implementation
|
|
208
|
+
if (importedExport.entityType === 'visual') {
|
|
209
|
+
importedExport.isMocked = false;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
236
212
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
213
|
+
// Always mock imports from server-only files ("use server" or import "server-only")
|
|
214
|
+
// These files contain Server Actions or server-only code that cannot run on the client
|
|
215
|
+
const importedFilePath =
|
|
216
|
+
importedExport.resolvedFilePath ?? importedExport.filePath;
|
|
217
|
+
const importedFileAnalyzer =
|
|
218
|
+
projectAnalyzer.getFileAnalyzerByPath(importedFilePath);
|
|
219
|
+
// Use sourceFile.getText() which is always available, unlike file.content which is lazy-loaded
|
|
220
|
+
const importedFileContent = importedFileAnalyzer?.sourceFile?.getText();
|
|
221
|
+
|
|
222
|
+
const isServerOnly = importedFileContent
|
|
223
|
+
? isServerOnlyFile(importedFileContent)
|
|
224
|
+
: false;
|
|
225
|
+
|
|
226
|
+
if (importedFileContent && isServerOnly) {
|
|
227
|
+
importedExport.isMocked = true;
|
|
228
|
+
continue;
|
|
246
229
|
}
|
|
247
230
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
231
|
+
const matchesMockedDep = mockedDependencies.some(
|
|
232
|
+
(dep) =>
|
|
233
|
+
dep.filePath === importedExport.filePath &&
|
|
234
|
+
dep.entityName === importedExport.name,
|
|
235
|
+
);
|
|
236
|
+
importedExport.isMocked = matchesMockedDep;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// Browser globals that should always be mocked (they make network calls)
|
|
240
|
+
const alwaysMockedBrowserGlobals = ['fetch', 'EventSource'];
|
|
241
|
+
|
|
242
|
+
for (const [path, infos] of Object.entries(
|
|
243
|
+
entity.metadata?.nodeModuleImports ?? {},
|
|
244
|
+
)) {
|
|
245
|
+
for (const info of infos) {
|
|
246
|
+
if (info.isMocked === undefined || info.isMocked === null) {
|
|
247
|
+
// Browser globals should always be mocked
|
|
248
|
+
if (alwaysMockedBrowserGlobals.includes(path)) {
|
|
249
|
+
info.isMocked = true;
|
|
250
|
+
} else {
|
|
251
|
+
// Check if this dependency should be mocked
|
|
252
|
+
// Match both exact entityName and variable-qualified entityNames
|
|
253
|
+
// e.g., "useFetcher" matches "useFetcher" OR "useFetcher::userFetcher"
|
|
254
|
+
info.isMocked = mockedDependencies.some(
|
|
255
|
+
(dep) =>
|
|
256
|
+
dep.filePath === path &&
|
|
257
|
+
(dep.entityName === info.name ||
|
|
258
|
+
dep.entityName.startsWith(info.name + '::')),
|
|
259
|
+
);
|
|
270
260
|
}
|
|
271
261
|
}
|
|
272
262
|
}
|
|
273
|
-
} catch (error) {
|
|
274
|
-
console.warn(
|
|
275
|
-
`CodeYam: prepareEntityDataStructures: Error preparing ${entity.filePath}:${entity.name}:`,
|
|
276
|
-
error,
|
|
277
|
-
);
|
|
278
|
-
// Continue with other entities - this one will have empty schemas
|
|
279
263
|
}
|
|
280
|
-
})
|
|
281
|
-
|
|
264
|
+
} catch (error) {
|
|
265
|
+
console.warn(
|
|
266
|
+
`CodeYam: prepareEntityDataStructures: Error preparing ${entity.filePath}:${entity.name}:`,
|
|
267
|
+
error,
|
|
268
|
+
);
|
|
269
|
+
// Continue with other entities - this one will have empty schemas
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
const entities = Array.from(allEntities);
|
|
274
|
+
const sequential =
|
|
275
|
+
DEBUG_SEQUENTIAL_EXECUTION || options.sequentialDataStructurePrep;
|
|
276
|
+
|
|
277
|
+
if (sequential) {
|
|
278
|
+
// Sequential execution for debugging - process one entity at a time
|
|
279
|
+
for (const entity of entities) {
|
|
280
|
+
await processEntity(entity);
|
|
281
|
+
}
|
|
282
|
+
} else {
|
|
283
|
+
// Parallel execution for speed
|
|
284
|
+
await Promise.all(entities.map(processEntity));
|
|
285
|
+
}
|
|
282
286
|
}
|
|
283
287
|
|
|
284
288
|
/**
|
|
@@ -328,19 +332,21 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
328
332
|
functionName: importedExport.name,
|
|
329
333
|
});
|
|
330
334
|
|
|
331
|
-
// If no signature found, this function doesn't exist in the analysis
|
|
332
|
-
if (!signatureSchema) {
|
|
333
|
-
return acc;
|
|
334
|
-
}
|
|
335
|
-
|
|
336
335
|
const returnValueSchema = getReturnValue(dataStructure, {
|
|
337
336
|
functionName: importedExport.name,
|
|
338
337
|
});
|
|
339
338
|
|
|
339
|
+
// If neither signature nor return value found, this function doesn't exist in the analysis.
|
|
340
|
+
// We need to check BOTH because hooks like useParams() have no signature (no arguments)
|
|
341
|
+
// but DO have a return value that needs to be mocked.
|
|
342
|
+
if (!signatureSchema && !returnValueSchema) {
|
|
343
|
+
return acc;
|
|
344
|
+
}
|
|
345
|
+
|
|
340
346
|
// Clone schemas before deduplication to avoid mutating shared references
|
|
341
347
|
// getReturnValue() and getFunctionSignature() return direct references, so we need
|
|
342
348
|
// to clone them before passing to deduplicateFunctionSchemas (which may mutate)
|
|
343
|
-
const clonedSignatureSchema = { ...signatureSchema };
|
|
349
|
+
const clonedSignatureSchema = { ...(signatureSchema ?? {}) };
|
|
344
350
|
const clonedReturnValueSchema = { ...(returnValueSchema ?? {}) };
|
|
345
351
|
|
|
346
352
|
acc[importedExport.filePath] ||= {};
|
|
@@ -365,32 +371,105 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
365
371
|
fc.name.startsWith(importedExport.name + '<'),
|
|
366
372
|
);
|
|
367
373
|
|
|
368
|
-
// Track how many times each variable name has been seen across ALL matching calls
|
|
369
|
-
// This handles the case where multiple parameterized calls (e.g., useFetcher<ConfigData>,
|
|
370
|
-
// useFetcher<SettingsData>) assign to the same variable name
|
|
371
|
-
const varNameCounts: Record<string, number> = {};
|
|
372
|
-
|
|
373
374
|
for (const efc of matchingCalls) {
|
|
374
|
-
// Check if this call has perVariableSchemas (multiple calls with
|
|
375
|
+
// Check if this call has perVariableSchemas (multiple calls with variable tracking)
|
|
375
376
|
if (efc?.perVariableSchemas) {
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
377
|
+
// Check if perVariableSchemas has indexed keys (e.g., "fetcher[1]") which indicates
|
|
378
|
+
// variable reuse with DIFFERENT call signatures (e.g., let fetcher = useFetcher<A>(); fetcher = useFetcher<B>();)
|
|
379
|
+
// In this case, we need to create SEPARATE entries for each call signature.
|
|
380
|
+
const perVarKeys = Object.keys(efc.perVariableSchemas);
|
|
381
|
+
const hasIndexedKeys = perVarKeys.some((key) => /\[\d+\]$/.test(key));
|
|
382
|
+
|
|
383
|
+
if (
|
|
384
|
+
hasIndexedKeys &&
|
|
385
|
+
efc.callSignatureToVariable &&
|
|
386
|
+
efc.allCallSignatures
|
|
387
|
+
) {
|
|
388
|
+
// Variable reuse case: create separate entries for each call signature
|
|
389
|
+
// Map from call signature to its variable key in perVariableSchemas
|
|
390
|
+
// e.g., useFetcher<ConfigData>() -> 'fetcher', useFetcher<SettingsData>() -> 'fetcher[1]'
|
|
391
|
+
const varNameCounts: Record<string, number> = {};
|
|
392
|
+
for (const callSig of efc.allCallSignatures) {
|
|
393
|
+
const varName = efc.callSignatureToVariable[callSig];
|
|
394
|
+
if (!varName) continue;
|
|
395
|
+
|
|
396
|
+
// Track occurrence count for this variable name
|
|
397
|
+
const occurrence = varNameCounts[varName] ?? 0;
|
|
398
|
+
varNameCounts[varName] = occurrence + 1;
|
|
399
|
+
|
|
400
|
+
// Get the key in perVariableSchemas (indexed if reused)
|
|
401
|
+
const perVarKey =
|
|
402
|
+
occurrence === 0 ? varName : `${varName}[${occurrence}]`;
|
|
403
|
+
const varSchema = efc.perVariableSchemas[perVarKey];
|
|
404
|
+
|
|
405
|
+
if (varSchema && Object.keys(varSchema).length > 0) {
|
|
406
|
+
// Create entry with this call signature as the key
|
|
407
|
+
const rewrittenSchema: Record<string, string> = {};
|
|
408
|
+
rewrittenSchema[`${callSig}.functionCallReturnValue`] =
|
|
409
|
+
'object';
|
|
410
|
+
|
|
411
|
+
for (const [path, type] of Object.entries(varSchema)) {
|
|
412
|
+
const rewrittenPath = path.startsWith(callSig)
|
|
413
|
+
? path
|
|
414
|
+
: `${callSig}.${path}`;
|
|
415
|
+
rewrittenSchema[rewrittenPath] = type;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
acc[importedExport.filePath][callSig] = {
|
|
419
|
+
signatureSchema: deduplicateFunctionSchemas({
|
|
420
|
+
...signatureSchema,
|
|
421
|
+
}),
|
|
422
|
+
returnValueSchema:
|
|
423
|
+
deduplicateFunctionSchemas(rewrittenSchema),
|
|
424
|
+
usageEquivalencies:
|
|
425
|
+
getUsageEquivalencies(dataStructure, importedExport.name) ??
|
|
426
|
+
{},
|
|
427
|
+
sourceEquivalencies:
|
|
428
|
+
getSourceEquivalencies(
|
|
429
|
+
dataStructure,
|
|
430
|
+
importedExport.name,
|
|
431
|
+
) ?? {},
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
} else {
|
|
436
|
+
// Destructuring case: const { a, b, c } = useLoaderData()
|
|
437
|
+
// Merge all variable schemas into a single entry with the call signature as key
|
|
438
|
+
const callSignatureKey = efc.callSignature;
|
|
439
|
+
|
|
440
|
+
// Merge all variable schemas by prepending the call signature to each path.
|
|
441
|
+
// perVariableSchemas paths are like "functionCallReturnValue.entities.sha"
|
|
442
|
+
// We need to prefix them with the call signature to get:
|
|
443
|
+
// "useLoaderData<typeof loader>().functionCallReturnValue.entities.sha"
|
|
444
|
+
const mergedReturnValueSchema: Record<string, string> = {};
|
|
445
|
+
|
|
446
|
+
// Set the top-level return value as object since it contains named properties
|
|
447
|
+
mergedReturnValueSchema[
|
|
448
|
+
`${callSignatureKey}.functionCallReturnValue`
|
|
449
|
+
] = 'object';
|
|
450
|
+
|
|
451
|
+
for (const [varName, perVarSchema] of Object.entries(
|
|
452
|
+
efc.perVariableSchemas,
|
|
453
|
+
)) {
|
|
454
|
+
for (const [path, type] of Object.entries(perVarSchema)) {
|
|
455
|
+
// Only prepend the call signature if the path doesn't already have it.
|
|
456
|
+
// perVariableSchemas paths may already include the call signature prefix
|
|
457
|
+
// (e.g., "useCustomSizes(projectSlug).functionCallReturnValue.customSizes")
|
|
458
|
+
// depending on how they were built. If so, use the path as-is.
|
|
459
|
+
const rewrittenPath = path.startsWith(callSignatureKey)
|
|
460
|
+
? path
|
|
461
|
+
: `${callSignatureKey}.${path}`;
|
|
462
|
+
mergedReturnValueSchema[rewrittenPath] = type;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
acc[importedExport.filePath][callSignatureKey] = {
|
|
388
467
|
signatureSchema: deduplicateFunctionSchemas({
|
|
389
468
|
...signatureSchema,
|
|
390
469
|
}),
|
|
391
|
-
returnValueSchema: deduplicateFunctionSchemas(
|
|
392
|
-
|
|
393
|
-
|
|
470
|
+
returnValueSchema: deduplicateFunctionSchemas(
|
|
471
|
+
mergedReturnValueSchema,
|
|
472
|
+
),
|
|
394
473
|
usageEquivalencies:
|
|
395
474
|
getUsageEquivalencies(dataStructure, importedExport.name) ?? {},
|
|
396
475
|
sourceEquivalencies:
|
|
@@ -400,18 +479,11 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
400
479
|
}
|
|
401
480
|
} else if (efc?.receivingVariableNames?.length === 1) {
|
|
402
481
|
// For parameterized calls like useFetcher<UserData>(), each is a separate entry
|
|
403
|
-
// with a single receivingVariableName.
|
|
404
|
-
// the specific return value for this parameterized call.
|
|
482
|
+
// with a single receivingVariableName. Use the call signature as the key.
|
|
405
483
|
const varName = efc.receivingVariableNames[0];
|
|
406
484
|
|
|
407
|
-
//
|
|
408
|
-
const
|
|
409
|
-
varNameCounts[varName] = occurrence + 1;
|
|
410
|
-
|
|
411
|
-
// Use indexed key if variable name is reused (e.g., fetcher, fetcher[1])
|
|
412
|
-
const indexedVarName =
|
|
413
|
-
occurrence === 0 ? varName : `${varName}[${occurrence}]`;
|
|
414
|
-
const qualifiedKey = `${importedExport.name}::${indexedVarName}`;
|
|
485
|
+
// Use the call signature as the key (e.g., "useFetcher<UserData>()")
|
|
486
|
+
const callSignatureKey = efc.callSignature;
|
|
415
487
|
|
|
416
488
|
// PREFER perVariableSchemas over getReturnValue() when available
|
|
417
489
|
// perVariableSchemas has the SPECIFIC schema for this parameterized call,
|
|
@@ -434,7 +506,7 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
434
506
|
parameterizedReturnValue &&
|
|
435
507
|
Object.keys(parameterizedReturnValue).length > 0
|
|
436
508
|
) {
|
|
437
|
-
acc[importedExport.filePath][
|
|
509
|
+
acc[importedExport.filePath][callSignatureKey] = {
|
|
438
510
|
signatureSchema: deduplicateFunctionSchemas({
|
|
439
511
|
...signatureSchema,
|
|
440
512
|
}),
|
|
@@ -483,9 +555,21 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
483
555
|
// Get enriched conditional usages with source tracing
|
|
484
556
|
const conditionalUsages = getConditionalUsages(dataStructure);
|
|
485
557
|
|
|
558
|
+
// Get conditional effects (setter calls inside conditionals)
|
|
559
|
+
const conditionalEffects = getConditionalEffects(dataStructure);
|
|
560
|
+
|
|
561
|
+
// Get compound conditionals (grouped conditions that must all be true)
|
|
562
|
+
const compoundConditionals = getCompoundConditionals(dataStructure);
|
|
486
563
|
const rawUsageEquivalencies = getUsageEquivalencies(dataStructure);
|
|
487
564
|
const rawSourceEquivalencies = getSourceEquivalencies(dataStructure);
|
|
488
565
|
|
|
566
|
+
// Get child boundary gating conditions for child component flow merging
|
|
567
|
+
const childBoundaryGatingConditions =
|
|
568
|
+
getChildBoundaryGatingConditions(dataStructure);
|
|
569
|
+
|
|
570
|
+
// Get JSX rendering usages for array size and text length flow generation
|
|
571
|
+
const jsxRenderingUsages = getJsxRenderingUsages(dataStructure);
|
|
572
|
+
|
|
489
573
|
const isolatedDataStructure = {
|
|
490
574
|
signatureSchema: deduplicateFunctionSchemas(clonedRawSignature),
|
|
491
575
|
returnValueSchema: deduplicateFunctionSchemas(clonedRawReturnValue),
|
|
@@ -495,11 +579,28 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
495
579
|
environmentVariables: dataStructure.environmentVariables,
|
|
496
580
|
conditionalUsages:
|
|
497
581
|
Object.keys(conditionalUsages).length > 0 ? conditionalUsages : undefined,
|
|
582
|
+
// Include conditional effects for execution flow generation
|
|
583
|
+
conditionalEffects:
|
|
584
|
+
conditionalEffects.length > 0 ? conditionalEffects : undefined,
|
|
585
|
+
// Include compound conditionals for complete execution flow generation
|
|
586
|
+
// These capture grouped conditions like (a || b) && !c && !d
|
|
587
|
+
compoundConditionals:
|
|
588
|
+
compoundConditionals.length > 0 ? compoundConditionals : undefined,
|
|
498
589
|
// Include root entity's equivalencies so they can be used during merge.
|
|
499
590
|
// These show how the parent's data flows to/from child components.
|
|
500
591
|
// E.g., for SurveysList, usageEquivalencies shows surveys[] → SurveyCard().signature[0].survey
|
|
501
592
|
usageEquivalencies: rawUsageEquivalencies ?? {},
|
|
502
593
|
sourceEquivalencies: rawSourceEquivalencies ?? {},
|
|
594
|
+
// Include child boundary gating conditions for child component flow merging
|
|
595
|
+
// Maps child component names to the conditions that must be true for them to render
|
|
596
|
+
childBoundaryGatingConditions:
|
|
597
|
+
Object.keys(childBoundaryGatingConditions).length > 0
|
|
598
|
+
? childBoundaryGatingConditions
|
|
599
|
+
: undefined,
|
|
600
|
+
// Include JSX rendering usages for array size and text length flow generation
|
|
601
|
+
// These track arrays rendered via .map() and strings interpolated in JSX
|
|
602
|
+
jsxRenderingUsages:
|
|
603
|
+
jsxRenderingUsages.length > 0 ? jsxRenderingUsages : undefined,
|
|
503
604
|
};
|
|
504
605
|
|
|
505
606
|
const functionCalls: Record<string, string[]> = {};
|
|
@@ -557,6 +658,7 @@ async function getEntityDataStructureAndFunctionCalls({
|
|
|
557
658
|
) {
|
|
558
659
|
variableNames.push(...aggregatedReceivingVariableNames);
|
|
559
660
|
}
|
|
661
|
+
|
|
560
662
|
if (variableNames.length > 0) {
|
|
561
663
|
callVariableNames[entityName] = variableNames;
|
|
562
664
|
}
|
|
@@ -776,14 +878,28 @@ export function determineMockedDependencies(entity: Entity) {
|
|
|
776
878
|
entityReturnValueSchema,
|
|
777
879
|
);
|
|
778
880
|
|
|
881
|
+
// Check if returnValueSchema is completely empty (no traced calls at all)
|
|
882
|
+
// This indicates a side-effect function that we couldn't trace
|
|
883
|
+
const returnValueSchemaEmpty =
|
|
884
|
+
Object.keys(entityReturnValueSchema ?? {}).length === 0;
|
|
885
|
+
|
|
779
886
|
const entityShouldBeMocked =
|
|
780
887
|
!onlyHasJsxComponents &&
|
|
781
888
|
(isValidationFn ||
|
|
782
889
|
hasChainedCallsWithNoReturn ||
|
|
890
|
+
// If entity takes no args AND has return value, it reads from external source
|
|
891
|
+
// Examples: useParams(), useAuth(), getConfig()
|
|
892
|
+
(emptySignature && hasReturnValue) ||
|
|
893
|
+
// If entity takes no args AND returnValueSchema is completely empty,
|
|
894
|
+
// it's a side-effect function calling external services
|
|
895
|
+
// Examples: logPageView(), initializeAnalytics(), trackEvent()
|
|
896
|
+
// NOTE: We don't mock entities that have function markers but no return value
|
|
897
|
+
// (like React components: FileProvider() has 'function' type but no return data)
|
|
898
|
+
(emptySignature && returnValueSchemaEmpty) ||
|
|
783
899
|
((signatureHasFunctions || returnValueHasFunctions) &&
|
|
784
900
|
hasReturnValue &&
|
|
785
|
-
|
|
786
|
-
|
|
901
|
+
!complexSignature &&
|
|
902
|
+
complexReturnValue));
|
|
787
903
|
|
|
788
904
|
if (entityShouldBeMocked) {
|
|
789
905
|
mockedEntities.push({
|