@codeyam/codeyam-cli 0.1.27 → 0.1.29

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.
Files changed (95) hide show
  1. package/analyzer-template/.build-info.json +6 -6
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +1 -1
  4. package/analyzer-template/packages/aws/package.json +5 -5
  5. package/codeyam-cli/src/commands/editor.js +232 -5
  6. package/codeyam-cli/src/commands/editor.js.map +1 -1
  7. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +136 -0
  8. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  9. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +398 -0
  10. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  11. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  12. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  13. package/codeyam-cli/src/utils/editorAudit.js +6 -1
  14. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  15. package/codeyam-cli/src/utils/editorRoadmap.js +301 -0
  16. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  17. package/codeyam-cli/src/utils/editorScenarios.js +10 -0
  18. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  19. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +1 -0
  20. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -1
  21. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CLe80MMu.js → CopyButton-DTBZZfSk.js} +1 -1
  22. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-Crt_KN_U.js → EntityItem-BxclONWq.js} +1 -1
  23. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CD7lGABo.js → EntityTypeIcon-BsnEOJZ_.js} +1 -1
  24. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CgTNOhnu.js → InlineSpinner-ByaELMbv.js} +1 -1
  25. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-DtYTSPL2.js → InteractivePreview-6WjVfhxX.js} +2 -2
  26. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-D3s1MFkb.js → LibraryFunctionPreview-ChX-Hp7W.js} +1 -1
  27. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CM5zg40N.js → LogViewer-C-9zQdXg.js} +1 -1
  28. package/codeyam-cli/src/webserver/build/client/assets/{MiniClaudeChat-CQENLSrF.js → MiniClaudeChat-BusrvT2F.js} +1 -1
  29. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C2PLkej3.js → ReportIssueModal-DQsceHVv.js} +1 -1
  30. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DanvyBPb.js → SafeScreenshot-DThcm_9M.js} +1 -1
  31. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-CefgqbCr.js → ScenarioViewer-Cl4oOA3A.js} +1 -1
  32. package/codeyam-cli/src/webserver/build/client/assets/{Spinner-Bc8BG-Lw.js → Spinner-CIil5-gb.js} +1 -1
  33. package/codeyam-cli/src/webserver/build/client/assets/{ViewportInspectBar-BA_Ry-rs.js → ViewportInspectBar-BqkA9zyZ.js} +1 -1
  34. package/codeyam-cli/src/webserver/build/client/assets/{_index-C1YkzTAV.js → _index-DnOgyseQ.js} +1 -1
  35. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-yH46LLUz.js → activity.(_tab)-DqM9hbNE.js} +1 -1
  36. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-CHx25PAe.js → addon-web-links-C58dYPwR.js} +1 -1
  37. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-Bg3e7q4S.js → agent-transcripts-B8NCeOrm.js} +1 -1
  38. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  39. package/codeyam-cli/src/webserver/build/client/assets/{book-open-CL-lMgHh.js → book-open-BFSIqZgO.js} +1 -1
  40. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-GmAjGS9-.js → chevron-down-B9fDzFVh.js} +1 -1
  41. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  42. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DFcQkN5j.js → circle-check-DLPObLUx.js} +1 -1
  43. package/codeyam-cli/src/webserver/build/client/assets/{copy-C6iF61Xs.js → copy-DXEmO0TD.js} +1 -1
  44. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-4ImjHTVC.js → createLucideIcon-BwyFiRot.js} +1 -1
  45. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-CRepiabR.js → dev.empty-iRhRIFlp.js} +1 -1
  46. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  47. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-785deXbZ.js +147 -0
  48. package/codeyam-cli/src/webserver/build/client/assets/{editorPreview-CluPkvXJ.js → editorPreview-C6fEYHrh.js} +6 -6
  49. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-DYJRGiDI.js → entity._sha._-Ce1s4OQ1.js} +1 -1
  50. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js → entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js} +1 -1
  51. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js → entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js} +1 -1
  52. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-DxfhekTZ.js → entity._sha_.create-scenario-BTcpgIpC.js} +1 -1
  53. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CRXJWmpB.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +1 -1
  54. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-SuW9syRS.js → entry.client-j1Vi0bco.js} +6 -6
  55. package/codeyam-cli/src/webserver/build/client/assets/{files-D-xGrg29.js → files-kuny2Q_s.js} +1 -1
  56. package/codeyam-cli/src/webserver/build/client/assets/{git-Bq_fbXP5.js → git-DgCZPMie.js} +1 -1
  57. package/codeyam-cli/src/webserver/build/client/assets/globals-Bt7TsgQz.css +1 -0
  58. package/codeyam-cli/src/webserver/build/client/assets/{index-Bp1l4hSv.js → index-BliGSSpl.js} +1 -1
  59. package/codeyam-cli/src/webserver/build/client/assets/{index-DE3jI_dv.js → index-SqjQKTdH.js} +1 -1
  60. package/codeyam-cli/src/webserver/build/client/assets/{index-CWV9XZiG.js → index-vyrZD2g4.js} +1 -1
  61. package/codeyam-cli/src/webserver/build/client/assets/{labs-B_IX45ih.js → labs-c3yLxSEp.js} +1 -1
  62. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-De-7qQ2u.js → loader-circle-D-q28GLF.js} +1 -1
  63. package/codeyam-cli/src/webserver/build/client/assets/manifest-3d8cde80.js +1 -0
  64. package/codeyam-cli/src/webserver/build/client/assets/{memory-Cx2xEx7s.js → memory-CEWIUC4t.js} +1 -1
  65. package/codeyam-cli/src/webserver/build/client/assets/{pause-CFxEKL1u.js → pause-BP6fitdh.js} +1 -1
  66. package/codeyam-cli/src/webserver/build/client/assets/{root-dKFRTYcy.js → root-CVjDQwjJ.js} +6 -6
  67. package/codeyam-cli/src/webserver/build/client/assets/{search-BdBb5aqc.js → search-BooqacKS.js} +1 -1
  68. package/codeyam-cli/src/webserver/build/client/assets/{settings-DdE-Untf.js → settings-BM0nbryO.js} +1 -1
  69. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DSCdE99u.js → simulations-ovy6FjRY.js} +1 -1
  70. package/codeyam-cli/src/webserver/build/client/assets/{terminal-CrplD4b1.js → terminal-DHemCJIs.js} +1 -1
  71. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DqJ0j69l.js → triangle-alert-D87ekDl8.js} +1 -1
  72. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DhXHbEjP.js → useCustomSizes-Dk0Tciqg.js} +1 -1
  73. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-D9QZKaLJ.js → useLastLogLine-C8QvIe05.js} +1 -1
  74. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-Cy5Qg_UR.js → useReportContext-jkCytuYz.js} +1 -1
  75. package/codeyam-cli/src/webserver/build/client/assets/{useToast-5HR2j9ZE.js → useToast-BgqkixU9.js} +1 -1
  76. package/codeyam-cli/src/webserver/build/server/assets/{analysisRunner-OLsM110H.js → analysisRunner-CTJYMVFP.js} +1 -1
  77. package/codeyam-cli/src/webserver/build/server/assets/{index-WHdB6WTN.js → index-CCth4Hgw.js} +1 -1
  78. package/codeyam-cli/src/webserver/build/server/assets/{init-DbSiZoE6.js → init-UXl-3vVp.js} +1 -1
  79. package/codeyam-cli/src/webserver/build/server/assets/{server-build-DZbLY6O_.js → server-build-DSW2mE30.js} +198 -147
  80. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  81. package/codeyam-cli/src/webserver/build-info.json +5 -5
  82. package/codeyam-cli/src/webserver/server.js +67 -0
  83. package/codeyam-cli/src/webserver/server.js.map +1 -1
  84. package/codeyam-cli/src/webserver/terminalServer.js +21 -0
  85. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  86. package/codeyam-cli/templates/editor-step-hook.py +4 -4
  87. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +36 -1
  88. package/codeyam-cli/templates/expo-react-native/app.json +11 -0
  89. package/codeyam-cli/templates/expo-react-native/package.json +1 -0
  90. package/package.json +1 -1
  91. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +0 -43
  92. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +0 -1
  93. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CRxPi2BB.js +0 -96
  94. package/codeyam-cli/src/webserver/build/client/assets/globals-BsGHu8WX.css +0 -1
  95. package/codeyam-cli/src/webserver/build/client/assets/manifest-9032538f.js +0 -1
