@open-mercato/cli 0.6.7-develop.6569.1.c06dee4866 → 0.6.7-develop.6572.1.3d8e83062f

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 (71) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/dist/agentic/guides/module-facts.json +53 -53
  3. package/dist/agentic/guides/modules/ai_assistant.md +1 -1
  4. package/dist/agentic/guides/modules/api_docs.md +1 -1
  5. package/dist/agentic/guides/modules/api_keys.md +1 -1
  6. package/dist/agentic/guides/modules/attachments.md +1 -1
  7. package/dist/agentic/guides/modules/audit_logs.md +1 -1
  8. package/dist/agentic/guides/modules/auth.md +1 -1
  9. package/dist/agentic/guides/modules/business_rules.md +1 -1
  10. package/dist/agentic/guides/modules/catalog.md +1 -1
  11. package/dist/agentic/guides/modules/channel_gmail.md +1 -1
  12. package/dist/agentic/guides/modules/channel_imap.md +1 -1
  13. package/dist/agentic/guides/modules/checkout.md +1 -1
  14. package/dist/agentic/guides/modules/communication_channels.md +1 -1
  15. package/dist/agentic/guides/modules/configs.md +1 -1
  16. package/dist/agentic/guides/modules/content.md +1 -1
  17. package/dist/agentic/guides/modules/currencies.md +1 -1
  18. package/dist/agentic/guides/modules/customer_accounts.md +1 -1
  19. package/dist/agentic/guides/modules/customers.md +1 -1
  20. package/dist/agentic/guides/modules/dashboards.md +1 -1
  21. package/dist/agentic/guides/modules/data_sync.md +1 -1
  22. package/dist/agentic/guides/modules/dictionaries.md +1 -1
  23. package/dist/agentic/guides/modules/directory.md +1 -1
  24. package/dist/agentic/guides/modules/entities.md +1 -1
  25. package/dist/agentic/guides/modules/events.md +1 -1
  26. package/dist/agentic/guides/modules/feature_toggles.md +1 -1
  27. package/dist/agentic/guides/modules/gateway_stripe.md +1 -1
  28. package/dist/agentic/guides/modules/generators.md +1 -1
  29. package/dist/agentic/guides/modules/inbox_ops.md +1 -1
  30. package/dist/agentic/guides/modules/integrations.md +1 -1
  31. package/dist/agentic/guides/modules/messages.md +1 -1
  32. package/dist/agentic/guides/modules/notifications.md +1 -1
  33. package/dist/agentic/guides/modules/onboarding.md +1 -1
  34. package/dist/agentic/guides/modules/payment_gateways.md +1 -1
  35. package/dist/agentic/guides/modules/perspectives.md +1 -1
  36. package/dist/agentic/guides/modules/planner.md +1 -1
  37. package/dist/agentic/guides/modules/portal.md +1 -1
  38. package/dist/agentic/guides/modules/progress.md +1 -1
  39. package/dist/agentic/guides/modules/query_index.md +1 -1
  40. package/dist/agentic/guides/modules/record_locks.md +1 -1
  41. package/dist/agentic/guides/modules/resources.md +1 -1
  42. package/dist/agentic/guides/modules/sales.md +1 -1
  43. package/dist/agentic/guides/modules/scheduler.md +1 -1
  44. package/dist/agentic/guides/modules/search.md +1 -1
  45. package/dist/agentic/guides/modules/security.md +1 -1
  46. package/dist/agentic/guides/modules/shipping_carriers.md +1 -1
  47. package/dist/agentic/guides/modules/sso.md +1 -1
  48. package/dist/agentic/guides/modules/staff.md +1 -1
  49. package/dist/agentic/guides/modules/storage_s3.md +1 -1
  50. package/dist/agentic/guides/modules/sync_akeneo.md +1 -1
  51. package/dist/agentic/guides/modules/sync_excel.md +1 -1
  52. package/dist/agentic/guides/modules/system_status_overlays.md +1 -1
  53. package/dist/agentic/guides/modules/translations.md +1 -1
  54. package/dist/agentic/guides/modules/webhooks.md +1 -1
  55. package/dist/agentic/guides/modules/workflows.md +1 -1
  56. package/dist/lib/generators/index.js +7 -1
  57. package/dist/lib/generators/index.js.map +2 -2
  58. package/dist/lib/generators/module-registry.js +224 -266
  59. package/dist/lib/generators/module-registry.js.map +3 -3
  60. package/dist/lib/module-install.js +2 -6
  61. package/dist/lib/module-install.js.map +2 -2
  62. package/dist/mercato.js +6 -14
  63. package/dist/mercato.js.map +2 -2
  64. package/package.json +5 -5
  65. package/src/__tests__/mercato.test.ts +13 -27
  66. package/src/lib/generators/__tests__/generators.test.ts +5 -0
  67. package/src/lib/generators/__tests__/output-snapshots.test.ts +37 -1
  68. package/src/lib/generators/index.ts +7 -1
  69. package/src/lib/generators/module-registry.ts +291 -293
  70. package/src/lib/module-install.ts +2 -6
  71. package/src/mercato.ts +6 -14
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@open-mercato/cli",
3
- "version": "0.6.7-develop.6569.1.c06dee4866",
3
+ "version": "0.6.7-develop.6572.1.3d8e83062f",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -60,8 +60,8 @@
60
60
  "@mikro-orm/decorators": "^7.1.5",
