@sprucelabs/spruce-cli 14.22.10 → 14.23.0

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 (192) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.d.ts +10 -0
  3. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js +24 -0
  4. package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js.map +1 -0
  5. package/build/.spruce/events/events.contract.d.ts +346 -36
  6. package/build/.spruce/events/events.contract.js +9 -1
  7. package/build/.spruce/events/events.contract.js.map +1 -1
  8. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.d.ts +20 -2
  9. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js +23 -5
  10. package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js.map +1 -1
  11. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.d.ts +20 -2
  12. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js +23 -5
  13. package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js.map +1 -1
  14. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.d.ts +20 -2
  15. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js +23 -5
  16. package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js.map +1 -1
  17. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.d.ts +20 -2
  18. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js +23 -5
  19. package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js.map +1 -1
  20. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.d.ts +15 -0
  21. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js +17 -2
  22. package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js.map +1 -1
  23. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.d.ts +20 -3
  24. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js +23 -6
  25. package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js.map +1 -1
  26. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.d.ts +38 -4
  27. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js +45 -11
  28. package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js.map +1 -1
  29. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.d.ts +15 -0
  30. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +17 -2
  31. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  32. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.d.ts +21 -4
  33. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js +24 -7
  34. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  35. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.d.ts +21 -1
  36. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js +26 -6
  37. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  38. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  39. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js +48 -0
  40. package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  41. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  42. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js +48 -0
  43. package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  44. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
  45. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js +48 -0
  46. package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js.map +1 -0
  47. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.d.ts +3 -0
  48. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js +28 -0
  49. package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js.map +1 -0
  50. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.d.ts +3 -0
  51. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js +36 -0
  52. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js.map +1 -0
  53. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.d.ts +3 -0
  54. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js +28 -0
  55. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js.map +1 -0
  56. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.d.ts +3 -0
  57. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js +56 -0
  58. package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js.map +1 -0
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js +0 -10
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/schemas.types.d.ts +678 -604
  62. package/build/.spruce/schemas/schemas.types.js.map +1 -1
  63. package/build/__tests__/behavioral/AddingADependency.test.d.ts +9 -0
  64. package/build/__tests__/behavioral/AddingADependency.test.js +273 -0
  65. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -0
  66. package/build/__tests__/behavioral/CreatingADataStore.test.js.map +1 -1
  67. package/build/__tests__/behavioral/ManagingDependencies.test.d.ts +9 -0
  68. package/build/__tests__/behavioral/ManagingDependencies.test.js +279 -0
  69. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -0
  70. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +8 -0
  71. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +209 -0
  72. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
  73. package/build/__tests__/behavioral/events/CreatingAListener.test.js +9 -5
  74. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  75. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +14 -7
  76. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  77. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +43 -12
  78. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  79. package/build/__tests__/behavioral/views/CreatingATheme.test.js +8 -2
  80. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  81. package/build/__tests__/behavioral/views/SettingUpViews.test.d.ts +1 -0
  82. package/build/__tests__/behavioral/views/SettingUpViews.test.js +48 -3
  83. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  84. package/build/__tests__/implementation/EventStore.test.js +4 -3
  85. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  86. package/build/__tests__/implementation/EventTemplateItemBuilder.test.d.ts +1 -0
  87. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +21 -3
  88. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  89. package/build/errors/SpruceError.js +2 -2
  90. package/build/errors/SpruceError.js.map +1 -1
  91. package/build/features/FeatureInstaller.d.ts +1 -1
  92. package/build/features/FeatureInstallerFactory.js +4 -2
  93. package/build/features/FeatureInstallerFactory.js.map +1 -1
  94. package/build/features/dependencies/DependencyFeature.d.ts +16 -0
  95. package/build/features/dependencies/DependencyFeature.js +92 -0
  96. package/build/features/dependencies/DependencyFeature.js.map +1 -0
  97. package/build/features/dependencies/actions/AddAction.d.ts +33 -0
  98. package/build/features/dependencies/actions/AddAction.js +154 -0
  99. package/build/features/dependencies/actions/AddAction.js.map +1 -0
  100. package/build/features/dependencies/actions/ManageAction.d.ts +19 -0
  101. package/build/features/dependencies/actions/ManageAction.js +161 -0
  102. package/build/features/dependencies/actions/ManageAction.js.map +1 -0
  103. package/build/features/event/EventFeature.js +2 -1
  104. package/build/features/event/EventFeature.js.map +1 -1
  105. package/build/features/event/builders/EventContractBuilder.d.ts +3 -0
  106. package/build/features/event/builders/EventContractBuilder.js +12 -8
  107. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  108. package/build/features/event/stores/EventStore.d.ts +2 -1
  109. package/build/features/event/stores/EventStore.js +33 -25
  110. package/build/features/event/stores/EventStore.js.map +1 -1
  111. package/build/features/schema/actions/SyncAction.js +4 -2
  112. package/build/features/schema/actions/SyncAction.js.map +1 -1
  113. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  114. package/build/features/skill/stores/SkillStore.d.ts +4 -0
  115. package/build/features/skill/stores/SkillStore.js +39 -15
  116. package/build/features/skill/stores/SkillStore.js.map +1 -1
  117. package/build/features/view/ViewFeature.js +5 -1
  118. package/build/features/view/ViewFeature.js.map +1 -1
  119. package/build/interfaces/SpyInterface.d.ts +2 -1
  120. package/build/interfaces/SpyInterface.js +67 -7
  121. package/build/interfaces/SpyInterface.js.map +1 -1
  122. package/build/services/DependencyService.d.ts +13 -0
  123. package/build/services/DependencyService.js +49 -0
  124. package/build/services/DependencyService.js.map +1 -0
  125. package/build/services/ServiceFactory.d.ts +2 -0
  126. package/build/services/ServiceFactory.js +5 -0
  127. package/build/services/ServiceFactory.js.map +1 -1
  128. package/build/templateItemBuilders/EventTemplateItemBuilder.js +9 -0
  129. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  130. package/build/tests/AbstractCliTest.js +2 -36
  131. package/build/tests/AbstractCliTest.js.map +1 -1
  132. package/build/tests/fixtures/SkillFixture.d.ts +2 -0
  133. package/build/tests/fixtures/SkillFixture.js +8 -8
  134. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  135. package/build/utilities/action.utility.js +1 -5
  136. package/build/utilities/action.utility.js.map +1 -1
  137. package/package.json +19 -19
  138. package/src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts +15 -0
  139. package/src/.spruce/events/events.contract.ts +32 -8
  140. package/src/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.ts +20 -2
  141. package/src/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.ts +20 -2
  142. package/src/.spruce/events/forms/createForm.v2021_07_02.contract.ts +20 -2
  143. package/src/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.ts +20 -2
  144. package/src/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.ts +15 -0
  145. package/src/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.ts +20 -3
  146. package/src/.spruce/events/forms/listForms.v2021_07_02.contract.ts +38 -4
  147. package/src/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.ts +15 -0
  148. package/src/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.ts +21 -4
  149. package/src/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.ts +21 -1
  150. package/src/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.ts +45 -0
  151. package/src/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.ts +45 -0
  152. package/src/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.ts +45 -0
  153. package/src/.spruce/schemas/appointments/v2021_06_23/appointments.schema.ts +22 -0
  154. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.ts +24 -0
  155. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.ts +22 -0
  156. package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.ts +36 -0
  157. package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.ts +0 -6
  158. package/src/.spruce/schemas/schemas.types.ts +815 -720
  159. package/src/__tests__/behavioral/AddingADependency.test.ts +98 -0
  160. package/src/__tests__/behavioral/CreatingADataStore.test.ts +2 -0
  161. package/src/__tests__/behavioral/ManagingDependencies.test.ts +115 -0
  162. package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +70 -0
  163. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +5 -0
  164. package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +6 -0
  165. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +27 -0
  166. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +4 -0
  167. package/src/__tests__/behavioral/views/SettingUpViews.test.ts +23 -0
  168. package/src/__tests__/implementation/EventStore.test.ts +5 -2
  169. package/src/__tests__/implementation/EventTemplateItemBuilder.test.ts +20 -1
  170. package/src/errors/SpruceError.ts +1 -1
  171. package/src/features/FeatureInstallerFactory.ts +3 -0
  172. package/src/features/dependencies/DependencyFeature.ts +27 -0
  173. package/src/features/dependencies/actions/AddAction.ts +63 -0
  174. package/src/features/dependencies/actions/ManageAction.ts +84 -0
  175. package/src/features/event/EventFeature.ts +1 -0
  176. package/src/features/event/builders/EventContractBuilder.ts +9 -2
  177. package/src/features/event/stores/EventStore.ts +20 -11
  178. package/src/features/schema/actions/SyncAction.ts +6 -3
  179. package/src/features/skill/actions/RebuildAction.ts +2 -0
  180. package/src/features/skill/stores/SkillStore.ts +8 -1
  181. package/src/features/view/ViewFeature.ts +5 -0
  182. package/src/interfaces/SpyInterface.ts +29 -2
  183. package/src/services/DependencyService.ts +27 -0
  184. package/src/services/ServiceFactory.ts +6 -0
  185. package/src/templateItemBuilders/EventTemplateItemBuilder.ts +10 -0
  186. package/src/tests/AbstractCliTest.ts +1 -21
  187. package/src/tests/fixtures/SkillFixture.ts +6 -2
  188. package/src/utilities/action.utility.ts +1 -6
  189. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.d.ts +0 -3
  190. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js +0 -28
  191. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js.map +0 -1
  192. package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.ts +0 -22
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/features/dependencies/actions/ManageAction.ts"],"names":["optionsSchema","id","description","fields","DeployAction","Store","fetchMySkills","skills","sort","a","b","name1","name","toLowerCase","name2","dep","Service","dependencies","get","loadCurrentSkill","currentSkill","isRegistered","filter","s","ui","prompt","label","type","isArray","isRequired","value","map","d","options","choices","skill","slug","selected","summary","updatedDependencies","find","push","namespace","set","summaryLines","length","AbstractAction"],"mappings":"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","sourcesContent":["import { buildSchema } from '@sprucelabs/schema'\nimport AbstractAction from '../../AbstractAction'\nimport { FeatureActionResponse } from '../../features.types'\n\nconst optionsSchema = buildSchema({\n\tid: 'manageDependencies',\n\tdescription: 'Manage the skills you depend on.',\n\tfields: {},\n})\n\ntype OptionsSchema = typeof optionsSchema\n\nexport default class DeployAction extends AbstractAction<OptionsSchema> {\n\tpublic optionsSchema = optionsSchema\n\tpublic commandAliases = [\n\t\t'manage.dependencies',\n\t\t'remove.dependency',\n\t\t'dependencies',\n\t]\n\tpublic invocationMessage = 'Managing dependencies... 🔗'\n\n\tpublic async execute(): Promise<FeatureActionResponse> {\n\t\tlet skills = await this.Store('skill').fetchMySkills()\n\t\tskills.sort((a, b) => {\n\t\t\tconst name1 = a.name.toLowerCase()\n\t\t\tconst name2 = b.name.toLowerCase()\n\n\t\t\tif (name1 < name2) {\n\t\t\t\treturn -1\n\t\t\t} else if (name1 > name2) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn 0\n\t\t})\n\n\t\tconst dep = this.Service('dependency')\n\t\tconst dependencies = dep.get()\n\n\t\tconst currentSkill = await this.Store('skill').loadCurrentSkill()\n\n\t\tif (currentSkill.isRegistered) {\n\t\t\tskills = skills.filter((s) => s.id !== currentSkill.id)\n\t\t}\n\n\t\tconst selected = await this.ui.prompt({\n\t\t\tlabel: 'Which skills do you depend on?',\n\t\t\ttype: 'select',\n\t\t\tisArray: true,\n\t\t\tisRequired: true,\n\t\t\tvalue: dependencies.map((d: any) => d.id),\n\t\t\toptions: {\n\t\t\t\tchoices: skills.map((skill) => ({\n\t\t\t\t\tvalue: skill.id,\n\t\t\t\t\tlabel: skill.name + ' (' + skill.slug + ')',\n\t\t\t\t})),\n\t\t\t},\n\t\t})\n\n\t\tconst summary: string[] = []\n\n\t\tconst updatedDependencies = selected.map((id) => {\n\t\t\tconst skill = skills.find((s) => s.id === id)\n\n\t\t\tsummary.push(skill?.name + ' (' + skill?.id + ')')\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tnamespace: skill?.slug ?? '**missing**',\n\t\t\t}\n\t\t})\n\n\t\tdep.set(updatedDependencies)\n\n\t\treturn {\n\t\t\tsummaryLines: [\n\t\t\t\t`${updatedDependencies.length} dependenc${\n\t\t\t\t\tupdatedDependencies.length === 1 ? 'y' : 'ies'\n\t\t\t\t} added.`,\n\t\t\t\t...summary,\n\t\t\t],\n\t\t}\n\t}\n}\n"],"file":"ManageAction.js"}
@@ -301,7 +301,8 @@ var EventFeature = /*#__PURE__*/function (_AbstractFeature) {
301
301
  ui: this.ui,
302
302
  eventGenerator: this.Writer('event'),
303
303
  eventStore: this.Store('event'),
304
- skillStore: this.Store('skill')
304
+ skillStore: this.Store('skill'),
305
+ dependencyService: this.Service('dependency')
305
306
  });
