@codeyam/codeyam-cli 0.1.0-staging.596f0eb → 0.1.0-staging.6e699e5
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 +10 -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 +128 -6
- package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +138 -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 +38 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1239 -104
- package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +304 -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 +1501 -138
- 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 +976 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +243 -77
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +103 -6
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +42 -2
- 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 +89 -112
- package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +6 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1111 -91
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +207 -104
- 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/getConditionalUsagesFromCode.ts +143 -31
- package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
- 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/gatherAttributesMap.ts +7 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -102
- 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 -53
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
- 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 +123 -0
- package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
- 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 +455 -267
- 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 +265 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +588 -52
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +336 -133
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +156 -0
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +78 -83
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +4 -8
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +461 -94
- 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/checkS3ObjectExists.d.ts +15 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
- package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
- package/analyzer-template/packages/aws/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/s3/index.ts +1 -0
- 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/checkS3ObjectExists.ts +47 -0
- package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
- package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
- package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
- package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +36 -9
- 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/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
- package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
- package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -11
- 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 +30 -7
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/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/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/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/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 +2 -2
- package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -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 +87 -13
- 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 +11 -6
- package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +196 -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/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/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 +5 -0
- package/analyzer-template/packages/types/src/types/Analysis.ts +104 -13
- package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
- package/analyzer-template/packages/types/src/types/Scenario.ts +11 -10
- package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +224 -0
- package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
- package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
- package/analyzer-template/packages/utils/dist/types/index.d.ts +2 -2
- package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -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 +87 -13
- 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 +11 -6
- package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +196 -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/lightweightEntityExtractor.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
- package/analyzer-template/packages/utils/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/lightweightEntityExtractor.ts +27 -0
- 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/takeElementScreenshot.ts +26 -11
- package/analyzer-template/playwright/takeScreenshot.ts +9 -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 +1181 -160
- 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 +82 -36
- package/analyzer-template/project/orchestrateCapture.ts +36 -3
- package/analyzer-template/project/reconcileMockDataKeys.ts +245 -2
- package/analyzer-template/project/runAnalysis.ts +11 -0
- package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
- package/analyzer-template/project/serverOnlyModules.ts +194 -21
- package/analyzer-template/project/start.ts +26 -4
- package/analyzer-template/project/startScenarioCapture.ts +79 -41
- package/analyzer-template/project/writeMockDataTsx.ts +232 -57
- package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
- package/analyzer-template/project/writeScenarioComponents.ts +769 -181
- package/analyzer-template/project/writeScenarioFiles.ts +26 -0
- package/analyzer-template/project/writeSimpleRoot.ts +13 -15
- 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 +1053 -124
- 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 +69 -32
- 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 +204 -2
- 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/runMultiScenarioServer.js +11 -9
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
- package/background/src/lib/virtualized/project/serverOnlyModules.js +163 -23
- package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
- package/background/src/lib/virtualized/project/start.js +21 -4
- package/background/src/lib/virtualized/project/start.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +61 -31
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +199 -50
- 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 +552 -125
- 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 +13 -13
- package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
- package/codeyam-cli/src/cli.js +7 -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 +40 -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 +226 -0
- package/codeyam-cli/src/commands/recapture.js.map +1 -0
- package/codeyam-cli/src/commands/report.js +72 -24
- 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 +8 -13
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +14 -4
- 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 +253 -106
- 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/__tests__/manager.test.js +38 -0
- package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +245 -16
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/queue/manager.js +25 -7
- package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
- package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
- package/codeyam-cli/src/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 +98 -1
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/bootstrap.js +49 -0
- package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BXhEawa3.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-efWKDYMr.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-CVtiBnY5.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-B0GLXMsr.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-xgeCVgSM.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-D4TZhLuw.js +21 -0
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DuDvi0jm.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DEx02QDa.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-COPstp9J.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/api.health-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.rules-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-Cx24_aWc.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +51 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-BOARzkeR.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BdhJEx6B.js +21 -0
- 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._-C2N4Op8e.js +23 -0
- 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-CTBG2mmz.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-CS2cb_eZ.js +29 -0
- package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DMJ7zii9.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-Cs4MdYtv.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-B4RJRvYB.js +15 -0
- 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/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-B1h680n5.js +9 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-lzqtyFU8.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-B7B9V-bu.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-f874c610.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-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/scenarioStatus-B_8jpV3e.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/search-CxXUmBSd.js +6 -0
- 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-B6LgvRJg.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C1v1PQzo.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-3pmpUQB-.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-DEyawJ8r.js → useToast-mBRpZPiu.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-967OuJoF.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DRTmerg9.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/devServer.js +1 -3
- package/codeyam-cli/src/webserver/devServer.js.map +1 -1
- 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/codeyam:diagnose.md +650 -0
- package/codeyam-cli/templates/codeyam:new-rule.md +13 -0
- package/codeyam-cli/templates/codeyam:power-rules.md +447 -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 +17 -16
- package/packages/ai/index.js +5 -4
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +99 -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 +100 -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 +23 -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 +945 -87
- 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 +1198 -82
- 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 +661 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +180 -56
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +86 -4
- package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
- package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +34 -3
- 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 +81 -90
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDataStructure.js +5 -0
- package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +904 -84
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +186 -82
- 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/getConditionalUsagesFromCode.js +84 -14
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
- package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
- package/packages/ai/src/lib/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/gatherAttributesMap.js +6 -0
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.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 -64
- 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 -34
- 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 +16 -3
- 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/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
- package/packages/ai/src/lib/worker/analyzeScopeWorker.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 +218 -50
- 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 +209 -0
- package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
- 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 +458 -48
- package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/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 +264 -78
- 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 +56 -69
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +4 -8
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +372 -89
- 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/db.js +2 -2
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
- package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
- package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +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/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
- package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
- package/packages/generate/src/lib/deepMerge.js +27 -1
- package/packages/generate/src/lib/deepMerge.js.map +1 -1
- package/packages/generate/src/lib/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.map +1 -1
- package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
- package/packages/utils/src/lib/lightweightEntityExtractor.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 +6 -4
- package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -197
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -271
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -294
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -115
- 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/src/webserver/build/client/assets/EntityItem-CVbSvOjo.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-DcwcHyl5.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-WgwC1GfJ.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-IEKom9O2.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/LogViewer-BYnfxbUG.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-_lBPJCzG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-lHVhvsu_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-d_TBk4GQ.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-kGT7VUqj.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DDGmhu7P.js +0 -7
- package/codeyam-cli/src/webserver/build/client/assets/chevron-down-n_HPRfM_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CbVoyx1U.js +0 -26
- package/codeyam-cli/src/webserver/build/client/assets/circle-check-D1VOYveA.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-YR8jjAlu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-B8vP3V_s.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CN6aLCT1.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DA5Jeu2P.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BTeitalf.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-du6UEYD-.js +0 -13
- package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-BpjkhMoi.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-BQGvk4lJ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-DVdYRT-I.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/index-DCG-vks0.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-GazdNeLl.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-0b694d28.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-D3tQP7hx.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-CIY6XmtE.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-CoMDgElu.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-agkniXp2.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-B2VUcygF.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useReportContext-EvdK-zXP.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/index-DGVHQEXD.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-CghkTkIL.js +0 -166
- package/codeyam-cli/templates/debug-command.md +0 -303
- package/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 -136
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -220
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -241
- 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 -72
- 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/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +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
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
// import { writeFile } from 'node:fs/promises';
|
|
2
1
|
import {
|
|
3
2
|
splitOutsideParenthesesAndArrays,
|
|
4
3
|
joinParenthesesAndArrays,
|
|
@@ -22,6 +21,25 @@ function cleanFunctionName(functionName: string) {
|
|
|
22
21
|
return functionName?.split('<')[0];
|
|
23
22
|
}
|
|
24
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
|
+
|
|
25
43
|
// Check if schemaPathPart matches or is a function call variant of pathPart
|
|
26
44
|
// e.g., 'isEntityBeingAnalyzed(entity.sha)' matches 'isEntityBeingAnalyzed'
|
|
27
45
|
function pathPartMatches(pathPart: string, schemaPathPart: string): boolean {
|
|
@@ -75,47 +93,6 @@ export default function mergeInDependentDataStructure({
|
|
|
75
93
|
};
|
|
76
94
|
};
|
|
77
95
|
}) {
|
|
78
|
-
// writeFile(
|
|
79
|
-
// 'mergeInDependentDataStructure-debug.json',
|
|
80
|
-
// JSON.stringify(
|
|
81
|
-
// {
|
|
82
|
-
// importedExports: importedExports.map((d) => ({
|
|
83
|
-
// filePath: d.filePath,
|
|
84
|
-
// name: d.name,
|
|
85
|
-
// isMocked: d.isMocked,
|
|
86
|
-
// })),
|
|
87
|
-
// dependentAnalyses: Object.keys(dependentAnalyses).reduce(
|
|
88
|
-
// (pathAcc: Record<string, any>, filePath) => {
|
|
89
|
-
// pathAcc[filePath] = Object.keys(dependentAnalyses[filePath]).reduce(
|
|
90
|
-
// (nameAcc, name) => {
|
|
91
|
-
// nameAcc[name] = {
|
|
92
|
-
// metadata: {
|
|
93
|
-
// mergedDataStructure:
|
|
94
|
-
// dependentAnalyses[filePath][name].metadata
|
|
95
|
-
// .mergedDataStructure,
|
|
96
|
-
// },
|
|
97
|
-
// };
|
|
98
|
-
// return nameAcc;
|
|
99
|
-
// },
|
|
100
|
-
// {} as { [name: string]: {
|
|
101
|
-
// metadata?: {
|
|
102
|
-
// mergedDataStructure?: ReadonlyAnalysis['metadata']['mergedDataStructure'];
|
|
103
|
-
// };
|
|
104
|
-
// } },
|
|
105
|
-
// );
|
|
106
|
-
// return pathAcc;
|
|
107
|
-
// },
|
|
108
|
-
// {},
|
|
109
|
-
// ),
|
|
110
|
-
// rootScopeName,
|
|
111
|
-
// dataStructure,
|
|
112
|
-
// dependencySchemas,
|
|
113
|
-
// },
|
|
114
|
-
// null,
|
|
115
|
-
// 2,
|
|
116
|
-
// ),
|
|
117
|
-
// ).catch(() => {});
|
|
118
|
-
|
|
119
96
|
const mergedDataStructure: Omit<
|
|
120
97
|
DataStructure,
|
|
121
98
|
'equivalentSignatureVariables'
|
|
@@ -128,6 +105,44 @@ export default function mergeInDependentDataStructure({
|
|
|
128
105
|
environmentVariables: [...(dataStructure.environmentVariables || [])],
|
|
129
106
|
};
|
|
130
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
|
+
|
|
131
146
|
let equivalentSchemaPaths: {
|
|
132
147
|
equivalentRoots: {
|
|
133
148
|
schemaRootPath: string;
|
|
@@ -186,6 +201,15 @@ export default function mergeInDependentDataStructure({
|
|
|
186
201
|
const pathParts = splitOutsideParenthesesAndArrays(path);
|
|
187
202
|
if (pathParts.length > 1) {
|
|
188
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
|
+
}
|
|
189
213
|
// functionCallReturnValue immediately follows - normalize to returnValue
|
|
190
214
|
// e.g., useAuth().functionCallReturnValue.user -> returnValue.user
|
|
191
215
|
return joinParenthesesAndArrays([
|
|
@@ -281,19 +305,176 @@ export default function mergeInDependentDataStructure({
|
|
|
281
305
|
return equivalentSchemaPathsEntry;
|
|
282
306
|
};
|
|
283
307
|
|
|
284
|
-
|
|
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 = [
|
|
285
326
|
sourceAndUsageEquivalencies.usageEquivalencies,
|
|
286
327
|
sourceAndUsageEquivalencies.sourceEquivalencies,
|
|
287
|
-
].filter(Boolean)
|
|
288
|
-
|
|
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
|
+
|
|
289
339
|
const allPaths: { path: string; functionName?: string }[] = [
|
|
290
|
-
{ path:
|
|
340
|
+
{ path: translatedPath, functionName: effectiveFunctionName },
|
|
291
341
|
...usages.map((u) => ({
|
|
292
342
|
path: translatePath(u.schemaPath, u.scopeNodeName),
|
|
293
343
|
functionName: u.scopeNodeName,
|
|
294
344
|
})),
|
|
295
345
|
].filter((pathInfo) => !pathInfo.path.includes('.map('));
|
|
296
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
|
+
|
|
297
478
|
const entry = findOrCreateEquivalentSchemaPathsEntry(allPaths);
|
|
298
479
|
for (const equivalentRoot of entry.equivalentRoots) {
|
|
299
480
|
const dataStructures =
|
|
@@ -309,26 +490,52 @@ export default function mergeInDependentDataStructure({
|
|
|
309
490
|
]
|
|
310
491
|
: [dataStructure];
|
|
311
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
|
+
|
|
312
503
|
const schemas = dataStructures.map((dataStructure) =>
|
|
313
|
-
|
|
504
|
+
isSignaturePath
|
|
314
505
|
? dataStructure?.signatureSchema
|
|
315
506
|
: dataStructure?.returnValueSchema,
|
|
316
507
|
);
|
|
317
508
|
|
|
318
|
-
|
|
509
|
+
let pathParts = splitOutsideParenthesesAndArrays(
|
|
319
510
|
equivalentRoot.schemaRootPath,
|
|
320
511
|
);
|
|
321
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
|
+
|
|
322
525
|
for (const schema of schemas) {
|
|
323
526
|
for (const schemaPath in schema) {
|
|
324
527
|
let schemaPathParts =
|
|
325
528
|
splitOutsideParenthesesAndArrays(schemaPath);
|
|
326
529
|
|
|
327
530
|
if (schemaPathParts[0].startsWith(functionName)) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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
|
+
}
|
|
332
539
|
}
|
|
333
540
|
|
|
334
541
|
if (schemaPathParts.length < pathParts.length) continue;
|
|
@@ -481,6 +688,47 @@ export default function mergeInDependentDataStructure({
|
|
|
481
688
|
const mergeAllEquivalentSchemaPaths = () => {
|
|
482
689
|
const mergedEquivalentSchemaPaths: typeof equivalentSchemaPaths = [];
|
|
483
690
|
|
|
691
|
+
// Pre-pass: Connect entries with array/array-element relationships.
|
|
692
|
+
// This handles cases like:
|
|
693
|
+
// - Entry A has root 'surveys' (array)
|
|
694
|
+
// - Entry B has root 'surveys[]' (array element)
|
|
695
|
+
// These need to be connected so Entry B's field postfixes flow to Entry A.
|
|
696
|
+
// We do this before the main merge to ensure the connection happens regardless
|
|
697
|
+
// of processing order.
|
|
698
|
+
for (const esp of equivalentSchemaPaths) {
|
|
699
|
+
for (const root of esp.equivalentRoots) {
|
|
700
|
+
if (root.schemaRootPath.endsWith('[]')) {
|
|
701
|
+
// Find a matching parent entry with the base array path
|
|
702
|
+
const baseArrayPath = root.schemaRootPath.slice(0, -2);
|
|
703
|
+
const parentEntry = equivalentSchemaPaths.find(
|
|
704
|
+
(other) =>
|
|
705
|
+
other !== esp &&
|
|
706
|
+
other.equivalentRoots.some(
|
|
707
|
+
(otherRoot) =>
|
|
708
|
+
otherRoot.schemaRootPath === baseArrayPath &&
|
|
709
|
+
otherRoot.function?.name === root.function?.name &&
|
|
710
|
+
otherRoot.function?.filePath === root.function?.filePath,
|
|
711
|
+
),
|
|
712
|
+
);
|
|
713
|
+
if (parentEntry) {
|
|
714
|
+
// Add transformed postfixes from child (array element) to parent (array)
|
|
715
|
+
// so they can be applied with [] prefix to parent paths
|
|
716
|
+
for (const [postfixPath, postfixValue] of Object.entries(
|
|
717
|
+
esp.equivalentPostfixes,
|
|
718
|
+
)) {
|
|
719
|
+
const transformedPostfix = joinParenthesesAndArrays(
|
|
720
|
+
['[]', postfixPath].filter(Boolean),
|
|
721
|
+
);
|
|
722
|
+
if (!(transformedPostfix in parentEntry.equivalentPostfixes)) {
|
|
723
|
+
parentEntry.equivalentPostfixes[transformedPostfix] =
|
|
724
|
+
postfixValue;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
484
732
|
const findEquivalentSchemaPathEntry = (
|
|
485
733
|
schemaSubPath: string,
|
|
486
734
|
equivalentRootFunction: (typeof equivalentSchemaPaths)[0]['equivalentRoots'][0]['function'],
|
|
@@ -622,9 +870,10 @@ export default function mergeInDependentDataStructure({
|
|
|
622
870
|
continue;
|
|
623
871
|
}
|
|
624
872
|
|
|
625
|
-
const
|
|
873
|
+
const childMergedDataStructure =
|
|
626
874
|
dependentAnalyses[filePath][name].metadata?.mergedDataStructure || {};
|
|
627
|
-
|
|
875
|
+
|
|
876
|
+
gatherAllEquivalentSchemaPaths(name, childMergedDataStructure as any);
|
|
628
877
|
}
|
|
629
878
|
}
|
|
630
879
|
|
|
@@ -885,6 +1134,164 @@ export default function mergeInDependentDataStructure({
|
|
|
885
1134
|
}
|
|
886
1135
|
|
|
887
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
|
+
}
|
|
888
1295
|
}
|
|
889
1296
|
|
|
890
1297
|
// Ensure ALL dependencies from dependentAnalyses are included in dependencySchemas,
|
|
@@ -962,45 +1369,5 @@ export default function mergeInDependentDataStructure({
|
|
|
962
1369
|
}
|
|
963
1370
|
}
|
|
964
1371
|
|
|
965
|
-
// Ensure ALL dependencies from the input dependencySchemas are preserved.
|
|
966
|
-
// Some dependencies (like .d.ts type declaration files) may not have:
|
|
967
|
-
// - Equivalencies with the root scope
|
|
968
|
-
// - A dependent analysis (they're just type declarations)
|
|
969
|
-
// - Be marked as mocked
|
|
970
|
-
// Without this, their schemas would be lost entirely.
|
|
971
|
-
//
|
|
972
|
-
// IMPORTANT: Only add schemas for dependencies that weren't already processed.
|
|
973
|
-
// If a dependency has an existing schema (even an empty one), it means the
|
|
974
|
-
// existing processing (mocked dependencies, equivalencies, dependentAnalyses)
|
|
975
|
-
// has already handled it and may have intentionally filtered out certain paths.
|
|
976
|
-
for (const filePath in dependencySchemas) {
|
|
977
|
-
for (const name in dependencySchemas[filePath]) {
|
|
978
|
-
const srcSchema = dependencySchemas[filePath][name];
|
|
979
|
-
if (!srcSchema) continue;
|
|
980
|
-
|
|
981
|
-
// Check if this dependency was already processed by any other mechanism
|
|
982
|
-
const existingSchema =
|
|
983
|
-
mergedDataStructure.dependencySchemas[filePath]?.[name];
|
|
984
|
-
|
|
985
|
-
// Only add if no existing schema at all - this means the dependency
|
|
986
|
-
// wasn't processed through equivalencies, mocked dependencies, or dependentAnalyses
|
|
987
|
-
if (!existingSchema) {
|
|
988
|
-
const depSchema = findOrCreateDependentSchemas({ filePath, name });
|
|
989
|
-
for (const path in srcSchema.returnValueSchema) {
|
|
990
|
-
depSchema.returnValueSchema[path] = srcSchema.returnValueSchema[path];
|
|
991
|
-
}
|
|
992
|
-
for (const path in srcSchema.signatureSchema) {
|
|
993
|
-
depSchema.signatureSchema[path] = srcSchema.signatureSchema[path];
|
|
994
|
-
}
|
|
995
|
-
}
|
|
996
|
-
}
|
|
997
|
-
}
|
|
998
|
-
|
|
999
|
-
// writeFile(
|
|
1000
|
-
// 'mergeInDependentDataStructure-debug-result.json',
|
|
1001
|
-
// // rootScopeName,
|
|
1002
|
-
// JSON.stringify(mergedDataStructure, null, 2),
|
|
1003
|
-
// ).catch(() => {});
|
|
1004
|
-
|
|
1005
1372
|
return mergedDataStructure;
|
|
1006
1373
|
}
|