@@ -563,6 +563,142 @@ describe('editorAudit', () => {
563
563
  expect(result.summary.componentsOk).toBe(1);
564
564
  expect(result.summary.componentsWithErrors).toBe(1);
565
565
  });
566
+ // ── Test case count integration ─────────────────────────────────
567
+ it('should include testCaseCount when testCaseCounts is provided', () => {
568
+ const result = computeAudit({
569
+ components: [],
570
+ functions: [
571
+ {
572
+ name: 'calculatePrice',
573
+ filePath: 'app/lib/pricing.ts',
574
+ testFile: 'app/lib/pricing.test.ts',
575
+ },
576
+ ],
577
+ scenarioCounts: {},
578
+ testFileExistence: { 'app/lib/pricing.test.ts': true },
579
+ testResults: {
580
+ 'app/lib/pricing.test.ts': {
581
+ passing: true,
582
+ hasEntityNameDescribe: true,
583
+ },
584
+ },
585
+ testCaseCounts: { calculatePrice: 5 },
586
+ });
587
+ expect(result.functions[0].testCaseCount).toBe(5);
588
+ });
589
+ it('should not include testCaseCount when testCaseCounts is not provided', () => {
590
+ const result = computeAudit({
591
+ components: [],
592
+ functions: [
593
+ {
594
+ name: 'calculatePrice',
595
+ filePath: 'app/lib/pricing.ts',
596
+ testFile: 'app/lib/pricing.test.ts',
597
+ },
598
+ ],
599
+ scenarioCounts: {},
600
+ testFileExistence: { 'app/lib/pricing.test.ts': true },
601
+ testResults: {
602
+ 'app/lib/pricing.test.ts': {
603
+ passing: true,
604
+ hasEntityNameDescribe: true,
605
+ },
606
+ },
607
+ });
608
+ expect(result.functions[0].testCaseCount).toBeUndefined();
609
+ });
610
+ it('should count functionsThinCoverage for ok functions with fewer than 3 test cases', () => {
611
+ const result = computeAudit({
612
+ components: [],
613
+ functions: [
614
+ {
615
+ name: 'fnWellTested',
616
+ filePath: 'a.ts',
617
+ testFile: 'a.test.ts',
618
+ },
619
+ {
620
+ name: 'fnThinCoverage',
621
+ filePath: 'b.ts',
622
+ testFile: 'b.test.ts',
623
+ },
624
+ {
625
+ name: 'fnAlsoThin',
626
+ filePath: 'c.ts',
627
+ testFile: 'c.test.ts',
628
+ },
629
+ ],
630
+ scenarioCounts: {},
631
+ testFileExistence: {
632
+ 'a.test.ts': true,
633
+ 'b.test.ts': true,
634
+ 'c.test.ts': true,
635
+ },
636
+ testResults: {
637
+ 'a.test.ts': { passing: true, hasEntityNameDescribe: true },
638
+ 'b.test.ts': { passing: true, hasEntityNameDescribe: true },
639
+ 'c.test.ts': { passing: true, hasEntityNameDescribe: true },
640
+ },
641
+ testCaseCounts: { fnWellTested: 5, fnThinCoverage: 2, fnAlsoThin: 1 },
642
+ });
643
+ expect(result.summary.functionsThinCoverage).toBe(2);
644
+ });
645
+ it('should not count failing functions in functionsThinCoverage', () => {
646
+ const result = computeAudit({
647
+ components: [],
648
+ functions: [
649
+ {
650
+ name: 'fnFailing',
651
+ filePath: 'a.ts',
652
+ testFile: 'a.test.ts',
653
+ },
654
+ ],
655
+ scenarioCounts: {},
656
+ testFileExistence: { 'a.test.ts': true },
657
+ testResults: {
658
+ 'a.test.ts': { passing: false, hasEntityNameDescribe: true },
659
+ },
660
+ testCaseCounts: { fnFailing: 1 },
661
+ });
662
+ expect(result.summary.functionsThinCoverage).toBe(0);
663
+ });
664
+ it('should not block allPassing due to thin test coverage', () => {
665
+ const result = computeAudit({
666
+ components: [],
667
+ functions: [
668
+ {
669
+ name: 'fnThin',
670
+ filePath: 'a.ts',
671
+ testFile: 'a.test.ts',
672
+ },
673
+ ],
674
+ scenarioCounts: {},
675
+ testFileExistence: { 'a.test.ts': true },
676
+ testResults: {
677
+ 'a.test.ts': { passing: true, hasEntityNameDescribe: true },
678
+ },
679
+ testCaseCounts: { fnThin: 1 },
680
+ });
681
+ expect(result.summary.allPassing).toBe(true);
682
+ expect(result.summary.functionsThinCoverage).toBe(1);
683
+ });
684
+ it('should default functionsThinCoverage to 0 when no testCaseCounts provided', () => {
685
+ const result = computeAudit({
686
+ components: [],
687
+ functions: [
688
+ {
689
+ name: 'fn',
690
+ filePath: 'a.ts',
691
+ testFile: 'a.test.ts',
692
+ },
693
+ ],
694
+ scenarioCounts: {},
695
+ testFileExistence: { 'a.test.ts': true },
696
+ testResults: {
697
+ 'a.test.ts': { passing: true, hasEntityNameDescribe: true },
698
+ },
699
+ });
700
+ expect(result.summary.functionsThinCoverage).toBe(0);
701
+ });
566
702
  });
567
703
  // ── filterGlossaryByChangeStatus ──────────────────────────────────
568
704
  describe('filterGlossaryByChangeStatus', () => {