@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.da5baf5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +5 -5
- package/analyzer-template/packages/ai/index.ts +2 -1
- package/analyzer-template/packages/ai/package.json +2 -2
- package/analyzer-template/packages/ai/scripts/ai-test-matrix.mjs +424 -0
- package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +24 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +6 -16
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +197 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +28 -2
- package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +127 -4
- package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +1 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1821 -542
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.ts +138 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +1 -1
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +139 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/DebugTracer.ts +224 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/PathManager.ts +203 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/README.md +294 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +161 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.ts +235 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +14 -6
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/selectBestValue.ts +70 -0
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.ts +113 -0
- package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +36 -0
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityDocumentation.ts +20 -2
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +51 -107
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
- package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
- package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
- package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +53 -176
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
- package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
- package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
- package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
- package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
- package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
- package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
- package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
- package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
- package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +39 -0
- package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +52 -6
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
- package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
- package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
- package/analyzer-template/packages/aws/package.json +2 -2
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
- package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
- package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
- 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 +28 -21
- 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/componentScenarioPageRemix.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
- package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
- package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
- package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/index.js +2 -0
- package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
- package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
- package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
- package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/utils/index.ts +2 -0
- package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
- package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +8 -3
- package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
- package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
- package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
- package/analyzer-template/project/constructMockCode.ts +170 -6
- package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
- package/analyzer-template/project/startScenarioCapture.ts +24 -0
- package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
- package/analyzer-template/project/writeMockDataTsx.ts +125 -4
- package/analyzer-template/project/writeScenarioComponents.ts +175 -45
- package/analyzer-template/project/writeUniversalMocks.ts +72 -10
- package/background/src/lib/virtualized/project/constructMockCode.js +158 -7
- package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
- package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
- package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
- package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
- package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
- package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
- package/background/src/lib/virtualized/project/writeMockDataTsx.js +95 -3
- package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
- package/background/src/lib/virtualized/project/writeScenarioComponents.js +130 -28
- package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
- package/background/src/lib/virtualized/project/writeUniversalMocks.js +59 -9
- package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
- package/codeyam-cli/scripts/apply-setup.js +288 -0
- package/codeyam-cli/scripts/apply-setup.js.map +1 -0
- package/codeyam-cli/scripts/extract-setup.js +130 -0
- package/codeyam-cli/scripts/extract-setup.js.map +1 -0
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
- package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
- package/codeyam-cli/src/cli.js +4 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/codeyam-cli.js +0 -0
- package/codeyam-cli/src/commands/debug.js +190 -0
- package/codeyam-cli/src/commands/debug.js.map +1 -0
- package/codeyam-cli/src/commands/init.js +4 -23
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/commands/setup-sandbox.js +164 -0
- package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
- package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
- package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +4 -3
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +25 -5
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
- package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
- package/codeyam-cli/src/utils/fileWatcher.js +75 -5
- package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
- package/codeyam-cli/src/utils/queue/job.js +3 -2
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
- package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
- package/codeyam-cli/src/utils/webappDetection.js +2 -1
- package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
- package/codeyam-cli/src/webserver/app/lib/database.js +63 -2
- package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
- package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BFRmw1TF.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-CRfBaL5B.js} +3 -3
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-BYVx9KFp.js +3 -0
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-CRcT5fOZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Dj4Mm0AR.js +6 -0
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-wtCIkGzq.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/_index-Cjdlwanz.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-Dv3k2aEm.js +10 -0
- package/codeyam-cli/src/webserver/build/client/assets/chart-column-DOftqM9U.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-De6i8FUT.js +26 -0
- package/codeyam-cli/src/webserver/build/client/assets/circle-alert-0WShkwuc.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/clock-DXui5oLF.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DPFKgE96.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-BxaXKsIx.js} +10 -10
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BRD2FrH5.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-69R47Ffu.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-B5l8I1m3.js +5 -0
- package/codeyam-cli/src/webserver/build/client/assets/file-text-fb2mx25c.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/files-l_Eh9jQG.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/git-BCnOUEl9.js +12 -0
- package/codeyam-cli/src/webserver/build/client/assets/globals-BxkM6Up7.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/index-BgDzgbQW.js +8 -0
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DE3HAwpF.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/manifest-5579bc45.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/root-o8NMI2bW.js +16 -0
- package/codeyam-cli/src/webserver/build/client/assets/search-BymWwY_X.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-C7G4GDvW.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/settings-Dc4MlMpK.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/simulations-Duh3oShE.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-AlhS7g5F.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-XY00p4rI.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/zap-Dra7vum1.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/index-Dpr7o3dP.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-BM5nyvlV.js +166 -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 +1 -1
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/templates/codeyam-setup-skill.md +85 -94
- package/package.json +7 -10
- package/packages/ai/index.js +1 -2
- package/packages/ai/index.js.map +1 -1
- package/packages/ai/src/lib/analyzeScope.js +13 -0
- package/packages/ai/src/lib/analyzeScope.js.map +1 -1
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
- package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/paths.js +28 -3
- package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
- package/packages/ai/src/lib/astScopes/processExpression.js +111 -3
- package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
- package/packages/ai/src/lib/checkAllAttributes.js +1 -3
- package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1320 -396
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
- package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
- package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
- package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
- package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
- package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
- package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
- package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
- package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
- package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
- package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
- package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
- package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
- package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
- package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
- package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
- package/packages/ai/src/lib/generateEntityKeyAttributes.js +53 -176
- package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
- package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
- package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
- package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
- package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
- package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
- package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
- package/packages/ai/src/lib/getLLMCallStats.js +0 -14
- package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
- package/packages/ai/src/lib/modelInfo.js +15 -0
- package/packages/ai/src/lib/modelInfo.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
- package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
- package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
- package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
- package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
- package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
- package/packages/ai/src/lib/types/index.js +2 -0
- package/packages/ai/src/lib/types/index.js.map +1 -1
- package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
- package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/FileAnalyzer.js +45 -5
- package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
- package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
- package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
- package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
- package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
- package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
- package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
- package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
- package/packages/generate/src/lib/scenarioComponent.js +5 -3
- package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
- package/packages/utils/index.js +2 -0
- package/packages/utils/index.js.map +1 -1
- package/packages/utils/src/lib/Semaphore.js +40 -0
- package/packages/utils/src/lib/Semaphore.js.map +1 -0
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
- package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
- package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
- package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
- package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
- package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
- package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
- package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
- package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
- package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
- package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
- package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
- package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-xwuhwsZH.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-M2QuSHKC.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
- package/codeyam-cli/src/webserver/build/client/assets/chart-column-B2I7jQx2.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/circle-alert-GwwOAbhw.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/components-CAx5ONX_.js +0 -40
- package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DGy3zrli.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-ChAdTrrU.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-D9L7267w.js +0 -5
- package/codeyam-cli/src/webserver/build/client/assets/entry.client-C6FRgjPr.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
- package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DN7Vr40D.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
- package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-Hbf8b7J_.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/settings-MZc4XdmE.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/zap-B4gsLUZQ.js +0 -1
- package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/index-eAULANMV.js +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
- package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
- package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
- package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
- package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
- package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
|
@@ -5,7 +5,20 @@ import { getRelativePath } from "../../../../../packages/generate/index.js";
|
|
|
5
5
|
import { safeFileName, CODEYAM_MOCKS_DIRNAME, PROJECT_RELATIVE_PATH, } from "../../../../../packages/utils/index.js";
|
|
6
6
|
export default async function writeUniversalMocks({ analysis, projectAnalyzer, framework, rootPath, fileStore, }) {
|
|
7
7
|
const { project } = projectAnalyzer;
|
|
8
|
-
|
|
8
|
+
// Group node_module mocks by filePath to merge multiple exports into one file
|
|
9
|
+
// This prevents later mocks from overwriting earlier ones for the same package
|
|
10
|
+
const nodeModuleMocksByPath = new Map();
|
|
11
|
+
const universalMocks = project.metadata?.universalMocks ?? [];
|
|
12
|
+
for (const mock of universalMocks) {
|
|
13
|
+
if (mock.nodeModule) {
|
|
14
|
+
const existing = nodeModuleMocksByPath.get(mock.filePath) ?? [];
|
|
15
|
+
existing.push(mock);
|
|
16
|
+
nodeModuleMocksByPath.set(mock.filePath, existing);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Track which filePaths we've already processed (for node_modules)
|
|
20
|
+
const processedNodeModulePaths = new Set();
|
|
21
|
+
for (const universalMock of universalMocks) {
|
|
9
22
|
console.log('CodeYam: Initializing universal mock', universalMock.filePath, universalMock.entityName);
|
|
10
23
|
try {
|
|
11
24
|
let mockPath = '';
|
|
@@ -24,12 +37,22 @@ export default async function writeUniversalMocks({ analysis, projectAnalyzer, f
|
|
|
24
37
|
mockContent = file.content;
|
|
25
38
|
mockPath = path.join(rootPath ?? PROJECT_RELATIVE_PATH, universalMock.filePath);
|
|
26
39
|
const fileAnalyzer = projectAnalyzer.getFileAnalyzer(file);
|
|
27
|
-
|
|
28
|
-
|
|
40
|
+
// Use getAllDeclaredEntityNodes to avoid incorrectly matching identifier references
|
|
41
|
+
if (fileAnalyzer.getAllDeclaredEntityNodes()[universalMock.entityName]) {
|
|
42
|
+
const entityCode = fileAnalyzer.getDeclaredEntityCode(universalMock.entityName);
|
|
29
43
|
mockContent = file.content.replace(entityCode, universalMock.content);
|
|
30
44
|
}
|
|
31
45
|
}
|
|
32
46
|
else {
|
|
47
|
+
// For node_modules, check if we've already processed this path
|
|
48
|
+
// (multiple mocks for the same package should be merged)
|
|
49
|
+
if (universalMock.nodeModule) {
|
|
50
|
+
if (processedNodeModulePaths.has(universalMock.filePath)) {
|
|
51
|
+
// Already processed as part of a merged mock, skip
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
processedNodeModulePaths.add(universalMock.filePath);
|
|
55
|
+
}
|
|
33
56
|
const appPath = getAppPath(project, framework, false, universalMock.filePath);
|
|
34
57
|
// For node_modules, strip extension before creating mock path
|
|
35
58
|
// This handles both old format (with extension) and new format (without)
|
|
@@ -37,14 +60,35 @@ export default async function writeUniversalMocks({ analysis, projectAnalyzer, f
|
|
|
37
60
|
? universalMock.filePath.replace(/\.(ts|tsx|js|jsx)$/, '')
|
|
38
61
|
: universalMock.filePath;
|
|
39
62
|
mockPath = path.join(appPath, CODEYAM_MOCKS_DIRNAME, safeFileName(filePathForMockFile) + '.tsx');
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
63
|
+
// For node_modules, merge all mocks for this filePath
|
|
64
|
+
const mocksToProcess = universalMock.nodeModule
|
|
65
|
+
? (nodeModuleMocksByPath.get(universalMock.filePath) ?? [
|
|
66
|
+
universalMock,
|
|
67
|
+
])
|
|
68
|
+
: [universalMock];
|
|
69
|
+
const contentParts = [];
|
|
70
|
+
const namedExports = [];
|
|
71
|
+
let hasDefaultExport = false;
|
|
72
|
+
for (const mock of mocksToProcess) {
|
|
73
|
+
if (mock.entityName === 'default') {
|
|
74
|
+
hasDefaultExport = true;
|
|
75
|
+
contentParts.push(`export default ${mock.content}`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
contentParts.push(mock.content);
|
|
79
|
+
namedExports.push(mock.entityName);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Build the final mock content
|
|
83
|
+
if (namedExports.length > 0) {
|
|
84
|
+
mockContent = contentParts.join('\n\n');
|
|
85
|
+
// Only add export statement for non-default exports if not already in content
|
|
86
|
+
if (!hasDefaultExport || namedExports.length > 0) {
|
|
87
|
+
mockContent += `\n\nexport { ${namedExports.join(', ')} };`;
|
|
88
|
+
}
|
|
45
89
|
}
|
|
46
90
|
else {
|
|
47
|
-
mockContent =
|
|
91
|
+
mockContent = contentParts.join('\n\n');
|
|
48
92
|
}
|
|
49
93
|
}
|
|
50
94
|
const mockDataImport = new RegExp(`import { scenarios } from ['"]\.+\/[Mm]ockData(.js)*['"];`, 'g');
|
|
@@ -72,6 +116,12 @@ export default async function writeUniversalMocks({ analysis, projectAnalyzer, f
|
|
|
72
116
|
const importRegEx = new RegExp(`['"]${filePathForMatching.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}['"]`, 'g');
|
|
73
117
|
const allSourceFiles = projectAnalyzer.getAllSourceFiles();
|
|
74
118
|
for (const sourceFile of allSourceFiles) {
|
|
119
|
+
// Skip JSON files - they should not have imports rewritten
|
|
120
|
+
// This can happen when resolveJsonModule is enabled in tsconfig
|
|
121
|
+
// and package.json is included in the TypeScript program
|
|
122
|
+
if (sourceFile.path.endsWith('.json')) {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
75
125
|
if (importRegEx.test(sourceFile.content)) {
|
|
76
126
|
const relativeMockPath = getRelativePath(sourceFile.path, mockPath);
|
|
77
127
|
const newContent = sourceFile.content.replace(importRegEx, `'${relativeMockPath}'`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writeUniversalMocks.js","sourceRoot":"","sources":["../../../../../../../background/src/lib/virtualized/project/writeUniversalMocks.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAWxB,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAChD,QAAQ,EACR,eAAe,EACf,SAAS,EACT,QAAQ,EACR,SAAS,GACe;IACxB,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IAEpC,
|
|
1
|
+
{"version":3,"file":"writeUniversalMocks.js","sourceRoot":"","sources":["../../../../../../../background/src/lib/virtualized/project/writeUniversalMocks.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,qBAAqB,CAAC;AAC5C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,gBAAgB,CAAC;AAWxB,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,mBAAmB,CAAC,EAChD,QAAQ,EACR,eAAe,EACf,SAAS,EACT,QAAQ,EACR,SAAS,GACe;IACxB,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC;IAEpC,8EAA8E;IAC9E,+EAA+E;IAC/E,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAGlC,CAAC;IACJ,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,cAAc,IAAI,EAAE,CAAC;IAE9D,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnD,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,sCAAsC,EACtC,aAAa,CAAC,QAAQ,EACtB,aAAa,CAAC,UAAU,CACzB,CAAC;QAEF,IAAI,CAAC;YACH,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,WAAW,GAAG,EAAE,CAAC;YAErB,+CAA+C;YAC/C,IAAI,IAAI,GAAG,SAAS;gBAClB,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAC7C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC;YAEjE,wCAAwC;YACxC,IACE,IAAI;gBACJ,SAAS;gBACT,CAAC,SAAS,CAAC,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,EAClD,CAAC;gBACD,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC3B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAClB,QAAQ,IAAI,qBAAqB,EACjC,aAAa,CAAC,QAAQ,CACvB,CAAC;gBACF,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;gBAE3D,oFAAoF;gBACpF,IACE,YAAY,CAAC,yBAAyB,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,EAClE,CAAC;oBACD,MAAM,UAAU,GAAG,YAAY,CAAC,qBAAqB,CACnD,aAAa,CAAC,UAAU,CACzB,CAAC;oBACF,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,+DAA+D;gBAC/D,yDAAyD;gBACzD,IAAI,aAAa,CAAC,UAAU,EAAE,CAAC;oBAC7B,IAAI,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACzD,mDAAmD;wBACnD,SAAS;oBACX,CAAC;oBACD,wBAAwB,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACvD,CAAC;gBAED,MAAM,OAAO,GAAG,UAAU,CACxB,OAAO,EACP,SAAS,EACT,KAAK,EACL,aAAa,CAAC,QAAQ,CACvB,CAAC;gBACF,8DAA8D;gBAC9D,yEAAyE;gBACzE,MAAM,mBAAmB,GAAG,aAAa,CAAC,UAAU;oBAClD,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBAC1D,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAC3B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAClB,OAAO,EACP,qBAAqB,EACrB,YAAY,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAC3C,CAAC;gBAEF,sDAAsD;gBACtD,MAAM,cAAc,GAAG,aAAa,CAAC,UAAU;oBAC7C,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI;wBACpD,aAAa;qBACd,CAAC;oBACJ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBAEpB,MAAM,YAAY,GAAa,EAAE,CAAC;gBAClC,MAAM,YAAY,GAAa,EAAE,CAAC;gBAClC,IAAI,gBAAgB,GAAG,KAAK,CAAC;gBAE7B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;wBAClC,gBAAgB,GAAG,IAAI,CAAC;wBACxB,YAAY,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACtD,CAAC;yBAAM,CAAC;wBACN,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBAChC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACxC,8EAA8E;oBAC9E,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACjD,WAAW,IAAI,gBAAgB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC9D,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,MAAM,CAC/B,2DAA2D,EAC3D,GAAG,CACJ,CAAC;YACF,IAAI,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,UAAU,CACxB,eAAe,CAAC,OAAO,EACvB,SAAS,EACT,KAAK,EACL,aAAa,CAAC,QAAQ,CACvB,CAAC;gBACF,MAAM,QAAQ,GAAG,GAAG,OAAO,IAAI,qBAAqB,GAAG,CAAC;gBACxD,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC7D,MAAM,YAAY,GAAG,GAAG,gBAAgB,IAAI,QAAQ,CAAC,EAAE,WAAW,CAAC;gBACnE,MAAM,eAAe,GAAG,8BAA8B,YAAY,IAAI,CAAC;gBACvE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBACtD,WAAW,GAAG,GAAG,eAAe,KAAK,WAAW,EAAE,CAAC;YACrD,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,8DAA8D;gBAC9D,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACN,qEAAqE;gBACrE,2DAA2D;gBAE3D,mEAAmE;gBACnE,yEAAyE;gBACzE,MAAM,mBAAmB,GAAG,aAAa,CAAC,UAAU;oBAClD,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBAC1D,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAE3B,MAAM,WAAW,GAAG,IAAI,MAAM,CAC5B,OAAO,mBAAmB,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EACvE,GAAG,CACJ,CAAC;gBACF,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,EAAE,CAAC;gBAC3D,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;oBACxC,2DAA2D;oBAC3D,gEAAgE;oBAChE,yDAAyD;oBACzD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;wBACtC,SAAS;oBACX,CAAC;oBACD,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;wBACzC,MAAM,gBAAgB,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;wBACpE,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAC3C,WAAW,EACX,IAAI,gBAAgB,GAAG,CACxB,CAAC;wBACF,OAAO,CAAC,GAAG,CACT,8BAA8B,EAC9B,UAAU,CAAC,IAAI,EACf,MAAM,EACN,aAAa,CAAC,QAAQ,EACtB,IAAI,EACJ,gBAAgB,CACjB,CAAC;wBACF,MAAM,SAAS,CAAC,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;YAED,yEAAyE;YACzE,MAAM,SAAS,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,uCAAuC,EACvC,QAAQ,CAAC,EAAE,EACX,QAAQ,CAAC,UAAU,EACnB,aAAa,EACb,CAAC,CACF,CAAC;YACF,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Apply project setup configuration from fixtures to a target project.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx tsx codeyam-cli/scripts/apply-setup.ts --project cal.com --target /path/to/target-project
|
|
7
|
+
*
|
|
8
|
+
* This script:
|
|
9
|
+
* 1. Reads setup.json from codeyam-cli/scripts/fixtures/{project}/
|
|
10
|
+
* 2. Creates/updates .codeyam/ directory structure in target
|
|
11
|
+
* 3. Writes .codeyam/config.json
|
|
12
|
+
* 4. Copies universal mock files to .codeyam/universal-mocks/
|
|
13
|
+
* 5. Creates/updates SQLite database with project metadata
|
|
14
|
+
*/
|
|
15
|
+
import * as fs from 'fs';
|
|
16
|
+
import * as path from 'path';
|
|
17
|
+
import { fileURLToPath } from 'url';
|
|
18
|
+
import { parseArgs } from 'util';
|
|
19
|
+
import { randomUUID } from 'crypto';
|
|
20
|
+
import { getSqliteDatabase, createSqliteSchema, upsertProjects, upsertBranches, loadBranches, } from "../../packages/supabase/index.js";
|
|
21
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
22
|
+
const __dirname = path.dirname(__filename);
|
|
23
|
+
async function main() {
|
|
24
|
+
const { values } = parseArgs({
|
|
25
|
+
options: {
|
|
26
|
+
project: { type: 'string', short: 'p' },
|
|
27
|
+
target: { type: 'string', short: 't' },
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
const projectName = values.project;
|
|
31
|
+
const targetPath = values.target;
|
|
32
|
+
if (!projectName || !targetPath) {
|
|
33
|
+
console.error('Usage: npx tsx apply-setup.ts --project <name> --target <path>');
|
|
34
|
+
console.error(' --project, -p Name of the fixture to apply (e.g., "cal.com")');
|
|
35
|
+
console.error(' --target, -t Path to the target project');
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const fixturesDir = path.join(__dirname, 'fixtures', projectName);
|
|
39
|
+
const setupJsonPath = path.join(fixturesDir, 'setup.json');
|
|
40
|
+
const fixtureMocksDir = path.join(fixturesDir, 'universal-mocks');
|
|
41
|
+
const codeyamDir = path.join(targetPath, '.codeyam');
|
|
42
|
+
const configJsonPath = path.join(codeyamDir, 'config.json');
|
|
43
|
+
const targetMocksDir = path.join(codeyamDir, 'universal-mocks');
|
|
44
|
+
const dbPath = path.join(codeyamDir, 'db.sqlite3');
|
|
45
|
+
// Validate fixture exists
|
|
46
|
+
if (!fs.existsSync(setupJsonPath)) {
|
|
47
|
+
console.error(`Error: Fixture not found at ${setupJsonPath}`);
|
|
48
|
+
console.error(`Available fixtures:`);
|
|
49
|
+
const fixtures = fs.readdirSync(path.join(__dirname, 'fixtures'));
|
|
50
|
+
for (const f of fixtures) {
|
|
51
|
+
console.error(` - ${f}`);
|
|
52
|
+
}
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
// Validate target exists
|
|
56
|
+
if (!fs.existsSync(targetPath)) {
|
|
57
|
+
console.error(`Error: Target path does not exist: ${targetPath}`);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
console.log(`Applying fixture: ${projectName}`);
|
|
61
|
+
console.log(`Target project: ${targetPath}`);
|
|
62
|
+
// Read fixture
|
|
63
|
+
const fixture = JSON.parse(await fs.promises.readFile(setupJsonPath, 'utf-8'));
|
|
64
|
+
// Create .codeyam directory structure
|
|
65
|
+
console.log('\n1. Creating .codeyam directory structure...');
|
|
66
|
+
await fs.promises.mkdir(codeyamDir, { recursive: true });
|
|
67
|
+
await fs.promises.mkdir(path.join(codeyamDir, 'results'), {
|
|
68
|
+
recursive: true,
|
|
69
|
+
});
|
|
70
|
+
await fs.promises.mkdir(path.join(codeyamDir, 'captures'), {
|
|
71
|
+
recursive: true,
|
|
72
|
+
});
|
|
73
|
+
console.log(` Created: ${codeyamDir}`);
|
|
74
|
+
// Write config.json
|
|
75
|
+
console.log('\n2. Writing config.json...');
|
|
76
|
+
const configJson = {
|
|
77
|
+
projectSlug: fixture.projectSlug,
|
|
78
|
+
packageManager: fixture.packageManager,
|
|
79
|
+
webapps: fixture.webapps,
|
|
80
|
+
environmentVariables: [],
|
|
81
|
+
createdAt: new Date().toISOString(),
|
|
82
|
+
branchId: null, // Will be set when branch is created
|
|
83
|
+
};
|
|
84
|
+
await fs.promises.writeFile(configJsonPath, JSON.stringify(configJson, null, 2), 'utf-8');
|
|
85
|
+
console.log(` Wrote: ${configJsonPath}`);
|
|
86
|
+
// Copy universal mocks
|
|
87
|
+
console.log('\n3. Copying universal mocks...');
|
|
88
|
+
if (fs.existsSync(fixtureMocksDir)) {
|
|
89
|
+
// Remove existing mocks dir if it exists
|
|
90
|
+
if (fs.existsSync(targetMocksDir)) {
|
|
91
|
+
await fs.promises.rm(targetMocksDir, { recursive: true });
|
|
92
|
+
}
|
|
93
|
+
// Copy fixture mocks to target
|
|
94
|
+
await fs.promises.cp(fixtureMocksDir, targetMocksDir, { recursive: true });
|
|
95
|
+
// Count files copied
|
|
96
|
+
const countFiles = (dir) => {
|
|
97
|
+
let count = 0;
|
|
98
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
99
|
+
for (const entry of entries) {
|
|
100
|
+
if (entry.isDirectory()) {
|
|
101
|
+
count += countFiles(path.join(dir, entry.name));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
count++;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return count;
|
|
108
|
+
};
|
|
109
|
+
const fileCount = countFiles(targetMocksDir);
|
|
110
|
+
console.log(` Copied: ${fileCount} mock file(s)`);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
console.log(' No universal mocks in fixture');
|
|
114
|
+
}
|
|
115
|
+
// Read mock file contents to build full universalMocks array
|
|
116
|
+
const universalMocksWithContent = await readMocksWithContent(targetMocksDir, fixture.universalMocks);
|
|
117
|
+
// Setup SQLite database
|
|
118
|
+
console.log('\n4. Setting up SQLite database...');
|
|
119
|
+
// Set the SQLITE_PATH so getSqliteDatabase knows where to look
|
|
120
|
+
process.env.SQLITE_PATH = dbPath;
|
|
121
|
+
const db = getSqliteDatabase(dbPath);
|
|
122
|
+
try {
|
|
123
|
+
// Check if tables exist, create if not
|
|
124
|
+
const tableCheck = await db
|
|
125
|
+
.selectFrom('projects')
|
|
126
|
+
.select(db.fn.count('id').as('count'))
|
|
127
|
+
.executeTakeFirst()
|
|
128
|
+
.catch(() => { });
|
|
129
|
+
if (!tableCheck) {
|
|
130
|
+
console.log(' Creating database schema...');
|
|
131
|
+
await createSqliteSchema(db);
|
|
132
|
+
}
|
|
133
|
+
// Create/update project
|
|
134
|
+
const projectId = randomUUID();
|
|
135
|
+
const project = {
|
|
136
|
+
id: projectId,
|
|
137
|
+
name: fixture.projectSlug,
|
|
138
|
+
slug: fixture.projectSlug,
|
|
139
|
+
path: `local:${targetPath}`,
|
|
140
|
+
metadata: {
|
|
141
|
+
packageManager: fixture.packageManager,
|
|
142
|
+
webapps: fixture.webapps,
|
|
143
|
+
universalMocks: universalMocksWithContent,
|
|
144
|
+
unapprovedPaths: fixture.unapprovedPaths,
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
// Check if project already exists
|
|
148
|
+
const existingProject = await db
|
|
149
|
+
.selectFrom('projects')
|
|
150
|
+
.selectAll()
|
|
151
|
+
.where('slug', '=', fixture.projectSlug)
|
|
152
|
+
.executeTakeFirst();
|
|
153
|
+
let finalProjectId;
|
|
154
|
+
if (existingProject) {
|
|
155
|
+
// Update existing project's metadata
|
|
156
|
+
console.log(` Updating existing project: ${fixture.projectSlug}`);
|
|
157
|
+
await db
|
|
158
|
+
.updateTable('projects')
|
|
159
|
+
.set({
|
|
160
|
+
metadata: JSON.stringify(project.metadata),
|
|
161
|
+
updated_at: new Date().toISOString(),
|
|
162
|
+
})
|
|
163
|
+
.where('slug', '=', fixture.projectSlug)
|
|
164
|
+
.execute();
|
|
165
|
+
finalProjectId = existingProject.id;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
// Insert new project
|
|
169
|
+
console.log(` Creating new project: ${fixture.projectSlug}`);
|
|
170
|
+
await upsertProjects([project]);
|
|
171
|
+
finalProjectId = projectId;
|
|
172
|
+
}
|
|
173
|
+
// Create/update _local branch
|
|
174
|
+
console.log('\n5. Creating _local branch...');
|
|
175
|
+
const existingBranches = await loadBranches({
|
|
176
|
+
projectId: finalProjectId,
|
|
177
|
+
names: ['_local'],
|
|
178
|
+
});
|
|
179
|
+
let branchId;
|
|
180
|
+
if (existingBranches && existingBranches.length > 0) {
|
|
181
|
+
console.log(' Using existing _local branch');
|
|
182
|
+
branchId = existingBranches[0].id;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
console.log(' Creating new _local branch');
|
|
186
|
+
const localBranch = {
|
|
187
|
+
projectId: finalProjectId,
|
|
188
|
+
name: '_local',
|
|
189
|
+
ref: '_local',
|
|
190
|
+
primary: true,
|
|
191
|
+
activeAt: new Date().toISOString(),
|
|
192
|
+
contentChangedAt: new Date().toISOString(),
|
|
193
|
+
metadata: {
|
|
194
|
+
contributors: [
|
|
195
|
+
{
|
|
196
|
+
username: 'local-dev',
|
|
197
|
+
avatarUrl: 'https://github.com/identicons/local-dev.png',
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
commits: { total: 0, last7Days: [] },
|
|
201
|
+
timeline: [
|
|
202
|
+
{
|
|
203
|
+
title: 'Local branch created',
|
|
204
|
+
date: new Date().toISOString(),
|
|
205
|
+
authors: [
|
|
206
|
+
{
|
|
207
|
+
username: 'local-dev',
|
|
208
|
+
avatarUrl: 'https://github.com/identicons/local-dev.png',
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
sha: 'local-init',
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
const createdBranches = await upsertBranches([localBranch]);
|
|
217
|
+
if (!createdBranches || createdBranches.length === 0) {
|
|
218
|
+
throw new Error('Failed to create _local branch');
|
|
219
|
+
}
|
|
220
|
+
branchId = createdBranches[0].id;
|
|
221
|
+
}
|
|
222
|
+
// Update config.json with the branch ID
|
|
223
|
+
configJson.branchId = branchId;
|
|
224
|
+
await fs.promises.writeFile(configJsonPath, JSON.stringify(configJson, null, 2), 'utf-8');
|
|
225
|
+
console.log(` Updated config.json with branchId: ${branchId}`);
|
|
226
|
+
console.log(' Database updated successfully');
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
await db.destroy();
|
|
230
|
+
}
|
|
231
|
+
console.log('\nSetup complete!');
|
|
232
|
+
console.log(`\nNext steps:`);
|
|
233
|
+
console.log(` cd ${targetPath}`);
|
|
234
|
+
console.log(` codeyam start`);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Read mock files and merge content with fixture metadata
|
|
238
|
+
*/
|
|
239
|
+
async function readMocksWithContent(mocksDir, mockMetadata) {
|
|
240
|
+
if (!fs.existsSync(mocksDir)) {
|
|
241
|
+
return mockMetadata;
|
|
242
|
+
}
|
|
243
|
+
// Build a map of file contents by path
|
|
244
|
+
const fileContents = new Map();
|
|
245
|
+
const readAllFiles = async (dir, basePath = '') => {
|
|
246
|
+
const entries = await fs.promises.readdir(dir, { withFileTypes: true });
|
|
247
|
+
for (const entry of entries) {
|
|
248
|
+
const fullPath = path.join(dir, entry.name);
|
|
249
|
+
const relativePath = path.join(basePath, entry.name);
|
|
250
|
+
if (entry.isDirectory()) {
|
|
251
|
+
await readAllFiles(fullPath, relativePath);
|
|
252
|
+
}
|
|
253
|
+
else if (/\.(ts|tsx|js|jsx)$/.test(entry.name)) {
|
|
254
|
+
const content = await fs.promises.readFile(fullPath, 'utf-8');
|
|
255
|
+
// Normalize path separators
|
|
256
|
+
const normalizedPath = relativePath.replace(/\\/g, '/');
|
|
257
|
+
fileContents.set(normalizedPath, content);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
await readAllFiles(mocksDir);
|
|
262
|
+
// Merge content into metadata
|
|
263
|
+
// For each mock, find its content by matching filePath
|
|
264
|
+
return mockMetadata.map((mock) => {
|
|
265
|
+
// The filePath in metadata might not have the full path structure
|
|
266
|
+
// Try to find matching file content
|
|
267
|
+
let content = '';
|
|
268
|
+
for (const [filePath, fileContent] of fileContents) {
|
|
269
|
+
if (filePath.endsWith(mock.filePath) ||
|
|
270
|
+
mock.filePath.endsWith(filePath)) {
|
|
271
|
+
// Extract just this entity's code from the file
|
|
272
|
+
// For now, use the full file content - the sync logic will handle extraction
|
|
273
|
+
content = fileContent;
|
|
274
|
+
break;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
...mock,
|
|
279
|
+
content,
|
|
280
|
+
projectId: '', // Will be set by database
|
|
281
|
+
};
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
main().catch((error) => {
|
|
285
|
+
console.error('Error:', error);
|
|
286
|
+
process.exit(1);
|
|
287
|
+
});
|
|
288
|
+
//# sourceMappingURL=apply-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-setup.js","sourceRoot":"","sources":["../../../scripts/apply-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
#!/usr/bin/env npx tsx
|
|
2
|
+
/**
|
|
3
|
+
* Extract project setup configuration from a .codeyam database and save as fixtures.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* npx tsx codeyam-cli/scripts/extract-setup.ts --project cal.com --source /path/to/cal.com
|
|
7
|
+
*
|
|
8
|
+
* This script:
|
|
9
|
+
* 1. Connects to the SQLite database at {source}/.codeyam/db.sqlite3
|
|
10
|
+
* 2. Extracts project metadata (webapps, universalMocks, etc.)
|
|
11
|
+
* 3. Writes setup.json to codeyam-cli/scripts/fixtures/{project}/
|
|
12
|
+
* 4. Copies universal mock files to fixtures/{project}/universal-mocks/
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'fs';
|
|
15
|
+
import * as path from 'path';
|
|
16
|
+
import { fileURLToPath } from 'url';
|
|
17
|
+
import { parseArgs } from 'util';
|
|
18
|
+
import { getSqliteDatabase } from "../../packages/supabase/index.js";
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = path.dirname(__filename);
|
|
21
|
+
async function main() {
|
|
22
|
+
const { values } = parseArgs({
|
|
23
|
+
options: {
|
|
24
|
+
project: { type: 'string', short: 'p' },
|
|
25
|
+
source: { type: 'string', short: 's' },
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
const projectName = values.project;
|
|
29
|
+
const sourcePath = values.source;
|
|
30
|
+
if (!projectName || !sourcePath) {
|
|
31
|
+
console.error('Usage: npx tsx extract-setup.ts --project <name> --source <path>');
|
|
32
|
+
console.error(' --project, -p Name for the fixture (e.g., "cal.com")');
|
|
33
|
+
console.error(' --source, -s Path to the project with .codeyam folder');
|
|
34
|
+
process.exit(1);
|
|
35
|
+
}
|
|
36
|
+
const dbPath = path.join(sourcePath, '.codeyam', 'db.sqlite3');
|
|
37
|
+
const sourceMocksDir = path.join(sourcePath, '.codeyam', 'universal-mocks');
|
|
38
|
+
const fixturesDir = path.join(__dirname, 'fixtures', projectName);
|
|
39
|
+
const targetMocksDir = path.join(fixturesDir, 'universal-mocks');
|
|
40
|
+
// Validate source exists
|
|
41
|
+
if (!fs.existsSync(dbPath)) {
|
|
42
|
+
console.error(`Error: Database not found at ${dbPath}`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
console.log(`Extracting setup from: ${sourcePath}`);
|
|
46
|
+
console.log(`Writing fixtures to: ${fixturesDir}`);
|
|
47
|
+
// Connect to SQLite
|
|
48
|
+
const db = getSqliteDatabase(dbPath);
|
|
49
|
+
try {
|
|
50
|
+
// Query project metadata
|
|
51
|
+
const project = await db
|
|
52
|
+
.selectFrom('projects')
|
|
53
|
+
.selectAll()
|
|
54
|
+
.executeTakeFirst();
|
|
55
|
+
if (!project) {
|
|
56
|
+
console.error('Error: No project found in database');
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
// Parse metadata (it's stored as JSON string in SQLite)
|
|
60
|
+
const metadata = typeof project.metadata === 'string'
|
|
61
|
+
? JSON.parse(project.metadata)
|
|
62
|
+
: (project.metadata ?? {});
|
|
63
|
+
// Also check configuration column (some projects use this)
|
|
64
|
+
const configuration = typeof project.configuration === 'string'
|
|
65
|
+
? JSON.parse(project.configuration)
|
|
66
|
+
: (project.configuration ?? {});
|
|
67
|
+
// Merge metadata and configuration (configuration takes precedence)
|
|
68
|
+
const mergedConfig = { ...metadata, ...configuration };
|
|
69
|
+
// Build fixture data
|
|
70
|
+
const fixture = {
|
|
71
|
+
projectSlug: project.slug,
|
|
72
|
+
packageManager: mergedConfig.packageManager ?? 'npm',
|
|
73
|
+
webapps: mergedConfig.webapps ?? [],
|
|
74
|
+
universalMocks: (mergedConfig.universalMocks ?? []).map((mock) => ({
|
|
75
|
+
// Strip content from mocks - we'll store files separately
|
|
76
|
+
filePath: mock.filePath,
|
|
77
|
+
entityName: mock.entityName,
|
|
78
|
+
nodeModule: mock.nodeModule,
|
|
79
|
+
metadata: mock.metadata,
|
|
80
|
+
})),
|
|
81
|
+
unapprovedPaths: mergedConfig.unapprovedPaths,
|
|
82
|
+
pathsToIgnore: mergedConfig.pathsToIgnore,
|
|
83
|
+
};
|
|
84
|
+
// Create fixtures directory
|
|
85
|
+
await fs.promises.mkdir(fixturesDir, { recursive: true });
|
|
86
|
+
// Write setup.json
|
|
87
|
+
const setupJsonPath = path.join(fixturesDir, 'setup.json');
|
|
88
|
+
await fs.promises.writeFile(setupJsonPath, JSON.stringify(fixture, null, 2), 'utf-8');
|
|
89
|
+
console.log(` Wrote: ${setupJsonPath}`);
|
|
90
|
+
// Copy universal mocks directory if it exists
|
|
91
|
+
if (fs.existsSync(sourceMocksDir)) {
|
|
92
|
+
// Remove existing target mocks dir if it exists
|
|
93
|
+
if (fs.existsSync(targetMocksDir)) {
|
|
94
|
+
await fs.promises.rm(targetMocksDir, { recursive: true });
|
|
95
|
+
}
|
|
96
|
+
// Copy the directory
|
|
97
|
+
await fs.promises.cp(sourceMocksDir, targetMocksDir, { recursive: true });
|
|
98
|
+
// Count files copied
|
|
99
|
+
const countFiles = (dir) => {
|
|
100
|
+
let count = 0;
|
|
101
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
if (entry.isDirectory()) {
|
|
104
|
+
count += countFiles(path.join(dir, entry.name));
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
count++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return count;
|
|
111
|
+
};
|
|
112
|
+
const fileCount = countFiles(targetMocksDir);
|
|
113
|
+
console.log(` Copied: ${fileCount} mock file(s) to ${targetMocksDir}`);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
console.log(' No universal-mocks directory found to copy');
|
|
117
|
+
}
|
|
118
|
+
console.log('\nExtraction complete!');
|
|
119
|
+
console.log(`\nTo commit fixtures to git:`);
|
|
120
|
+
console.log(` git add codeyam-cli/scripts/fixtures/${projectName}/`);
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
await db.destroy();
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
main().catch((error) => {
|
|
127
|
+
console.error('Error:', error);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=extract-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-setup.js","sourceRoot":"","sources":["../../../scripts/extract-setup.ts"],"names":[],"mappings":"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"}
|