306
307
  }
307
308
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","featureInstaller","isInstalled","Action","execute","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","results","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\treturn this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\treturn this.appendRemoteToResultsOrPrompt()\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
1
+ {"version":3,"sources":["../../../src/features/event/EventFeature.ts"],"names":["EventFeature","options","code","isRequired","name","diskUtil","resolvePath","__dirname","emitter","on","handleDidFetchSchemas","bind","handleWillExecute","handleDidExecute","createDir","cwd","payload","featureCode","actionCode","featureInstaller","isInstalled","Action","execute","settings","Service","clearListenerCache","appendRemoteToResultsOrPrompt","remote","r","getRemote","TerminalInterface","doesSupportColor","Error","ui","stopLoading","renderLine","results","summaryLines","getHost","lastSync","getLastSyncOptions","writer","getEventContractBuilder","fetchContractsAndGenerateUniqueSchemas","schemas","shouldSyncOnlyCoreEvents","uniqueSchemas","contractBuilder","EventContractBuilder","optionsSchema","syncEventActionSchema","eventGenerator","Writer","eventStore","Store","skillStore","dependencyService","doesHashSprucePathExist","hasCombinedContractBeenWritten","AbstractFeature"],"mappings":"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","sourcesContent":["import { Schema } from '@sprucelabs/schema'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport syncEventActionSchema from '#spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema'\nimport TerminalInterface from '../../interfaces/TerminalInterface'\nimport { FileDescription } from '../../types/cli.types'\nimport AbstractFeature, {\n\tFeatureDependency,\n\tFeatureOptions,\n} from '../AbstractFeature'\nimport { FeatureActionResponse, FeatureCode } from '../features.types'\nimport EventContractBuilder from './builders/EventContractBuilder'\n\ndeclare module '../../features/features.types' {\n\tinterface FeatureMap {\n\t\tevent: EventFeature\n\t}\n\n\tinterface FeatureOptionsMap {\n\t\tevent: undefined\n\t}\n}\n\nexport default class EventFeature extends AbstractFeature {\n\tpublic code: FeatureCode = 'event'\n\tpublic nameReadable = 'Events'\n\tpublic description = 'Connect to the Mercury Event Engine.'\n\tpublic dependencies: FeatureDependency[] = [\n\t\t{ code: 'schema', isRequired: true },\n\t]\n\tpublic packageDependencies = [\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-client',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-types',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-utils',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/spruce-event-plugin',\n\t\t},\n\t\t{\n\t\t\tname: '@sprucelabs/mercury-core-events',\n\t\t},\n\t]\n\n\tpublic actionsDir = diskUtil.resolvePath(__dirname, 'actions')\n\n\tpublic readonly fileDescriptions: FileDescription[] = []\n\tprivate contractBuilder?: EventContractBuilder\n\n\tpublic constructor(options: FeatureOptions) {\n\t\tsuper(options)\n\n\t\tvoid this.emitter.on(\n\t\t\t'schema.did-fetch-schemas',\n\t\t\tthis.handleDidFetchSchemas.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tthis.handleWillExecute.bind(this)\n\t\t)\n\n\t\tvoid this.emitter.on(\n\t\t\t'feature.did-execute',\n\t\t\tthis.handleDidExecute.bind(this)\n\t\t)\n\t}\n\n\tpublic async afterPackageInstall() {\n\t\tdiskUtil.createDir(diskUtil.resolvePath(this.cwd, 'src', 'events'))\n\t\treturn {}\n\t}\n\n\tprivate async handleDidExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}) {\n\t\tconst { featureCode, actionCode } = payload\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (isInstalled && featureCode === 'node' && actionCode === 'upgrade') {\n\t\t\treturn this.Action('event', 'sync').execute({})\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async handleWillExecute(payload: {\n\t\tfeatureCode: string\n\t\tactionCode: string\n\t}): Promise<FeatureActionResponse> {\n\t\tconst { featureCode, actionCode } = payload\n\n\t\tconst isInstalled = await this.featureInstaller.isInstalled('event')\n\n\t\tif (featureCode === 'node' || featureCode === 'upgrade') {\n\t\t\tconst settings = this.Service('eventSettings')\n\t\t\tsettings.clearListenerCache()\n\t\t}\n\n\t\tif (\n\t\t\tisInstalled &&\n\t\t\t(featureCode === 'event' ||\n\t\t\t\tfeatureCode === 'eventContract' ||\n\t\t\t\tactionCode === 'login') &&\n\t\t\tactionCode !== 'setRemote'\n\t\t) {\n\t\t\treturn this.appendRemoteToResultsOrPrompt()\n\t\t}\n\n\t\treturn {}\n\t}\n\n\tprivate async appendRemoteToResultsOrPrompt(): Promise<FeatureActionResponse> {\n\t\tconst remote = this.Service('remote')\n\t\tconst r = remote.getRemote()\n\n\t\tif (!r) {\n\t\t\tif (!TerminalInterface.doesSupportColor()) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Dang! I couldn't find env.HOST. Once that is set, lets try again!`\n\t\t\t\t)\n\t\t\t}\n\n\t\t\tthis.ui.stopLoading()\n\t\t\tthis.ui.renderLine(\n\t\t\t\t`Uh oh! It looks like you haven't configured your remote! We gotta do that.`\n\t\t\t)\n\n\t\t\tconst results = await this.Action('event', 'setRemote').execute({})\n\n\t\t\treturn results\n\t\t} else {\n\t\t\treturn {\n\t\t\t\tsummaryLines: [`Remote: ${r}`, `Host: ${remote.getHost()}`],\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async handleDidFetchSchemas(payload: { schemas?: Schema[] | null }) {\n\t\tconst isInstalled = await this.featureInstaller.isInstalled(this.code)\n\n\t\tconst lastSync = this.Service('eventSettings').getLastSyncOptions()\n\n\t\tif (lastSync && isInstalled) {\n\t\t\tconst writer = this.getEventContractBuilder()\n\n\t\t\tconst uniqueSchemas = await writer.fetchContractsAndGenerateUniqueSchemas(\n\t\t\t\tpayload.schemas ?? [],\n\t\t\t\tlastSync.shouldSyncOnlyCoreEvents\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tschemas: uniqueSchemas.schemas ?? [],\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tschemas: [],\n\t\t}\n\t}\n\n\tpublic getEventContractBuilder() {\n\t\tif (!this.contractBuilder) {\n\t\t\tthis.contractBuilder = new EventContractBuilder({\n\t\t\t\tcwd: this.cwd,\n\t\t\t\toptionsSchema: syncEventActionSchema,\n\t\t\t\tui: this.ui,\n\t\t\t\teventGenerator: this.Writer('event'),\n\t\t\t\teventStore: this.Store('event'),\n\t\t\t\tskillStore: this.Store('skill'),\n\t\t\t\tdependencyService: this.Service('dependency'),\n\t\t\t})\n\t\t}\n\n\t\treturn this.contractBuilder\n\t}\n\n\tpublic hasBeenSynced() {\n\t\tif (diskUtil.doesHashSprucePathExist(this.cwd)) {\n\t\t\tconst writer = this.Writer('event')\n\n\t\t\treturn writer.hasCombinedContractBeenWritten(this.cwd)\n\t\t}\n\n\t\treturn false\n\t}\n}\n"],"file":"EventFeature.js"}
@@ -1,5 +1,6 @@
1
1
  import { SpruceSchemas } from '@sprucelabs/mercury-types';
