@sprucelabs/spruce-cli 15.4.12 → 16.0.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 (456) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
  3. package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
  4. package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
  5. package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
  6. package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
  7. package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
  8. package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
  9. package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
  10. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
  11. package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
  12. package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
  13. package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
  14. package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
  15. package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
  16. package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
  17. package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
  18. package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
  19. package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
  20. package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
  21. package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
  22. package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
  23. package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
  24. package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
  25. package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
  26. package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
  27. package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
  28. package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
  29. package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
  30. package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
  31. package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
  32. package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
  33. package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
  34. package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
  35. package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
  36. package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
  37. package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
  38. package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
  39. package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
  40. package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
  41. package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
  42. package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
  43. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  44. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  45. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  46. package/build/.spruce/events/heartwood/listViews.v2021_02_11.contract.js.map +1 -1
  47. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
  48. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
  49. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
  50. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  51. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
  52. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
  53. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
  54. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
  55. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  56. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
  57. package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
  58. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  62. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
  63. package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
  64. package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
  65. package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
  66. package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
  67. package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
  68. package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
  69. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
  70. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
  71. package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
  72. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  73. package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
  74. package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
  75. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
  76. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
  77. package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
  78. package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
  79. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
  80. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
  81. package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
  82. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
  83. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
  84. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
  85. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
  86. package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
  87. package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
  88. package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
  89. package/build/GlobalEmitter.js.map +1 -1
  90. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  91. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  92. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  93. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  94. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  95. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
  96. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  97. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  98. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  99. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  100. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  101. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
  102. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  103. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  104. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  105. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
  106. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  107. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
  108. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
  109. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
  110. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  111. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  112. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  113. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
  114. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  115. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  116. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  117. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
  118. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  119. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  120. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  121. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  122. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  123. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  124. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  125. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  126. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  127. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  128. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  129. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  130. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  131. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  132. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  133. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  134. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  135. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  136. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  137. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  138. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  139. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  140. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  141. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  142. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  143. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  144. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  145. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  146. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  147. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  148. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  149. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  150. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  151. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  152. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  153. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  154. package/build/__tests__/behavioral/tests/CreatingATest.test.js +3 -3
  155. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  156. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  157. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  158. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  159. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  160. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  161. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  162. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  163. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  164. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  165. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  166. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  167. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  168. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  169. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  170. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  171. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  172. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  173. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  174. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  175. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  176. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  177. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  178. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  179. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  180. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  181. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  182. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  183. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  184. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  185. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  186. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  187. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  188. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  189. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  190. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  191. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  192. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  193. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  194. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  195. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  196. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  197. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  198. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  199. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  200. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  201. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  202. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  203. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  204. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  205. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  206. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  207. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  208. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  209. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  210. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  211. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  212. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  213. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  214. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  215. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  216. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  217. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  218. package/build/__tests__/support/scripts/first.script.js.map +1 -1
  219. package/build/addons/filePrompt.addon.js.map +1 -1
  220. package/build/cli.js.map +1 -1
  221. package/build/components/FormComponent.js.map +1 -1
  222. package/build/components/QuizComponent.js.map +1 -1
  223. package/build/errors/SpruceError.js.map +1 -1
  224. package/build/errors/actionCancelled.builder.js.map +1 -1
  225. package/build/errors/bootError.builder.js.map +1 -1
  226. package/build/errors/buildFailed.builder.js.map +1 -1
  227. package/build/errors/cacheNotEnabled.builder.js.map +1 -1
  228. package/build/errors/commandAborted.builder.js.map +1 -1
  229. package/build/errors/commandBlocked.builder.js.map +1 -1
  230. package/build/errors/commandNotImplemented.builder.js.map +1 -1
  231. package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
  232. package/build/errors/dependencyExists.builder.js.map +1 -1
  233. package/build/errors/deployFailed.builder.js.map +1 -1
  234. package/build/errors/directoryEmpty.builder.js.map +1 -1
  235. package/build/errors/directoryNotSkill.builder.js.map +1 -1
  236. package/build/errors/dockerNotStarted.builder.js.map +1 -1
  237. package/build/errors/executingCommandFailed.builder.js.map +1 -1
  238. package/build/errors/failedToImport.builder.js.map +1 -1
  239. package/build/errors/featureNotInstalled.builder.js.map +1 -1
  240. package/build/errors/fileExists.builder.js.map +1 -1
  241. package/build/errors/generic.builder.js.map +1 -1
  242. package/build/errors/invalidCommand.builder.js.map +1 -1
  243. package/build/errors/invalidEventContract.builder.js.map +1 -1
  244. package/build/errors/invalidFeatureCode.builder.js.map +1 -1
  245. package/build/errors/invalidTestDirectory.builder.js.map +1 -1
  246. package/build/errors/lintFailed.builder.js.map +1 -1
  247. package/build/errors/mercuryResponseError.builder.js.map +1 -1
  248. package/build/errors/missingDependencies.builder.js.map +1 -1
  249. package/build/errors/noOrganizationsFound.builder.js.map +1 -1
  250. package/build/errors/noSkillsRegistered.builder.js.map +1 -1
  251. package/build/errors/notImplemented.builder.js.map +1 -1
  252. package/build/errors/notLoggedIn.builder.js.map +1 -1
  253. package/build/errors/schemaExists.builder.js.map +1 -1
  254. package/build/errors/schemaFailedToImport.builder.js.map +1 -1
  255. package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
  256. package/build/errors/skillNotFound.builder.js.map +1 -1
  257. package/build/errors/skillNotRegistered.builder.js.map +1 -1
  258. package/build/errors/skillViewExists.builder.js.map +1 -1
  259. package/build/errors/storeExists.builder.js.map +1 -1
  260. package/build/errors/testFailed.builder.js.map +1 -1
  261. package/build/errors/themeExists.builder.js.map +1 -1
  262. package/build/errors/transportAlreadyExists.builder.js.map +1 -1
  263. package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
  264. package/build/features/AbstractAction.js.map +1 -1
  265. package/build/features/AbstractFeature.js.map +1 -1
  266. package/build/features/ActionExecuter.js.map +1 -1
  267. package/build/features/ActionFactory.js.map +1 -1
  268. package/build/features/ActionQuestionAsker.js.map +1 -1
  269. package/build/features/FeatureCommandAttacher.js.map +1 -1
  270. package/build/features/FeatureInstaller.js.map +1 -1
  271. package/build/features/OverrideActionDecorator.js.map +1 -1
  272. package/build/features/cache/CacheFeature.js.map +1 -1
  273. package/build/features/cache/actions/DisableAction.js.map +1 -1
  274. package/build/features/cache/actions/EnableAction.js.map +1 -1
  275. package/build/features/conversation/ConversationFeature.js.map +1 -1
  276. package/build/features/conversation/actions/TestAction.js.map +1 -1
  277. package/build/features/conversation/stores/ConversationStore.js.map +1 -1
  278. package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
  279. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  280. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  281. package/build/features/dependencies/actions/ManageAction.js.map +1 -1
  282. package/build/features/deploy/DeployFeature.js.map +1 -1
  283. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  284. package/build/features/deploy/writers/DeployWriter.js.map +1 -1
  285. package/build/features/error/ErrorFeature.js.map +1 -1
  286. package/build/features/error/ParentTestFinder.js.map +1 -1
  287. package/build/features/error/actions/CreateAction.js.map +1 -1
  288. package/build/features/error/actions/SyncAction.js.map +1 -1
  289. package/build/features/error/writers/ErrorWriter.js.map +1 -1
  290. package/build/features/event/EventFeature.js.map +1 -1
  291. package/build/features/event/actions/CreateAction.js.map +1 -1
  292. package/build/features/event/actions/ListenAction.js.map +1 -1
  293. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  294. package/build/features/event/actions/SyncAction.js.map +1 -1
  295. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  296. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  297. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
  298. package/build/features/event/stores/EventStore.js.map +1 -1
  299. package/build/features/event/stores/ListenerStore.js.map +1 -1
  300. package/build/features/event/writers/EventWriter.js.map +1 -1
  301. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  302. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  303. package/build/features/feature.utilities.js.map +1 -1
  304. package/build/features/features.types.js.map +1 -1
  305. package/build/features/log/LogFeature.js.map +1 -1
  306. package/build/features/log/actions/CreateTransportAction.js.map +1 -1
  307. package/build/features/log/writers/LogWriter.js.map +1 -1
  308. package/build/features/node/NodeFeature.js.map +1 -1
  309. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  310. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  311. package/build/features/node/writers/NodeWriter.js.map +1 -1
  312. package/build/features/onboard/OnboardFeature.js.map +1 -1
  313. package/build/features/onboard/ScriptLoader.js.map +1 -1
  314. package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
  315. package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
  316. package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
  317. package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
  318. package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
  319. package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
  320. package/build/features/organization/OrganizationFeature.js.map +1 -1
  321. package/build/features/organization/stores/OrganizationStore.js.map +1 -1
  322. package/build/features/person/PersonFeature.js.map +1 -1
  323. package/build/features/person/actions/LoginAction.js.map +1 -1
  324. package/build/features/person/actions/LogoutAction.js.map +1 -1
  325. package/build/features/person/actions/WhoamiAction.js.map +1 -1
  326. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  327. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  328. package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
  329. package/build/features/schema/SchemaFeature.js.map +1 -1
  330. package/build/features/schema/ValueTypeBuilder.js.map +1 -1
  331. package/build/features/schema/actions/CreateAction.js.map +1 -1
  332. package/build/features/schema/actions/SyncAction.js.map +1 -1
  333. package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
  334. package/build/features/schema/services/SchemaService.js.map +1 -1
  335. package/build/features/schema/stores/SchemaStore.d.ts +2 -1
  336. package/build/features/schema/stores/SchemaStore.js +2 -1
  337. package/build/features/schema/stores/SchemaStore.js.map +1 -1
  338. package/build/features/schema/utilities/schema.utility.js.map +1 -1
  339. package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
  340. package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
  341. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  342. package/build/features/skill/SkillFeature.js.map +1 -1
  343. package/build/features/skill/actions/BootAction.js.map +1 -1
  344. package/build/features/skill/actions/CreateAction.js.map +1 -1
  345. package/build/features/skill/actions/DashboardAction.js.map +1 -1
  346. package/build/features/skill/actions/LoginAction.js.map +1 -1
  347. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  348. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  349. package/build/features/skill/stores/SkillStore.js.map +1 -1
  350. package/build/features/skill/updaters/Updater.js.map +1 -1
  351. package/build/features/skill/writers/SkillWriter.js.map +1 -1
  352. package/build/features/store/StoreFeature.js.map +1 -1
  353. package/build/features/store/actions/CreateAction.js.map +1 -1
  354. package/build/features/store/actions/SyncAction.js.map +1 -1
  355. package/build/features/store/stores/StoreStore.js.map +1 -1
  356. package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
  357. package/build/features/store/writers/StoreWriter.js.map +1 -1
  358. package/build/features/test/TestFeature.js.map +1 -1
  359. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  360. package/build/features/test/TestReporter.js.map +1 -1
  361. package/build/features/test/TestRunner.js.map +1 -1
  362. package/build/features/test/actions/CreateAction.js.map +1 -1
  363. package/build/features/test/actions/SetupAction.js.map +1 -1
  364. package/build/features/test/actions/TestAction.js.map +1 -1
  365. package/build/features/test/writers/TestWriter.js.map +1 -1
  366. package/build/features/validateAndNormalize.utility.js.map +1 -1
  367. package/build/features/view/ViewFeature.js.map +1 -1
  368. package/build/features/view/actions/CreateAction.js.map +1 -1
  369. package/build/features/view/actions/CreateThemeAction.js.map +1 -1
  370. package/build/features/view/actions/SyncAction.js.map +1 -1
  371. package/build/features/view/actions/WatchAction.js.map +1 -1
  372. package/build/features/view/stores/ViewStore.js.map +1 -1
  373. package/build/features/view/writers/ViewWriter.js.map +1 -1
  374. package/build/features/vscode/VsCodeFeature.js.map +1 -1
  375. package/build/features/vscode/services/VsCodeService.js.map +1 -1
  376. package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
  377. package/build/features/watch/WatchFeature.js.map +1 -1
  378. package/build/index.js.map +1 -1
  379. package/build/interfaces/SpyInterface.js +0 -1
  380. package/build/interfaces/SpyInterface.js.map +1 -1
  381. package/build/interfaces/TerminalInterface.js.map +1 -1
  382. package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
  383. package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
  384. package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
  385. package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
  386. package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
  387. package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
  388. package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
  389. package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
  390. package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
  391. package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
  392. package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
  393. package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
  394. package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
  395. package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
  396. package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
  397. package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
  398. package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
  399. package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
  400. package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
  401. package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
  402. package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
  403. package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
  404. package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
  405. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  406. package/build/services/CommandService.js.map +1 -1
  407. package/build/services/GameService.js.map +1 -1
  408. package/build/services/ImportService.js.map +1 -1
  409. package/build/services/LintService.js.map +1 -1
  410. package/build/services/PkgService.js.map +1 -1
  411. package/build/services/ServiceFactory.js.map +1 -1
  412. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  413. package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
  414. package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
  415. package/build/tests/AbstractCliTest.js.map +1 -1
  416. package/build/tests/AbstractEventTest.js.map +1 -1
  417. package/build/tests/AbstractSchemaTest.js.map +1 -1
  418. package/build/tests/AbstractTestTest.js.map +1 -1
  419. package/build/tests/CommandFaker.js.map +1 -1
  420. package/build/tests/JestJsonParser.js.map +1 -1
  421. package/build/tests/buildTestCache.js.map +1 -1
  422. package/build/tests/cleanTestCache.js.map +1 -1
  423. package/build/tests/cleanTestData.js.map +1 -1
  424. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  425. package/build/tests/fixtures/MercuryFixture.js.map +1 -1
  426. package/build/tests/fixtures/PersonFixture.js.map +1 -1
  427. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  428. package/build/tests/utilities/test.utility.js.map +1 -1
  429. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  430. package/build/utilities/action.utility.js.map +1 -1
  431. package/build/utilities/commander.utility.js.map +1 -1
  432. package/build/utilities/eventContractCleaner.utility.js.map +1 -1
  433. package/build/utilities/form.utility.js.map +1 -1
  434. package/build/utilities/introspection.utility.js.map +1 -1
  435. package/build/utilities/tsConfig.utility.js.map +1 -1
  436. package/build/widgets/Theme.js.map +1 -1
  437. package/build/widgets/WidgetFactory.js.map +1 -1
  438. package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
  439. package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
  440. package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
  441. package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
  442. package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
  443. package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
  444. package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
  445. package/build/widgets/types/input.types.js.map +1 -1
  446. package/build/widgets/types/menuBar.types.js.map +1 -1
  447. package/build/widgets/types/text.types.js.map +1 -1
  448. package/build/widgets/types/window.types.js.map +1 -1
  449. package/build/writers/AbstractWriter.js.map +1 -1
  450. package/package.json +34 -34
  451. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -2
  452. package/src/features/schema/stores/SchemaStore.ts +4 -2
  453. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.d.ts +0 -1
  454. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js +0 -14
  455. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +0 -1
  456. package/src/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"KeepingErrorClassInSync.test.js","names":["KeepsErrorClassInSyncTest","installErrorFeature","createAction","Action","execute","nameReadable","nameCamel","results","testUtil","assertFileByNameInGeneratedFiles","files","assert","doesInclude","name","action","file","Service","check","path","match","contents","diskUtil","readFile","AbstractErrorTest"],"sources":["../../../../src/__tests__/behavioral/errors/KeepingErrorClassInSync.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractErrorTest from '../../../tests/AbstractErrorTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepsErrorClassInSyncTest extends AbstractErrorTest {\n\t@test()\n\tprotected static async errorFileShouldBeCreatedAndPassed() {\n\t\tawait this.installErrorFeature('errors')\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tconst results = await createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t})\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(/SpruceError/, results.files)\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'SpruceError.ts',\n\t\t\taction: 'updated',\n\t\t})\n\n\t\tfor (const file of results.files ?? []) {\n\t\t\tawait this.Service('typeChecker').check(file.path)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async errorFileShouldBeUpdated() {\n\t\tawait this.installErrorFeature('errors')\n\t\tconst createAction = this.Action('error', 'create')\n\t\tawait createAction.execute({\n\t\t\tnameCamel: 'testError1',\n\t\t\tnameReadable: 'Test error 1',\n\t\t})\n\t\tconst results = await createAction.execute({\n\t\t\tnameCamel: 'testError2',\n\t\t\tnameReadable: 'Test Error 2',\n\t\t})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/SpruceError/,\n\t\t\tresults.files\n\t\t)\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(contents, \"'TEST_ERROR_1'\")\n\t\tassert.doesInclude(contents, \"'TEST_ERROR_2'\")\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;IAEqBA,yB,WACnB,iB,UAsBA,iB;;;;;;;;;;;;;6HAtBD;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAGOC,YAHP,GAGsB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAHtB;gBAAA;gBAAA,OAKuBD,YAAY,CAACE,OAAb,CAAqB;kBAC1CC,YAAY,EAAE,YAD4B;kBAE1CC,SAAS,EAAE;gBAF+B,CAArB,CALvB;;cAAA;gBAKOC,OALP;;gBAUCC,kBAASC,gCAAT,CAA0C,aAA1C,EAAyDF,OAAO,CAACG,KAAjE;;gBAEAC,aAAOC,WAAP,mBAAmBL,OAAO,CAACG,KAA3B,2DAAoC,EAApC,EAAwC;kBACvCG,IAAI,EAAE,gBADiC;kBAEvCC,MAAM,EAAE;gBAF+B,CAAxC;;gBAZD,0DAiBoBP,OAAO,CAACG,KAjB5B,6DAiBqC,EAjBrC;gBAAA;;gBAAA;;cAAA;gBAAA;kBAAA;kBAAA;gBAAA;;gBAiBYK,IAjBZ;gBAAA;gBAAA,OAkBQ,KAAKC,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCF,IAAI,CAACG,IAAvC,CAlBR;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;;gBAAA;;cAAA;gBAAA;;gBAAA;;gBAAA;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oHAsBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKjB,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAGOC,YAHP,GAGsB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAHtB;gBAAA;gBAAA,OAIOD,YAAY,CAACE,OAAb,CAAqB;kBAC1BE,SAAS,EAAE,YADe;kBAE1BD,YAAY,EAAE;gBAFY,CAArB,CAJP;;cAAA;gBAAA;gBAAA,OAQuBH,YAAY,CAACE,OAAb,CAAqB;kBAC1CE,SAAS,EAAE,YAD+B;kBAE1CD,YAAY,EAAE;gBAF4B,CAArB,CARvB;;cAAA;gBAQOE,OARP;gBAaOY,KAbP,GAaeX,kBAASC,gCAAT,CACb,aADa,EAEbF,OAAO,CAACG,KAFK,CAbf;gBAiBOU,QAjBP,GAiBkBC,2BAASC,QAAT,CAAkBH,KAAlB,CAjBlB;;gBAmBCR,aAAOC,WAAP,CAAmBQ,QAAnB,EAA6B,gBAA7B;;gBACAT,aAAOC,WAAP,CAAmBQ,QAAnB,EAA6B,gBAA7B;;gBApBD;gBAAA,OAsBO,KAAKJ,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCE,KAAlC,CAtBP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAvBsDI,8B"}