61
61
  "@mikro-orm/migrations": "^7.1.5",
62
62
  "@mikro-orm/postgresql": "^7.1.5",
63
- "@open-mercato/queue": "0.6.7-develop.6569.1.c06dee4866",
64
- "@open-mercato/shared": "0.6.7-develop.6569.1.c06dee4866",
63
+ "@open-mercato/queue": "0.6.7-develop.6572.1.3d8e83062f",
64
+ "@open-mercato/shared": "0.6.7-develop.6572.1.3d8e83062f",
65
65
  "cross-spawn": "^7.0.6",
66
66
  "pg": "8.22.0",
67
67
  "semver": "^7.8.5",
@@ -72,10 +72,10 @@
72
72
  "typescript-js": "npm:typescript@6.0.3"
73
73
  },
74
74
  "peerDependencies": {
75
- "@open-mercato/shared": "0.6.7-develop.6569.1.c06dee4866"
75
+ "@open-mercato/shared": "0.6.7-develop.6572.1.3d8e83062f"
76
76
  },
77
77
  "devDependencies": {
78
- "@open-mercato/shared": "0.6.7-develop.6569.1.c06dee4866",
78
+ "@open-mercato/shared": "0.6.7-develop.6572.1.3d8e83062f",
79
79
  "@types/jest": "^30.0.0",
80
80
  "jest": "^30.4.2",
81
81
  "ts-jest": "^29.4.11"
@@ -352,9 +352,7 @@ describe('init command failure output', () => {
352
352
  }))
