@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
package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts
CHANGED
|
@@ -21,6 +21,25 @@ function cleanFunctionName(functionName: string) {
|
|
|
21
21
|
return functionName?.split('<')[0];
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
// Extract the type parameter from a function name, e.g., 'useFetcher<{ data: UserData }>()' -> '{ data: UserData }'
|
|
25
|
+
function getTypeParameter(functionName: string): string | null {
|
|
26
|
+
if (!functionName) return null;
|
|
27
|
+
const openBracket = functionName.indexOf('<');
|
|
28
|
+
if (openBracket === -1) return null;
|
|
29
|
+
// Find matching closing bracket, accounting for nested brackets
|
|
30
|
+
let depth = 0;
|
|
31
|
+
for (let i = openBracket; i < functionName.length; i++) {
|
|
32
|
+
if (functionName[i] === '<') depth++;
|
|
33
|
+
else if (functionName[i] === '>') {
|
|
34
|
+
depth--;
|
|
35
|
+
if (depth === 0) {
|
|
36
|
+
return functionName.slice(openBracket + 1, i);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
|
|
24
43
|
// Check if schemaPathPart matches or is a function call variant of pathPart
|
|
25
44
|
// e.g., 'isEntityBeingAnalyzed(entity.sha)' matches 'isEntityBeingAnalyzed'
|
|
26
45
|
function pathPartMatches(pathPart: string, schemaPathPart: string): boolean {
|
|
@@ -74,47 +93,6 @@ export default function mergeInDependentDataStructure({
|
|
|
74
93
|
};
|
|
75
94
|
};
|
|
76
95
|
}) {
|
|
77
|
-
// writeFile(
|
|
78
|
-
// 'mergeInDependentDataStructure-debug.json',
|
|
79
|
-
// JSON.stringify(
|
|
80
|
-
// {
|
|
81
|
-
// importedExports: importedExports.map((d) => ({
|
|
82
|
-
// filePath: d.filePath,
|
|
83
|
-
// name: d.name,
|
|
84
|
-
// isMocked: d.isMocked,
|
|
85
|
-
// })),
|
|
86
|
-
// dependentAnalyses: Object.keys(dependentAnalyses).reduce(
|
|
87
|
-
// (pathAcc: Record<string, any>, filePath) => {
|
|
88
|
-
// pathAcc[filePath] = Object.keys(dependentAnalyses[filePath]).reduce(
|
|
89
|
-
// (nameAcc, name) => {
|
|
90
|
-
// nameAcc[name] = {
|
|
91
|
-
// metadata: {
|
|
92
|
-
// mergedDataStructure:
|
|
93
|
-
// dependentAnalyses[filePath][name].metadata
|
|
94
|
-
// .mergedDataStructure,
|
|
95
|
-
// },
|
|
96
|
-
// };
|
|
97
|
-
// return nameAcc;
|
|
98
|
-
// },
|
|
99
|
-
// {} as { [name: string]: {
|
|
100
|
-
// metadata?: {
|
|
101
|
-
// mergedDataStructure?: ReadonlyAnalysis['metadata']['mergedDataStructure'];
|
|
102
|
-
// };
|
|
103
|
-
// } },
|
|
104
|
-
// );
|
|
105
|
-
// return pathAcc;
|
|
106
|
-
// },
|
|
107
|
-
// {},
|
|
108
|
-
// ),
|
|
109
|
-
// rootScopeName,
|
|
110
|
-
// dataStructure,
|
|
111
|
-
// dependencySchemas,
|
|
112
|
-
// },
|
|
113
|
-
// null,
|
|
114
|
-
// 2,
|
|
115
|
-
// ),
|
|
116
|
-
// ).catch(() => {});
|
|
117
|
-
|
|
118
96
|
const mergedDataStructure: Omit<
|
|
119
97
|
DataStructure,
|
|
120
98
|
'equivalentSignatureVariables'
|
|
@@ -127,6 +105,44 @@ export default function mergeInDependentDataStructure({
|
|
|
127
105
|
environmentVariables: [...(dataStructure.environmentVariables || [])],
|
|
128
106
|
};
|
|
129
107
|
|
|
108
|
+
// Build a set of functions that have multiple DIFFERENT type parameters.
|
|
109
|
+
// For these functions, we must NOT normalize paths to avoid merging different schemas.
|
|
110
|
+
// e.g., if we have both useFetcher<{ data: UserData }>() and useFetcher<{ data: ConfigData }>(),
|
|
111
|
+
// they must stay separate and not both become 'returnValue'.
|
|
112
|
+
const functionsWithMultipleTypeParams = new Set<string>();
|
|
113
|
+
const typeParamsByFunction: Record<string, Set<string>> = {};
|
|
114
|
+
|
|
115
|
+
// Helper to scan a schema for type parameters
|
|
116
|
+
const scanSchemaForTypeParams = (schema: { [key: string]: string }) => {
|
|
117
|
+
for (const schemaPath of Object.keys(schema ?? {})) {
|
|
118
|
+
const parts = splitOutsideParenthesesAndArrays(schemaPath);
|
|
119
|
+
if (parts.length > 0) {
|
|
120
|
+
const firstPart = parts[0];
|
|
121
|
+
const typeParam = getTypeParameter(firstPart);
|
|
122
|
+
if (typeParam) {
|
|
123
|
+
const baseName = cleanFunctionName(firstPart);
|
|
124
|
+
typeParamsByFunction[baseName] ||= new Set();
|
|
125
|
+
typeParamsByFunction[baseName].add(typeParam);
|
|
126
|
+
if (typeParamsByFunction[baseName].size > 1) {
|
|
127
|
+
functionsWithMultipleTypeParams.add(baseName);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// Scan the root entity's schema
|
|
135
|
+
scanSchemaForTypeParams(dataStructure.returnValueSchema);
|
|
136
|
+
|
|
137
|
+
// Also scan all dependency schemas for type parameters
|
|
138
|
+
for (const filePath of Object.keys(dependencySchemas ?? {})) {
|
|
139
|
+
for (const name of Object.keys(dependencySchemas[filePath] ?? {})) {
|
|
140
|
+
scanSchemaForTypeParams(
|
|
141
|
+
dependencySchemas[filePath][name]?.returnValueSchema,
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
130
146
|
let equivalentSchemaPaths: {
|
|
131
147
|
equivalentRoots: {
|
|
132
148
|
schemaRootPath: string;
|
|
@@ -185,6 +201,15 @@ export default function mergeInDependentDataStructure({
|
|
|
185
201
|
const pathParts = splitOutsideParenthesesAndArrays(path);
|
|
186
202
|
if (pathParts.length > 1) {
|
|
187
203
|
if (pathParts[1].startsWith('functionCallReturnValue')) {
|
|
204
|
+
// Check if this function has multiple DIFFERENT type parameters.
|
|
205
|
+
// If so, DON'T normalize to returnValue - keep the full path to avoid
|
|
206
|
+
// merging different type-parameterized variants together.
|
|
207
|
+
// e.g., useFetcher<{ data: UserData }>().functionCallReturnValue.data
|
|
208
|
+
// should NOT be merged with useFetcher<{ data: ConfigData }>().functionCallReturnValue.data
|
|
209
|
+
const baseName = cleanFunctionName(pathParts[0]);
|
|
210
|
+
if (functionsWithMultipleTypeParams.has(baseName)) {
|
|
211
|
+
return path; // Keep the original path with type parameters
|
|
212
|
+
}
|
|
188
213
|
// functionCallReturnValue immediately follows - normalize to returnValue
|
|
189
214
|
// e.g., useAuth().functionCallReturnValue.user -> returnValue.user
|
|
190
215
|
return joinParenthesesAndArrays([
|
|
@@ -280,19 +305,176 @@ export default function mergeInDependentDataStructure({
|
|
|
280
305
|
return equivalentSchemaPathsEntry;
|
|
281
306
|
};
|
|
282
307
|
|
|
283
|
-
|
|
308
|
+
// Helper to extract function name from a path that starts with a function call.
|
|
309
|
+
// e.g., 'ScenarioViewer().signature[0].scenario' -> 'ScenarioViewer'
|
|
310
|
+
// Returns undefined if the path doesn't start with a function call or the function isn't a dependency.
|
|
311
|
+
const extractFunctionNameFromPath = (path: string): string | undefined => {
|
|
312
|
+
const parts = splitOutsideParenthesesAndArrays(path);
|
|
313
|
+
if (parts.length > 0 && parts[0].endsWith(')')) {
|
|
314
|
+
// Extract the function name without the () suffix and type params
|
|
315
|
+
const funcCallPart = parts[0];
|
|
316
|
+
const funcName = cleanFunctionName(funcCallPart.replace(/\(\)$/, ''));
|
|
317
|
+
// Check if this function is a dependency
|
|
318
|
+
if (findRelevantDependency(funcName)) {
|
|
319
|
+
return funcName;
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return undefined;
|
|
323
|
+
};
|
|
324
|
+
|
|
325
|
+
const allEquivalencies = [
|
|
284
326
|
sourceAndUsageEquivalencies.usageEquivalencies,
|
|
285
327
|
sourceAndUsageEquivalencies.sourceEquivalencies,
|
|
286
|
-
].filter(Boolean)
|
|
287
|
-
|
|
328
|
+
].filter(Boolean);
|
|
329
|
+
|
|
330
|
+
for (const equivalencies of allEquivalencies) {
|
|
331
|
+
const schemaPathEntries = Object.entries(equivalencies);
|
|
332
|
+
for (const [schemaPath, usages] of schemaPathEntries) {
|
|
333
|
+
// First, check if the raw schemaPath starts with a function call to a dependency.
|
|
334
|
+
// If so, use that dependency name for translation (so translatePath can strip the prefix).
|
|
335
|
+
const extractedFuncName = extractFunctionNameFromPath(schemaPath);
|
|
336
|
+
const effectiveFunctionName = extractedFuncName || functionName;
|
|
337
|
+
const translatedPath = translatePath(schemaPath, effectiveFunctionName);
|
|
338
|
+
|
|
288
339
|
const allPaths: { path: string; functionName?: string }[] = [
|
|
289
|
-
{ path:
|
|
340
|
+
{ path: translatedPath, functionName: effectiveFunctionName },
|
|
290
341
|
...usages.map((u) => ({
|
|
291
342
|
path: translatePath(u.schemaPath, u.scopeNodeName),
|
|
292
343
|
functionName: u.scopeNodeName,
|
|
293
344
|
})),
|
|
294
345
|
].filter((pathInfo) => !pathInfo.path.includes('.map('));
|
|
295
346
|
|
|
347
|
+
// Fix 38: Derive base paths from property access paths.
|
|
348
|
+
// When we have equivalent paths like:
|
|
349
|
+
// Parent: signature[0].scenarios[].name
|
|
350
|
+
// Child: signature[0].selectedScenario.name
|
|
351
|
+
// We want to derive the base paths by finding the common suffix:
|
|
352
|
+
// Common suffix: .name
|
|
353
|
+
// Parent base: signature[0].scenarios[]
|
|
354
|
+
// Child base: signature[0].selectedScenario
|
|
355
|
+
// This allows the merge to find nested child schema fields under the base prop.
|
|
356
|
+
|
|
357
|
+
// Find child signature paths (paths from child components)
|
|
358
|
+
const childPaths = allPaths.filter(
|
|
359
|
+
(p) =>
|
|
360
|
+
p.functionName &&
|
|
361
|
+
p.functionName !== rootScopeName &&
|
|
362
|
+
p.functionName !== effectiveFunctionName,
|
|
363
|
+
);
|
|
364
|
+
// Find parent paths (paths from this component)
|
|
365
|
+
const parentPaths = allPaths.filter(
|
|
366
|
+
(p) =>
|
|
367
|
+
!p.functionName ||
|
|
368
|
+
p.functionName === rootScopeName ||
|
|
369
|
+
p.functionName === effectiveFunctionName,
|
|
370
|
+
);
|
|
371
|
+
|
|
372
|
+
const derivedBasePaths: { path: string; functionName?: string }[] = [];
|
|
373
|
+
|
|
374
|
+
// For each child path, find its equivalent parent path and derive bases
|
|
375
|
+
for (const childPathInfo of childPaths) {
|
|
376
|
+
const childParts = splitOutsideParenthesesAndArrays(
|
|
377
|
+
childPathInfo.path,
|
|
378
|
+
);
|
|
379
|
+
|
|
380
|
+
// Look for a parent path that shares a common suffix with this child path
|
|
381
|
+
for (const parentPathInfo of parentPaths) {
|
|
382
|
+
const parentParts = splitOutsideParenthesesAndArrays(
|
|
383
|
+
parentPathInfo.path,
|
|
384
|
+
);
|
|
385
|
+
|
|
386
|
+
// Find the common suffix (from the end)
|
|
387
|
+
let commonSuffixLength = 0;
|
|
388
|
+
const minLen = Math.min(childParts.length, parentParts.length);
|
|
389
|
+
for (let i = 1; i <= minLen; i++) {
|
|
390
|
+
if (
|
|
391
|
+
childParts[childParts.length - i] ===
|
|
392
|
+
parentParts[parentParts.length - i]
|
|
393
|
+
) {
|
|
394
|
+
commonSuffixLength = i;
|
|
395
|
+
} else {
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// If there's a common suffix and both paths have more parts than the suffix
|
|
401
|
+
if (
|
|
402
|
+
commonSuffixLength > 0 &&
|
|
403
|
+
childParts.length > commonSuffixLength &&
|
|
404
|
+
parentParts.length > commonSuffixLength
|
|
405
|
+
) {
|
|
406
|
+
const childBaseParts = childParts.slice(
|
|
407
|
+
0,
|
|
408
|
+
childParts.length - commonSuffixLength,
|
|
409
|
+
);
|
|
410
|
+
const parentBaseParts = parentParts.slice(
|
|
411
|
+
0,
|
|
412
|
+
parentParts.length - commonSuffixLength,
|
|
413
|
+
);
|
|
414
|
+
|
|
415
|
+
// Only derive if BOTH paths look like signature paths.
|
|
416
|
+
// This ensures we're handling JSX child-to-parent prop mappings,
|
|
417
|
+
// not other complex equivalencies like function call returns.
|
|
418
|
+
const isChildSignaturePath =
|
|
419
|
+
childBaseParts[0]?.startsWith('signature[') ||
|
|
420
|
+
(childBaseParts[0]?.endsWith(')') &&
|
|
421
|
+
childBaseParts[1]?.startsWith('signature['));
|
|
422
|
+
const isParentSignaturePath =
|
|
423
|
+
parentBaseParts[0]?.startsWith('signature[');
|
|
424
|
+
|
|
425
|
+
if (isChildSignaturePath && isParentSignaturePath) {
|
|
426
|
+
const childBase = joinParenthesesAndArrays(childBaseParts);
|
|
427
|
+
const parentBase = joinParenthesesAndArrays(parentBaseParts);
|
|
428
|
+
|
|
429
|
+
// Only derive if:
|
|
430
|
+
// 1. Parent has array iteration (e.g., scenarios[]) and child does NOT
|
|
431
|
+
// 2. Bases are different
|
|
432
|
+
// 3. Child base is NOT just "signature[N]" (too generic - every component has this)
|
|
433
|
+
// We only want specific prop paths like "signature[0].selectedScenario"
|
|
434
|
+
// This targets array-to-object mappings like scenarios[] -> selectedScenario
|
|
435
|
+
const parentHasArrayIterator = parentBase.includes('[]');
|
|
436
|
+
const childHasArrayIterator = childBase.includes('[]');
|
|
437
|
+
|
|
438
|
+
// Skip if child base is just the generic signature marker (e.g., "signature[0]")
|
|
439
|
+
const childBaseIsGenericSignature = /^signature\[\d+\]$/.test(
|
|
440
|
+
childBase,
|
|
441
|
+
);
|
|
442
|
+
|
|
443
|
+
if (
|
|
444
|
+
childBase !== parentBase &&
|
|
445
|
+
parentHasArrayIterator &&
|
|
446
|
+
!childHasArrayIterator &&
|
|
447
|
+
!childBaseIsGenericSignature
|
|
448
|
+
) {
|
|
449
|
+
// Add child base if not already present
|
|
450
|
+
const childBaseExists =
|
|
451
|
+
allPaths.some((p) => p.path === childBase) ||
|
|
452
|
+
derivedBasePaths.some((p) => p.path === childBase);
|
|
453
|
+
if (!childBaseExists) {
|
|
454
|
+
derivedBasePaths.push({
|
|
455
|
+
path: childBase,
|
|
456
|
+
functionName: childPathInfo.functionName,
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
// Add parent base if not already present
|
|
461
|
+
const parentBaseExists =
|
|
462
|
+
allPaths.some((p) => p.path === parentBase) ||
|
|
463
|
+
derivedBasePaths.some((p) => p.path === parentBase);
|
|
464
|
+
if (!parentBaseExists) {
|
|
465
|
+
derivedBasePaths.push({
|
|
466
|
+
path: parentBase,
|
|
467
|
+
functionName: parentPathInfo.functionName,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
allPaths.push(...derivedBasePaths);
|
|
477
|
+
|
|
296
478
|
const entry = findOrCreateEquivalentSchemaPathsEntry(allPaths);
|
|
297
479
|
for (const equivalentRoot of entry.equivalentRoots) {
|
|
298
480
|
const dataStructures =
|
|
@@ -308,26 +490,52 @@ export default function mergeInDependentDataStructure({
|
|
|
308
490
|
]
|
|
309
491
|
: [dataStructure];
|
|
310
492
|
|
|
493
|
+
// Determine if this is a signature schema path.
|
|
494
|
+
// The path might be 'signature[0]...' directly, or 'FuncName().signature[0]...' if it has a function prefix.
|
|
495
|
+
const schemaRootParts = splitOutsideParenthesesAndArrays(
|
|
496
|
+
equivalentRoot.schemaRootPath,
|
|
497
|
+
);
|
|
498
|
+
const isSignaturePath =
|
|
499
|
+
equivalentRoot.schemaRootPath.startsWith('signature[') ||
|
|
500
|
+
(schemaRootParts[0]?.endsWith(')') &&
|
|
501
|
+
schemaRootParts[1]?.startsWith('signature['));
|
|
502
|
+
|
|
311
503
|
const schemas = dataStructures.map((dataStructure) =>
|
|
312
|
-
|
|
504
|
+
isSignaturePath
|
|
313
505
|
? dataStructure?.signatureSchema
|
|
314
506
|
: dataStructure?.returnValueSchema,
|
|
315
507
|
);
|
|
316
508
|
|
|
317
|
-
|
|
509
|
+
let pathParts = splitOutsideParenthesesAndArrays(
|
|
318
510
|
equivalentRoot.schemaRootPath,
|
|
319
511
|
);
|
|
320
512
|
|
|
513
|
+
// Fix: When processing a child component's schema, the schemaRootPath has the function
|
|
514
|
+
// prefix (e.g., 'ScenarioViewer().signature[0].scenario'), but the child's schema paths
|
|
515
|
+
// don't have that prefix (e.g., 'signature[0].scenario.metadata.screenshotPaths').
|
|
516
|
+
// Strip the function prefix from pathParts so they can match.
|
|
517
|
+
if (
|
|
518
|
+
equivalentRoot.function &&
|
|
519
|
+
pathParts[0].endsWith(')') &&
|
|
520
|
+
pathParts[1]?.startsWith('signature[')
|
|
521
|
+
) {
|
|
522
|
+
pathParts = pathParts.slice(1);
|
|
523
|
+
}
|
|
524
|
+
|
|
321
525
|
for (const schema of schemas) {
|
|
322
526
|
for (const schemaPath in schema) {
|
|
323
527
|
let schemaPathParts =
|
|
324
528
|
splitOutsideParenthesesAndArrays(schemaPath);
|
|
325
529
|
|
|
326
530
|
if (schemaPathParts[0].startsWith(functionName)) {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
531
|
+
// Only normalize if the function doesn't have multiple different type parameters
|
|
532
|
+
const baseName = cleanFunctionName(schemaPathParts[0]);
|
|
533
|
+
if (!functionsWithMultipleTypeParams.has(baseName)) {
|
|
534
|
+
schemaPathParts =
|
|
535
|
+
schemaPathParts[1] === 'functionCallReturnValue'
|
|
536
|
+
? ['returnValue', ...schemaPathParts.slice(2)]
|
|
537
|
+
: schemaPathParts.slice(1);
|
|
538
|
+
}
|
|
331
539
|
}
|
|
332
540
|
|
|
333
541
|
if (schemaPathParts.length < pathParts.length) continue;
|
|
@@ -662,9 +870,10 @@ export default function mergeInDependentDataStructure({
|
|
|
662
870
|
continue;
|
|
663
871
|
}
|
|
664
872
|
|
|
665
|
-
const
|
|
873
|
+
const childMergedDataStructure =
|
|
666
874
|
dependentAnalyses[filePath][name].metadata?.mergedDataStructure || {};
|
|
667
|
-
|
|
875
|
+
|
|
876
|
+
gatherAllEquivalentSchemaPaths(name, childMergedDataStructure as any);
|
|
668
877
|
}
|
|
669
878
|
}
|
|
670
879
|
|
|
@@ -925,6 +1134,164 @@ export default function mergeInDependentDataStructure({
|
|
|
925
1134
|
}
|
|
926
1135
|
|
|
927
1136
|
cleanSchema(depSchema.returnValueSchema);
|
|
1137
|
+
|
|
1138
|
+
// Pull signature requirements from downstream functions into the mocked return value.
|
|
1139
|
+
// When a mocked function's return flows into another function's signature (via usageEquivalencies),
|
|
1140
|
+
// we need to include that function's signature requirements in the mock.
|
|
1141
|
+
//
|
|
1142
|
+
// Example: fromE5() returns a currency object that flows to calculateTotalPrice(price, quantity).
|
|
1143
|
+
// calculateTotalPrice's signatureSchema shows signature[0].multiply() is required.
|
|
1144
|
+
// We need to add multiply() to fromE5's mock return value.
|
|
1145
|
+
const usageEquivalencies = srcSchema.usageEquivalencies ?? {};
|
|
1146
|
+
for (const [returnPath, equivalencies] of Object.entries(
|
|
1147
|
+
usageEquivalencies,
|
|
1148
|
+
)) {
|
|
1149
|
+
// Only process return value paths (functionCallReturnValue)
|
|
1150
|
+
if (!returnPath.includes('.functionCallReturnValue')) continue;
|
|
1151
|
+
|
|
1152
|
+
for (const equiv of equivalencies) {
|
|
1153
|
+
// Check if this equivalency points to a signature path
|
|
1154
|
+
const signatureMatch = equiv.schemaPath.match(/\.signature\[(\d+)\]$/);
|
|
1155
|
+
if (!signatureMatch) continue;
|
|
1156
|
+
|
|
1157
|
+
const targetFunctionName = cleanFunctionName(equiv.scopeNodeName);
|
|
1158
|
+
const signatureIndex = signatureMatch[1];
|
|
1159
|
+
|
|
1160
|
+
// Look up the target function's analysis to get its signature requirements
|
|
1161
|
+
// First try dependentAnalyses, then dependencySchemas
|
|
1162
|
+
let targetSignatureSchema: Record<string, string> | undefined;
|
|
1163
|
+
|
|
1164
|
+
// Check dependentAnalyses first (has the full merged analysis)
|
|
1165
|
+
for (const depFilePath in dependentAnalyses) {
|
|
1166
|
+
const analysis = dependentAnalyses[depFilePath]?.[targetFunctionName];
|
|
1167
|
+
if (analysis?.metadata?.mergedDataStructure?.signatureSchema) {
|
|
1168
|
+
targetSignatureSchema =
|
|
1169
|
+
analysis.metadata.mergedDataStructure.signatureSchema;
|
|
1170
|
+
break;
|
|
1171
|
+
}
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
// Fallback to dependencySchemas if not found
|
|
1175
|
+
if (!targetSignatureSchema) {
|
|
1176
|
+
for (const depFilePath in dependencySchemas) {
|
|
1177
|
+
const schema = dependencySchemas[depFilePath]?.[targetFunctionName];
|
|
1178
|
+
if (schema?.signatureSchema) {
|
|
1179
|
+
targetSignatureSchema = schema.signatureSchema;
|
|
1180
|
+
break;
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
if (!targetSignatureSchema) continue;
|
|
1186
|
+
|
|
1187
|
+
// Find all paths in the target's signatureSchema that extend from signature[N]
|
|
1188
|
+
// e.g., signature[0].multiply(quantity) -> .multiply(quantity)
|
|
1189
|
+
const signaturePrefix = `signature[${signatureIndex}]`;
|
|
1190
|
+
for (const [sigPath, sigType] of Object.entries(
|
|
1191
|
+
targetSignatureSchema,
|
|
1192
|
+
)) {
|
|
1193
|
+
if (!sigPath.startsWith(signaturePrefix)) continue;
|
|
1194
|
+
|
|
1195
|
+
// Skip the base signature[N] path itself - we only want the method/property extensions
|
|
1196
|
+
if (sigPath === signaturePrefix) continue;
|
|
1197
|
+
|
|
1198
|
+
// Extract the suffix after signature[N] (e.g., ".multiply(quantity)")
|
|
1199
|
+
const suffix = sigPath.slice(signaturePrefix.length);
|
|
1200
|
+
|
|
1201
|
+
// Build the path for the mocked return value
|
|
1202
|
+
// e.g., fromE5(priceE5).functionCallReturnValue.multiply(quantity)
|
|
1203
|
+
const returnValuePath = returnPath + suffix;
|
|
1204
|
+
|
|
1205
|
+
// Add to the mocked dependency's return value schema if not already present
|
|
1206
|
+
if (!(returnValuePath in depSchema.returnValueSchema)) {
|
|
1207
|
+
depSchema.returnValueSchema[returnValuePath] = sigType;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
cleanSchema(depSchema.returnValueSchema);
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
// Process the input dependencySchemas FIRST (before child dependentAnalyses).
|
|
1217
|
+
// This ensures the parent entity's direct usage of dependencies takes precedence.
|
|
1218
|
+
// When both parent and child use the same dependency (e.g., useLoaderData),
|
|
1219
|
+
// the parent's schema paths are preserved, and child's paths are merged in later.
|
|
1220
|
+
//
|
|
1221
|
+
// Some dependencies (like .d.ts type declaration files) may not have:
|
|
1222
|
+
// - Equivalencies with the root scope
|
|
1223
|
+
// - A dependent analysis (they're just type declarations)
|
|
1224
|
+
// - Be marked as mocked
|
|
1225
|
+
// Without this, their schemas would be lost entirely.
|
|
1226
|
+
for (const filePath in dependencySchemas) {
|
|
1227
|
+
for (const name in dependencySchemas[filePath]) {
|
|
1228
|
+
const srcSchema = dependencySchemas[filePath][name];
|
|
1229
|
+
if (!srcSchema) continue;
|
|
1230
|
+
|
|
1231
|
+
// Skip mocked dependencies - they were already processed above with path normalization
|
|
1232
|
+
if (mockedDependencies.has(`${filePath}::${name}`)) {
|
|
1233
|
+
continue;
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
// Check if this dependency was already processed by equivalencies
|
|
1237
|
+
const existingSchema =
|
|
1238
|
+
mergedDataStructure.dependencySchemas[filePath]?.[name];
|
|
1239
|
+
|
|
1240
|
+
// Only add if no existing schema (equivalencies didn't process it)
|
|
1241
|
+
if (!existingSchema) {
|
|
1242
|
+
const depSchema = findOrCreateDependentSchemas({ filePath, name });
|
|
1243
|
+
for (const path in srcSchema.returnValueSchema) {
|
|
1244
|
+
depSchema.returnValueSchema[path] = srcSchema.returnValueSchema[path];
|
|
1245
|
+
}
|
|
1246
|
+
for (const path in srcSchema.signatureSchema) {
|
|
1247
|
+
depSchema.signatureSchema[path] = srcSchema.signatureSchema[path];
|
|
1248
|
+
}
|
|
1249
|
+
|
|
1250
|
+
// Clean known object functions (like String.prototype.replace, Array.prototype.map)
|
|
1251
|
+
// from the copied schema. Without this, method call paths on primitives like
|
|
1252
|
+
// "projectSlug.replace(...)" would cause convertDotNotation to create nested
|
|
1253
|
+
// object structures instead of preserving the primitive type.
|
|
1254
|
+
cleanSchema(depSchema.returnValueSchema);
|
|
1255
|
+
}
|
|
1256
|
+
|
|
1257
|
+
// For functions with multiple different type parameters, also create separate entries
|
|
1258
|
+
// for each type-parameterized variant. This allows gatherDataForMocks to look up
|
|
1259
|
+
// the specific schema for each call signature.
|
|
1260
|
+
// This runs regardless of whether the base entry already existed, since we need
|
|
1261
|
+
// the separate variant entries for proper schema lookup.
|
|
1262
|
+
const baseName = cleanFunctionName(name);
|
|
1263
|
+
if (functionsWithMultipleTypeParams.has(baseName)) {
|
|
1264
|
+
// Find all unique type-parameterized call signatures in the schema
|
|
1265
|
+
const typeParamVariants = new Set<string>();
|
|
1266
|
+
for (const path of Object.keys(srcSchema.returnValueSchema)) {
|
|
1267
|
+
const parts = splitOutsideParenthesesAndArrays(path);
|
|
1268
|
+
if (
|
|
1269
|
+
parts.length > 0 &&
|
|
1270
|
+
parts[0].includes('<') &&
|
|
1271
|
+
parts[0].endsWith(')')
|
|
1272
|
+
) {
|
|
1273
|
+
typeParamVariants.add(parts[0]);
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
// Create a separate entry for each type-parameterized variant
|
|
1278
|
+
for (const variant of typeParamVariants) {
|
|
1279
|
+
const variantSchema = findOrCreateDependentSchemas({
|
|
1280
|
+
filePath,
|
|
1281
|
+
name: variant,
|
|
1282
|
+
});
|
|
1283
|
+
|
|
1284
|
+
// Copy only paths that belong to this variant
|
|
1285
|
+
for (const path in srcSchema.returnValueSchema) {
|
|
1286
|
+
if (path.startsWith(variant)) {
|
|
1287
|
+
variantSchema.returnValueSchema[path] =
|
|
1288
|
+
srcSchema.returnValueSchema[path];
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
cleanSchema(variantSchema.returnValueSchema);
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
928
1295
|
}
|
|
929
1296
|
|
|
930
1297
|
// Ensure ALL dependencies from dependentAnalyses are included in dependencySchemas,
|
|
@@ -1002,39 +1369,5 @@ export default function mergeInDependentDataStructure({
|
|
|
1002
1369
|
}
|
|
1003
1370
|
}
|
|
1004
1371
|
|
|
1005
|
-
// Ensure ALL dependencies from the input dependencySchemas are preserved.
|
|
1006
|
-
// Some dependencies (like .d.ts type declaration files) may not have:
|
|
1007
|
-
// - Equivalencies with the root scope
|
|
1008
|
-
// - A dependent analysis (they're just type declarations)
|
|
1009
|
-
// - Be marked as mocked
|
|
1010
|
-
// Without this, their schemas would be lost entirely.
|
|
1011
|
-
//
|
|
1012
|
-
// IMPORTANT: Only add schemas for dependencies that weren't already processed.
|
|
1013
|
-
// If a dependency has an existing schema (even an empty one), it means the
|
|
1014
|
-
// existing processing (mocked dependencies, equivalencies, dependentAnalyses)
|
|
1015
|
-
// has already handled it and may have intentionally filtered out certain paths.
|
|
1016
|
-
for (const filePath in dependencySchemas) {
|
|
1017
|
-
for (const name in dependencySchemas[filePath]) {
|
|
1018
|
-
const srcSchema = dependencySchemas[filePath][name];
|
|
1019
|
-
if (!srcSchema) continue;
|
|
1020
|
-
|
|
1021
|
-
// Check if this dependency was already processed by any other mechanism
|
|
1022
|
-
const existingSchema =
|
|
1023
|
-
mergedDataStructure.dependencySchemas[filePath]?.[name];
|
|
1024
|
-
|
|
1025
|
-
// Only add if no existing schema at all - this means the dependency
|
|
1026
|
-
// wasn't processed through equivalencies, mocked dependencies, or dependentAnalyses
|
|
1027
|
-
if (!existingSchema) {
|
|
1028
|
-
const depSchema = findOrCreateDependentSchemas({ filePath, name });
|
|
1029
|
-
for (const path in srcSchema.returnValueSchema) {
|
|
1030
|
-
depSchema.returnValueSchema[path] = srcSchema.returnValueSchema[path];
|
|
1031
|
-
}
|
|
1032
|
-
for (const path in srcSchema.signatureSchema) {
|
|
1033
|
-
depSchema.signatureSchema[path] = srcSchema.signatureSchema[path];
|
|
1034
|
-
}
|
|
1035
|
-
}
|
|
1036
|
-
}
|
|
1037
|
-
}
|
|
1038
|
-
|
|
1039
1372
|
return mergedDataStructure;
|
|
1040
1373
|
}
|
package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts
CHANGED
|
@@ -2,6 +2,49 @@ import { splitOutsideParenthesesAndArrays } from '~codeyam/ai';
|
|
|
2
2
|
import { JsonTypeDefinition, ReadonlyAnalysisMap } from '~codeyam/types';
|
|
3
3
|
import { awsLog } from '~codeyam/utils';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Deep merge for JsonTypeDefinition schemas.
|
|
7
|
+
* Only recursively merges when BOTH sides are plain objects (not arrays, not primitives).
|
|
8
|
+
* This is different from the general deepMerge which is designed for data values -
|
|
9
|
+
* here we're merging type schemas where leaf values are strings like "boolean" or "function".
|
|
10
|
+
*
|
|
11
|
+
* When types are incompatible (e.g., array vs object), prefer keeping the base value
|
|
12
|
+
* since it was set first from the root entity's validatedVariables.
|
|
13
|
+
*/
|
|
14
|
+
function deepMergeSchemas(
|
|
15
|
+
base: JsonTypeDefinition,
|
|
16
|
+
override: JsonTypeDefinition,
|
|
17
|
+
): JsonTypeDefinition {
|
|
18
|
+
// If override is null/undefined, return base
|
|
19
|
+
if (override === null || override === undefined) return base;
|
|
20
|
+
// If base is null/undefined, return override
|
|
21
|
+
if (base === null || base === undefined) return override;
|
|
22
|
+
|
|
23
|
+
// Only recursively merge if BOTH are plain objects (not arrays, not primitives)
|
|
24
|
+
const baseIsPlainObject =
|
|
25
|
+
typeof base === 'object' && !Array.isArray(base) && base !== null;
|
|
26
|
+
const overrideIsPlainObject =
|
|
27
|
+
typeof override === 'object' &&
|
|
28
|
+
!Array.isArray(override) &&
|
|
29
|
+
override !== null;
|
|
30
|
+
|
|
31
|
+
if (baseIsPlainObject && overrideIsPlainObject) {
|
|
32
|
+
const result: JsonTypeDefinition = { ...base };
|
|
33
|
+
for (const key in override) {
|
|
34
|
+
result[key] = deepMergeSchemas(
|
|
35
|
+
base[key] as JsonTypeDefinition,
|
|
36
|
+
override[key] as JsonTypeDefinition,
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// For incompatible types (array vs object, string vs object, etc.), keep base
|
|
43
|
+
// This ensures the root entity's structure is preserved when a dependency
|
|
44
|
+
// has a different view of the same mock
|
|
45
|
+
return base;
|
|
46
|
+
}
|
|
47
|
+
|
|
5
48
|
export function mergeInStructure(
|
|
6
49
|
name: string | number,
|
|
7
50
|
key: string | number,
|
|
@@ -155,10 +198,10 @@ export default function mergeValidatedDataStructures({
|
|
|
155
198
|
}
|
|
156
199
|
activeValidatedParts = validatedVariables[usedName] as JsonTypeDefinition;
|
|
157
200
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
201
|
+
// Use deep merge instead of shallow spread to preserve previously merged
|
|
202
|
+
// dependency data. This fixes Issue #15 where multiple dependencies with
|
|
203
|
+
// the same top-level key (e.g., trpc) would overwrite each other.
|
|
204
|
+
dataForMocks = deepMergeSchemas(dataForMocks, validatedData);
|
|
162
205
|
};
|
|
163
206
|
|
|
164
207
|
for (const dependency of relevantDependencies) {
|
|
@@ -181,13 +224,15 @@ export default function mergeValidatedDataStructures({
|
|
|
181
224
|
for (const mockName in dependencyDataForMocks) {
|
|
182
225
|
addMockDataForEntity(mockName);
|
|
183
226
|
|
|
184
|
-
//
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
227
|
+
// Always deep merge the dependency's value to preserve nested structures.
|
|
228
|
+
// This handles cases like usePathname() which returns a simple "string" type,
|
|
229
|
+
// AND cases like trpc where both root and dependency have nested data that
|
|
230
|
+
// needs to be combined (e.g., trpc.quote from root + trpc.fastener.getAttributeValues
|
|
231
|
+
// from dependency).
|
|
232
|
+
if (dependencyDataForMocks[mockName] !== undefined) {
|
|
233
|
+
dataForMocks = deepMergeSchemas(dataForMocks, {
|
|
234
|
+
[mockName]: dependencyDataForMocks[mockName],
|
|
235
|
+
} as JsonTypeDefinition);
|
|
191
236
|
}
|
|
192
237
|
}
|
|
193
238
|
}
|
|
@@ -4,3 +4,4 @@ export { default as codebuildCheckProject } from '../src/lib/codebuild/checkForC
|
|
|
4
4
|
export { default as codebuildCreateProject } from '../src/lib/codebuild/createCodeBuildProject';
|
|
5
5
|
export { default as codebuildTrigger } from '../src/lib/codebuild/triggerCodeBuild';
|
|
6
6
|
export { default as codebuildWaitForBuild } from '../src/lib/codebuild/waitForBuild';
|
|
7
|
+
export type { BuildResult } from '../src/lib/codebuild/waitForBuild';
|