2
2
  import { Schema } from '@sprucelabs/schema';
3
+ import DependencyService from '../../../services/DependencyService';
3
4
  import { GraphicsInterface } from '../../../types/cli.types';
4
5
  import { FeatureActionResponse } from '../../features.types';
5
6
  import SkillStore from '../../skill/stores/SkillStore';
@@ -14,6 +15,7 @@ export default class EventContractBuilder {
14
15
  private cwd;
15
16
  private eventStore;
16
17
  private skillStore;
18
+ private dependencyService;
17
19
  constructor(options: {
18
20
  optionsSchema: OptionsSchema;
19
21
  ui: GraphicsInterface;
@@ -21,6 +23,7 @@ export default class EventContractBuilder {
21
23
  cwd: string;
22
24
  eventStore: EventStore;
23
25
  skillStore: SkillStore;
26
+ dependencyService: DependencyService;
24
27
  });
25
28
  fetchAndWriteContracts(options: Options): Promise<FeatureActionResponse>;
26
29
  private deleteOrphanedEventContracts;
@@ -42,12 +42,14 @@ var EventContractBuilder = /*#__PURE__*/function () {
42
42
  (0, _defineProperty2["default"])(this, "cwd", void 0);
43
43
  (0, _defineProperty2["default"])(this, "eventStore", void 0);
44
44
  (0, _defineProperty2["default"])(this, "skillStore", void 0);
45
+ (0, _defineProperty2["default"])(this, "dependencyService", void 0);
45
46
  this.optionsSchema = options.optionsSchema;
46
47
  this.ui = options.ui;
47
48
  this.eventWriter = options.eventGenerator;
48
49
  this.cwd = options.cwd;
49
50
  this.eventStore = options.eventStore;
50
51
  this.skillStore = options.skillStore;
52
+ this.dependencyService = options.dependencyService;
51
53
  }
52
54
 
53
55
  (0, _createClass2["default"])(EventContractBuilder, [{
@@ -227,7 +229,7 @@ var EventContractBuilder = /*#__PURE__*/function () {
227
229
  var _fetchAndBuildTemplateItems = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4(options) {
228
230
  var _this = this;
229
231
 
230
- var shouldSyncOnlyCoreEvents, eventBuilderFile, namespace, contractResults, itemBuilder, _itemBuilder$buildTem, eventContractTemplateItems, schemaTemplateItems;
232
+ var shouldSyncOnlyCoreEvents, eventBuilderFile, namespace, namespaces, contractResults, itemBuilder, _itemBuilder$buildTem, eventContractTemplateItems, schemaTemplateItems;
231
233
 
232
234
  return _regenerator["default"].wrap(function _callee4$(_context4) {
233
235
  while (1) {
@@ -241,19 +243,23 @@ var EventContractBuilder = /*#__PURE__*/function () {
241
243
  case 4:
242
244
  namespace = _context4.sent;
243
245
  this.ui.startLoading('Fetching event contracts...');
244
- _context4.next = 8;
246
+ namespaces = shouldSyncOnlyCoreEvents ? ['core'] : this.dependencyService.get().map(function (d) {
247
+ return d.namespace;
248
+ });
249
+ _context4.next = 9;
245
250
  return this.eventStore.fetchEventContracts({
246
251
  localNamespace: namespace,
252
+ namespaces: namespaces,
247
253
  didUpdateHandler: function didUpdateHandler(msg) {
248
254
  _this.ui.startLoading(msg);
249
255
  }
250
256
  });
251
257
 
252
- case 8:
258
+ case 9:
253
259
  contractResults = _context4.sent;
254
260
 
255
261
  if (!(contractResults.errors.length > 0)) {
256
- _context4.next = 11;
262
+ _context4.next = 12;
257
263
  break;
258
264
  }
259
265
 
@@ -263,12 +269,10 @@ var EventContractBuilder = /*#__PURE__*/function () {
263
269
  schemaTemplateItems: []
264
270
  });
265
271
 
266
- case 11:
272
+ case 12:
267
273
  if (shouldSyncOnlyCoreEvents) {
268
- contractResults.contracts = [contractResults.contracts[0]];
269
274
  namespace = undefined;
270
275
  } else {
271
- contractResults.contracts.shift();
272
276
  namespace = _spruceSkillUtils.namesUtil.toKebab(namespace);
273
277
  }
274
278
 
@@ -285,7 +289,7 @@ var EventContractBuilder = /*#__PURE__*/function () {
285
289
  errors: []
286
290
  });
287
291
 
288
- case 16:
292
+ case 17:
289
293
  case "end":
290
294
  return _context4.stop();
291
295
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/event/builders/EventContractBuilder.ts"],"names":["EventContractBuilder","options","optionsSchema","ui","eventWriter","eventGenerator","cwd","eventStore","skillStore","normalizedOptions","validateAndNormalizeUtil","validateAndNormalize","contractDestinationDir","resolvedDestination","diskUtil","resolvePath","fetchAndBuildTemplateItems","shouldSyncOnlyCoreEvents","eventBuilderFile","errors","schemaTemplateItems","eventContractTemplateItems","length","startLoading","writeContracts","shouldImportCoreEvents","files","deleteOrphanedEventContracts","map","a","path","lookupDir","existingContracts","matches","diff","filter","m","includes","forEach","f","deleteFile","deleteEmptyDirs","existingSchemas","filteredSchemas","filterSchemasBasedOnCallbackPayload","schemas","i","schema","idWithVersion","find","s","loadCurrentSkillsNamespace","namespace","fetchEventContracts","localNamespace","didUpdateHandler","msg","contractResults","contracts","undefined","shift","namesUtil","toKebab","itemBuilder","EventTemplateItemBuilder","buildTemplateItems"],"mappings":"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","sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaToIdWithVersion,\n\tSchema,\n\tSchemaTemplateItem,\n} from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { isEqual } from 'lodash'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport { GraphicsInterface } from '../../../types/cli.types'\nimport { FeatureActionResponse } from '../../features.types'\nimport SkillStore from '../../skill/stores/SkillStore'\nimport validateAndNormalizeUtil from '../../validateAndNormalize.utility'\nimport EventStore from '../stores/EventStore'\nimport EventWriter from '../writers/EventWriter'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptions\n\nexport default class EventContractBuilder {\n\tprivate optionsSchema: OptionsSchema\n\tprivate ui: GraphicsInterface\n\tprivate eventWriter: EventWriter\n\tprivate cwd: string\n\tprivate eventStore: EventStore\n\tprivate skillStore: SkillStore\n\n\tpublic constructor(options: {\n\t\toptionsSchema: OptionsSchema\n\t\tui: GraphicsInterface\n\t\teventGenerator: EventWriter\n\t\tcwd: string\n\t\teventStore: EventStore\n\t\tskillStore: SkillStore\n\t}) {\n\t\tthis.optionsSchema = options.optionsSchema\n\t\tthis.ui = options.ui\n\t\tthis.eventWriter = options.eventGenerator\n\t\tthis.cwd = options.cwd\n\t\tthis.eventStore = options.eventStore\n\t\tthis.skillStore = options.skillStore\n\t}\n\n\tpublic async fetchAndWriteContracts(\n\t\toptions: Options\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = validateAndNormalizeUtil.validateAndNormalize(\n\t\t\tthis.optionsSchema,\n\t\t\toptions\n\t\t)\n\n\t\tconst { contractDestinationDir } = normalizedOptions\n\n\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tcontractDestinationDir\n\t\t)\n\n\t\tconst { errors, schemaTemplateItems, eventContractTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({\n\t\t\t\tshouldSyncOnlyCoreEvents: options.shouldSyncOnlyCoreEvents ?? false,\n\t\t\t\teventBuilderFile: normalizedOptions.eventBuilderFile,\n\t\t\t})\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tthis.ui.startLoading('Generating contracts...')\n\n\t\tconst files = await this.eventWriter.writeContracts(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tshouldImportCoreEvents: !options.shouldSyncOnlyCoreEvents,\n\t\t})\n\n\t\tawait this.deleteOrphanedEventContracts(\n\t\t\tresolvedDestination,\n\t\t\tfiles.map((a) => a.path)\n\t\t)\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async deleteOrphanedEventContracts(\n\t\tlookupDir: string,\n\t\texistingContracts: string[]\n\t) {\n\t\tconst matches = await globby(lookupDir + '/**/*.contract.ts')\n\t\tconst diff = matches.filter((m) => !existingContracts.includes(m))\n\n\t\tdiff.forEach((f) => diskUtil.deleteFile(f))\n\n\t\tdiskUtil.deleteEmptyDirs(lookupDir)\n\t}\n\n\tpublic async fetchContractsAndGenerateUniqueSchemas(\n\t\texistingSchemas: Schema[],\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t): Promise<FeatureActionResponse & { schemas?: Schema[] }> {\n\t\tconst { errors, schemaTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({ shouldSyncOnlyCoreEvents })\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tconst filteredSchemas = this.filterSchemasBasedOnCallbackPayload(\n\t\t\texistingSchemas,\n\t\t\tschemaTemplateItems\n\t\t)\n\n\t\treturn {\n\t\t\tschemas: filteredSchemas,\n\t\t}\n\t}\n\n\tprivate filterSchemasBasedOnCallbackPayload(\n\t\texistingSchemas: Schema[],\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t) {\n\t\tconst schemas = schemaTemplateItems.map((i) => i.schema)\n\t\tconst filteredSchemas = schemas.filter((schema) => {\n\t\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(schema)\n\t\t\treturn !existingSchemas.find((s) =>\n\t\t\t\tisEqual(normalizeSchemaToIdWithVersion(s), idWithVersion)\n\t\t\t)\n\t\t})\n\n\t\treturn filteredSchemas\n\t}\n\n\tprivate async fetchAndBuildTemplateItems(options: {\n\t\tshouldSyncOnlyCoreEvents?: boolean\n\t\teventBuilderFile?: string\n\t}) {\n\t\tconst { shouldSyncOnlyCoreEvents, eventBuilderFile } = options\n\n\t\tthis.ui.startLoading('Loading skill details...')\n\n\t\tlet namespace: string | undefined =\n\t\t\tawait this.skillStore.loadCurrentSkillsNamespace()\n\n\t\tthis.ui.startLoading('Fetching event contracts...')\n\n\t\tconst contractResults = await this.eventStore.fetchEventContracts({\n\t\t\tlocalNamespace: namespace,\n\t\t\tdidUpdateHandler: (msg) => {\n\t\t\t\tthis.ui.startLoading(msg)\n\t\t\t},\n\t\t})\n\n\t\tif (contractResults.errors.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors: contractResults.errors,\n\t\t\t\teventContractTemplateItems: [],\n\t\t\t\tschemaTemplateItems: [],\n\t\t\t}\n\t\t}\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tcontractResults.contracts = [contractResults.contracts[0]]\n\t\t\tnamespace = undefined\n\t\t} else {\n\t\t\tcontractResults.contracts.shift()\n\t\t\tnamespace = namesUtil.toKebab(namespace)\n\t\t}\n\n\t\tthis.ui.startLoading('Building contracts...')\n\n\t\tconst itemBuilder = new EventTemplateItemBuilder()\n\t\tconst { eventContractTemplateItems, schemaTemplateItems } =\n\t\t\titemBuilder.buildTemplateItems({\n\t\t\t\tcontracts: contractResults.contracts,\n\t\t\t\tlocalNamespace: namespace,\n\t\t\t\teventBuilderFile,\n\t\t\t})\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\terrors: [],\n\t\t}\n\t}\n}\n"],"file":"EventContractBuilder.js"}
1
+ {"version":3,"sources":["../../../../src/features/event/builders/EventContractBuilder.ts"],"names":["EventContractBuilder","options","optionsSchema","ui","eventWriter","eventGenerator","cwd","eventStore","skillStore","dependencyService","normalizedOptions","validateAndNormalizeUtil","validateAndNormalize","contractDestinationDir","resolvedDestination","diskUtil","resolvePath","fetchAndBuildTemplateItems","shouldSyncOnlyCoreEvents","eventBuilderFile","errors","schemaTemplateItems","eventContractTemplateItems","length","startLoading","writeContracts","shouldImportCoreEvents","files","deleteOrphanedEventContracts","map","a","path","lookupDir","existingContracts","matches","diff","filter","m","includes","forEach","f","deleteFile","deleteEmptyDirs","existingSchemas","filteredSchemas","filterSchemasBasedOnCallbackPayload","schemas","i","schema","idWithVersion","find","s","loadCurrentSkillsNamespace","namespace","namespaces","get","d","fetchEventContracts","localNamespace","didUpdateHandler","msg","contractResults","undefined","namesUtil","toKebab","itemBuilder","EventTemplateItemBuilder","buildTemplateItems","contracts"],"mappings":";;;;;;;;;;;;;;;;;;;AACA;;AAKA;;AACA;;AACA;;AAEA;;AAIA;;;;;;IAOqBA,oB;AASpB,gCAAmBC,OAAnB,EAQG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACF,SAAKC,aAAL,GAAqBD,OAAO,CAACC,aAA7B;AACA,SAAKC,EAAL,GAAUF,OAAO,CAACE,EAAlB;AACA,SAAKC,WAAL,GAAmBH,OAAO,CAACI,cAA3B;AACA,SAAKC,GAAL,GAAWL,OAAO,CAACK,GAAnB;AACA,SAAKC,UAAL,GAAkBN,OAAO,CAACM,UAA1B;AACA,SAAKC,UAAL,GAAkBP,OAAO,CAACO,UAA1B;AACA,SAAKC,iBAAL,GAAyBR,OAAO,CAACQ,iBAAjC;AACA;;;;;kHAED,iBACCR,OADD;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAGOS,gBAAAA,iBAHP,GAG2BC,iCAAyBC,oBAAzB,CACzB,KAAKV,aADoB,EAEzBD,OAFyB,CAH3B;AAQSY,gBAAAA,sBART,GAQoCH,iBARpC,CAQSG,sBART;AAUOC,gBAAAA,mBAVP,GAU6BC,2BAASC,WAAT,CAC3B,KAAKV,GADsB,EAE3BO,sBAF2B,CAV7B;AAAA;AAAA,uBAgBQ,KAAKI,0BAAL,CAAgC;AACrCC,kBAAAA,wBAAwB,2BAAEjB,OAAO,CAACiB,wBAAV,yEAAsC,KADzB;AAErCC,kBAAAA,gBAAgB,EAAET,iBAAiB,CAACS;AAFC,iBAAhC,CAhBR;;AAAA;AAAA;AAeSC,gBAAAA,MAfT,yBAeSA,MAfT;AAeiBC,gBAAAA,mBAfjB,yBAeiBA,mBAfjB;AAesCC,gBAAAA,0BAftC,yBAesCA,0BAftC;;AAAA,sBAqBKF,MAAM,IAAI,CAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEG,MAAR,IAAiB,CArBhC;AAAA;AAAA;AAAA;;AAAA,iDAsBS;AACNH,kBAAAA,MAAM,EAANA;AADM,iBAtBT;;AAAA;AA2BC,qBAAKjB,EAAL,CAAQqB,YAAR,CAAqB,yBAArB;AA3BD;AAAA,uBA6BqB,KAAKpB,WAAL,CAAiBqB,cAAjB,CAAgCX,mBAAhC,kCAChBJ,iBADgB;AAEnBY,kBAAAA,0BAA0B,EAA1BA,0BAFmB;AAGnBD,kBAAAA,mBAAmB,EAAnBA,mBAHmB;AAInBK,kBAAAA,sBAAsB,EAAE,CAACzB,OAAO,CAACiB;AAJd,mBA7BrB;;AAAA;AA6BOS,gBAAAA,KA7BP;AAAA;AAAA,uBAoCO,KAAKC,4BAAL,CACLd,mBADK,EAELa,KAAK,CAACE,GAAN,CAAU,UAACC,CAAD;AAAA,yBAAOA,CAAC,CAACC,IAAT;AAAA,iBAAV,CAFK,CApCP;;AAAA;AAAA,iDAyCQ;AACNJ,kBAAAA,KAAK,EAALA;AADM,iBAzCR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wHA8CA,kBACCK,SADD,EAECC,iBAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAIuB,wBAAOD,SAAS,GAAG,mBAAnB,CAJvB;;AAAA;AAIOE,gBAAAA,OAJP;AAKOC,gBAAAA,IALP,GAKcD,OAAO,CAACE,MAAR,CAAe,UAACC,CAAD;AAAA,yBAAO,CAACJ,iBAAiB,CAACK,QAAlB,CAA2BD,CAA3B,CAAR;AAAA,iBAAf,CALd;AAOCF,gBAAAA,IAAI,CAACI,OAAL,CAAa,UAACC,CAAD;AAAA,yBAAOzB,2BAAS0B,UAAT,CAAoBD,CAApB,CAAP;AAAA,iBAAb;;AAEAzB,2CAAS2B,eAAT,CAAyBV,SAAzB;;AATD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kIAYA,kBACCW,eADD,EAECzB,wBAFD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAKQ,KAAKD,0BAAL,CAAgC;AAAEC,kBAAAA,wBAAwB,EAAxBA;AAAF,iBAAhC,CALR;;AAAA;AAAA;AAISE,gBAAAA,MAJT,0BAISA,MAJT;AAIiBC,gBAAAA,mBAJjB,0BAIiBA,mBAJjB;;AAAA,sBAOKD,MAAM,IAAI,CAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEG,MAAR,IAAiB,CAPhC;AAAA;AAAA;AAAA;;AAAA,kDAQS;AACNH,kBAAAA,MAAM,EAANA;AADM,iBART;;AAAA;AAaOwB,gBAAAA,eAbP,GAayB,KAAKC,mCAAL,CACvBF,eADuB,EAEvBtB,mBAFuB,CAbzB;AAAA,kDAkBQ;AACNyB,kBAAAA,OAAO,EAAEF;AADH,iBAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAuBA,6CACCD,eADD,EAECtB,mBAFD,EAGE;AACD,UAAMyB,OAAO,GAAGzB,mBAAmB,CAACQ,GAApB,CAAwB,UAACkB,CAAD;AAAA,eAAOA,CAAC,CAACC,MAAT;AAAA,OAAxB,CAAhB;AACA,UAAMJ,eAAe,GAAGE,OAAO,CAACV,MAAR,CAAe,UAACY,MAAD,EAAY;AAClD,YAAMC,aAAa,GAAG,4CAA+BD,MAA/B,CAAtB;AACA,eAAO,CAACL,eAAe,CAACO,IAAhB,CAAqB,UAACC,CAAD;AAAA,iBAC5B,qBAAQ,4CAA+BA,CAA/B,CAAR,EAA2CF,aAA3C,CAD4B;AAAA,SAArB,CAAR;AAGA,OALuB,CAAxB;AAOA,aAAOL,eAAP;AACA;;;;sHAED,kBAAyC3C,OAAzC;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAISiB,gBAAAA,wBAJT,GAIwDjB,OAJxD,CAISiB,wBAJT,EAImCC,gBAJnC,GAIwDlB,OAJxD,CAImCkB,gBAJnC;AAMC,qBAAKhB,EAAL,CAAQqB,YAAR,CAAqB,0BAArB;AAND;AAAA,uBASQ,KAAKhB,UAAL,CAAgB4C,0BAAhB,EATR;;AAAA;AAQKC,gBAAAA,SARL;AAWC,qBAAKlD,EAAL,CAAQqB,YAAR,CAAqB,6BAArB;AAEM8B,gBAAAA,UAbP,GAaoBpC,wBAAwB,GACxC,CAAC,MAAD,CADwC,GAExC,KAAKT,iBAAL,CAAuB8C,GAAvB,GAA6B1B,GAA7B,CAAiC,UAAC2B,CAAD;AAAA,yBAAOA,CAAC,CAACH,SAAT;AAAA,iBAAjC,CAfJ;AAAA;AAAA,uBAiB+B,KAAK9C,UAAL,CAAgBkD,mBAAhB,CAAoC;AACjEC,kBAAAA,cAAc,EAAEL,SADiD;AAEjEC,kBAAAA,UAAU,EAAVA,UAFiE;AAGjEK,kBAAAA,gBAAgB,EAAE,0BAACC,GAAD,EAAS;AAC1B,oBAAA,KAAI,CAACzD,EAAL,CAAQqB,YAAR,CAAqBoC,GAArB;AACA;AALgE,iBAApC,CAjB/B;;AAAA;AAiBOC,gBAAAA,eAjBP;;AAAA,sBAyBKA,eAAe,CAACzC,MAAhB,CAAuBG,MAAvB,GAAgC,CAzBrC;AAAA;AAAA;AAAA;;AAAA,kDA0BS;AACNH,kBAAAA,MAAM,EAAEyC,eAAe,CAACzC,MADlB;AAENE,kBAAAA,0BAA0B,EAAE,EAFtB;AAGND,kBAAAA,mBAAmB,EAAE;AAHf,iBA1BT;;AAAA;AAiCC,oBAAIH,wBAAJ,EAA8B;AAC7BmC,kBAAAA,SAAS,GAAGS,SAAZ;AACA,iBAFD,MAEO;AACNT,kBAAAA,SAAS,GAAGU,4BAAUC,OAAV,CAAkBX,SAAlB,CAAZ;AACA;;AAED,qBAAKlD,EAAL,CAAQqB,YAAR,CAAqB,uBAArB;AAEMyC,gBAAAA,WAzCP,GAyCqB,IAAIC,oCAAJ,EAzCrB;AAAA,wCA2CED,WAAW,CAACE,kBAAZ,CAA+B;AAC9BC,kBAAAA,SAAS,EAAEP,eAAe,CAACO,SADG;AAE9BV,kBAAAA,cAAc,EAAEL,SAFc;AAG9BlC,kBAAAA,gBAAgB,EAAhBA;AAH8B,iBAA/B,CA3CF,EA0CSG,0BA1CT,yBA0CSA,0BA1CT,EA0CqCD,mBA1CrC,yBA0CqCA,mBA1CrC;AAAA,kDAiDQ;AACNC,kBAAAA,0BAA0B,EAA1BA,0BADM;AAEND,kBAAAA,mBAAmB,EAAnBA,mBAFM;AAGND,kBAAAA,MAAM,EAAE;AAHF,iBAjDR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O","sourcesContent":["import { SpruceSchemas } from '@sprucelabs/mercury-types'\nimport {\n\tnormalizeSchemaToIdWithVersion,\n\tSchema,\n\tSchemaTemplateItem,\n} from '@sprucelabs/schema'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { isEqual } from 'lodash'\nimport DependencyService from '../../../services/DependencyService'\nimport EventTemplateItemBuilder from '../../../templateItemBuilders/EventTemplateItemBuilder'\nimport { GraphicsInterface } from '../../../types/cli.types'\nimport { FeatureActionResponse } from '../../features.types'\nimport SkillStore from '../../skill/stores/SkillStore'\nimport validateAndNormalizeUtil from '../../validateAndNormalize.utility'\nimport EventStore from '../stores/EventStore'\nimport EventWriter from '../writers/EventWriter'\n\ntype OptionsSchema = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptionsSchema\ntype Options = SpruceSchemas.SpruceCli.v2020_07_22.SyncEventOptions\n\nexport default class EventContractBuilder {\n\tprivate optionsSchema: OptionsSchema\n\tprivate ui: GraphicsInterface\n\tprivate eventWriter: EventWriter\n\tprivate cwd: string\n\tprivate eventStore: EventStore\n\tprivate skillStore: SkillStore\n\tprivate dependencyService: DependencyService\n\n\tpublic constructor(options: {\n\t\toptionsSchema: OptionsSchema\n\t\tui: GraphicsInterface\n\t\teventGenerator: EventWriter\n\t\tcwd: string\n\t\teventStore: EventStore\n\t\tskillStore: SkillStore\n\t\tdependencyService: DependencyService\n\t}) {\n\t\tthis.optionsSchema = options.optionsSchema\n\t\tthis.ui = options.ui\n\t\tthis.eventWriter = options.eventGenerator\n\t\tthis.cwd = options.cwd\n\t\tthis.eventStore = options.eventStore\n\t\tthis.skillStore = options.skillStore\n\t\tthis.dependencyService = options.dependencyService\n\t}\n\n\tpublic async fetchAndWriteContracts(\n\t\toptions: Options\n\t): Promise<FeatureActionResponse> {\n\t\tconst normalizedOptions = validateAndNormalizeUtil.validateAndNormalize(\n\t\t\tthis.optionsSchema,\n\t\t\toptions\n\t\t)\n\n\t\tconst { contractDestinationDir } = normalizedOptions\n\n\t\tconst resolvedDestination = diskUtil.resolvePath(\n\t\t\tthis.cwd,\n\t\t\tcontractDestinationDir\n\t\t)\n\n\t\tconst { errors, schemaTemplateItems, eventContractTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({\n\t\t\t\tshouldSyncOnlyCoreEvents: options.shouldSyncOnlyCoreEvents ?? false,\n\t\t\t\teventBuilderFile: normalizedOptions.eventBuilderFile,\n\t\t\t})\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tthis.ui.startLoading('Generating contracts...')\n\n\t\tconst files = await this.eventWriter.writeContracts(resolvedDestination, {\n\t\t\t...normalizedOptions,\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\tshouldImportCoreEvents: !options.shouldSyncOnlyCoreEvents,\n\t\t})\n\n\t\tawait this.deleteOrphanedEventContracts(\n\t\t\tresolvedDestination,\n\t\t\tfiles.map((a) => a.path)\n\t\t)\n\n\t\treturn {\n\t\t\tfiles,\n\t\t}\n\t}\n\n\tprivate async deleteOrphanedEventContracts(\n\t\tlookupDir: string,\n\t\texistingContracts: string[]\n\t) {\n\t\tconst matches = await globby(lookupDir + '/**/*.contract.ts')\n\t\tconst diff = matches.filter((m) => !existingContracts.includes(m))\n\n\t\tdiff.forEach((f) => diskUtil.deleteFile(f))\n\n\t\tdiskUtil.deleteEmptyDirs(lookupDir)\n\t}\n\n\tpublic async fetchContractsAndGenerateUniqueSchemas(\n\t\texistingSchemas: Schema[],\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t): Promise<FeatureActionResponse & { schemas?: Schema[] }> {\n\t\tconst { errors, schemaTemplateItems } =\n\t\t\tawait this.fetchAndBuildTemplateItems({ shouldSyncOnlyCoreEvents })\n\n\t\tif (errors && errors?.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors,\n\t\t\t}\n\t\t}\n\n\t\tconst filteredSchemas = this.filterSchemasBasedOnCallbackPayload(\n\t\t\texistingSchemas,\n\t\t\tschemaTemplateItems\n\t\t)\n\n\t\treturn {\n\t\t\tschemas: filteredSchemas,\n\t\t}\n\t}\n\n\tprivate filterSchemasBasedOnCallbackPayload(\n\t\texistingSchemas: Schema[],\n\t\tschemaTemplateItems: SchemaTemplateItem[]\n\t) {\n\t\tconst schemas = schemaTemplateItems.map((i) => i.schema)\n\t\tconst filteredSchemas = schemas.filter((schema) => {\n\t\t\tconst idWithVersion = normalizeSchemaToIdWithVersion(schema)\n\t\t\treturn !existingSchemas.find((s) =>\n\t\t\t\tisEqual(normalizeSchemaToIdWithVersion(s), idWithVersion)\n\t\t\t)\n\t\t})\n\n\t\treturn filteredSchemas\n\t}\n\n\tprivate async fetchAndBuildTemplateItems(options: {\n\t\tshouldSyncOnlyCoreEvents?: boolean\n\t\teventBuilderFile?: string\n\t}) {\n\t\tconst { shouldSyncOnlyCoreEvents, eventBuilderFile } = options\n\n\t\tthis.ui.startLoading('Loading skill details...')\n\n\t\tlet namespace: string | undefined =\n\t\t\tawait this.skillStore.loadCurrentSkillsNamespace()\n\n\t\tthis.ui.startLoading('Fetching event contracts...')\n\n\t\tconst namespaces = shouldSyncOnlyCoreEvents\n\t\t\t? ['core']\n\t\t\t: this.dependencyService.get().map((d) => d.namespace)\n\n\t\tconst contractResults = await this.eventStore.fetchEventContracts({\n\t\t\tlocalNamespace: namespace,\n\t\t\tnamespaces,\n\t\t\tdidUpdateHandler: (msg) => {\n\t\t\t\tthis.ui.startLoading(msg)\n\t\t\t},\n\t\t})\n\n\t\tif (contractResults.errors.length > 0) {\n\t\t\treturn {\n\t\t\t\terrors: contractResults.errors,\n\t\t\t\teventContractTemplateItems: [],\n\t\t\t\tschemaTemplateItems: [],\n\t\t\t}\n\t\t}\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tnamespace = undefined\n\t\t} else {\n\t\t\tnamespace = namesUtil.toKebab(namespace)\n\t\t}\n\n\t\tthis.ui.startLoading('Building contracts...')\n\n\t\tconst itemBuilder = new EventTemplateItemBuilder()\n\t\tconst { eventContractTemplateItems, schemaTemplateItems } =\n\t\t\titemBuilder.buildTemplateItems({\n\t\t\t\tcontracts: contractResults.contracts,\n\t\t\t\tlocalNamespace: namespace,\n\t\t\t\teventBuilderFile,\n\t\t\t})\n\n\t\treturn {\n\t\t\teventContractTemplateItems,\n\t\t\tschemaTemplateItems,\n\t\t\terrors: [],\n\t\t}\n\t}\n}\n"],"file":"EventContractBuilder.js"}
@@ -8,9 +8,10 @@ export interface EventStoreFetchEventContractsResponse {
8
8
  }
9
9
  export default class EventStore extends AbstractStore {
10
10
  name: string;
11
- protected static contractCache: any;
11
+ protected static contractCache: Record<string, any>;
12
12
  fetchEventContracts(options?: {
13
13
  localNamespace?: string;
14
+ namespaces?: string[];
14
15
  didUpdateHandler?: InternalUpdateHandler;
15
16
  }): Promise<EventStoreFetchEventContractsResponse>;
16
17
  static clearCache(): void;
@@ -109,16 +109,16 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
109
109
  key: "fetchEventContracts",
110
110
  value: function () {
111
111
  var _fetchEventContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(options) {
112
- var _ref, localNamespace, didUpdateHandler, contracts, localContract;
112
+ var _ref, localNamespace, didUpdateHandler, namespaces, contracts, localContract;
113
113
 
114
114
  return _regenerator["default"].wrap(function _callee$(_context) {
115
115
  while (1) {
116
116
  switch (_context.prev = _context.next) {
117
117
  case 0:
118
- _ref = options !== null && options !== void 0 ? options : {}, localNamespace = _ref.localNamespace, didUpdateHandler = _ref.didUpdateHandler;
118
+ _ref = options !== null && options !== void 0 ? options : {}, localNamespace = _ref.localNamespace, didUpdateHandler = _ref.didUpdateHandler, namespaces = _ref.namespaces;
119
119
  didUpdateHandler === null || didUpdateHandler === void 0 ? void 0 : didUpdateHandler('Pulling remote contracts...');
120
120
  _context.next = 4;
121
- return this.fetchRemoteContracts();
121
+ return this.fetchRemoteContracts(namespaces);
122
122
 
123
123
  case 4:
124
124
  contracts = _context.sent;
@@ -168,37 +168,45 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
168
168
  }, {
169
169
  key: "fetchRemoteContracts",
170
170
  value: function () {
171
- var _fetchRemoteContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
172
- var client, results, _eventResponseUtil$ge, contracts;
171
+ var _fetchRemoteContracts = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(namespaces) {
172
+ var _namespaces$join;
173
+
174
+ var key, client, results, _eventResponseUtil$ge, contracts;
173
175
 
174
176
  return _regenerator["default"].wrap(function _callee2$(_context2) {
175
177
  while (1) {
176
178
  switch (_context2.prev = _context2.next) {
177
179
  case 0:
178
- if (EventStore.contractCache) {
179
- _context2.next = 9;
180
+ key = (_namespaces$join = namespaces === null || namespaces === void 0 ? void 0 : namespaces.join('|')) !== null && _namespaces$join !== void 0 ? _namespaces$join : '_';
181
+
182
+ if (EventStore.contractCache[key]) {
183
+ _context2.next = 10;
180
184
  break;
181
185
  }
182
186
 
183
- _context2.next = 3;
187
+ _context2.next = 4;
184
188
  return this.connectToApi({
185
189
  shouldAuthAsCurrentSkill: true
186
190
  });
187
191
 
188
- case 3:
192
+ case 4:
189
193
  client = _context2.sent;
190
- _context2.next = 6;
191
- return client.emit('get-event-contracts::v2020_12_25');
194
+ _context2.next = 7;
195
+ return client.emit('get-event-contracts::v2020_12_25', {
196
+ target: {
197
+ namespaces: namespaces
198
+ }
199
+ });
192
200
 
193
- case 6:
201
+ case 7:
194
202
  results = _context2.sent;
195
203
  _eventResponseUtil$ge = _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(results), contracts = _eventResponseUtil$ge.contracts;
196
- EventStore.contractCache = contracts;
197
-
198
- case 9:
199
- return _context2.abrupt("return", (0, _lodash.cloneDeep)(EventStore.contractCache));
204
+ EventStore.contractCache[key] = contracts;
200
205
 
201
206
  case 10:
207
+ return _context2.abrupt("return", (0, _lodash.cloneDeep)(EventStore.contractCache[key]));
208
+
209
+ case 11:
202
210
  case "end":
203
211
  return _context2.stop();
204
212
  }
@@ -206,7 +214,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
206
214
  }, _callee2, this);
207
215
  }));
208
216
 
209
- function fetchRemoteContracts() {
217
+ function fetchRemoteContracts(_x2) {
210
218
  return _fetchRemoteContracts.apply(this, arguments);
211
219
  }
212
220
 
@@ -319,7 +327,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
319
327
  }, _callee3, null, [[0, 8]]);
320
328
  }));
321
329
 
322
- return function (_x4) {
330
+ return function (_x5) {
323
331
  return _ref2.apply(this, arguments);
324
332
  };
325
333
  }()));
@@ -420,7 +428,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
420
428
  }, _callee4, this, [[19, 23]]);
421
429
  }));
422
430
 
423
- function loadLocalContract(_x2, _x3) {
431
+ function loadLocalContract(_x3, _x4) {
424
432
  return _loadLocalContract.apply(this, arguments);
425
433
  }
426
434
 
@@ -454,7 +462,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
454
462
 
455
463
  _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(results);
456
464
 
457
- EventStore.contractCache = null;
465
+ EventStore.contractCache = {};
458
466
  return _context5.abrupt("return", results);
459
467
 
460
468
  case 9:
@@ -465,7 +473,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
465
473
  }, _callee5, this);
466
474
  }));