353
353
  jest.doMock('../lib/generators', () => ({
354
354
  generateEntityIds: jest.fn().mockResolvedValue(undefined),
355
- generateModuleRegistry: jest.fn().mockResolvedValue(undefined),
356
- generateModuleRegistryApp: jest.fn().mockResolvedValue(undefined),
357
- generateModuleRegistryCli: jest.fn().mockResolvedValue(undefined),
355
+ generateModuleRegistries: jest.fn().mockResolvedValue(undefined),
358
356
  generateModuleEntities: jest.fn().mockResolvedValue(undefined),
359
357
  generateModuleDi: jest.fn().mockResolvedValue(undefined),
360
358
  generateModulePackageSources: jest.fn().mockResolvedValue(undefined),
@@ -400,9 +398,7 @@ describe('init command failure output', () => {
400
398
  }))
401
399
  jest.doMock('../lib/generators', () => ({
402
400
  generateEntityIds: jest.fn().mockResolvedValue(undefined),
403
- generateModuleRegistry: jest.fn().mockResolvedValue(undefined),
404
- generateModuleRegistryApp: jest.fn().mockResolvedValue(undefined),
405
- generateModuleRegistryCli: jest.fn().mockResolvedValue(undefined),
401
+ generateModuleRegistries: jest.fn().mockResolvedValue(undefined),
406
402
  generateModuleEntities: jest.fn().mockResolvedValue(undefined),
407
403
  generateModuleDi: jest.fn().mockResolvedValue(undefined),
408
404
  generateModulePackageSources: jest.fn().mockResolvedValue(undefined),
@@ -451,9 +447,7 @@ describe('init command failure output', () => {
451
447
  }))
452
448
  jest.doMock('../lib/generators', () => ({
453
449
  generateEntityIds: jest.fn().mockResolvedValue(undefined),
454
- generateModuleRegistry: jest.fn().mockResolvedValue(undefined),
455
- generateModuleRegistryApp: jest.fn().mockResolvedValue(undefined),
456
- generateModuleRegistryCli: jest.fn().mockResolvedValue(undefined),
450
+ generateModuleRegistries: jest.fn().mockResolvedValue(undefined),
457
451
  generateModuleEntities: jest.fn().mockResolvedValue(undefined),
458
452
  generateModuleDi: jest.fn().mockResolvedValue(undefined),
459
453
  generateModulePackageSources: jest.fn().mockResolvedValue(undefined),
@@ -553,9 +547,7 @@ describe('generate post-step structural invalidation', () => {
553
547
  filesUnchanged: [],
554
548
  errors: [],
555
549
  })
556
- const generateModuleRegistry = jest.fn().mockResolvedValue(undefined)
557
- const generateModuleRegistryApp = jest.fn().mockResolvedValue(undefined)
558
- const generateModuleRegistryCli = jest.fn().mockResolvedValue(undefined)
550
+ const generateModuleRegistries = jest.fn().mockResolvedValue([])
559
551
  const generateModuleEntities = jest.fn().mockResolvedValue(undefined)
560
552
  const generateModuleDi = jest.fn().mockResolvedValue(undefined)
561
553
  const generateModulePackageSources = jest.fn().mockResolvedValue(undefined)
@@ -569,9 +561,7 @@ describe('generate post-step structural invalidation', () => {
569
561
 
570
562
  jest.doMock('../lib/generators', () => ({
571
563
  generateEntityIds,
572
- generateModuleRegistry,
573
- generateModuleRegistryApp,
574
- generateModuleRegistryCli,
564
+ generateModuleRegistries,
575
565
  generateModuleEntities,
576
566
  generateModuleDi,
577
567
  generateModulePackageSources,
@@ -595,6 +585,7 @@ describe('generate post-step structural invalidation', () => {
595
585
 
596
586
  expect(exitCode).toBe(0)
597
587
  expect(generateEntityIds).toHaveBeenCalled()
588
+ expect(generateModuleRegistries).toHaveBeenCalledTimes(1)
598
589
  expect(invalidate).toHaveBeenCalledWith('/tmp/test-app')
599
590
 
600
591
  consoleErrorSpy.mockRestore()
@@ -611,9 +602,7 @@ describe('generate post-step structural invalidation', () => {
611
602
  }
612
603
  const generators = {
613
604
  generateEntityIds: jest.fn().mockResolvedValue(unchangedResult),
614
- generateModuleRegistry: jest.fn().mockResolvedValue(unchangedResult),
615
- generateModuleRegistryApp: jest.fn().mockResolvedValue(unchangedResult),
616
- generateModuleRegistryCli: jest.fn().mockResolvedValue(unchangedResult),
605
+ generateModuleRegistries: jest.fn().mockResolvedValue([unchangedResult, unchangedResult, unchangedResult]),
617
606
  generateModuleEntities: jest.fn().mockResolvedValue(unchangedResult),
618
607
  generateModuleDi: jest.fn().mockResolvedValue(unchangedResult),
619
608
  generateModulePackageSources: jest.fn().mockResolvedValue(unchangedResult),
@@ -653,9 +642,7 @@ describe('generate post-step structural invalidation', () => {
653
642
  filesUnchanged: [],
654
643
  errors: [],
655
644
  })
656
- const generateModuleRegistry = jest.fn().mockResolvedValue(undefined)
657
- const generateModuleRegistryApp = jest.fn().mockResolvedValue(undefined)
658
- const generateModuleRegistryCli = jest.fn().mockResolvedValue(undefined)
645
+ const generateModuleRegistries = jest.fn().mockResolvedValue([])
659
646
  const generateModuleEntities = jest.fn().mockResolvedValue(undefined)
660
647
  const generateModuleDi = jest.fn().mockResolvedValue(undefined)
661
648
  const generateModulePackageSources = jest.fn().mockResolvedValue(undefined)
@@ -664,9 +651,7 @@ describe('generate post-step structural invalidation', () => {
664
651
 
665
652
  jest.doMock('../lib/generators', () => ({
666
653
  generateEntityIds,
667
- generateModuleRegistry,
668
- generateModuleRegistryApp,
669
- generateModuleRegistryCli,
654
+ generateModuleRegistries,
670
655
  generateModuleEntities,
671
656
  generateModuleDi,
672
657
  generateModulePackageSources,
@@ -687,6 +672,7 @@ describe('generate post-step structural invalidation', () => {
687
672
 
688
673
  expect(exitCode).toBe(0)
689
674
  expect(generateEntityIds).toHaveBeenCalled()
675
+ expect(generateModuleRegistries).toHaveBeenCalledTimes(1)
690
676
  expect(invalidate).toHaveBeenCalledWith('/tmp/test-app')
691
677
 
692
678
  consoleErrorSpy.mockRestore()
@@ -697,12 +683,11 @@ describe('generate post-step structural invalidation', () => {
697
683
  const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation()
698
684
  const consoleLogSpy = jest.spyOn(console, 'log').mockImplementation()
699
685
  const generate = jest.fn().mockResolvedValue(undefined)
686
+ const generateModuleRegistries = jest.fn().mockResolvedValue([])
700
687
 
701
688
  jest.doMock('../lib/generators', () => ({
702
689
  generateEntityIds: generate,
703
- generateModuleRegistry: generate,
704
- generateModuleRegistryApp: generate,
705
- generateModuleRegistryCli: generate,
690
+ generateModuleRegistries,
706
691
  generateModuleEntities: generate,
707
692
  generateModuleDi: generate,
708
693
  generateModulePackageSources: generate,
@@ -723,6 +708,7 @@ describe('generate post-step structural invalidation', () => {
723
708
 
724
709
  expect(exitCode).toBe(0)
725
710
  expect(generate).toHaveBeenCalled()
711
+ expect(generateModuleRegistries).toHaveBeenCalledTimes(1)
726
712
 
727
713
  consoleErrorSpy.mockRestore()
728
714
  consoleLogSpy.mockRestore()
@@ -19,6 +19,11 @@ describe('generators', () => {
19
19
  expect(typeof module.generateModuleRegistryApp).toBe('function')
20
20
  })
21
21
 
22
+ it('should export generateModuleRegistries', async () => {
23
+ const module = await import('../module-registry')
24
+ expect(typeof module.generateModuleRegistries).toBe('function')
25
+ })
26
+
22
27
  it('should export generateModuleEntities', async () => {
23
28
  const module = await import('../module-entities')
24
29
  expect(typeof module.generateModuleEntities).toBe('function')
@@ -13,7 +13,12 @@ import fs from 'node:fs'
13
13
  import path from 'node:path'
14
14
  import os from 'node:os'
15
15
  import type { PackageResolver, ModuleEntry } from '../../resolver'
16
- import { generateModuleRegistry, generateModuleRegistryApp, generateModuleRegistryCli } from '../module-registry'
16
+ import {
17
+ generateModuleRegistries,
18
+ generateModuleRegistry,
19
+ generateModuleRegistryApp,
20
+ generateModuleRegistryCli,
21
+ } from '../module-registry'
17
22
  import { generateModuleDi } from '../module-di'
18
23
  import { generateModuleEntities } from '../module-entities'
19
24
  import { generateEntityIds } from '../entity-ids'
@@ -751,6 +756,37 @@ describe('generator output compatibility', () => {
751
756
  expect(secondRun).toEqual(firstRun)
752
757
  })
753
758
 
759
+ it('shares one discovery snapshot across all registry renderers without changing output', async () => {
760
+ const enabled = scaffoldFixture()
761
+ const baselineResolver = createMockResolver(enabled)
762
+
763
+ await generateModuleRegistry({ resolver: baselineResolver, quiet: true })
764
+ await generateModuleRegistryApp({ resolver: baselineResolver, quiet: true })
765
+ await generateModuleRegistryCli({ resolver: baselineResolver, quiet: true })
766
+ const baseline = captureGeneratedFiles()
767
+
768
+ fs.rmSync(outputDir, { recursive: true, force: true })
769
+ fs.mkdirSync(outputDir, { recursive: true })
770
+
771
+ const delegate = createMockResolver(enabled)
772
+ const loadEnabledModules = jest.fn(delegate.loadEnabledModules)
773
+ const getModulePaths = jest.fn(delegate.getModulePaths)
774
+ const getModuleImportBase = jest.fn(delegate.getModuleImportBase)
775
+ const resolver: PackageResolver = {
776
+ ...delegate,
777
+ loadEnabledModules,
778
+ getModulePaths,
779
+ getModuleImportBase,
780
+ }
781
+
782
+ await generateModuleRegistries({ resolver, quiet: true })
783
+
784
+ expect(captureGeneratedFiles()).toEqual(baseline)
785
+ expect(loadEnabledModules).toHaveBeenCalledTimes(1)
786
+ expect(getModulePaths).toHaveBeenCalledTimes(enabled.length)
787
+ expect(getModuleImportBase).toHaveBeenCalledTimes(enabled.length)
788
+ })
789
+
754
790
  it('includes app-level workers with variable-referenced queue names in generated output', async () => {
755
791
  const enabled = scaffoldFixture()
756
792
  const resolver = createMockResolver(enabled)
@@ -1,5 +1,11 @@
1
1
  export { generateEntityIds, type EntityIdsOptions } from './entity-ids'
2
- export { generateModuleRegistry, generateModuleRegistryApp, generateModuleRegistryCli, type ModuleRegistryOptions } from './module-registry'
2
+ export {
3
+ generateModuleRegistry,
4
+ generateModuleRegistryApp,
5
+ generateModuleRegistryCli,
6
+ generateModuleRegistries,
7
+ type ModuleRegistryOptions,
8
+ } from './module-registry'
3
9
  export { generateModuleEntities, type ModuleEntitiesOptions } from './module-entities'
4
10
  export { generateModuleDi, type ModuleDiOptions } from './module-di'
5
11
  export { generateModulePackageSources, type ModulePackageSourcesOptions } from './module-package-sources'