@codeyam/codeyam-cli 0.1.0-staging.b8b17a5 → 0.1.0-staging.ba3f279
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/analyzer-template/.build-info.json +7 -7
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/package.json +2 -2
- package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
- package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
- package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
- package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
- package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
- package/analyzer-template/packages/analyze/index.ts +4 -1
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
- package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
- package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
- package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
- package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
- package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
- package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
- package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
- package/analyzer-template/packages/aws/package.json +1 -1
- package/analyzer-template/packages/database/package.json +1 -1
- package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
- package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
- package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
- package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
- package/analyzer-template/project/analyzeFileEntities.ts +26 -0
- package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
- package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
- package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
- package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
- package/codeyam-cli/src/cli.js +15 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
- package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
- package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
- package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
- package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +9 -9
- package/codeyam-cli/src/commands/editor.js +1906 -468
- package/codeyam-cli/src/commands/editor.js.map +1 -1
- package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
- package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
- package/codeyam-cli/src/commands/init.js +1 -0
- package/codeyam-cli/src/commands/init.js.map +1 -1
- package/codeyam-cli/src/data/designSystems.js +27 -0
- package/codeyam-cli/src/data/designSystems.js.map +1 -0
- package/codeyam-cli/src/data/techStacks.js +1 -1
- package/codeyam-cli/src/utils/__tests__/editorApi.test.js +44 -0
- package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +2114 -70
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
- package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +66 -0
- package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
- package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +11 -3
- package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +190 -0
- package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +249 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +134 -1
- package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +266 -2
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
- package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +16 -1
- package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
- package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
- package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +57 -0
- package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +180 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
- package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
- package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +6 -0
- package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -1
- package/codeyam-cli/src/utils/analysisRunner.js +36 -7
- package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
- package/codeyam-cli/src/utils/analyzer.js +11 -1
- package/codeyam-cli/src/utils/analyzer.js.map +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js +1 -1
- package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/utils/editorApi.js +16 -0
- package/codeyam-cli/src/utils/editorApi.js.map +1 -1
- package/codeyam-cli/src/utils/editorAudit.js +499 -43
- package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
- package/codeyam-cli/src/utils/editorGuard.js +36 -0
- package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
- package/codeyam-cli/src/utils/editorPreview.js +5 -3
- package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
- package/codeyam-cli/src/utils/editorRecapture.js +109 -0
- package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
- package/codeyam-cli/src/utils/editorScenarioSwitch.js +39 -2
- package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
- package/codeyam-cli/src/utils/editorScenarios.js +131 -7
- package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
- package/codeyam-cli/src/utils/editorSeedAdapter.js +69 -16
- package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
- package/codeyam-cli/src/utils/entityChangeStatus.js +31 -3
- package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
- package/codeyam-cli/src/utils/entityChangeStatus.server.js +31 -0
- package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
- package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
- package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
- package/codeyam-cli/src/utils/install-skills.js +5 -0
- package/codeyam-cli/src/utils/install-skills.js.map +1 -1
- package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
- package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
- package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
- package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
- package/codeyam-cli/src/utils/queue/job.js +35 -6
- package/codeyam-cli/src/utils/queue/job.js.map +1 -1
- package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
- package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
- package/codeyam-cli/src/utils/scenarioCoverage.js +4 -1
- package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -1
- package/codeyam-cli/src/utils/scenariosManifest.js +66 -2
- package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
- package/codeyam-cli/src/utils/screenshotHash.js +26 -0
- package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js +9 -0
- package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
- package/codeyam-cli/src/utils/testResultCache.js +53 -0
- package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
- package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
- package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
- package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
- package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
- package/codeyam-cli/src/utils/testRunner.js +193 -1
- package/codeyam-cli/src/utils/testRunner.js.map +1 -1
- package/codeyam-cli/src/utils/webappDetection.js +4 -2
- package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +98 -0
- package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
- package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +68 -1
- package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +30 -11
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +190 -21
- package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
- package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
- package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
- package/codeyam-cli/src/webserver/app/lib/clientErrors.js +22 -1
- package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -1
- package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
- package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
- package/codeyam-cli/src/webserver/backgroundServer.js +42 -57
- package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CzTDWkF2.js → CopyButton-CLe80MMu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-BFbq6iFk.js → EntityItem-Crt_KN_U.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-B6OMi58N.js → EntityTypeIcon-CD7lGABo.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-DuYodzo1.js → InlineSpinner-CgTNOhnu.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CXo9EeCl.js → InteractivePreview-DtYTSPL2.js} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-DYCNb2It.js → LibraryFunctionPreview-D3s1MFkb.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CZgY3sxX.js → LogViewer-CM5zg40N.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-CnYYwRDw.js → ReportIssueModal-C2PLkej3.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CDoF7ZpU.js → SafeScreenshot-DanvyBPb.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DrnfvaLL.js → ScenarioViewer-CefgqbCr.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bc8BG-Lw.js +34 -0
- package/codeyam-cli/src/webserver/build/client/assets/{ViewportInspectBar-DRKR9T0U.js → ViewportInspectBar-BA_Ry-rs.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{_index-ClR-g3tY.js → _index-C1YkzTAV.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-DTH6ydEA.js → activity.(_tab)-yH46LLUz.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-74hnHF59.js → addon-web-links-CHx25PAe.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-B8CYhCO9.js → agent-transcripts-Bg3e7q4S.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{book-open-CLaoh4ac.js → book-open-CL-lMgHh.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BZ2DZxbW.js → chevron-down-GmAjGS9-.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-BBXArFPl.js → chunk-JZWAC4HX-BAdwhyCx.js} +11 -11
- package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CT4unAk-.js → circle-check-DFcQkN5j.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{copy-zK0B6Nu-.js → copy-C6iF61Xs.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-DJB0YQJL.js → createLucideIcon-4ImjHTVC.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
- package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-CkXFP_i-.js → dev.empty-CRepiabR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CRxPi2BB.js +96 -0
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BqAN7hyG.js → entity._sha._-DYJRGiDI.js} +13 -12
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-D1eikpe1.js → entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js → entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-CJX6kkkV.js → entity._sha_.create-scenario-DxfhekTZ.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BhVjZhKg.js → entity._sha_.edit._scenarioId-CRXJWmpB.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{entry.client-_gzKltPN.js → entry.client-SuW9syRS.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{files-CV_17tZS.js → files-D-xGrg29.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{git-D-YXmMbR.js → git-Bq_fbXP5.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-BsGHu8WX.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{index-CCrgCshv.js → index-Bp1l4hSv.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-BsX0F-9C.js → index-CWV9XZiG.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{index-Blo6EK8G.js → index-DE3jI_dv.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{labs-Byazq8Pv.js → labs-B_IX45ih.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DVQ0oHR7.js → loader-circle-De-7qQ2u.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-9032538f.js +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{memory-b-VmA2Vj.js → memory-Cx2xEx7s.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{pause-DGcndCAa.js → pause-CFxEKL1u.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-dKFRTYcy.js +80 -0
- package/codeyam-cli/src/webserver/build/client/assets/{search-C0Uw0bcK.js → search-BdBb5aqc.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{settings-OoNgHIfW.js → settings-DdE-Untf.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{simulations-Bcemfu8a.js → simulations-DSCdE99u.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{terminal-BgMmG7R9.js → terminal-CrplD4b1.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-Cs87hJYK.js → triangle-alert-DqJ0j69l.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BR3Rs7JY.js → useCustomSizes-DhXHbEjP.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-D9QZKaLJ.js +2 -0
- package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-BermyNU5.js → useReportContext-Cy5Qg_UR.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{useToast-a_QN_W9_.js → useToast-5HR2j9ZE.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-OLsM110H.js +16 -0
- package/codeyam-cli/src/webserver/build/server/assets/{index-CHymws6l.js → index-WHdB6WTN.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/{init-D3HkMDbI.js → init-DbSiZoE6.js} +2 -2
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DZbLY6O_.js +690 -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/editorProxy.js +55 -3
- package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
- package/codeyam-cli/src/webserver/idleDetector.js +65 -8
- package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
- package/codeyam-cli/src/webserver/scripts/journalCapture.ts +53 -0
- package/codeyam-cli/src/webserver/server.js +52 -14
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/src/webserver/terminalServer.js +153 -32
- package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
- package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
- package/codeyam-cli/templates/codeyam-editor-claude.md +2 -0
- package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
- package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
- package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
- package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
- package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
- package/codeyam-cli/templates/editor-step-hook.py +93 -46
- package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +204 -5
- package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
- package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +6 -3
- package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
- package/codeyam-cli/templates/expo-react-native/app.json +11 -0
- package/codeyam-cli/templates/expo-react-native/babel.config.js +1 -0
- package/codeyam-cli/templates/expo-react-native/gitignore +2 -0
- package/codeyam-cli/templates/expo-react-native/global.css +7 -0
- package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
- package/codeyam-cli/templates/expo-react-native/package.json +32 -16
- package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
- package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
- package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +47 -34
- package/codeyam-cli/templates/seed-adapters/supabase.ts +101 -9
- package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +34 -1
- package/package.json +1 -1
- package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
- package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
- package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
- package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
- package/packages/ai/src/lib/astScopes/paths.js +12 -3
- package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
- package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
- package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
- package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
- package/packages/analyze/index.js +1 -1
- package/packages/analyze/index.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
- package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
- package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
- package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
- package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
- package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
- package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
- package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
- package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
- package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
- package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
- package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
- package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
- package/packages/database/src/lib/loadAnalysis.js +7 -1
- package/packages/database/src/lib/loadAnalysis.js.map +1 -1
- package/packages/database/src/lib/loadEntity.js +5 -5
- package/packages/database/src/lib/loadEntity.js.map +1 -1
- package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
- package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/Spinner-Df3UCi8k.js +0 -34
- package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DYqG1D_d.js +0 -58
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DggyRwOr.js +0 -41
- package/codeyam-cli/src/webserver/build/client/assets/globals-DRvOjyO3.css +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/manifest-f4212c17.js +0 -1
- package/codeyam-cli/src/webserver/build/client/assets/root-F-k2uYj5.js +0 -67
- package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BxxP_XF9.js +0 -2
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-if8kM_1Q.js +0 -13
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DTCzJQiH.js +0 -551
- package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +0 -33
- package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +0 -12
- package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +0 -12
|
@@ -29,14 +29,13 @@ npm start
|
|
|
29
29
|
|
|
30
30
|
```
|
|
31
31
|
app/ # Expo Router file-based routes
|
|
32
|
-
_layout.tsx # Root layout (
|
|
33
|
-
|
|
34
|
-
_layout.tsx # Tab bar configuration
|
|
35
|
-
index.tsx # Home tab
|
|
36
|
-
settings.tsx # Settings tab
|
|
32
|
+
_layout.tsx # Root layout (SafeAreaProvider, StatusBar)
|
|
33
|
+
index.tsx # Home screen (single entry point)
|
|
37
34
|
components/ # Reusable components
|
|
38
35
|
lib/
|
|
36
|
+
theme.ts # Design tokens (colors, spacing, typography)
|
|
39
37
|
storage.ts # AsyncStorage wrapper for persistent data
|
|
38
|
+
__tests__/ # Test files (keep outside app/ — Expo Router treats all app/ files as routes)
|
|
40
39
|
```
|
|
41
40
|
|
|
42
41
|
## Key Patterns
|
|
@@ -78,6 +77,206 @@ Use Tailwind classes on React Native components:
|
|
|
78
77
|
</View>
|
|
79
78
|
```
|
|
80
79
|
|
|
80
|
+
## CodeYam Scenario Data
|
|
81
|
+
|
|
82
|
+
### AsyncStorage Seeding
|
|
83
|
+
|
|
84
|
+
AsyncStorage uses `localStorage` on web, so CodeYam's existing localStorage injection works automatically. Use the `localStorage` field in scenario JSON to pre-populate storage:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"name": "With Saved Items",
|
|
89
|
+
"url": "/",
|
|
90
|
+
"dimensions": ["iPhone 16"],
|
|
91
|
+
"localStorage": {
|
|
92
|
+
"items": "[{\"id\":\"1\",\"title\":\"Buy groceries\",\"done\":false},{\"id\":\"2\",\"title\":\"Walk the dog\",\"done\":true}]"
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Values must be JSON strings (matching how AsyncStorage stores them). Your `storage.get()` calls will read this data normally.
|
|
98
|
+
|
|
99
|
+
### API Mocking
|
|
100
|
+
|
|
101
|
+
For apps that fetch from APIs, use relative URLs so CodeYam's proxy can intercept and mock them:
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
// Use relative URLs — these go through the CodeYam proxy
|
|
105
|
+
const response = await fetch('/api/items');
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Then provide mock routes in your scenario data:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"name": "With API Data",
|
|
113
|
+
"url": "/",
|
|
114
|
+
"dimensions": ["iPhone 16"],
|
|
115
|
+
"routes": {
|
|
116
|
+
"/api/items": {
|
|
117
|
+
"body": [{ "id": 1, "title": "First item" }],
|
|
118
|
+
"status": 200
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Device Presets
|
|
125
|
+
|
|
126
|
+
Mobile projects default to these screen sizes:
|
|
127
|
+
|
|
128
|
+
| Preset | Width | Height |
|
|
129
|
+
| ----------------- | ----- | ------ |
|
|
130
|
+
| iPhone 16 | 393 | 852 |
|
|
131
|
+
| iPhone 16 Pro Max | 430 | 932 |
|
|
132
|
+
| iPhone SE | 375 | 667 |
|
|
133
|
+
| Pixel 8 | 412 | 915 |
|
|
134
|
+
| iPad mini | 744 | 1133 |
|
|
135
|
+
|
|
136
|
+
## Design Tokens (lib/theme.ts)
|
|
137
|
+
|
|
138
|
+
All design tokens live in `lib/theme.ts` — this is the **single source of truth** for colors, spacing, typography, and border radius. Import and use in every component:
|
|
139
|
+
|
|
140
|
+
```tsx
|
|
141
|
+
import { theme } from '@/lib/theme';
|
|
142
|
+
|
|
143
|
+
<View
|
|
144
|
+
style={{ backgroundColor: theme.colors.bgBase, padding: theme.spacing.lg }}
|
|
145
|
+
>
|
|
146
|
+
<Text
|
|
147
|
+
style={{ fontSize: theme.fontSize.lg, color: theme.colors.textPrimary }}
|
|
148
|
+
>
|
|
149
|
+
Hello
|
|
150
|
+
</Text>
|
|
151
|
+
</View>;
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Do NOT:**
|
|
155
|
+
|
|
156
|
+
- Use CSS custom properties (`var(--token)`) — they don't work in React Native
|
|
157
|
+
- Hardcode color strings or pixel values in components
|
|
158
|
+
- Create a separate `globals.css` token system — `lib/theme.ts` is the only source
|
|
159
|
+
|
|
160
|
+
When a design system is selected, populate `lib/theme.ts` with its tokens.
|
|
161
|
+
|
|
162
|
+
## Testing
|
|
163
|
+
|
|
164
|
+
Tests use Jest with the `jest-expo` preset. Run with:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
npx jest # Run all tests
|
|
168
|
+
npx jest app/hooks/useCounter.ts # Run specific test file
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
The Jest config is in `package.json`. The `transformIgnorePatterns` is pre-configured to handle Expo and React Native module transforms — you should not need to modify it.
|
|
172
|
+
|
|
173
|
+
## Building for a Real iOS Device
|
|
174
|
+
|
|
175
|
+
### Prerequisites
|
|
176
|
+
|
|
177
|
+
- **Xcode 16.x** (Xcode 16.4 or later recommended)
|
|
178
|
+
- **Apple Developer account** (free is fine for personal devices)
|
|
179
|
+
- Device connected via USB or on the same Wi-Fi network
|
|
180
|
+
|
|
181
|
+
### Steps
|
|
182
|
+
|
|
183
|
+
1. Generate the native iOS project:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
npx expo prebuild --clean
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
2. Add Swift 5 enforcement to the generated Podfile. Open `ios/Podfile` and add this inside the `post_install` block, after `react_native_post_install(...)`:
|
|
190
|
+
|
|
191
|
+
```ruby
|
|
192
|
+
# Fix Swift 6.1 (Xcode 16.4) strict concurrency errors
|
|
193
|
+
installer.pods_project.targets.each do |target|
|
|
194
|
+
target.build_configurations.each do |config|
|
|
195
|
+
config.build_settings['SWIFT_VERSION'] = '5.0'
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
3. Reinstall pods with the fix:
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
cd ios && pod install && cd ..
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
4. Build and run on your device:
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
npx expo run:ios --device
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Troubleshooting
|
|
213
|
+
|
|
214
|
+
- **"invalid code signature" / "profile has not been explicitly trusted"**: Your iPhone doesn't trust the developer profile yet. On your iPhone: **Settings → General → VPN & Device Management** → tap your Apple ID → **Trust**. Then relaunch the app.
|
|
215
|
+
- **"No script URL provided"**: Metro bundler isn't running or the device can't reach it. Start Metro with `npx expo start` in a separate terminal, then relaunch the app. Your phone and Mac must be on the same Wi-Fi network.
|
|
216
|
+
- **"Missing factory in ExpoAppDelegate"** crash: The native project is stale. Run `npx expo prebuild --clean` to regenerate it.
|
|
217
|
+
- **"ambiguous implicit access level for import"** error: The `patch-package` fix wasn't applied. Run `npm install` to reapply, then `cd ios && pod install`.
|
|
218
|
+
|
|
219
|
+
### Notes
|
|
220
|
+
|
|
221
|
+
- The `ios/` and `android/` directories are gitignored — they're generated by `expo prebuild` and shouldn't be committed.
|
|
222
|
+
- The `patches/` directory IS committed — it contains a fix for Xcode 16.4 Swift compatibility that auto-applies on `npm install`.
|
|
223
|
+
|
|
224
|
+
## Web vs Native Differences
|
|
225
|
+
|
|
226
|
+
The CodeYam editor previews your app via **Expo Web** (react-native-web in a browser). Some differences from native iOS/Android devices are expected:
|
|
227
|
+
|
|
228
|
+
| Aspect | Web Preview | Native Device |
|
|
229
|
+
| ---------------- | ------------------------------------------------------ | ------------------------------------------------------- |
|
|
230
|
+
| **Fonts** | System fonts, may differ in weight/metrics/line-height | Loaded custom fonts (if added via expo-font) |
|
|
231
|
+
| **SafeAreaView** | No effect (no notch in browser) | Applies real safe area insets for notch, home indicator |
|
|
232
|
+
| **Platform.OS** | Returns `'web'` | Returns `'ios'` or `'android'` |
|
|
233
|
+
| **Shadows** | Uses CSS `box-shadow` (works well) | Uses RN shadow props (iOS) or `elevation` (Android) |
|
|
234
|
+
| **Gestures** | Mouse drag events | Touch/swipe with inertia |
|
|
235
|
+
| **StatusBar** | No visible effect | Controls device status bar appearance |
|
|
236
|
+
| **Haptics** | No-op | Real haptic feedback via `expo-haptics` |
|
|
237
|
+
| **Pressable** | `backgroundColor`/`borderStyle` work on Pressable | Must use View wrapper (see below) |
|
|
238
|
+
|
|
239
|
+
### Pressable Styling on Native
|
|
240
|
+
|
|
241
|
+
`<Pressable>` with `backgroundColor`, `borderRadius`, or `borderStyle: 'dashed'` renders correctly in the web preview but **fails silently on native devices** — the background/border simply won't appear.
|
|
242
|
+
|
|
243
|
+
**Fix:** Put visual styles on a wrapping `<View>` and use `onPressIn`/`onPressOut` for press feedback:
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
const [pressed, setPressed] = useState(false);
|
|
247
|
+
|
|
248
|
+
<View
|
|
249
|
+
style={{
|
|
250
|
+
backgroundColor: theme.colors.bgInverse,
|
|
251
|
+
borderRadius: 60,
|
|
252
|
+
overflow: 'hidden',
|
|
253
|
+
}}
|
|
254
|
+
>
|
|
255
|
+
<Pressable
|
|
256
|
+
onPress={onPress}
|
|
257
|
+
onPressIn={() => setPressed(true)}
|
|
258
|
+
onPressOut={() => setPressed(false)}
|
|
259
|
+
style={{
|
|
260
|
+
opacity: pressed ? 0.8 : 1,
|
|
261
|
+
alignItems: 'center',
|
|
262
|
+
padding: theme.spacing.lg,
|
|
263
|
+
}}
|
|
264
|
+
>
|
|
265
|
+
<Text style={{ color: theme.colors.accent }}>+</Text>
|
|
266
|
+
</Pressable>
|
|
267
|
+
</View>;
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
For dashed borders, put `borderStyle`, `borderWidth`, and `borderColor` on the outer `<View>`, not on `<Pressable>`.
|
|
271
|
+
|
|
272
|
+
**The web preview is for layout and data verification.** Test final visual polish on a real device or simulator:
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
npm run ios # iOS Simulator
|
|
276
|
+
npm run android # Android Emulator
|
|
277
|
+
npm start # Pick platform from Expo menu
|
|
278
|
+
```
|
|
279
|
+
|
|
81
280
|
## Building for Production
|
|
82
281
|
|
|
83
282
|
```bash
|
|
File without changes
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import '../global.css';
|
|
2
2
|
import { Stack } from 'expo-router';
|
|
3
3
|
import { StatusBar } from 'expo-status-bar';
|
|
4
|
+
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
|
|
4
5
|
|
|
5
6
|
export default function RootLayout() {
|
|
6
7
|
return (
|
|
7
|
-
|
|
8
|
-
<
|
|
8
|
+
<SafeAreaProvider>
|
|
9
|
+
<SafeAreaView style={{ flex: 1 }}>
|
|
10
|
+
<Stack screenOptions={{ headerShown: false }} />
|
|
11
|
+
</SafeAreaView>
|
|
9
12
|
<StatusBar style="auto" />
|
|
10
|
-
|
|
13
|
+
</SafeAreaProvider>
|
|
11
14
|
);
|
|
12
15
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { View, Text } from 'react-native';
|
|
2
|
+
import { theme } from '@/lib/theme';
|
|
3
|
+
|
|
4
|
+
export default function HomeScreen() {
|
|
5
|
+
return (
|
|
6
|
+
<View
|
|
7
|
+
style={{
|
|
8
|
+
flex: 1,
|
|
9
|
+
alignItems: 'center',
|
|
10
|
+
justifyContent: 'center',
|
|
11
|
+
backgroundColor: theme.colors.bgBase,
|
|
12
|
+
padding: theme.spacing.lg,
|
|
13
|
+
}}
|
|
14
|
+
>
|
|
15
|
+
<Text
|
|
16
|
+
style={{
|
|
17
|
+
fontSize: theme.fontSize['2xl'],
|
|
18
|
+
fontWeight: theme.fontWeight.bold,
|
|
19
|
+
color: theme.colors.textPrimary,
|
|
20
|
+
marginBottom: theme.spacing.sm,
|
|
21
|
+
}}
|
|
22
|
+
>
|
|
23
|
+
Welcome
|
|
24
|
+
</Text>
|
|
25
|
+
<Text
|
|
26
|
+
style={{
|
|
27
|
+
fontSize: theme.fontSize.base,
|
|
28
|
+
color: theme.colors.textSecondary,
|
|
29
|
+
textAlign: 'center',
|
|
30
|
+
}}
|
|
31
|
+
>
|
|
32
|
+
Your Expo app is ready. Start building!
|
|
33
|
+
</Text>
|
|
34
|
+
</View>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
"slug": "codeyam-expo-app",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"scheme": "codeyam-expo-app",
|
|
7
|
+
"icon": "./assets/icon.png",
|
|
7
8
|
"platforms": ["ios", "android", "web"],
|
|
8
9
|
"web": {
|
|
9
10
|
"bundler": "metro",
|
|
@@ -13,6 +14,16 @@
|
|
|
13
14
|
"plugins": ["expo-router"],
|
|
14
15
|
"experiments": {
|
|
15
16
|
"typedRoutes": true
|
|
17
|
+
},
|
|
18
|
+
"ios": {
|
|
19
|
+
"bundleIdentifier": "com.codeyam.expo-app"
|
|
20
|
+
},
|
|
21
|
+
"android": {
|
|
22
|
+
"adaptiveIcon": {
|
|
23
|
+
"foregroundImage": "./assets/adaptive-icon.png",
|
|
24
|
+
"backgroundColor": "#f8fafc"
|
|
25
|
+
},
|
|
26
|
+
"package": "com.codeyam.expoapp"
|
|
16
27
|
}
|
|
17
28
|
}
|
|
18
29
|
}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/* NativeWind / Tailwind utility layer.
|
|
2
|
+
*
|
|
3
|
+
* Design tokens are defined in lib/theme.ts — that is the single source
|
|
4
|
+
* of truth for colors, spacing, typography, and border radius.
|
|
5
|
+
* Do NOT define CSS custom properties here for design tokens.
|
|
6
|
+
* React Native components cannot read CSS variables.
|
|
7
|
+
*/
|
|
1
8
|
@tailwind base;
|
|
2
9
|
@tailwind components;
|
|
3
10
|
@tailwind utilities;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Design tokens — single source of truth for all styling.
|
|
3
|
+
*
|
|
4
|
+
* When a design system is selected (via .codeyam/design-system.md),
|
|
5
|
+
* populate these values from the design system's color palette,
|
|
6
|
+
* typography scale, and spacing rhythm.
|
|
7
|
+
*
|
|
8
|
+
* Import in every component:
|
|
9
|
+
* import { theme } from '@/lib/theme';
|
|
10
|
+
* <View style={{ backgroundColor: theme.colors.bgBase }}>
|
|
11
|
+
*
|
|
12
|
+
* Do NOT use CSS custom properties (var(--token)) in React Native.
|
|
13
|
+
* Do NOT hardcode color strings or pixel values in components.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export const theme = {
|
|
17
|
+
colors: {
|
|
18
|
+
bgBase: '#f8fafc',
|
|
19
|
+
bgSurface: '#ffffff',
|
|
20
|
+
bgSurfaceRaised: '#ffffff',
|
|
21
|
+
bgInverse: '#1e293b',
|
|
22
|
+
|
|
23
|
+
textPrimary: '#0f172a',
|
|
24
|
+
textSecondary: '#475569',
|
|
25
|
+
textMuted: '#94a3b8',
|
|
26
|
+
|
|
27
|
+
border: '#e2e8f0',
|
|
28
|
+
|
|
29
|
+
accent: '#005C75',
|
|
30
|
+
accentLight: '#e0f2fe',
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
spacing: {
|
|
34
|
+
xs: 4,
|
|
35
|
+
sm: 8,
|
|
36
|
+
md: 12,
|
|
37
|
+
lg: 16,
|
|
38
|
+
xl: 24,
|
|
39
|
+
'2xl': 32,
|
|
40
|
+
'3xl': 48,
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
fontSize: {
|
|
44
|
+
xs: 12,
|
|
45
|
+
sm: 14,
|
|
46
|
+
base: 16,
|
|
47
|
+
lg: 18,
|
|
48
|
+
xl: 20,
|
|
49
|
+
'2xl': 24,
|
|
50
|
+
'3xl': 30,
|
|
51
|
+
'4xl': 36,
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
fontWeight: {
|
|
55
|
+
normal: '400' as const,
|
|
56
|
+
medium: '500' as const,
|
|
57
|
+
semibold: '600' as const,
|
|
58
|
+
bold: '700' as const,
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
fontFamily: {
|
|
62
|
+
sans: 'System',
|
|
63
|
+
mono: 'monospace',
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
borderRadius: {
|
|
67
|
+
sm: 4,
|
|
68
|
+
md: 8,
|
|
69
|
+
lg: 12,
|
|
70
|
+
xl: 16,
|
|
71
|
+
full: 9999,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
@@ -7,32 +7,48 @@
|
|
|
7
7
|
"setup": "npm install",
|
|
8
8
|
"dev": "expo start --web",
|
|
9
9
|
"start": "expo start",
|
|
10
|
-
"android": "expo
|
|
11
|
-
"ios": "expo
|
|
12
|
-
"build:web": "expo export --platform web"
|
|
10
|
+
"android": "expo run:android",
|
|
11
|
+
"ios": "expo run:ios",
|
|
12
|
+
"build:web": "expo export --platform web",
|
|
13
|
+
"test": "jest",
|
|
14
|
+
"postinstall": "patch-package"
|
|
13
15
|
},
|
|
14
16
|
"dependencies": {
|
|
15
|
-
"expo": "~
|
|
16
|
-
"expo-router": "~
|
|
17
|
-
"expo-status-bar": "~
|
|
18
|
-
"expo-linking": "~
|
|
19
|
-
"expo-constants": "~
|
|
20
|
-
"
|
|
21
|
-
"react
|
|
22
|
-
"react-
|
|
17
|
+
"expo": "~54.0.0",
|
|
18
|
+
"expo-router": "~6.0.23",
|
|
19
|
+
"expo-status-bar": "~3.0.9",
|
|
20
|
+
"expo-linking": "~8.0.11",
|
|
21
|
+
"expo-constants": "~18.0.13",
|
|
22
|
+
"expo-font": "~14.0.11",
|
|
23
|
+
"react": "19.1.0",
|
|
24
|
+
"react-dom": "19.1.0",
|
|
25
|
+
"react-native": "0.81.5",
|
|
23
26
|
"react-native-web": "^0.21.0",
|
|
24
27
|
"react-native-safe-area-context": "~5.6.2",
|
|
25
|
-
"react-native-screens": "~4.
|
|
28
|
+
"react-native-screens": "~4.16.0",
|
|
29
|
+
"react-native-reanimated": "^4.3.0",
|
|
30
|
+
"react-native-worklets": "^0.8.1",
|
|
31
|
+
"react-refresh": "^0.18.0",
|
|
26
32
|
"@react-navigation/native": "^7.1.33",
|
|
27
33
|
"@expo/vector-icons": "^15.0.2",
|
|
28
34
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
29
35
|
"nativewind": "^4.2.2",
|
|
30
36
|
"tailwindcss": "^3.4.19",
|
|
31
|
-
"
|
|
37
|
+
"patch-package": "^8.0.0"
|
|
32
38
|
},
|
|
33
39
|
"devDependencies": {
|
|
34
|
-
"@types/react": "~19.
|
|
35
|
-
"babel-preset-expo": "
|
|
36
|
-
"
|
|
40
|
+
"@types/react": "~19.1.10",
|
|
41
|
+
"babel-preset-expo": "~54.0.10",
|
|
42
|
+
"sharp": "^0.33.0",
|
|
43
|
+
"typescript": "~5.9.2",
|
|
44
|
+
"jest": "^29.7.0",
|
|
45
|
+
"jest-expo": "~54.0.17",
|
|
46
|
+
"@testing-library/react-native": "^13.2.0"
|
|
47
|
+
},
|
|
48
|
+
"jest": {
|
|
49
|
+
"preset": "jest-expo",
|
|
50
|
+
"transformIgnorePatterns": [
|
|
51
|
+
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|nativewind|react-native-reanimated|react-native-worklets)"
|
|
52
|
+
]
|
|
37
53
|
}
|
|
38
54
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
diff --git a/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js b/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js
|
|
2
|
+
index 47487c0..58a6069 100644
|
|
3
|
+
--- a/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js
|
|
4
|
+
+++ b/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js
|
|
5
|
+
@@ -113,7 +113,7 @@ async function generatePackageListFileContentAsync(modules, className, entitleme
|
|
6
|
+
* but only these that are written in Swift and use the new API for creating Expo modules.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
-import ExpoModulesCore
|
|
10
|
+
+public import ExpoModulesCore
|
|
11
|
+
${generateCommonImportList(swiftModules)}
|
|
12
|
+
${generateDebugOnlyImportList(debugOnlySwiftModules)}
|
|
13
|
+
@objc(${className})
|
|
14
|
+
@@ -137,13 +137,13 @@ ${generateReactDelegateHandlers(reactDelegateHandlerModules, debugOnlyReactDeleg
|
|
15
|
+
`;
|
|
16
|
+
}
|
|
17
|
+
function generateCommonImportList(swiftModules) {
|
|
18
|
+
- return swiftModules.map((moduleName) => `import ${moduleName}`).join('\n');
|
|
19
|
+
+ return swiftModules.map((moduleName) => `public import ${moduleName}`).join('\n');
|
|
20
|
+
}
|
|
21
|
+
function generateDebugOnlyImportList(swiftModules) {
|
|
22
|
+
if (!swiftModules.length) {
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
- return (wrapInDebugConfigurationCheck(0, swiftModules.map((moduleName) => `import ${moduleName}`).join('\n')) + '\n');
|
|
26
|
+
+ return (wrapInDebugConfigurationCheck(0, swiftModules.map((moduleName) => `public import ${moduleName}`).join('\n')) + '\n');
|
|
27
|
+
}
|
|
28
|
+
function generateModuleClasses(classNames, debugOnlyClassName) {
|
|
29
|
+
const commonClassNames = formatArrayOfClassNames(classNames);
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CodeYam Isolation Route — Expo Router
|
|
3
|
+
*
|
|
4
|
+
* Place this file at: app/isolated-components/ComponentName.tsx
|
|
5
|
+
* URL: /isolated-components/ComponentName?s=ScenarioName
|
|
6
|
+
*
|
|
7
|
+
* This route renders a single component with scenario-specific props,
|
|
8
|
+
* enabling isolated component preview and screenshot capture.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { useLocalSearchParams } from 'expo-router';
|
|
12
|
+
import { View, Text } from 'react-native';
|
|
13
|
+
import { theme } from '@/lib/theme';
|
|
14
|
+
// import YourComponent from '@/app/components/YourComponent';
|
|
15
|
+
|
|
16
|
+
// Define scenarios: map scenario names to component props
|
|
17
|
+
const scenarios: Record<string, Record<string, unknown>> = {
|
|
18
|
+
Default: {
|
|
19
|
+
// props for the default scenario
|
|
20
|
+
},
|
|
21
|
+
// Add more scenarios here
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
export default function ComponentIsolation() {
|
|
25
|
+
const { s } = useLocalSearchParams<{ s: string }>();
|
|
26
|
+
const scenarioName = s || 'Default';
|
|
27
|
+
const props = scenarios[scenarioName];
|
|
28
|
+
|
|
29
|
+
if (!props) {
|
|
30
|
+
return (
|
|
31
|
+
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
|
|
32
|
+
<Text style={{ fontFamily: theme.fontFamily.mono, color: '#e74c3c' }}>
|
|
33
|
+
Unknown scenario: {scenarioName}
|
|
34
|
+
</Text>
|
|
35
|
+
</View>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<View
|
|
41
|
+
style={{
|
|
42
|
+
flex: 1,
|
|
43
|
+
justifyContent: 'center',
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
backgroundColor: theme.colors.bgBase,
|
|
46
|
+
}}
|
|
47
|
+
>
|
|
48
|
+
<View nativeID="codeyam-capture" style={{ maxWidth: 384 }}>
|
|
49
|
+
{/* <YourComponent {...props} /> */}
|
|
50
|
+
<Text>Replace with your component</Text>
|
|
51
|
+
</View>
|
|
52
|
+
</View>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
@@ -37,49 +37,62 @@ async function main() {
|
|
|
37
37
|
const data = JSON.parse(raw);
|
|
38
38
|
const seed = data.seed || data;
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
// Discover ALL models from the Prisma schema — not just the tables in the seed data.
|
|
41
|
+
// This ensures FK-dependent tables (e.g., Passenger → Flight) are cleared even when
|
|
42
|
+
// the seed only contains the parent table's data.
|
|
43
|
+
const allModels = Prisma.dmmf.datamodel.models.map(
|
|
44
|
+
(m) => m.name.charAt(0).toLowerCase() + m.name.slice(1),
|
|
45
|
+
);
|
|
41
46
|
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
47
|
+
// Run everything in a single transaction for atomicity and speed.
|
|
48
|
+
// SQLite auto-commits each statement by default — wrapping in a transaction
|
|
49
|
+
// avoids per-statement fsync and is significantly faster for bulk operations.
|
|
50
|
+
await prisma.$transaction(async (tx) => {
|
|
51
|
+
// Disable foreign key checks during wipe+insert — allows deleting in any
|
|
52
|
+
// order and avoids FK constraint errors during the brief window between
|
|
53
|
+
// clearing parent and child tables.
|
|
54
|
+
await tx.$executeRawUnsafe('PRAGMA foreign_keys = OFF');
|
|
55
|
+
|
|
56
|
+
// Wipe ALL tables in the schema (not just seeded ones)
|
|
57
|
+
for (const table of [...allModels].reverse()) {
|
|
58
|
+
try {
|
|
59
|
+
await (tx as any)[table].deleteMany();
|
|
60
|
+
} catch {
|
|
61
|
+
// Table may not exist in current schema — skip
|
|
62
|
+
}
|
|
52
63
|
}
|
|
53
|
-
}
|
|
54
64
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
65
|
+
// Batch-reset auto-increment counters for ALL tables.
|
|
66
|
+
// Without this, SQLite IDs keep climbing across scenario switches,
|
|
67
|
+
// causing hardcoded URLs like /drinks/1 to 404.
|
|
68
|
+
const seqNames = allModels
|
|
69
|
+
.flatMap((t) => [`'${t}'`, `'${t.charAt(0).toUpperCase() + t.slice(1)}'`])
|
|
70
|
+
.join(', ');
|
|
59
71
|
try {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
await prisma.$executeRawUnsafe(
|
|
63
|
-
`DELETE FROM sqlite_sequence WHERE name = '${table}' OR name = '${table.charAt(0).toUpperCase() + table.slice(1)}'`,
|
|
72
|
+
await tx.$executeRawUnsafe(
|
|
73
|
+
`DELETE FROM sqlite_sequence WHERE name IN (${seqNames})`,
|
|
64
74
|
);
|
|
65
75
|
} catch {
|
|
66
|
-
// sqlite_sequence may not exist
|
|
76
|
+
// sqlite_sequence may not exist — safe to ignore
|
|
67
77
|
}
|
|
68
|
-
}
|
|
69
78
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
// Insert seed data
|
|
80
|
+
for (const [table, rows] of Object.entries(seed)) {
|
|
81
|
+
if (!Array.isArray(rows) || rows.length === 0) continue;
|
|
82
|
+
try {
|
|
83
|
+
await (tx as any)[table].createMany({ data: rows });
|
|
84
|
+
console.log(` Seeded ${rows.length} rows into ${table}`);
|
|
85
|
+
} catch (err) {
|
|
86
|
+
console.error(
|
|
87
|
+
` Failed to seed ${table}: ${err instanceof Error ? err.message : err}`,
|
|
88
|
+
);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
81
91
|
}
|
|
82
|
-
|
|
92
|
+
|
|
93
|
+
// Re-enable foreign key checks
|
|
94
|
+
await tx.$executeRawUnsafe('PRAGMA foreign_keys = ON');
|
|
95
|
+
});
|
|
83
96
|
|
|
84
97
|
console.log('Seed complete');
|
|
85
98
|
}
|