467
475
 
468
- function registerEventContract(_x5) {
476
+ function registerEventContract(_x6) {
469
477
  return _registerEventContract.apply(this, arguments);
470
478
  }
471
479
 
@@ -497,7 +505,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
497
505
 
498
506
  _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(results);
499
507
 
500
- EventStore.contractCache = null;
508
+ EventStore.contractCache = {};
501
509
 
502
510
  case 8:
503
511
  case "end":
@@ -507,7 +515,7 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
507
515
  }, _callee6, this);
508
516
  }));
509
517
 
510
- function unRegisterEvents(_x6) {
518
+ function unRegisterEvents(_x7) {
511
519
  return _unRegisterEvents.apply(this, arguments);
512
520
  }
513
521
 
@@ -516,12 +524,12 @@ var EventStore = /*#__PURE__*/function (_AbstractStore) {
516
524
  }], [{
517
525
  key: "clearCache",
518
526
  value: function clearCache() {
519
- EventStore.contractCache = null;
527
+ EventStore.contractCache = {};
520
528
  }
521
529
  }]);
522
530
  return EventStore;
523
531
  }(_AbstractStore2["default"]);
524
532
 
525
533
  exports["default"] = EventStore;
526
- (0, _defineProperty2["default"])(EventStore, "contractCache", void 0);
534
+ (0, _defineProperty2["default"])(EventStore, "contractCache", {});
527
535
  //# sourceMappingURL=EventStore.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/features/event/stores/EventStore.ts"],"names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","fetchRemoteContracts","contracts","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emit","results","eventResponseUtil","getFirstResponseOrThrow","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","diskUtil","resolvePath","cwd","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","join","filename","pathUtil","basename","eventKey","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","Object","keys","forEach","split","emitPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","payload","eventContract","AbstractStore"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: any\n\n\tpublic async fetchEventContracts(options?: {\n\t\tlocalNamespace?: string\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tconst contracts = await this.fetchRemoteContracts()\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tEventStore.contractCache = null\n\t}\n\n\tprivate async fetchRemoteContracts() {\n\t\tif (!EventStore.contractCache) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\t\t\tconst results = await client.emit('get-event-contracts::v2020_12_25')\n\t\t\tconst { contracts } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tEventStore.contractCache = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache)\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tconst localMatches = await globby(\n\t\t\tdiskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src',\n\t\t\t\t'events',\n\t\t\t\t'**/*.(builder|options).ts'\n\t\t\t)\n\t\t)\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = null\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = null\n\t}\n}\n"],"file":"EventStore.js"}