1
+ {"version":3,"file":"KeepingErrorClassInSync.test.js","names":["KeepsErrorClassInSyncTest","test","installErrorFeature","createAction","Action","execute","nameReadable","nameCamel","results","testUtil","assertFileByNameInGeneratedFiles","files","assert","doesInclude","name","action","file","Service","check","path","match","contents","diskUtil","readFile","AbstractErrorTest"],"sources":["../../../../src/__tests__/behavioral/errors/KeepingErrorClassInSync.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractErrorTest from '../../../tests/AbstractErrorTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepsErrorClassInSyncTest extends AbstractErrorTest {\n\t@test()\n\tprotected static async errorFileShouldBeCreatedAndPassed() {\n\t\tawait this.installErrorFeature('errors')\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tconst results = await createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t})\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(/SpruceError/, results.files)\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'SpruceError.ts',\n\t\t\taction: 'updated',\n\t\t})\n\n\t\tfor (const file of results.files ?? []) {\n\t\t\tawait this.Service('typeChecker').check(file.path)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async errorFileShouldBeUpdated() {\n\t\tawait this.installErrorFeature('errors')\n\t\tconst createAction = this.Action('error', 'create')\n\t\tawait createAction.execute({\n\t\t\tnameCamel: 'testError1',\n\t\t\tnameReadable: 'Test error 1',\n\t\t})\n\t\tconst results = await createAction.execute({\n\t\t\tnameCamel: 'testError2',\n\t\t\tnameReadable: 'Test Error 2',\n\t\t})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/SpruceError/,\n\t\t\tresults.files\n\t\t)\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(contents, \"'TEST_ERROR_1'\")\n\t\tassert.doesInclude(contents, \"'TEST_ERROR_2'\")\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;IAEqBA,yB,WACnB,IAAAC,UAAA,G,UAsBA,IAAAA,UAAA,G;;;;;;;;;;;;;6HAtBD;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAGOC,YAHP,GAGsB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAHtB;gBAAA;gBAAA,OAKuBD,YAAY,CAACE,OAAb,CAAqB;kBAC1CC,YAAY,EAAE,YAD4B;kBAE1CC,SAAS,EAAE;gBAF+B,CAArB,CALvB;;cAAA;gBAKOC,OALP;;gBAUCC,iBAAA,CAASC,gCAAT,CAA0C,aAA1C,EAAyDF,OAAO,CAACG,KAAjE;;gBAEAC,YAAA,CAAOC,WAAP,mBAAmBL,OAAO,CAACG,KAA3B,2DAAoC,EAApC,EAAwC;kBACvCG,IAAI,EAAE,gBADiC;kBAEvCC,MAAM,EAAE;gBAF+B,CAAxC;;gBAZD,0DAiBoBP,OAAO,CAACG,KAjB5B,6DAiBqC,EAjBrC;gBAAA;;gBAAA;;cAAA;gBAAA;kBAAA;kBAAA;gBAAA;;gBAiBYK,IAjBZ;gBAAA;gBAAA,OAkBQ,KAAKC,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCF,IAAI,CAACG,IAAvC,CAlBR;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;;cAAA;gBAAA;gBAAA;;gBAAA;;cAAA;gBAAA;;gBAAA;;gBAAA;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oHAsBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKjB,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAGOC,YAHP,GAGsB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAHtB;gBAAA;gBAAA,OAIOD,YAAY,CAACE,OAAb,CAAqB;kBAC1BE,SAAS,EAAE,YADe;kBAE1BD,YAAY,EAAE;gBAFY,CAArB,CAJP;;cAAA;gBAAA;gBAAA,OAQuBH,YAAY,CAACE,OAAb,CAAqB;kBAC1CE,SAAS,EAAE,YAD+B;kBAE1CD,YAAY,EAAE;gBAF4B,CAArB,CARvB;;cAAA;gBAQOE,OARP;gBAaOY,KAbP,GAaeX,iBAAA,CAASC,gCAAT,CACb,aADa,EAEbF,OAAO,CAACG,KAFK,CAbf;gBAiBOU,QAjBP,GAiBkBC,0BAAA,CAASC,QAAT,CAAkBH,KAAlB,CAjBlB;;gBAmBCR,YAAA,CAAOC,WAAP,CAAmBQ,QAAnB,EAA6B,gBAA7B;;gBACAT,YAAA,CAAOC,WAAP,CAAmBQ,QAAnB,EAA6B,gBAA7B;;gBApBD;gBAAA,OAsBO,KAAKJ,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCE,KAAlC,CAtBP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAvBsDI,8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"KeepingErrorsInSync.test.js","names":["KeepingErrorsInSyncTest","Cli","assert","isFunction","Action","execute","installErrorFeature","createAction","nameReadable","nameCamel","pkg","Service","uninstall","ImportService","clearCache","results","isTruthy","errors","isLength","optionsMatch","testUtil","assertFileByNameInGeneratedFiles","files","check","typesMatch","optionsContent","diskUtil","readFile","doesInclude","typesContent","builderMatch","deleteFile","isFalse","doesFileExist","resolveHashSprucePath","testError1","testError1SchemaMatch","testError1BuilderMatch","isTrue","errorTypesFile","doesNotInclude","source","resolveTestPath","destination","resolvePath","copyDir","typeChecker","errorOptionsFile","contents","errorClassFile","classContents","syncResults","assertValidActionResponseFiles","parentSchema","parentSchemaContents","cwd","shouldFetchCoreSchemas","isFalsy","writeFile","path","syncAction","AbstractErrorTest"],"sources":["../../../../src/__tests__/behavioral/errors/KeepingErrorsInSync.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { assert, test } from '@sprucelabs/test'\nimport ImportService from '../../../services/ImportService'\nimport AbstractErrorTest from '../../../tests/AbstractErrorTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingErrorsInSyncTest extends AbstractErrorTest {\n\t@test()\n\tprotected static async hasSyncErrorAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('error', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async returnsHelpfulErrorWhenTsNodeIsRemoved() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tawait createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t})\n\n\t\tconst pkg = this.Service('pkg')\n\t\tawait pkg.uninstall('ts-node')\n\n\t\tImportService.clearCache()\n\n\t\tconst results = await this.Action('error', 'sync').execute({})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\t}\n\n\t@test()\n\tprotected static async errorsStayInSyncWhenSchemasAreDeleted() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tconst results = await createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t})\n\n\t\tconst optionsMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/^options\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(optionsMatch)\n\n\t\tconst typesMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/^errors\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\t// should contain our test error\n\t\tlet optionsContent = diskUtil.readFile(optionsMatch)\n\t\tassert.doesInclude(optionsContent, /SpruceErrors\\.TestingErrors\\.TestError/)\n\n\t\tlet typesContent = diskUtil.readFile(typesMatch)\n\t\tassert.doesInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError/gis\n\t\t)\n\n\t\t// delete our testError\n\t\tconst builderMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/testError\\.builder/,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.deleteFile(builderMatch)\n\n\t\t// resync\n\t\tawait this.Action('error', 'sync').execute({})\n\n\t\t// #spruce/errors should not exist\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolveHashSprucePath('errors')))\n\n\t\t// build 2 errors\n\t\tconst testError1 = await createAction.execute({\n\t\t\tnameCamel: 'testError1',\n\t\t\tnameReadable: 'Test error 1',\n\t\t})\n\n\t\tconst testError1SchemaMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testError1.schema',\n\t\t\ttestError1.files\n\t\t)\n\n\t\tconst testError1BuilderMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testError1.builder',\n\t\t\ttestError1.files\n\t\t)\n\n\t\tawait createAction.execute({\n\t\t\tnameCamel: 'testError2',\n\t\t\tnameReadable: 'Test error 2',\n\t\t})\n\n\t\t// #spruce/errors should exist\n\t\tassert.isTrue(diskUtil.doesFileExist(this.resolveHashSprucePath('errors')))\n\n\t\ttypesContent = diskUtil.readFile(this.errorTypesFile)\n\n\t\t// types should include both\n\t\tassert.doesInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError1/gis\n\t\t)\n\t\tassert.doesInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError2/gis\n\t\t)\n\n\t\t// definition file for testError1\n\t\tassert.isTrue(diskUtil.doesFileExist(testError1SchemaMatch))\n\n\t\t// delete builder 1\n\t\tdiskUtil.deleteFile(testError1BuilderMatch)\n\t\tassert.isFalse(diskUtil.doesFileExist(testError1BuilderMatch))\n\n\t\t// sync\n\t\tawait this.Action('error', 'sync').execute({})\n\n\t\t// types should no longer include test error 1\n\t\ttypesContent = diskUtil.readFile(this.errorTypesFile)\n\t\tassert.doesNotInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError1/\n\t\t)\n\n\t\t// the definition file should be gone now\n\t\tassert.isFalse(diskUtil.doesFileExist(testError1SchemaMatch))\n\t}\n\n\t@test()\n\tprotected static async canHandleNestedSchemasWithoutAddingThemToOptions() {\n\t\tawait this.installErrorFeature('errors')\n\t\tconst source = this.resolveTestPath('nested_error_schemas')\n\t\tconst destination = this.resolvePath('src/errors')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\n\t\tconst results = await this.Action('error', 'sync').execute({})\n\t\tconst errorTypesFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/errors\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst typeChecker = this.Service('typeChecker')\n\t\tawait typeChecker.check(errorTypesFile)\n\n\t\tconst errorOptionsFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/options\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(errorOptionsFile)\n\t\tassert.doesNotInclude(contents, 'INestedSchema')\n\n\t\tconst errorClassFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'SpruceError.ts',\n\t\t\tresults.files\n\t\t)\n\t\tlet classContents = diskUtil.readFile(errorClassFile)\n\t\tassert.doesNotInclude(classContents, /NESTED_SCHEMA/)\n\n\t\tconst createAction = this.Action('error', 'create')\n\t\tawait createAction.execute({\n\t\t\tnameCamel: 'testError2',\n\t\t\tnameReadable: 'Test error 2',\n\t\t})\n\n\t\tconst syncResults = await this.Action('error', 'sync').execute({})\n\n\t\tclassContents = diskUtil.readFile(errorClassFile)\n\t\tassert.doesNotInclude(classContents, /NESTED_SCHEMA/)\n\n\t\tawait this.assertValidActionResponseFiles(syncResults)\n\n\t\tconst parentSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'good.schema.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst parentSchemaContents = diskUtil.readFile(parentSchema)\n\n\t\tassert.doesNotInclude(parentSchemaContents, this.cwd)\n\t}\n\n\t@test()\n\tprotected static async canCreateAndSyncErrorsWithNoCoreSchemasAndNoFields() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tconst results = await createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t\tshouldFetchCoreSchemas: false,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\t\tdiskUtil.writeFile(\n\t\t\tresults.files[0].path,\n\t\t\t`import { buildErrorSchema } from '@sprucelabs/schema'\n\n\n\t\texport default buildErrorSchema({\n\t\t\tid: 'testError',\n\t\t\tname: 'Test error',\n\t\t\tdescription: '',\n\t\t\tfields: {\n\t\t\t}\n\t\t})`\n\t\t)\n\n\t\tconst syncAction = this.Action('error', 'sync')\n\t\tconst syncResults = await syncAction.execute({\n\t\t\tshouldFetchCoreSchemas: false,\n\t\t})\n\t\tassert.isFalsy(syncResults.errors)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"KeepingErrorsInSync.test.js","names":["KeepingErrorsInSyncTest","test","Cli","assert","isFunction","Action","execute","installErrorFeature","createAction","nameReadable","nameCamel","pkg","Service","uninstall","ImportService","clearCache","results","isTruthy","errors","isLength","optionsMatch","testUtil","assertFileByNameInGeneratedFiles","files","check","typesMatch","optionsContent","diskUtil","readFile","doesInclude","typesContent","builderMatch","deleteFile","isFalse","doesFileExist","resolveHashSprucePath","testError1","testError1SchemaMatch","testError1BuilderMatch","isTrue","errorTypesFile","doesNotInclude","source","resolveTestPath","destination","resolvePath","copyDir","typeChecker","errorOptionsFile","contents","errorClassFile","classContents","syncResults","assertValidActionResponseFiles","parentSchema","parentSchemaContents","cwd","shouldFetchCoreSchemas","isFalsy","writeFile","path","syncAction","AbstractErrorTest"],"sources":["../../../../src/__tests__/behavioral/errors/KeepingErrorsInSync.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { assert, test } from '@sprucelabs/test'\nimport ImportService from '../../../services/ImportService'\nimport AbstractErrorTest from '../../../tests/AbstractErrorTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingErrorsInSyncTest extends AbstractErrorTest {\n\t@test()\n\tprotected static async hasSyncErrorAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('error', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async returnsHelpfulErrorWhenTsNodeIsRemoved() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tawait createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t})\n\n\t\tconst pkg = this.Service('pkg')\n\t\tawait pkg.uninstall('ts-node')\n\n\t\tImportService.clearCache()\n\n\t\tconst results = await this.Action('error', 'sync').execute({})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\t}\n\n\t@test()\n\tprotected static async errorsStayInSyncWhenSchemasAreDeleted() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tconst results = await createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t})\n\n\t\tconst optionsMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/^options\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(optionsMatch)\n\n\t\tconst typesMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/^errors\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\t// should contain our test error\n\t\tlet optionsContent = diskUtil.readFile(optionsMatch)\n\t\tassert.doesInclude(optionsContent, /SpruceErrors\\.TestingErrors\\.TestError/)\n\n\t\tlet typesContent = diskUtil.readFile(typesMatch)\n\t\tassert.doesInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError/gis\n\t\t)\n\n\t\t// delete our testError\n\t\tconst builderMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/testError\\.builder/,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.deleteFile(builderMatch)\n\n\t\t// resync\n\t\tawait this.Action('error', 'sync').execute({})\n\n\t\t// #spruce/errors should not exist\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolveHashSprucePath('errors')))\n\n\t\t// build 2 errors\n\t\tconst testError1 = await createAction.execute({\n\t\t\tnameCamel: 'testError1',\n\t\t\tnameReadable: 'Test error 1',\n\t\t})\n\n\t\tconst testError1SchemaMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testError1.schema',\n\t\t\ttestError1.files\n\t\t)\n\n\t\tconst testError1BuilderMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testError1.builder',\n\t\t\ttestError1.files\n\t\t)\n\n\t\tawait createAction.execute({\n\t\t\tnameCamel: 'testError2',\n\t\t\tnameReadable: 'Test error 2',\n\t\t})\n\n\t\t// #spruce/errors should exist\n\t\tassert.isTrue(diskUtil.doesFileExist(this.resolveHashSprucePath('errors')))\n\n\t\ttypesContent = diskUtil.readFile(this.errorTypesFile)\n\n\t\t// types should include both\n\t\tassert.doesInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError1/gis\n\t\t)\n\t\tassert.doesInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError2/gis\n\t\t)\n\n\t\t// definition file for testError1\n\t\tassert.isTrue(diskUtil.doesFileExist(testError1SchemaMatch))\n\n\t\t// delete builder 1\n\t\tdiskUtil.deleteFile(testError1BuilderMatch)\n\t\tassert.isFalse(diskUtil.doesFileExist(testError1BuilderMatch))\n\n\t\t// sync\n\t\tawait this.Action('error', 'sync').execute({})\n\n\t\t// types should no longer include test error 1\n\t\ttypesContent = diskUtil.readFile(this.errorTypesFile)\n\t\tassert.doesNotInclude(\n\t\t\ttypesContent,\n\t\t\t/SpruceErrors\\.TestingErrors.*?TestError1/\n\t\t)\n\n\t\t// the definition file should be gone now\n\t\tassert.isFalse(diskUtil.doesFileExist(testError1SchemaMatch))\n\t}\n\n\t@test()\n\tprotected static async canHandleNestedSchemasWithoutAddingThemToOptions() {\n\t\tawait this.installErrorFeature('errors')\n\t\tconst source = this.resolveTestPath('nested_error_schemas')\n\t\tconst destination = this.resolvePath('src/errors')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\n\t\tconst results = await this.Action('error', 'sync').execute({})\n\t\tconst errorTypesFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/errors\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst typeChecker = this.Service('typeChecker')\n\t\tawait typeChecker.check(errorTypesFile)\n\n\t\tconst errorOptionsFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/options\\.types/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(errorOptionsFile)\n\t\tassert.doesNotInclude(contents, 'INestedSchema')\n\n\t\tconst errorClassFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'SpruceError.ts',\n\t\t\tresults.files\n\t\t)\n\t\tlet classContents = diskUtil.readFile(errorClassFile)\n\t\tassert.doesNotInclude(classContents, /NESTED_SCHEMA/)\n\n\t\tconst createAction = this.Action('error', 'create')\n\t\tawait createAction.execute({\n\t\t\tnameCamel: 'testError2',\n\t\t\tnameReadable: 'Test error 2',\n\t\t})\n\n\t\tconst syncResults = await this.Action('error', 'sync').execute({})\n\n\t\tclassContents = diskUtil.readFile(errorClassFile)\n\t\tassert.doesNotInclude(classContents, /NESTED_SCHEMA/)\n\n\t\tawait this.assertValidActionResponseFiles(syncResults)\n\n\t\tconst parentSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'good.schema.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst parentSchemaContents = diskUtil.readFile(parentSchema)\n\n\t\tassert.doesNotInclude(parentSchemaContents, this.cwd)\n\t}\n\n\t@test()\n\tprotected static async canCreateAndSyncErrorsWithNoCoreSchemasAndNoFields() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst createAction = this.Action('error', 'create')\n\n\t\tconst results = await createAction.execute({\n\t\t\tnameReadable: 'Test error',\n\t\t\tnameCamel: 'testError',\n\t\t\tshouldFetchCoreSchemas: false,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\t\tdiskUtil.writeFile(\n\t\t\tresults.files[0].path,\n\t\t\t`import { buildErrorSchema } from '@sprucelabs/schema'\n\n\n\t\texport default buildErrorSchema({\n\t\t\tid: 'testError',\n\t\t\tname: 'Test error',\n\t\t\tdescription: '',\n\t\t\tfields: {\n\t\t\t}\n\t\t})`\n\t\t)\n\n\t\tconst syncAction = this.Action('error', 'sync')\n\t\tconst syncResults = await syncAction.execute({\n\t\t\tshouldFetchCoreSchemas: false,\n\t\t})\n\t\tassert.isFalsy(syncResults.errors)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,uB,WACnB,IAAAC,UAAA,G,UAMA,IAAAA,UAAA,G,UAsBA,IAAAA,UAAA,G,UAwGA,IAAAA,UAAA,G,UAuDA,IAAAA,UAAA,G;;;;;;;;;;;;;8GA3LD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,GAAL,EAFP;;cAAA;gBAGCC,YAAA,CAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA/C;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;kIAMA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAIOC,YAJP,GAIsB,KAAKH,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAJtB;gBAAA;gBAAA,OAMOG,YAAY,CAACF,OAAb,CAAqB;kBAC1BG,YAAY,EAAE,YADY;kBAE1BC,SAAS,EAAE;gBAFe,CAArB,CANP;;cAAA;gBAWOC,GAXP,GAWa,KAAKC,OAAL,CAAa,KAAb,CAXb;gBAAA;gBAAA,OAYOD,GAAG,CAACE,SAAJ,CAAc,SAAd,CAZP;;cAAA;gBAcCC,yBAAA,CAAcC,UAAd;;gBAdD;gBAAA,OAgBuB,KAAKV,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAhBvB;;cAAA;gBAgBOU,OAhBP;;gBAkBCb,YAAA,CAAOc,QAAP,CAAgBD,OAAO,CAACE,MAAxB;;gBACAf,YAAA,CAAOgB,QAAP,CAAgBH,OAAO,CAACE,MAAxB,EAAgC,CAAhC;;cAnBD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;iIAsBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKX,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAIOC,YAJP,GAIsB,KAAKH,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAJtB;gBAAA;gBAAA,OAMuBG,YAAY,CAACF,OAAb,CAAqB;kBAC1CG,YAAY,EAAE,YAD4B;kBAE1CC,SAAS,EAAE;gBAF+B,CAArB,CANvB;;cAAA;gBAMOM,OANP;gBAWOI,YAXP,GAWsBC,iBAAA,CAASC,gCAAT,CACpB,iBADoB,EAEpBN,OAAO,CAACO,KAFY,CAXtB;gBAAA;gBAAA,OAgBO,KAAKX,OAAL,CAAa,aAAb,EAA4BY,KAA5B,CAAkCJ,YAAlC,CAhBP;;cAAA;gBAkBOK,UAlBP,GAkBoBJ,iBAAA,CAASC,gCAAT,CAClB,gBADkB,EAElBN,OAAO,CAACO,KAFU,CAlBpB,EAuBC;;gBACIG,cAxBL,GAwBsBC,0BAAA,CAASC,QAAT,CAAkBR,YAAlB,CAxBtB;;gBAyBCjB,YAAA,CAAO0B,WAAP,CAAmBH,cAAnB,EAAmC,wCAAnC;;gBAEII,YA3BL,GA2BoBH,0BAAA,CAASC,QAAT,CAAkBH,UAAlB,CA3BpB;;gBA4BCtB,YAAA,CAAO0B,WAAP,CACCC,YADD,EAEC,gDAFD,EA5BD,CAiCC;;;gBACMC,YAlCP,GAkCsBV,iBAAA,CAASC,gCAAT,CACpB,oBADoB,EAEpBN,OAAO,CAACO,KAFY,CAlCtB;;gBAuCCI,0BAAA,CAASK,UAAT,CAAoBD,YAApB,EAvCD,CAyCC;;;gBAzCD;gBAAA,OA0CO,KAAK1B,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CA1CP;;cAAA;gBA4CC;gBACAH,YAAA,CAAO8B,OAAP,CAAeN,0BAAA,CAASO,aAAT,CAAuB,KAAKC,qBAAL,CAA2B,QAA3B,CAAvB,CAAf,EA7CD,CA+CC;;;gBA/CD;gBAAA,OAgD0B3B,YAAY,CAACF,OAAb,CAAqB;kBAC7CI,SAAS,EAAE,YADkC;kBAE7CD,YAAY,EAAE;gBAF+B,CAArB,CAhD1B;;cAAA;gBAgDO2B,UAhDP;gBAqDOC,qBArDP,GAqD+BhB,iBAAA,CAASC,gCAAT,CAC7B,mBAD6B,EAE7Bc,UAAU,CAACb,KAFkB,CArD/B;gBA0DOe,sBA1DP,GA0DgCjB,iBAAA,CAASC,gCAAT,CAC9B,oBAD8B,EAE9Bc,UAAU,CAACb,KAFmB,CA1DhC;gBAAA;gBAAA,OA+DOf,YAAY,CAACF,OAAb,CAAqB;kBAC1BI,SAAS,EAAE,YADe;kBAE1BD,YAAY,EAAE;gBAFY,CAArB,CA/DP;;cAAA;gBAoEC;gBACAN,YAAA,CAAOoC,MAAP,CAAcZ,0BAAA,CAASO,aAAT,CAAuB,KAAKC,qBAAL,CAA2B,QAA3B,CAAvB,CAAd;;gBAEAL,YAAY,GAAGH,0BAAA,CAASC,QAAT,CAAkB,KAAKY,cAAvB,CAAf,CAvED,CAyEC;;gBACArC,YAAA,CAAO0B,WAAP,CACCC,YADD,EAEC,iDAFD;;gBAIA3B,YAAA,CAAO0B,WAAP,CACCC,YADD,EAEC,iDAFD,EA9ED,CAmFC;;;gBACA3B,YAAA,CAAOoC,MAAP,CAAcZ,0BAAA,CAASO,aAAT,CAAuBG,qBAAvB,CAAd,EApFD,CAsFC;;;gBACAV,0BAAA,CAASK,UAAT,CAAoBM,sBAApB;;gBACAnC,YAAA,CAAO8B,OAAP,CAAeN,0BAAA,CAASO,aAAT,CAAuBI,sBAAvB,CAAf,EAxFD,CA0FC;;;gBA1FD;gBAAA,OA2FO,KAAKjC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CA3FP;;cAAA;gBA6FC;gBACAwB,YAAY,GAAGH,0BAAA,CAASC,QAAT,CAAkB,KAAKY,cAAvB,CAAf;;gBACArC,YAAA,CAAOsC,cAAP,CACCX,YADD,EAEC,0CAFD,EA/FD,CAoGC;;;gBACA3B,YAAA,CAAO8B,OAAP,CAAeN,0BAAA,CAASO,aAAT,CAAuBG,qBAAvB,CAAf;;cArGD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4IAwGA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAK9B,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAGOmC,MAHP,GAGgB,KAAKC,eAAL,CAAqB,sBAArB,CAHhB;gBAIOC,WAJP,GAIqB,KAAKC,WAAL,CAAiB,YAAjB,CAJrB;gBAAA;gBAAA,OAMOlB,0BAAA,CAASmB,OAAT,CAAiBJ,MAAjB,EAAyBE,WAAzB,CANP;;cAAA;gBAAA;gBAAA,OAQuB,KAAKvC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CARvB;;cAAA;gBAQOU,OARP;gBASOwB,cATP,GASwBnB,iBAAA,CAASC,gCAAT,CACtB,eADsB,EAEtBN,OAAO,CAACO,KAFc,CATxB;gBAcOwB,WAdP,GAcqB,KAAKnC,OAAL,CAAa,aAAb,CAdrB;gBAAA;gBAAA,OAeOmC,WAAW,CAACvB,KAAZ,CAAkBgB,cAAlB,CAfP;;cAAA;gBAiBOQ,gBAjBP,GAiB0B3B,iBAAA,CAASC,gCAAT,CACxB,gBADwB,EAExBN,OAAO,CAACO,KAFgB,CAjB1B;gBAsBO0B,QAtBP,GAsBkBtB,0BAAA,CAASC,QAAT,CAAkBoB,gBAAlB,CAtBlB;;gBAuBC7C,YAAA,CAAOsC,cAAP,CAAsBQ,QAAtB,EAAgC,eAAhC;;gBAEMC,cAzBP,GAyBwB7B,iBAAA,CAASC,gCAAT,CACtB,gBADsB,EAEtBN,OAAO,CAACO,KAFc,CAzBxB;gBA6BK4B,aA7BL,GA6BqBxB,0BAAA,CAASC,QAAT,CAAkBsB,cAAlB,CA7BrB;;gBA8BC/C,YAAA,CAAOsC,cAAP,CAAsBU,aAAtB,EAAqC,eAArC;;gBAEM3C,YAhCP,GAgCsB,KAAKH,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAhCtB;gBAAA;gBAAA,OAiCOG,YAAY,CAACF,OAAb,CAAqB;kBAC1BI,SAAS,EAAE,YADe;kBAE1BD,YAAY,EAAE;gBAFY,CAArB,CAjCP;;cAAA;gBAAA;gBAAA,OAsC2B,KAAKJ,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAtC3B;;cAAA;gBAsCO8C,WAtCP;gBAwCCD,aAAa,GAAGxB,0BAAA,CAASC,QAAT,CAAkBsB,cAAlB,CAAhB;;gBACA/C,YAAA,CAAOsC,cAAP,CAAsBU,aAAtB,EAAqC,eAArC;;gBAzCD;gBAAA,OA2CO,KAAKE,8BAAL,CAAoCD,WAApC,CA3CP;;cAAA;gBA6COE,YA7CP,GA6CsBjC,iBAAA,CAASC,gCAAT,CACpB,gBADoB,EAEpB8B,WAAW,CAAC7B,KAFQ,CA7CtB;gBAkDOgC,oBAlDP,GAkD8B5B,0BAAA,CAASC,QAAT,CAAkB0B,YAAlB,CAlD9B;;gBAoDCnD,YAAA,CAAOsC,cAAP,CAAsBc,oBAAtB,EAA4C,KAAKC,GAAjD;;cApDD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;8IAuDA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKjD,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAIOC,YAJP,GAIsB,KAAKH,MAAL,CAAY,OAAZ,EAAqB,QAArB,CAJtB;gBAAA;gBAAA,OAMuBG,YAAY,CAACF,OAAb,CAAqB;kBAC1CG,YAAY,EAAE,YAD4B;kBAE1CC,SAAS,EAAE,WAF+B;kBAG1C+C,sBAAsB,EAAE;gBAHkB,CAArB,CANvB;;cAAA;gBAMOzC,OANP;;gBAYCb,YAAA,CAAOuD,OAAP,CAAe1C,OAAO,CAACE,MAAvB;;gBACAf,YAAA,CAAOc,QAAP,CAAgBD,OAAO,CAACO,KAAxB;;gBACAI,0BAAA,CAASgC,SAAT,CACC3C,OAAO,CAACO,KAAR,CAAc,CAAd,EAAiBqC,IADlB;;gBAcMC,UA5BP,GA4BoB,KAAKxD,MAAL,CAAY,OAAZ,EAAqB,MAArB,CA5BpB;gBAAA;gBAAA,OA6B2BwD,UAAU,CAACvD,OAAX,CAAmB;kBAC5CmD,sBAAsB,EAAE;gBADoB,CAAnB,CA7B3B;;cAAA;gBA6BOL,WA7BP;;gBAgCCjD,YAAA,CAAOuD,OAAP,CAAeN,WAAW,CAAClC,MAA3B;;cAhCD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EA5LoD4C,8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingUpErrors.test.js","names":["SettingUpErrorTest","fixture","FeatureFixture","assert","doesThrowAsync","installFeatures","code","err","errorAssert","assertError","installErrorFeature","installer","getFeatureInstaller","isInstalled","isSchemaInstalled","isTrue","isErrorInstalled","AbstractErrorTest"],"sources":["../../../../src/__tests__/behavioral/errors/SettingUpErrors.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractErrorTest from '../../../tests/AbstractErrorTest'\n\nexport default class SettingUpErrorTest extends AbstractErrorTest {\n\t@test()\n\tprotected static async failsIfSkillIsNotInstalled() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tfixture.installFeatures([\n\t\t\t\t{\n\t\t\t\t\tcode: 'error',\n\t\t\t\t},\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'VALIDATION_FAILED')\n\t}\n\n\t@test()\n\tprotected static async installsSchemasIfNotInstalled() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst installer = this.getFeatureInstaller()\n\n\t\tconst isSchemaInstalled = await installer.isInstalled('schema')\n\t\tassert.isTrue(isSchemaInstalled)\n\n\t\tconst isErrorInstalled = await installer.isInstalled('error')\n\t\tassert.isTrue(isErrorInstalled)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,kB,WACnB,iB,UAcA,iB;;;;;;;;;;;;;sHAdD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,OAFP,GAEiB,KAAKC,cAAL,EAFjB;gBAAA;gBAAA,OAGmBC,aAAOC,cAAP,CAAsB;kBAAA,OACvCH,OAAO,CAACI,eAAR,CAAwB,CACvB;oBACCC,IAAI,EAAE;kBADP,CADuB,CAAxB,CADuC;gBAAA,CAAtB,CAHnB;;cAAA;gBAGOC,GAHP;;gBAWCC,uBAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,mBAA7B;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yHAcA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKG,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAIOC,SAJP,GAImB,KAAKC,mBAAL,EAJnB;gBAAA;gBAAA,OAMiCD,SAAS,CAACE,WAAV,CAAsB,QAAtB,CANjC;;cAAA;gBAMOC,iBANP;;gBAOCX,aAAOY,MAAP,CAAcD,iBAAd;;gBAPD;gBAAA,OASgCH,SAAS,CAACE,WAAV,CAAsB,OAAtB,CAThC;;cAAA;gBASOG,gBATP;;gBAUCb,aAAOY,MAAP,CAAcC,gBAAd;;cAVD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAf+CC,8B"}
1
+ {"version":3,"file":"SettingUpErrors.test.js","names":["SettingUpErrorTest","test","fixture","FeatureFixture","assert","doesThrowAsync","installFeatures","code","err","errorAssert","assertError","installErrorFeature","installer","getFeatureInstaller","isInstalled","isSchemaInstalled","isTrue","isErrorInstalled","AbstractErrorTest"],"sources":["../../../../src/__tests__/behavioral/errors/SettingUpErrors.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractErrorTest from '../../../tests/AbstractErrorTest'\n\nexport default class SettingUpErrorTest extends AbstractErrorTest {\n\t@test()\n\tprotected static async failsIfSkillIsNotInstalled() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tfixture.installFeatures([\n\t\t\t\t{\n\t\t\t\t\tcode: 'error',\n\t\t\t\t},\n\t\t\t])\n\t\t)\n\n\t\terrorAssert.assertError(err, 'VALIDATION_FAILED')\n\t}\n\n\t@test()\n\tprotected static async installsSchemasIfNotInstalled() {\n\t\tawait this.installErrorFeature('errors')\n\n\t\tconst installer = this.getFeatureInstaller()\n\n\t\tconst isSchemaInstalled = await installer.isInstalled('schema')\n\t\tassert.isTrue(isSchemaInstalled)\n\n\t\tconst isErrorInstalled = await installer.isInstalled('error')\n\t\tassert.isTrue(isErrorInstalled)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,kB,WACnB,IAAAC,UAAA,G,UAcA,IAAAA,UAAA,G;;;;;;;;;;;;;sHAdD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,OAFP,GAEiB,KAAKC,cAAL,EAFjB;gBAAA;gBAAA,OAGmBC,YAAA,CAAOC,cAAP,CAAsB;kBAAA,OACvCH,OAAO,CAACI,eAAR,CAAwB,CACvB;oBACCC,IAAI,EAAE;kBADP,CADuB,CAAxB,CADuC;gBAAA,CAAtB,CAHnB;;cAAA;gBAGOC,GAHP;;gBAWCC,sBAAA,CAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,mBAA7B;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yHAcA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKG,mBAAL,CAAyB,QAAzB,CAFP;;cAAA;gBAIOC,SAJP,GAImB,KAAKC,mBAAL,EAJnB;gBAAA;gBAAA,OAMiCD,SAAS,CAACE,WAAV,CAAsB,QAAtB,CANjC;;cAAA;gBAMOC,iBANP;;gBAOCX,YAAA,CAAOY,MAAP,CAAcD,iBAAd;;gBAPD;gBAAA,OASgCH,SAAS,CAACE,WAAV,CAAsB,OAAtB,CAThC;;cAAA;gBASOG,gBATP;;gBAUCb,YAAA,CAAOY,MAAP,CAAcC,gBAAd;;cAVD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAf+CC,8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"PullingMercuryEventContract.test.js","names":["GeneratingMercuryEventContractTest","Cli","cli","diskUtil","writeFile","resolvePath","assert","isTruthy","getFeature","isFunction","Action","execute","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","isEqual","doesInclude","name","action","contents","readFile","destination","expected","installSkillAndPullContracts","contracts","isArray","isObject","eventSignatures","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","skill","Store","events","registerEventContract","eventContract","isGlobal","fqen","eventNameUtil","join","eventName","eventNamespace","slug","version","isAbove","length","pullContracts","Service","importDefault","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { CliInterface } from '../../../cli'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class GeneratingMercuryEventContractTest extends AbstractCliTest {\n\tprivate static cli: CliInterface\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.cli = await this.Cli()\n\t\tdiskUtil.writeFile(this.resolvePath('package.json'), '{}')\n\t}\n\n\t@test()\n\tprotected static async hasEventContractFeature() {\n\t\tassert.isTruthy(this.cli.getFeature('eventContract'))\n\t}\n\n\t@test()\n\tprotected static async hasPullFeature() {\n\t\tassert.isFunction(this.Action('eventContract', 'pull').execute)\n\t}\n\n\t@test()\n\tprotected static async generatesContractAtCwd() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.isEqual(match, this.resolvePath('events.contract.ts'))\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'generated',\n\t\t})\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { buildEventContract } from '@sprucelabs/mercury-types'\"\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesAtDestination() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({\n\t\t\tdestination: './src/tests',\n\t\t})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\t\tconst expected = this.resolvePath('src/tests/events.contract.ts')\n\n\t\tassert.isEqual(expected, match)\n\t}\n\n\t@test()\n\tprotected static async savesContractLocallyAndImportsAsDefault() {\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isArray(contracts)\n\t\tassert.isObject(contracts[0].eventSignatures)\n\t\tassert.isObject(contracts[0].eventSignatures[`did-message::v2020_12_25`])\n\t}\n\n\t@test()\n\tprotected static async pullsGlobalContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'heartwood test',\n\t\t})\n\n\t\tconst events = await this.Store('event')\n\t\tawait events.registerEventContract({\n\t\t\teventContract: {\n\t\t\t\teventSignatures: {\n\t\t\t\t\t'test-event::v2020_01_01': {\n\t\t\t\t\t\tisGlobal: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-event',\n\t\t\teventNamespace: skill.slug,\n\t\t\tversion: 'v2020_01_01',\n\t\t})\n\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isAbove(contracts.length, 1)\n\t\tassert.isObject(contracts[1].eventSignatures)\n\t\tassert.isObject(contracts[1].eventSignatures[fqen])\n\t}\n\n\t@test()\n\tprotected static async contractHasTypes() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('node')\n\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(contents, 'export default eventContracts')\n\t\tassert.doesInclude(contents, 'as const')\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export type CoreEventContract = typeof eventContracts[0] & typeof eventContracts[1]'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatingASecondTimeReportsAnUpdate() {\n\t\tawait this.Action('eventContract', 'pull').execute({})\n\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'updated',\n\t\t})\n\t}\n\n\tprivate static async installSkillAndPullContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\treturn await this.pullContracts()\n\t}\n\n\tprivate static async pullContracts() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contracts = await this.Service('import').importDefault(match)\n\t\treturn contracts as EventContract[]\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PullingMercuryEventContract.test.js","names":["GeneratingMercuryEventContractTest","test","Cli","cli","diskUtil","writeFile","resolvePath","assert","isTruthy","getFeature","isFunction","Action","execute","results","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","isEqual","doesInclude","name","action","contents","readFile","destination","expected","installSkillAndPullContracts","contracts","isArray","isObject","eventSignatures","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","skill","Store","events","registerEventContract","eventContract","isGlobal","fqen","eventNameUtil","join","eventName","eventNamespace","slug","version","isAbove","length","pullContracts","Service","importDefault","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts"],"sourcesContent":["import { EventContract } from '@sprucelabs/mercury-types'\nimport { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { CliInterface } from '../../../cli'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class GeneratingMercuryEventContractTest extends AbstractCliTest {\n\tprivate static cli: CliInterface\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.cli = await this.Cli()\n\t\tdiskUtil.writeFile(this.resolvePath('package.json'), '{}')\n\t}\n\n\t@test()\n\tprotected static async hasEventContractFeature() {\n\t\tassert.isTruthy(this.cli.getFeature('eventContract'))\n\t}\n\n\t@test()\n\tprotected static async hasPullFeature() {\n\t\tassert.isFunction(this.Action('eventContract', 'pull').execute)\n\t}\n\n\t@test()\n\tprotected static async generatesContractAtCwd() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.isEqual(match, this.resolvePath('events.contract.ts'))\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'generated',\n\t\t})\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t\"import { buildEventContract } from '@sprucelabs/mercury-types'\"\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesAtDestination() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({\n\t\t\tdestination: './src/tests',\n\t\t})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\t\tconst expected = this.resolvePath('src/tests/events.contract.ts')\n\n\t\tassert.isEqual(expected, match)\n\t}\n\n\t@test()\n\tprotected static async savesContractLocallyAndImportsAsDefault() {\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isArray(contracts)\n\t\tassert.isObject(contracts[0].eventSignatures)\n\t\tassert.isObject(contracts[0].eventSignatures[`did-message::v2020_12_25`])\n\t}\n\n\t@test()\n\tprotected static async pullsGlobalContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'heartwood test',\n\t\t})\n\n\t\tconst events = await this.Store('event')\n\t\tawait events.registerEventContract({\n\t\t\teventContract: {\n\t\t\t\teventSignatures: {\n\t\t\t\t\t'test-event::v2020_01_01': {\n\t\t\t\t\t\tisGlobal: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-event',\n\t\t\teventNamespace: skill.slug,\n\t\t\tversion: 'v2020_01_01',\n\t\t})\n\n\t\tconst contracts = await this.installSkillAndPullContracts()\n\n\t\tassert.isAbove(contracts.length, 1)\n\t\tassert.isObject(contracts[1].eventSignatures)\n\t\tassert.isObject(contracts[1].eventSignatures[fqen])\n\t}\n\n\t@test()\n\tprotected static async contractHasTypes() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('node')\n\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(match)\n\n\t\tassert.doesInclude(contents, 'export default eventContracts')\n\t\tassert.doesInclude(contents, 'as const')\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export type CoreEventContract = typeof eventContracts[0] & typeof eventContracts[1]'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatingASecondTimeReportsAnUpdate() {\n\t\tawait this.Action('eventContract', 'pull').execute({})\n\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(results.files ?? [], {\n\t\t\tname: 'events.contract.ts',\n\t\t\taction: 'updated',\n\t\t})\n\t}\n\n\tprivate static async installSkillAndPullContracts() {\n\t\tthis.cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\treturn await this.pullContracts()\n\t}\n\n\tprivate static async pullContracts() {\n\t\tconst results = await this.Action('eventContract', 'pull').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst contracts = await this.Service('import').importDefault(match)\n\t\treturn contracts as EventContract[]\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingAListener.test.js","names":["CreatingAListenerTest","listen","Action","installEventFeature","execute","namespace","results","assert","isTruthy","errors","err","errorAssert","assertError","namespaces","eventName","parameters","installEventsAndCreateListener","match","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","version","cli","doesInclude","checkHealth","health","isFalsy","event","skill","isUndefined","listeners","eventNamespace","executeAndWaitForInput","lastInvocation","ui","getLastInvocation","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","waitForInput","reset","fakeGetEventContracts","target","passedTarget","installAddDependencyExecuteAndWaitForInput","isEqualDeep","CORE_EVENT_NAMESPACE","cb","eventFaker","on","contracts","coreEventContracts","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","listenerPath","MercuryClientFactory","setIsTestMode","addDependency","dependencies","add","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","AbstractEventTest","versionUtil","generateVersion","constValue"],"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport { EventSignature, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport ListenAction, {\n\tCORE_EVENT_NAMESPACE,\n} from '../../../features/event/actions/ListenAction'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\tprivate static listen: ListenAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.listen = this.Action('event', 'listen')\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_NAMESPACES', {\n\t\t\tnamespaces: ['taco-bell'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'heartwood',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesMapFile() {\n\t\tconst { results } = await this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`listeners.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst { version, results, cli } =\n\t\t\tawait this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isFalsy(health?.event?.errors)\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\t\tawait this.executeAndWaitForInput()\n\n\t\tlet lastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async loadsContractsFilteringByDependencies() {\n\t\tlet passedTarget: any\n\t\tawait this.fakeGetEventContracts((target) => {\n\t\t\tpassedTarget = target\n\t\t})\n\n\t\tconst namespace = 'waka'\n\t\tawait this.installAddDependencyExecuteAndWaitForInput(namespace)\n\n\t\tassert.isEqualDeep(passedTarget, {\n\t\t\tnamespaces: [namespace, CORE_EVENT_NAMESPACE],\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static async fakeGetEventContracts(\n\t\tcb?: (\n\t\t\ttarget?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsTarget | null\n\t\t) => void,\n\t\tresults?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsResponsePayload['contracts']\n\t) {\n\t\tawait eventFaker.on('get-event-contracts::v2020_12_25', ({ target }) => {\n\t\t\tcb?.(target)\n\t\t\treturn {\n\t\t\t\tcontracts: results ?? [...(coreEventContracts as any)],\n\t\t\t}\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener() {\n\t\tconst { listenerPath } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'test',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\tawait this.Service('typeChecker').check(listenerPath)\n\t}\n\n\tprivate static async installAddDependencyExecuteAndWaitForInput(\n\t\tnamespace: string\n\t) {\n\t\tawait this.installEventFeature('events')\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tthis.addDependency(namespace)\n\t\tawait this.executeAndWaitForInput()\n\t\treturn this.ui.getLastInvocation()\n\t}\n\n\tprivate static async executeAndWaitForInput() {\n\t\tvoid this.listen.execute({})\n\t\tawait this.waitForInput()\n\t}\n\n\tprivate static addDependency(namespace: string) {\n\t\tconst dependencies = this.Service('dependency')\n\t\tdependencies.add({\n\t\t\tid: namespace,\n\t\t\tnamespace: 'waka',\n\t\t})\n\t}\n\n\tprivate static async installEventsAndCreateListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\treturn { version, results, cli }\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingAListener.test.js","names":["CreatingAListenerTest","test","listen","Action","installEventFeature","execute","namespace","results","assert","isTruthy","errors","err","errorAssert","assertError","namespaces","eventName","parameters","installEventsAndCreateListener","match","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","version","cli","doesInclude","checkHealth","health","isFalsy","event","skill","isUndefined","listeners","eventNamespace","executeAndWaitForInput","lastInvocation","ui","getLastInvocation","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","waitForInput","reset","fakeGetEventContracts","target","passedTarget","installAddDependencyExecuteAndWaitForInput","isEqualDeep","CORE_EVENT_NAMESPACE","cb","eventFaker","on","contracts","coreEventContracts","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","buildEmitTargetAndPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","buildSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","listenerPath","MercuryClientFactory","setIsTestMode","addDependency","dependencies","add","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","AbstractEventTest","versionUtil","generateVersion","constValue"],"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport { EventSignature, SpruceSchemas } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { eventFaker } from '@sprucelabs/spruce-test-fixtures'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport ListenAction, {\n\tCORE_EVENT_NAMESPACE,\n} from '../../../features/event/actions/ListenAction'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\tprivate static listen: ListenAction\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.listen = this.Action('event', 'listen')\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_NAMESPACES', {\n\t\t\tnamespaces: ['taco-bell'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'heartwood',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssert.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesMapFile() {\n\t\tconst { results } = await this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`listeners.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst { version, results, cli } =\n\t\t\tawait this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isFalsy(health?.event?.errors)\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\t\tawait this.executeAndWaitForInput()\n\n\t\tlet lastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async loadsContractsFilteringByDependencies() {\n\t\tlet passedTarget: any\n\t\tawait this.fakeGetEventContracts((target) => {\n\t\t\tpassedTarget = target\n\t\t})\n\n\t\tconst namespace = 'waka'\n\t\tawait this.installAddDependencyExecuteAndWaitForInput(namespace)\n\n\t\tassert.isEqualDeep(passedTarget, {\n\t\t\tnamespaces: [namespace, CORE_EVENT_NAMESPACE],\n\t\t})\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static async fakeGetEventContracts(\n\t\tcb?: (\n\t\t\ttarget?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsTarget | null\n\t\t) => void,\n\t\tresults?: SpruceSchemas.Mercury.v2020_12_25.GetEventContractsResponsePayload['contracts']\n\t) {\n\t\tawait eventFaker.on('get-event-contracts::v2020_12_25', ({ target }) => {\n\t\t\tcb?.(target)\n\t\t\treturn {\n\t\t\t\tcontracts: results ?? [...(coreEventContracts as any)],\n\t\t\t}\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener() {\n\t\tconst { listenerPath } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'test',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\tawait this.Service('typeChecker').check(listenerPath)\n\t}\n\n\tprivate static async installAddDependencyExecuteAndWaitForInput(\n\t\tnamespace: string\n\t) {\n\t\tawait this.installEventFeature('events')\n\t\tMercuryClientFactory.setIsTestMode(true)\n\t\tthis.addDependency(namespace)\n\t\tawait this.executeAndWaitForInput()\n\t\treturn this.ui.getLastInvocation()\n\t}\n\n\tprivate static async executeAndWaitForInput() {\n\t\tvoid this.listen.execute({})\n\t\tawait this.waitForInput()\n\t}\n\n\tprivate static addDependency(namespace: string) {\n\t\tconst dependencies = this.Service('dependency')\n\t\tdependencies.add({\n\t\t\tid: namespace,\n\t\t\tnamespace: 'waka',\n\t\t})\n\t}\n\n\tprivate static async installEventsAndCreateListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\treturn { version, results, cli }\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.listen.execute({\n\t\t\tnamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingAnEvent.test.js","names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","CreatingAnEventTest","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","nameReadable","nameKebab","nameCamel","version","expectedVersion","results","isArray","errors","errorAssert","assertError","createEvent","skill","filesThatShouldExist","RegExp","namesUtil","toCamel","slug","checker","Service","name","match","testUtil","assertFileByPathInGeneratedFiles","files","check","cli","isFalsy","copyEventBuildersAndPermissions","syncResults","mixedResults","actionUtil","mergeActionResults","assertExpectedTargetAndPayload","assertExpectedPayloadSchemas","assertReturnsEventFromHealthCheck","createsExpectedPermissionContract","assertCreatesOptionsFile","meta","fqen","testFileContents","diskUtil","readFile","resolveTestPath","replace","testFile","resolvePath","writeFile","install","emitPayloadFile","assertFileByNameInGeneratedFiles","newContents","versionUtil","generateVersion","constValue","uiAssert","assertRendersSelect","ui","reset","options","registerCurrentSkill","getSkillFixture","phone","DEMO_NUMBER_CREATING_AN_EVENT","optionsFile","importDefault","imported","isEqualDeep","isGlobal","importSchema","schema","isEqual","id","isTruthy","fields","payload","target","builders","filename","builder","path","cwd","isTrue","doesFileExist","checkHealth","health","event","isLength","events","eventName","eventNamespace","toKebab","doesInclude","contracts","fullyQualifiedEventName","eventNameUtil","join","payloadSchemas","fileName","expectedId","schemas","eventDiskUtil","resolveEventPath","AbstractEventTest"],"sources":["../../../../src/__tests__/behavioral/events/CreatingAnEvent.test.ts"],"sourcesContent":["import { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { CliInterface } from '../../../cli'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport { DEMO_NUMBER_CREATING_AN_EVENT } from '../../../tests/constants'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport uiAssert from '../../../tests/utilities/uiAssert.utility'\nimport { RegisteredSkill } from '../../../types/cli.types'\nimport actionUtil from '../../../utilities/action.utility'\n\nconst EVENT_NAME_READABLE = 'my fantastically amazing event'\nconst EVENT_NAME = 'my-fantastically-amazing-event'\nconst EVENT_CAMEL = 'myFantasticallyAmazingEvent'\n\nexport default class CreatingAnEventTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async hasCreateAction() {\n\t\tassert.isFunction(this.Action('event', 'create').execute)\n\t}\n\n\t@test()\n\tprotected static async cantCreateEventWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t\tversion: this.expectedVersion,\n\t\t})\n\n\t\tassert.isArray(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async createsPayloadBuildersAndSchemas() {\n\t\tconst { results, skill } = await this.createEvent()\n\n\t\tconst filesThatShouldExist = [\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventResponsePayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventEmitTargetAndPayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventEmitPayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\t'emitPayload.builder.ts',\n\t\t\t'emitTarget.builder.ts',\n\t\t]\n\n\t\tconst checker = this.Service('typeChecker')\n\n\t\tfor (const name of filesThatShouldExist) {\n\t\t\tconst match = testUtil.assertFileByPathInGeneratedFiles(\n\t\t\t\tname,\n\t\t\t\tresults.files\n\t\t\t)\n\t\t\tawait checker.check(match)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async createsEventWithPayloadsPermissionsAndOptions() {\n\t\tconst { results, cli, skill } = await this.createEvent()\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.copyEventBuildersAndPermissions(EVENT_NAME)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute({})\n\t\tassert.isFalsy(syncResults.errors)\n\n\t\tconst mixedResults = actionUtil.mergeActionResults(results, syncResults)\n\n\t\tawait this.assertExpectedTargetAndPayload(mixedResults, skill)\n\t\tawait this.assertExpectedPayloadSchemas(mixedResults)\n\t\tawait this.assertReturnsEventFromHealthCheck(cli, skill)\n\t\tawait this.createsExpectedPermissionContract(mixedResults)\n\t\tawait this.assertCreatesOptionsFile(mixedResults)\n\t}\n\n\t@test()\n\tprotected static async createdEventsAreTypedCorrectly() {\n\t\tconst { results } = await this.createEvent()\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst { fqen } = results.meta ?? {}\n\n\t\tconst testFileContents = diskUtil\n\t\t\t.readFile(this.resolveTestPath('client-test.ts.hbs'))\n\t\t\t.replace('{{fqen}}', fqen)\n\n\t\tconst testFile = this.resolvePath('src', 'test-client.ts')\n\t\tdiskUtil.writeFile(testFile, testFileContents)\n\n\t\tawait this.Service('typeChecker').check(testFile)\n\t}\n\n\t@test()\n\tprotected static async canReferenceSchemaFromOtherModule() {\n\t\tconst { results } = await this.createEvent()\n\t\tawait this.Service('pkg').install('@sprucelabs/heartwood-view-controllers')\n\n\t\tconst emitPayloadFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'emitPayload.builder.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst newContents = `import { formBuilderImportExportObjectSchema } from '@sprucelabs/heartwood-view-controllers'\nimport { buildSchema } from '@sprucelabs/schema'\n\nconst createFormEmitPayloadBuilder = buildSchema({\n\tid: 'myFantasticallyAmazingEventEmitPayload',\n\tfields: {\n\t\t...formBuilderImportExportObjectSchema.fields,\n\t},\n})\n\nexport default createFormEmitPayloadBuilder\n\t\t`\n\n\t\tdiskUtil.writeFile(emitPayloadFile, newContents)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute({})\n\n\t\tassert.isFalsy(syncResults.errors)\n\t}\n\n\t@test()\n\tprotected static async asksForVersionIfPreviousVersionExistsOnDifferentDay() {\n\t\tawait this.createEvent({\n\t\t\tversion: versionUtil.generateVersion('2020_01_10').constValue,\n\t\t})\n\n\t\tvoid this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tawait uiAssert.assertRendersSelect(this.ui)\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static async createEvent(options?: { version?: string }) {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.registerCurrentSkill()\n\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t\tversion: this.expectedVersion,\n\t\t\t...options,\n\t\t})\n\n\t\treturn { results, cli, skill }\n\t}\n\n\tprivate static async registerCurrentSkill() {\n\t\treturn await this.getSkillFixture().registerCurrentSkill(\n\t\t\t{\n\t\t\t\tname: 'my new skill',\n\t\t\t},\n\t\t\t{\n\t\t\t\tphone: DEMO_NUMBER_CREATING_AN_EVENT,\n\t\t\t}\n\t\t)\n\t}\n\n\tprivate static async assertCreatesOptionsFile(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tconst optionsFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'event.options.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst imported = await this.Service('import').importDefault(optionsFile)\n\n\t\tassert.isEqualDeep(imported, { isGlobal: false })\n\t}\n\n\tprivate static async assertExpectedTargetAndPayload(\n\t\tresults: FeatureActionResponse,\n\t\tskill: RegisteredSkill\n\t) {\n\t\tconst match = testUtil.assertFileByPathInGeneratedFiles(\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventEmitTargetAndPayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\tresults.files\n\t\t)\n\n\t\tconst schema = await this.Service('schema').importSchema(match)\n\n\t\tassert.isEqual(schema.id, 'myFantasticallyAmazingEventEmitTargetAndPayload')\n\t\tassert.isTruthy(schema.fields?.payload)\n\t\tassert.isTruthy(schema.fields?.target)\n\t}\n\n\tprotected static async createsExpectedPermissionContract(results: any) {\n\t\tconst builders = [\n\t\t\t{ filename: 'emitPermissions.builder.ts' },\n\t\t\t{ filename: 'listenPermissions.builder.ts' },\n\t\t]\n\n\t\tfor (const builder of builders) {\n\t\t\tconst { filename } = builder\n\n\t\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\tfilename,\n\t\t\t\tresults.files\n\t\t\t)\n\n\t\t\tconst path = versionUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src/events/',\n\t\t\t\tEVENT_NAME,\n\t\t\t\t'{{@latest}}',\n\t\t\t\tfilename\n\t\t\t)\n\n\t\t\tassert.isEqual(match, path)\n\t\t\tassert.isTrue(diskUtil.doesFileExist(path))\n\t\t}\n\t}\n\n\tprivate static async assertReturnsEventFromHealthCheck(\n\t\tcli: CliInterface,\n\t\tskill: RegisteredSkill\n\t) {\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.event)\n\t\tassert.isLength(health.event.events, 1)\n\n\t\tconst eventName = EVENT_NAME\n\t\tconst eventNamespace = namesUtil.toKebab(skill.slug)\n\n\t\tassert.doesInclude(health.event.events, {\n\t\t\teventName,\n\t\t\teventNamespace,\n\t\t\tversion: this.expectedVersion,\n\t\t})\n\n\t\tassert.doesInclude(health.event.contracts, {\n\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace,\n\t\t\t\tversion: this.expectedVersion,\n\t\t\t}),\n\t\t})\n\t}\n\n\tprivate static async assertExpectedPayloadSchemas(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tconst payloadSchemas = [\n\t\t\t{\n\t\t\t\tfileName: 'emitPayload.builder.ts',\n\t\t\t\texpectedId: 'myFantasticallyAmazingEventEmitPayload',\n\t\t\t},\n\t\t\t{\n\t\t\t\tfileName: 'emitTarget.builder.ts',\n\t\t\t\texpectedId: 'myFantasticallyAmazingEventEmitTarget',\n\t\t\t},\n\t\t\t{\n\t\t\t\tfileName: 'responsePayload.builder.ts',\n\t\t\t\texpectedId: 'myFantasticallyAmazingEventResponsePayload',\n\t\t\t},\n\t\t]\n\n\t\tconst schemas = this.Service('schema')\n\n\t\tfor (const payload of payloadSchemas) {\n\t\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\tpayload.fileName,\n\t\t\t\tresults.files\n\t\t\t)\n\n\t\t\tassert.isEqual(\n\t\t\t\tmatch,\n\t\t\t\teventDiskUtil.resolveEventPath(this.cwd + '/src/events', {\n\t\t\t\t\tfileName: payload.fileName as any,\n\t\t\t\t\teventName: EVENT_NAME,\n\t\t\t\t\tversion: this.expectedVersion,\n\t\t\t\t})\n\t\t\t)\n\n\t\t\tconst imported = await schemas.importSchema(match)\n\t\t\tassert.isEqual(imported.id, payload.expectedId)\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingAnEvent.test.js","names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","CreatingAnEventTest","test","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","nameReadable","nameKebab","nameCamel","version","expectedVersion","results","isArray","errors","errorAssert","assertError","createEvent","skill","filesThatShouldExist","RegExp","namesUtil","toCamel","slug","checker","Service","name","match","testUtil","assertFileByPathInGeneratedFiles","files","check","cli","isFalsy","copyEventBuildersAndPermissions","syncResults","mixedResults","actionUtil","mergeActionResults","assertExpectedTargetAndPayload","assertExpectedPayloadSchemas","assertReturnsEventFromHealthCheck","createsExpectedPermissionContract","assertCreatesOptionsFile","meta","fqen","testFileContents","diskUtil","readFile","resolveTestPath","replace","testFile","resolvePath","writeFile","install","emitPayloadFile","assertFileByNameInGeneratedFiles","newContents","versionUtil","generateVersion","constValue","uiAssert","assertRendersSelect","ui","reset","options","registerCurrentSkill","getSkillFixture","phone","DEMO_NUMBER_CREATING_AN_EVENT","optionsFile","importDefault","imported","isEqualDeep","isGlobal","importSchema","schema","isEqual","id","isTruthy","fields","payload","target","builders","filename","builder","path","cwd","isTrue","doesFileExist","checkHealth","health","event","isLength","events","eventName","eventNamespace","toKebab","doesInclude","contracts","fullyQualifiedEventName","eventNameUtil","join","payloadSchemas","fileName","expectedId","schemas","eventDiskUtil","resolveEventPath","AbstractEventTest"],"sources":["../../../../src/__tests__/behavioral/events/CreatingAnEvent.test.ts"],"sourcesContent":["import { eventDiskUtil, eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tnamesUtil,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { CliInterface } from '../../../cli'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport { DEMO_NUMBER_CREATING_AN_EVENT } from '../../../tests/constants'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport uiAssert from '../../../tests/utilities/uiAssert.utility'\nimport { RegisteredSkill } from '../../../types/cli.types'\nimport actionUtil from '../../../utilities/action.utility'\n\nconst EVENT_NAME_READABLE = 'my fantastically amazing event'\nconst EVENT_NAME = 'my-fantastically-amazing-event'\nconst EVENT_CAMEL = 'myFantasticallyAmazingEvent'\n\nexport default class CreatingAnEventTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async hasCreateAction() {\n\t\tassert.isFunction(this.Action('event', 'create').execute)\n\t}\n\n\t@test()\n\tprotected static async cantCreateEventWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t\tversion: this.expectedVersion,\n\t\t})\n\n\t\tassert.isArray(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async createsPayloadBuildersAndSchemas() {\n\t\tconst { results, skill } = await this.createEvent()\n\n\t\tconst filesThatShouldExist = [\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventResponsePayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventEmitTargetAndPayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventEmitPayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\t'emitPayload.builder.ts',\n\t\t\t'emitTarget.builder.ts',\n\t\t]\n\n\t\tconst checker = this.Service('typeChecker')\n\n\t\tfor (const name of filesThatShouldExist) {\n\t\t\tconst match = testUtil.assertFileByPathInGeneratedFiles(\n\t\t\t\tname,\n\t\t\t\tresults.files\n\t\t\t)\n\t\t\tawait checker.check(match)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async createsEventWithPayloadsPermissionsAndOptions() {\n\t\tconst { results, cli, skill } = await this.createEvent()\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.copyEventBuildersAndPermissions(EVENT_NAME)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute({})\n\t\tassert.isFalsy(syncResults.errors)\n\n\t\tconst mixedResults = actionUtil.mergeActionResults(results, syncResults)\n\n\t\tawait this.assertExpectedTargetAndPayload(mixedResults, skill)\n\t\tawait this.assertExpectedPayloadSchemas(mixedResults)\n\t\tawait this.assertReturnsEventFromHealthCheck(cli, skill)\n\t\tawait this.createsExpectedPermissionContract(mixedResults)\n\t\tawait this.assertCreatesOptionsFile(mixedResults)\n\t}\n\n\t@test()\n\tprotected static async createdEventsAreTypedCorrectly() {\n\t\tconst { results } = await this.createEvent()\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst { fqen } = results.meta ?? {}\n\n\t\tconst testFileContents = diskUtil\n\t\t\t.readFile(this.resolveTestPath('client-test.ts.hbs'))\n\t\t\t.replace('{{fqen}}', fqen)\n\n\t\tconst testFile = this.resolvePath('src', 'test-client.ts')\n\t\tdiskUtil.writeFile(testFile, testFileContents)\n\n\t\tawait this.Service('typeChecker').check(testFile)\n\t}\n\n\t@test()\n\tprotected static async canReferenceSchemaFromOtherModule() {\n\t\tconst { results } = await this.createEvent()\n\t\tawait this.Service('pkg').install('@sprucelabs/heartwood-view-controllers')\n\n\t\tconst emitPayloadFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'emitPayload.builder.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst newContents = `import { formBuilderImportExportObjectSchema } from '@sprucelabs/heartwood-view-controllers'\nimport { buildSchema } from '@sprucelabs/schema'\n\nconst createFormEmitPayloadBuilder = buildSchema({\n\tid: 'myFantasticallyAmazingEventEmitPayload',\n\tfields: {\n\t\t...formBuilderImportExportObjectSchema.fields,\n\t},\n})\n\nexport default createFormEmitPayloadBuilder\n\t\t`\n\n\t\tdiskUtil.writeFile(emitPayloadFile, newContents)\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute({})\n\n\t\tassert.isFalsy(syncResults.errors)\n\t}\n\n\t@test()\n\tprotected static async asksForVersionIfPreviousVersionExistsOnDifferentDay() {\n\t\tawait this.createEvent({\n\t\t\tversion: versionUtil.generateVersion('2020_01_10').constValue,\n\t\t})\n\n\t\tvoid this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tawait uiAssert.assertRendersSelect(this.ui)\n\n\t\tthis.ui.reset()\n\t}\n\n\tprivate static async createEvent(options?: { version?: string }) {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skill = await this.registerCurrentSkill()\n\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t\tversion: this.expectedVersion,\n\t\t\t...options,\n\t\t})\n\n\t\treturn { results, cli, skill }\n\t}\n\n\tprivate static async registerCurrentSkill() {\n\t\treturn await this.getSkillFixture().registerCurrentSkill(\n\t\t\t{\n\t\t\t\tname: 'my new skill',\n\t\t\t},\n\t\t\t{\n\t\t\t\tphone: DEMO_NUMBER_CREATING_AN_EVENT,\n\t\t\t}\n\t\t)\n\t}\n\n\tprivate static async assertCreatesOptionsFile(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tconst optionsFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'event.options.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst imported = await this.Service('import').importDefault(optionsFile)\n\n\t\tassert.isEqualDeep(imported, { isGlobal: false })\n\t}\n\n\tprivate static async assertExpectedTargetAndPayload(\n\t\tresults: FeatureActionResponse,\n\t\tskill: RegisteredSkill\n\t) {\n\t\tconst match = testUtil.assertFileByPathInGeneratedFiles(\n\t\t\tnew RegExp(\n\t\t\t\t`${namesUtil.toCamel(skill.slug)}.*?${\n\t\t\t\t\tthis.expectedVersion\n\t\t\t\t}.*?myFantasticallyAmazingEventEmitTargetAndPayload`,\n\t\t\t\t'gis'\n\t\t\t),\n\t\t\tresults.files\n\t\t)\n\n\t\tconst schema = await this.Service('schema').importSchema(match)\n\n\t\tassert.isEqual(schema.id, 'myFantasticallyAmazingEventEmitTargetAndPayload')\n\t\tassert.isTruthy(schema.fields?.payload)\n\t\tassert.isTruthy(schema.fields?.target)\n\t}\n\n\tprotected static async createsExpectedPermissionContract(results: any) {\n\t\tconst builders = [\n\t\t\t{ filename: 'emitPermissions.builder.ts' },\n\t\t\t{ filename: 'listenPermissions.builder.ts' },\n\t\t]\n\n\t\tfor (const builder of builders) {\n\t\t\tconst { filename } = builder\n\n\t\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\tfilename,\n\t\t\t\tresults.files\n\t\t\t)\n\n\t\t\tconst path = versionUtil.resolvePath(\n\t\t\t\tthis.cwd,\n\t\t\t\t'src/events/',\n\t\t\t\tEVENT_NAME,\n\t\t\t\t'{{@latest}}',\n\t\t\t\tfilename\n\t\t\t)\n\n\t\t\tassert.isEqual(match, path)\n\t\t\tassert.isTrue(diskUtil.doesFileExist(path))\n\t\t}\n\t}\n\n\tprivate static async assertReturnsEventFromHealthCheck(\n\t\tcli: CliInterface,\n\t\tskill: RegisteredSkill\n\t) {\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.event)\n\t\tassert.isLength(health.event.events, 1)\n\n\t\tconst eventName = EVENT_NAME\n\t\tconst eventNamespace = namesUtil.toKebab(skill.slug)\n\n\t\tassert.doesInclude(health.event.events, {\n\t\t\teventName,\n\t\t\teventNamespace,\n\t\t\tversion: this.expectedVersion,\n\t\t})\n\n\t\tassert.doesInclude(health.event.contracts, {\n\t\t\tfullyQualifiedEventName: eventNameUtil.join({\n\t\t\t\teventName,\n\t\t\t\teventNamespace,\n\t\t\t\tversion: this.expectedVersion,\n\t\t\t}),\n\t\t})\n\t}\n\n\tprivate static async assertExpectedPayloadSchemas(\n\t\tresults: FeatureActionResponse\n\t) {\n\t\tconst payloadSchemas = [\n\t\t\t{\n\t\t\t\tfileName: 'emitPayload.builder.ts',\n\t\t\t\texpectedId: 'myFantasticallyAmazingEventEmitPayload',\n\t\t\t},\n\t\t\t{\n\t\t\t\tfileName: 'emitTarget.builder.ts',\n\t\t\t\texpectedId: 'myFantasticallyAmazingEventEmitTarget',\n\t\t\t},\n\t\t\t{\n\t\t\t\tfileName: 'responsePayload.builder.ts',\n\t\t\t\texpectedId: 'myFantasticallyAmazingEventResponsePayload',\n\t\t\t},\n\t\t]\n\n\t\tconst schemas = this.Service('schema')\n\n\t\tfor (const payload of payloadSchemas) {\n\t\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\tpayload.fileName,\n\t\t\t\tresults.files\n\t\t\t)\n\n\t\t\tassert.isEqual(\n\t\t\t\tmatch,\n\t\t\t\teventDiskUtil.resolveEventPath(this.cwd + '/src/events', {\n\t\t\t\t\tfileName: payload.fileName as any,\n\t\t\t\t\teventName: EVENT_NAME,\n\t\t\t\t\tversion: this.expectedVersion,\n\t\t\t\t})\n\t\t\t)\n\n\t\t\tconst imported = await schemas.importSchema(match)\n\t\t\tassert.isEqual(imported.id, payload.expectedId)\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"KeepingEventsInSync.test.js","names":["coreContract","eventContractUtil","unifyContracts","coreEventContracts","KeepingEventsInSyncTest","resolveHashSprucePath","Cli","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","skipInstallSkillPrompts","results","assertValidSyncEventsResults","skills","getSkillFixture","registerCurrentSkill","name","seedDemoSkill","skill2","Service","add","id","namespace","slug","registerEventContract","eventSignatures","isGlobal","fqen","eventNameUtil","join","eventName","version","eventNamespace","assertGlobalEventsAreTyped","skillEventContractTypesFile","contents","diskUtil","readFile","eventContractPath","doesInclude","promise","syncCoreEventsPretendingToBeMercuryTypes","cli","event","getFeature","wasHit","getEventContractBuilder","assertCoreEventContractsSavedToDisk","assertCorePayloadSchemasAreCreated","isFalse","doesFileExist","oldGetter","bind","isTrue","assertValidSyncSchemasResults","shouldSyncOnlyCoreEvents","eventBuilderFile","builder","writeFile","resolvePath","uninstall","isFalsy","errors","assertEventsHavePayloads","assertCombinedContractContents","coreContractContents","search","doesNotInclude","importCombinedContractsFile","imported","isTruthy","isArray","localContract","sigs","getNamedEventSignatures","sig","getSignatureByName","fullyQualifiedEventName","eventContractsFile","doesDirExist","importDefault","contract","signature","emitPayloadSchema","responsePayloadSchema","shouldHaveWritten","filesToCheck","path","pathUtil","sep","MERCURY_API_NAMESPACE","assertFilesWereGenerated","file","expected","doesExist","namesUtil","toCamel","AbstractEventTest"],"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync.test.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport {\n\tEventContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { validateSchema } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nconst coreContract = eventContractUtil.unifyContracts(\n\tcoreEventContracts as any\n) as SpruceSchemas.Mercury.v2020_12_25.EventContract\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static get eventContractPath() {\n\t\treturn this.resolveHashSprucePath('events', 'events.contract.ts')\n\t}\n\n\t@test()\n\tprotected static async hasSyncEventsAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('event', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsWithoutSavingCoreEventsByDefault() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst results = await this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({})\n\t\t)\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\t}\n\n\t@test()\n\tprotected static async mergesGlobalEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\n\t\tconst skill2 = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait this.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tawait skills.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-sync',\n\t\t\tversion: 'v2021_01_01',\n\t\t\teventNamespace: skill2.slug,\n\t\t})\n\t\tawait this.assertGlobalEventsAreTyped(fqen)\n\t}\n\n\t@test()\n\tprotected static async canSetSkillEventContractTypesFile() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tawait this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({\n\t\t\t\tskillEventContractTypesFile: 'testy test',\n\t\t\t})\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\t\tassert.doesInclude(contents, `declare module 'testy test'`)\n\t}\n\n\t@test()\n\tprotected static async canSyncOnlyCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst promise = this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tawait this.skipInstallSkillPrompts()\n\n\t\tconst results = await promise\n\n\t\tawait this.assertValidSyncEventsResults(results, true)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsHaveNeverBeenSynced() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tthis.assertCoreEventContractsSavedToDisk(false)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, false)\n\n\t\tassert.isFalse(wasHit)\n\t\tassert.isFalse(diskUtil.doesFileExist(this.eventContractPath))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemaAfterSyncEventsSyncsSchemasAndDoesNotWriteCoreEvents() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\tconst oldGetter = event.getEventContractBuilder.bind(event)\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t\treturn oldGetter()\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(wasHit)\n\n\t\tawait this.assertValidSyncSchemasResults(results, false)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasAfterSyncingCoreEventsSavesCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tawait this.assertValidSyncSchemasResults(results, true)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async assertValidSyncEventsResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents = false\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.assertValidSyncSchemasResults(results, shouldSyncOnlyCoreEvents)\n\t}\n\n\tprivate static async assertGlobalEventsAreTyped(eventName: string) {\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\n\t\tassert.doesInclude(contents, `'${eventName}':`)\n\t}\n\n\tprivate static async assertValidSyncSchemasResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertCoreEventContractsSavedToDisk(shouldSyncOnlyCoreEvents)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, shouldSyncOnlyCoreEvents)\n\n\t\tawait this.assertEventsHavePayloads(results)\n\t\tawait this.assertCombinedContractContents()\n\n\t\tconst coreContractContents = diskUtil.readFile(this.eventContractPath)\n\t\tconst search = `did-message::v2020_12_25': MercuryDidMessageEventContract_v2020_12_25['eventSignatures']['did-message::v2020_12_25']`\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tassert.doesInclude(coreContractContents, search)\n\t\t} else {\n\t\t\tassert.doesNotInclude(coreContractContents, search)\n\t\t}\n\t}\n\n\tprivate static async assertCombinedContractContents() {\n\t\tconst imported = await this.importCombinedContractsFile()\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isArray(imported)\n\n\t\tconst localContract = eventContractUtil.unifyContracts(imported)\n\t\tassert.isTruthy(localContract)\n\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\teventContractUtil.getSignatureByName(\n\t\t\t\tlocalContract,\n\t\t\t\tsig.fullyQualifiedEventName\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate static async importCombinedContractsFile(): Promise<EventContract[]> {\n\t\tconst eventContractsFile = this.eventContractPath\n\n\t\t// hack import to bring types in when importing contract file\n\t\tif (\n\t\t\tdiskUtil.doesDirExist(\n\t\t\t\tthis.resolvePath('node_modules/@sprucelabs/mercury-types')\n\t\t\t)\n\t\t) {\n\t\t\tconst contents = diskUtil.readFile(eventContractsFile)\n\t\t\tdiskUtil.writeFile(\n\t\t\t\teventContractsFile,\n\t\t\t\t`import '@sprucelabs/mercury-types'\\n${contents}`\n\t\t\t)\n\t\t}\n\n\t\tconst imported: EventContract[] = await this.Service(\n\t\t\t'import'\n\t\t).importDefault(eventContractsFile)\n\n\t\treturn imported\n\t}\n\n\tprivate static async assertEventsHavePayloads(\n\t\tresults: FeatureActionResponse,\n\t\teventName = 'authenticate'\n\t) {\n\t\tconst imported = await this.importCombinedContractsFile()\n\t\tconst contract = eventContractUtil.unifyContracts(imported)\n\n\t\tassert.isTruthy(contract)\n\n\t\tvalidateEventContract(contract)\n\n\t\tconst signature = eventContractUtil.getSignatureByName(contract, eventName)\n\n\t\tassert.isTruthy(signature.emitPayloadSchema)\n\t\tvalidateSchema(signature.emitPayloadSchema)\n\n\t\tassert.isTruthy(signature.responsePayloadSchema)\n\t\tvalidateSchema(signature.responsePayloadSchema)\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static assertCoreEventContractsSavedToDisk(shouldHaveWritten = true) {\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t`events/mercury/${namesUtil.toCamel(\n\t\t\t\t\tsig.eventName\n\t\t\t\t)}.v2020_12_25.contract.ts`\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to write a file ${expected}.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(\n\t\t\t\t\tdoesExist,\n\t\t\t\t\t`Generated contract for ${sig.fullyQualifiedEventName} and it should not have because it's a core contract.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"KeepingEventsInSync.test.js","names":["coreContract","eventContractUtil","unifyContracts","coreEventContracts","KeepingEventsInSyncTest","test","resolveHashSprucePath","Cli","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","skipInstallSkillPrompts","results","assertValidSyncEventsResults","skills","getSkillFixture","registerCurrentSkill","name","seedDemoSkill","skill2","Service","add","id","namespace","slug","registerEventContract","eventSignatures","isGlobal","fqen","eventNameUtil","join","eventName","version","eventNamespace","assertGlobalEventsAreTyped","skillEventContractTypesFile","contents","diskUtil","readFile","eventContractPath","doesInclude","promise","syncCoreEventsPretendingToBeMercuryTypes","cli","event","getFeature","wasHit","getEventContractBuilder","assertCoreEventContractsSavedToDisk","assertCorePayloadSchemasAreCreated","isFalse","doesFileExist","oldGetter","bind","isTrue","assertValidSyncSchemasResults","shouldSyncOnlyCoreEvents","eventBuilderFile","builder","writeFile","resolvePath","uninstall","isFalsy","errors","assertEventsHavePayloads","assertCombinedContractContents","coreContractContents","search","doesNotInclude","importCombinedContractsFile","imported","isTruthy","isArray","localContract","sigs","getNamedEventSignatures","sig","getSignatureByName","fullyQualifiedEventName","eventContractsFile","doesDirExist","importDefault","contract","validateEventContract","signature","emitPayloadSchema","validateSchema","responsePayloadSchema","shouldHaveWritten","filesToCheck","path","pathUtil","sep","MERCURY_API_NAMESPACE","assertFilesWereGenerated","file","expected","doesExist","namesUtil","toCamel","AbstractEventTest"],"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync.test.ts"],"sourcesContent":["import pathUtil from 'path'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport {\n\tEventContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { validateSchema } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nconst coreContract = eventContractUtil.unifyContracts(\n\tcoreEventContracts as any\n) as SpruceSchemas.Mercury.v2020_12_25.EventContract\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static get eventContractPath() {\n\t\treturn this.resolveHashSprucePath('events', 'events.contract.ts')\n\t}\n\n\t@test()\n\tprotected static async hasSyncEventsAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('event', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsWithoutSavingCoreEventsByDefault() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst results = await this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({})\n\t\t)\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\t}\n\n\t@test()\n\tprotected static async mergesGlobalEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\n\t\tconst skill2 = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait this.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tawait skills.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-sync',\n\t\t\tversion: 'v2021_01_01',\n\t\t\teventNamespace: skill2.slug,\n\t\t})\n\t\tawait this.assertGlobalEventsAreTyped(fqen)\n\t}\n\n\t@test()\n\tprotected static async canSetSkillEventContractTypesFile() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tawait this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({\n\t\t\t\tskillEventContractTypesFile: 'testy test',\n\t\t\t})\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\t\tassert.doesInclude(contents, `declare module 'testy test'`)\n\t}\n\n\t@test()\n\tprotected static async canSyncOnlyCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst promise = this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tawait this.skipInstallSkillPrompts()\n\n\t\tconst results = await promise\n\n\t\tawait this.assertValidSyncEventsResults(results, true)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsHaveNeverBeenSynced() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tthis.assertCoreEventContractsSavedToDisk(false)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, false)\n\n\t\tassert.isFalse(wasHit)\n\t\tassert.isFalse(diskUtil.doesFileExist(this.eventContractPath))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemaAfterSyncEventsSyncsSchemasAndDoesNotWriteCoreEvents() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\tconst oldGetter = event.getEventContractBuilder.bind(event)\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t\treturn oldGetter()\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(wasHit)\n\n\t\tawait this.assertValidSyncSchemasResults(results, false)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasAfterSyncingCoreEventsSavesCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tawait this.assertValidSyncSchemasResults(results, true)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async assertValidSyncEventsResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents = false\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.assertValidSyncSchemasResults(results, shouldSyncOnlyCoreEvents)\n\t}\n\n\tprivate static async assertGlobalEventsAreTyped(eventName: string) {\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\n\t\tassert.doesInclude(contents, `'${eventName}':`)\n\t}\n\n\tprivate static async assertValidSyncSchemasResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertCoreEventContractsSavedToDisk(shouldSyncOnlyCoreEvents)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, shouldSyncOnlyCoreEvents)\n\n\t\tawait this.assertEventsHavePayloads(results)\n\t\tawait this.assertCombinedContractContents()\n\n\t\tconst coreContractContents = diskUtil.readFile(this.eventContractPath)\n\t\tconst search = `did-message::v2020_12_25': MercuryDidMessageEventContract_v2020_12_25['eventSignatures']['did-message::v2020_12_25']`\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tassert.doesInclude(coreContractContents, search)\n\t\t} else {\n\t\t\tassert.doesNotInclude(coreContractContents, search)\n\t\t}\n\t}\n\n\tprivate static async assertCombinedContractContents() {\n\t\tconst imported = await this.importCombinedContractsFile()\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isArray(imported)\n\n\t\tconst localContract = eventContractUtil.unifyContracts(imported)\n\t\tassert.isTruthy(localContract)\n\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\teventContractUtil.getSignatureByName(\n\t\t\t\tlocalContract,\n\t\t\t\tsig.fullyQualifiedEventName\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate static async importCombinedContractsFile(): Promise<EventContract[]> {\n\t\tconst eventContractsFile = this.eventContractPath\n\n\t\t// hack import to bring types in when importing contract file\n\t\tif (\n\t\t\tdiskUtil.doesDirExist(\n\t\t\t\tthis.resolvePath('node_modules/@sprucelabs/mercury-types')\n\t\t\t)\n\t\t) {\n\t\t\tconst contents = diskUtil.readFile(eventContractsFile)\n\t\t\tdiskUtil.writeFile(\n\t\t\t\teventContractsFile,\n\t\t\t\t`import '@sprucelabs/mercury-types'\\n${contents}`\n\t\t\t)\n\t\t}\n\n\t\tconst imported: EventContract[] = await this.Service(\n\t\t\t'import'\n\t\t).importDefault(eventContractsFile)\n\n\t\treturn imported\n\t}\n\n\tprivate static async assertEventsHavePayloads(\n\t\tresults: FeatureActionResponse,\n\t\teventName = 'authenticate'\n\t) {\n\t\tconst imported = await this.importCombinedContractsFile()\n\t\tconst contract = eventContractUtil.unifyContracts(imported)\n\n\t\tassert.isTruthy(contract)\n\n\t\tvalidateEventContract(contract)\n\n\t\tconst signature = eventContractUtil.getSignatureByName(contract, eventName)\n\n\t\tassert.isTruthy(signature.emitPayloadSchema)\n\t\tvalidateSchema(signature.emitPayloadSchema)\n\n\t\tassert.isTruthy(signature.responsePayloadSchema)\n\t\tvalidateSchema(signature.responsePayloadSchema)\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static assertCoreEventContractsSavedToDisk(shouldHaveWritten = true) {\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t`events/mercury/${namesUtil.toCamel(\n\t\t\t\t\tsig.eventName\n\t\t\t\t)}.v2020_12_25.contract.ts`\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to write a file ${expected}.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(\n\t\t\t\t\tdoesExist,\n\t\t\t\t\t`Generated contract for ${sig.fullyQualifiedEventName} and it should not have because it's a core contract.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"mappings":"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"}