1
+ {"version":3,"sources":["../../../../src/features/event/stores/EventStore.ts"],"names":["eventFileNamesImportKeyMap","key","isSchema","EventStore","options","localNamespace","didUpdateHandler","namespaces","fetchRemoteContracts","contracts","loadLocalContract","localContract","filterOutLocalEventsFromRemoteContractsMutating","push","errors","join","contractCache","connectToApi","shouldAuthAsCurrentSkill","client","emit","target","results","eventResponseUtil","getFirstResponseOrThrow","remoteContracts","ns","namesUtil","toKebab","contract","sigs","eventContractUtil","getNamedEventSignatures","sig","eventNamespace","eventSignatures","fullyQualifiedEventName","diskUtil","resolvePath","cwd","localMatches","filesByFqenAndEventKey","length","Promise","all","map","match","eventDiskUtil","splitPathToEvent","eventName","version","fqen","eventNameUtil","filename","pathUtil","basename","eventKey","SpruceError","code","brokenProperty","originalError","matches","o","Service","bulkImport","importsInOrder","importsByName","idx","imported","Object","keys","forEach","split","emitPayloadSchema","payloadSchema","emitPayload","targetSchema","emitTarget","responsePayloadSchema","responsePayload","emitPermissionContract","emitPermissions","listenPermissionContract","listenPermissions","cleaned","eventContractCleanerUtil","cleanPayloadsAndPermissions","payload","eventContract","AbstractStore"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tEventContract,\n\tEventSignature,\n\tPermissionContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { Schema, validateSchema } from '@sprucelabs/schema'\nimport {\n\teventResponseUtil,\n\teventDiskUtil,\n\teventNameUtil,\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport globby from 'globby'\nimport { cloneDeep } from 'lodash'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractStore from '../../../stores/AbstractStore'\nimport { InternalUpdateHandler } from '../../../types/cli.types'\nimport { eventContractCleanerUtil } from '../../../utilities/eventContractCleaner.utility'\n\nexport interface EventStoreFetchEventContractsResponse {\n\terrors: SpruceError[]\n\tcontracts: EventContract[]\n}\n\ntype Options = Omit<\n\tEventSignature,\n\t| 'responsePayloadSchema'\n\t| 'emitPayloadSchema'\n\t| 'listenPermissionContract'\n\t| 'emitPermissionContract'\n>\n\ninterface EventImport {\n\toptions?: Options\n\temitPayload?: Schema\n\temitTarget?: Schema\n\tresponsePayload?: Schema\n\temitPermissions?: PermissionContract\n\tlistenPermissions?: PermissionContract\n}\n\nconst eventFileNamesImportKeyMap = {\n\t'event.options.ts': { key: 'options', isSchema: false },\n\t'emitPayload.builder.ts': { key: 'emitPayload', isSchema: true },\n\t'emitTarget.builder.ts': { key: 'emitTarget', isSchema: true },\n\t'responsePayload.builder.ts': { key: 'responsePayload', isSchema: true },\n\t'emitPermissions.builder.ts': { key: 'emitPermissions', isSchema: false },\n\t'listenPermissions.builder.ts': { key: 'listenPermissions', isSchema: false },\n}\n\nexport default class EventStore extends AbstractStore {\n\tpublic name = 'event'\n\tprotected static contractCache: Record<string, any> = {}\n\n\tpublic async fetchEventContracts(options?: {\n\t\tlocalNamespace?: string\n\t\tnamespaces?: string[]\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t}): Promise<EventStoreFetchEventContractsResponse> {\n\t\tconst { localNamespace, didUpdateHandler, namespaces } = options ?? {}\n\n\t\tdidUpdateHandler?.('Pulling remote contracts...')\n\n\t\tconst contracts = await this.fetchRemoteContracts(namespaces)\n\n\t\tconst localContract =\n\t\t\tlocalNamespace &&\n\t\t\t(await this.loadLocalContract(localNamespace, didUpdateHandler))\n\n\t\tif (localNamespace) {\n\t\t\tthis.filterOutLocalEventsFromRemoteContractsMutating(\n\t\t\t\tcontracts,\n\t\t\t\tlocalNamespace\n\t\t\t)\n\t\t}\n\n\t\tif (localContract) {\n\t\t\tcontracts.push(localContract)\n\t\t}\n\n\t\treturn {\n\t\t\tcontracts,\n\t\t\terrors: [],\n\t\t}\n\t}\n\n\tpublic static clearCache() {\n\t\tEventStore.contractCache = {}\n\t}\n\n\tprivate async fetchRemoteContracts(namespaces?: string[]) {\n\t\tconst key = namespaces?.join('|') ?? '_'\n\n\t\tif (!EventStore.contractCache[key]) {\n\t\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\t\tconst results = await client.emit('get-event-contracts::v2020_12_25', {\n\t\t\t\ttarget: {\n\t\t\t\t\tnamespaces,\n\t\t\t\t},\n\t\t\t})\n\n\t\t\tconst { contracts } = eventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\t\tEventStore.contractCache[key] = contracts\n\t\t}\n\n\t\treturn cloneDeep(EventStore.contractCache[key])\n\t}\n\n\tprivate filterOutLocalEventsFromRemoteContractsMutating(\n\t\tremoteContracts: EventContract[],\n\t\tlocalNamespace: string\n\t) {\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\n\t\tfor (const contract of remoteContracts) {\n\t\t\tconst sigs = eventContractUtil.getNamedEventSignatures(contract)\n\t\t\tfor (const sig of sigs) {\n\t\t\t\tif (sig.eventNamespace === ns) {\n\t\t\t\t\tdelete contract.eventSignatures[sig.fullyQualifiedEventName]\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async loadLocalContract(\n\t\tlocalNamespace: string,\n\t\tdidUpdateHandler?: InternalUpdateHandler\n\t): Promise<EventContract | null> {\n\t\tconst localMatches = await globby(\n\t\t\tdiskUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src',\n\t\t\t\t'events',\n\t\t\t\t'**/*.(builder|options).ts'\n\t\t\t)\n\t\t)\n\n\t\tconst ns = namesUtil.toKebab(localNamespace)\n\t\tconst eventSignatures: Record<string, EventSignature> = {}\n\t\tconst filesByFqenAndEventKey: {\n\t\t\tfqen: string\n\t\t\tisSchema: boolean\n\t\t\tmatch: string\n\t\t\teventKey: string\n\t\t}[] = []\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Importing ${localMatches.length} local event signature files...`\n\t\t)\n\n\t\tawait Promise.all(\n\t\t\tlocalMatches.map(async (match) => {\n\t\t\t\tlet fqen: string | undefined\n\t\t\t\tlet eventKey: keyof EventImport | undefined\n\n\t\t\t\ttry {\n\t\t\t\t\tconst { eventName, version } = eventDiskUtil.splitPathToEvent(match)\n\t\t\t\t\tfqen = eventNameUtil.join({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\tversion,\n\t\t\t\t\t\teventNamespace: ns,\n\t\t\t\t\t})\n\n\t\t\t\t\tconst filename = pathUtil.basename(\n\t\t\t\t\t\tmatch\n\t\t\t\t\t) as keyof typeof eventFileNamesImportKeyMap\n\n\t\t\t\t\tconst map = eventFileNamesImportKeyMap[filename]\n\n\t\t\t\t\tif (map) {\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\teventKey = map.key\n\n\t\t\t\t\t\tfilesByFqenAndEventKey.push({\n\t\t\t\t\t\t\tfqen,\n\t\t\t\t\t\t\tisSchema: map.isSchema,\n\t\t\t\t\t\t\tmatch,\n\t\t\t\t\t\t\teventKey: eventKey as string,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen ?? 'Bad event name',\n\t\t\t\t\t\tbrokenProperty: eventKey ?? '*** major failure ***',\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\n\t\tconst matches = filesByFqenAndEventKey.map((o) => o.match)\n\t\tconst importsInOrder = (await this.Service('import').bulkImport(\n\t\t\tmatches\n\t\t)) as Record<string, any>[]\n\t\tconst importsByName: Record<string, EventImport> = {}\n\n\t\tfor (let idx = 0; idx < filesByFqenAndEventKey.length; idx++) {\n\t\t\tconst imported = importsInOrder[idx]\n\t\t\tconst { fqen, eventKey, isSchema } = filesByFqenAndEventKey[idx]\n\n\t\t\tif (isSchema) {\n\t\t\t\ttry {\n\t\t\t\t\tvalidateSchema(imported)\n\t\t\t\t} catch (err: any) {\n\t\t\t\t\tthrow new SpruceError({\n\t\t\t\t\t\tcode: 'INVALID_EVENT_CONTRACT',\n\t\t\t\t\t\tfullyQualifiedEventName: fqen,\n\t\t\t\t\t\tbrokenProperty: eventKey,\n\t\t\t\t\t\toriginalError: err,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!importsByName[fqen]) {\n\t\t\t\timportsByName[fqen] = {}\n\t\t\t}\n\n\t\t\t//@ts-ignore\n\t\t\timportsByName[fqen][eventKey] = imported\n\t\t}\n\n\t\tObject.keys(importsByName).forEach((fqen) => {\n\t\t\tconst imported = importsByName[fqen]\n\t\t\tconst { eventName } = eventNameUtil.split(fqen)\n\t\t\teventSignatures[fqen] = {\n\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\teventName,\n\t\t\t\t\tpayloadSchema: imported.emitPayload,\n\t\t\t\t\ttargetSchema: imported.emitTarget,\n\t\t\t\t}),\n\t\t\t\tresponsePayloadSchema: imported.responsePayload,\n\t\t\t\temitPermissionContract: imported.emitPermissions,\n\t\t\t\tlistenPermissionContract: imported.listenPermissions,\n\t\t\t\t...imported.options,\n\t\t\t}\n\t\t})\n\n\t\tdidUpdateHandler?.(\n\t\t\t`Loaded ${Object.keys(eventSignatures).length} local event signatures...`\n\t\t)\n\n\t\tif (Object.keys(eventSignatures).length > 0) {\n\t\t\tconst cleaned = eventContractCleanerUtil.cleanPayloadsAndPermissions({\n\t\t\t\teventSignatures,\n\t\t\t})\n\n\t\t\tvalidateEventContract(cleaned)\n\n\t\t\treturn cleaned\n\t\t}\n\n\t\treturn null\n\t}\n\n\tpublic async registerEventContract(options: {\n\t\teventContract: EventContract\n\t}) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('register-events::v2020_12_25', {\n\t\t\tpayload: {\n\t\t\t\tcontract: options.eventContract,\n\t\t\t},\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\n\t\treturn results\n\t}\n\n\tpublic async unRegisterEvents(\n\t\toptions: SpruceSchemas.Mercury.v2020_12_25.UnregisterEventsEmitPayload\n\t) {\n\t\tconst client = await this.connectToApi({ shouldAuthAsCurrentSkill: true })\n\n\t\tconst results = await client.emit('unregister-events::v2020_12_25', {\n\t\t\tpayload: options,\n\t\t})\n\n\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\n\t\tEventStore.contractCache = {}\n\t}\n}\n"],"file":"EventStore.js"}
@@ -31,6 +31,8 @@ var _path = _interopRequireDefault(require("path"));
31
31
 
32
32
  var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
33
33
 
34
+ var _uniq = _interopRequireDefault(require("lodash/uniq"));
35
+
34
36
  var _syncSchemasOptions = _interopRequireDefault(require("../../../.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema"));
35
37
 
36
38
  var _SpruceError = _interopRequireDefault(require("../../../errors/SpruceError"));
@@ -274,11 +276,11 @@ var SyncAction = /*#__PURE__*/function (_AbstractAction) {
274
276
  while (1) {
275
277
  switch (_context2.prev = _context2.next) {
276
278
  case 0:
277
- modules = schemaTemplateItems.map(function (item) {
279
+ modules = (0, _uniq["default"])(schemaTemplateItems.map(function (item) {
278
280
  return item.importFrom;
279
281
  }).filter(function (i) {
280
282
  return !!i;
281
- });
283
+ }));
282
284
  notInstalled = [];
283
285
  pkg = this.Service('pkg');
284
286
  _iterator = _createForOfIteratorHelper(modules);