@sprucelabs/spruce-cli 17.1.55 → 18.1.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 (150) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +1 -1
  3. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  4. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
  5. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  6. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +4 -4
  7. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  8. package/build/__tests__/behavioral/WatchingSkillViews.test.js +3 -3
  9. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  10. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +1 -1
  11. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  12. package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
  13. package/build/__tests__/behavioral/events/CreatingAListener.test.js +118 -59
  14. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  15. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.d.ts +17 -0
  16. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js +137 -0
  17. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js.map +1 -0
  18. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +46 -45
  19. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  20. package/build/__tests__/behavioral/tests/CreatingATest.test.js +1 -1
  21. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  22. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +4 -4
  23. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  24. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +2 -2
  25. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  26. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +2 -2
  27. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  28. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +2 -2
  29. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  30. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +2 -2
  31. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  32. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  33. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  34. package/build/__tests__/behavioral/views/CreatingATheme.test.js +1 -1
  35. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  36. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.d.ts +3 -3
  37. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +153 -156
  38. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  39. package/build/__tests__/implementation/ActionExecuter.test.js +2 -2
  40. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  41. package/build/__tests__/implementation/ActionExecuter2.test.js +1 -1
  42. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  43. package/build/__tests__/implementation/ActionExecuter4.test.js +1 -1
  44. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  45. package/build/__tests__/implementation/FeatureInstaller.test.js +8 -4
  46. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  47. package/build/__tests__/implementation/GlobalEmitter.d.ts +1 -1
  48. package/build/__tests__/implementation/GlobalEmitter.js +9 -10
  49. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  50. package/build/__tests__/implementation/SettingUpANodeModule.test.js +1 -1
  51. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  52. package/build/__tests__/implementation/SkillStore.test.d.ts +3 -1
  53. package/build/__tests__/implementation/SkillStore.test.js +67 -50
  54. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  55. package/build/__tests__/implementation/StoreFeature.test.js +1 -1
  56. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  57. package/build/cli.js +3 -3
  58. package/build/cli.js.map +1 -1
  59. package/build/features/AbstractAction.d.ts +2 -2
  60. package/build/features/AbstractAction.js.map +1 -1
  61. package/build/features/AbstractFeature.d.ts +22 -22
  62. package/build/features/AbstractFeature.js.map +1 -1
  63. package/build/features/ActionExecuter.d.ts +8 -8
  64. package/build/features/ActionExecuter.js.map +1 -1
  65. package/build/features/FeatureInstaller.d.ts +15 -2
  66. package/build/features/FeatureInstaller.js +36 -36
  67. package/build/features/FeatureInstaller.js.map +1 -1
  68. package/build/features/FeatureInstallerFactory.d.ts +12 -10
  69. package/build/features/FeatureInstallerFactory.js +2 -2
  70. package/build/features/FeatureInstallerFactory.js.map +1 -1
  71. package/build/features/OverrideActionDecorator.js +4 -5
  72. package/build/features/OverrideActionDecorator.js.map +1 -1
  73. package/build/features/event/actions/ListenAction.js.map +1 -1
  74. package/build/features/event/actions/SetRemoteAction.d.ts +1 -0
  75. package/build/features/event/actions/SetRemoteAction.js +2 -1
  76. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  77. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  78. package/build/features/node/NodeFeature.js.map +1 -1
  79. package/build/features/skill/SkillFeature.js.map +1 -1
  80. package/build/features/skill/stores/SkillStore.d.ts +4 -1
  81. package/build/features/skill/stores/SkillStore.js +127 -100
  82. package/build/features/skill/stores/SkillStore.js.map +1 -1
  83. package/build/features/watch/WatchFeature.js +1 -1
  84. package/build/features/watch/WatchFeature.js.map +1 -1
  85. package/build/interfaces/SpyInterface.d.ts +2 -0
  86. package/build/interfaces/SpyInterface.js +16 -4
  87. package/build/interfaces/SpyInterface.js.map +1 -1
  88. package/build/stores/AbstractStore.d.ts +9 -7
  89. package/build/stores/AbstractStore.js.map +1 -1
  90. package/build/stores/StoreFactory.d.ts +19 -13
  91. package/build/stores/StoreFactory.js +15 -13
  92. package/build/stores/StoreFactory.js.map +1 -1
  93. package/build/tests/AbstractCliTest.d.ts +9 -6
  94. package/build/tests/AbstractCliTest.js +53 -45
  95. package/build/tests/AbstractCliTest.js.map +1 -1
  96. package/build/tests/AbstractSchemaTest.js +18 -20
  97. package/build/tests/AbstractSchemaTest.js.map +1 -1
  98. package/build/utilities/action.utility.js +3 -1
  99. package/build/utilities/action.utility.js.map +1 -1
  100. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  101. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  102. package/node_modules/@typescript-eslint/types/package.json +2 -2
  103. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  104. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  105. package/package.json +28 -86
  106. package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
  107. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  108. package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +4 -4
  109. package/src/__tests__/behavioral/WatchingSkillViews.test.ts +3 -3
  110. package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
  111. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +41 -14
  112. package/src/__tests__/behavioral/events/EverythingInstalledInstaller.ts +46 -0
  113. package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +10 -5
  114. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
  115. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +4 -4
  116. package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +2 -2
  117. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +2 -2
  118. package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +2 -2
  119. package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +2 -2
  120. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
  121. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
  122. package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +35 -35
  123. package/src/__tests__/implementation/ActionExecuter.test.ts +2 -2
  124. package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
  125. package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
  126. package/src/__tests__/implementation/FeatureInstaller.test.ts +8 -1
  127. package/src/__tests__/implementation/GlobalEmitter.ts +2 -4
  128. package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
  129. package/src/__tests__/implementation/SkillStore.test.ts +23 -24
  130. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  131. package/src/cli.ts +7 -3
  132. package/src/features/AbstractAction.ts +3 -3
  133. package/src/features/AbstractFeature.ts +26 -26
  134. package/src/features/ActionExecuter.ts +9 -9
  135. package/src/features/FeatureInstaller.ts +32 -12
  136. package/src/features/FeatureInstallerFactory.ts +17 -13
  137. package/src/features/OverrideActionDecorator.ts +2 -5
  138. package/src/features/event/actions/ListenAction.ts +1 -0
  139. package/src/features/event/actions/SetRemoteAction.ts +2 -1
  140. package/src/features/event/actions/SyncListenersAction.ts +0 -1
  141. package/src/features/node/NodeFeature.ts +3 -1
  142. package/src/features/skill/SkillFeature.ts +3 -3
  143. package/src/features/skill/stores/SkillStore.ts +18 -11
  144. package/src/features/watch/WatchFeature.ts +1 -1
  145. package/src/interfaces/SpyInterface.ts +10 -0
  146. package/src/stores/AbstractStore.ts +14 -8
  147. package/src/stores/StoreFactory.ts +56 -44
  148. package/src/tests/AbstractCliTest.ts +53 -45
  149. package/src/tests/AbstractSchemaTest.ts +1 -3
  150. package/src/utilities/action.utility.ts +3 -1
@@ -48,7 +48,7 @@ var UpgradingWithListeners = (_dec = (0, _testUtils.test)('should sync listeners
48
48
  this.commandFaker.fakeCommand(new RegExp(/yarn/));
49
49
  wasHit = false;
50
50
  _context2.next = 7;
51
- return this.getEmitter().on('feature.will-execute', /*#__PURE__*/function () {
51
+ return this.emitter.on('feature.will-execute', /*#__PURE__*/function () {
52
52
  var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
53
53
  var featureCode, actionCode;
54
54
  return _regenerator["default"].wrap(function _callee$(_context) {
@@ -72,7 +72,7 @@ var UpgradingWithListeners = (_dec = (0, _testUtils.test)('should sync listeners
72
72
  }());
73
73
  case 7:
74
74
  _context2.next = 9;
75
- return this.getEmitter().emit('feature.did-execute', {
75
+ return this.emitter.emit('feature.did-execute', {
76
76
  featureCode: 'node',
77
77
  actionCode: actionCode,
78
78
  results: {}
@@ -1 +1 @@
1
- {"version":3,"file":"UpgradingWithListeners.test.js","names":["UpgradingWithListeners","test","featureCode","shouldHit","actionCode","FeatureFixture","installCachedFeatures","commandFaker","fakeCommand","RegExp","wasHit","getEmitter","on","emit","results","eventResponseUtil","getAllResponsePayloadsAndErrors","SpruceError","errors","assert","isFalsy","isEqual","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport { FeatureCode } from '../../../features/features.types'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingWithListeners extends AbstractCliTest {\n\t@test('should sync listeners when installed', 'events', true)\n\t@test('should not sync listeners when not installed', 'skills', false)\n\t@test(\n\t\t'should not sync listeners when creating node when not installed',\n\t\t'testsInNodeModule',\n\t\tfalse,\n\t\t'create'\n\t)\n\t@test(\n\t\t'should not sync listeners when creating node when installed',\n\t\t'events',\n\t\tfalse,\n\t\t'create'\n\t)\n\tprotected static async upgradingSyncsListeners(\n\t\tfeatureCode: FeatureCode,\n\t\tshouldHit: boolean,\n\t\tactionCode = 'upgrade'\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures(featureCode)\n\n\t\tthis.commandFaker.fakeCommand(new RegExp(/yarn/))\n\n\t\tlet wasHit = false\n\n\t\tawait this.getEmitter().on(\n\t\t\t'feature.will-execute',\n\t\t\tasync ({ featureCode, actionCode }) => {\n\t\t\t\tif (featureCode === 'event' && actionCode === 'sync.listeners') {\n\t\t\t\t\twasHit = true\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\n\t\tconst results = await this.getEmitter().emit('feature.did-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode,\n\t\t\tresults: {},\n\t\t})\n\n\t\tconst { errors } = eventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\tresults,\n\t\t\tSpruceError\n\t\t)\n\n\t\tassert.isFalsy(errors)\n\n\t\tassert.isEqual(wasHit, shouldHit)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AAEA;AAA4D;AAAA;AAAA;AAAA,IAEvCA,sBAAsB,WACzC,IAAAC,eAAI,EAAC,sCAAsC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAC5D,IAAAA,eAAI,EAAC,8CAA8C,EAAE,QAAQ,EAAE,KAAK,CAAC,UACrE,IAAAA,eAAI,EACJ,iEAAiE,EACjE,mBAAmB,EACnB,KAAK,EACL,QAAQ,CACR,UACA,IAAAA,eAAI,EACJ,6DAA6D,EAC7D,QAAQ,EACR,KAAK,EACL,QAAQ,CACR;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6GAbD,kBAeCC,WAAwB,EACxBC,SAAkB;QAAA;UAAA;UAAA;UAAA;UAAA;UAAA;QAAA;UAAA;YAAA;cAAA;gBAClBC,UAAU,8DAAG,SAAS;gBAAA;gBAAA,OAEhB,IAAI,CAACC,cAAc,EAAE,CAACC,qBAAqB,CAACJ,WAAW,CAAC;cAAA;gBAE9D,IAAI,CAACK,YAAY,CAACC,WAAW,CAAC,IAAIC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE7CC,MAAM,GAAG,KAAK;gBAAA;gBAAA,OAEZ,IAAI,CAACC,UAAU,EAAE,CAACC,EAAE,CACzB,sBAAsB;kBAAA,0FACtB;oBAAA;oBAAA;sBAAA;wBAAA;0BAAA;4BAASV,WAAW,QAAXA,WAAW,EAAEE,UAAU,QAAVA,UAAU;4BAC/B,IAAIF,WAAW,KAAK,OAAO,IAAIE,UAAU,KAAK,gBAAgB,EAAE;8BAC/DM,MAAM,GAAG,IAAI;4BACd;0BAAC;0BAAA;4BAAA;wBAAA;sBAAA;oBAAA;kBAAA,CACD;kBAAA;oBAAA;kBAAA;gBAAA,IACD;cAAA;gBAAA;gBAAA,OAEqB,IAAI,CAACC,UAAU,EAAE,CAACE,IAAI,CAAC,qBAAqB,EAAE;kBACnEX,WAAW,EAAE,MAAM;kBACnBE,UAAU,EAAVA,UAAU;kBACVU,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;cAAA;gBAJIA,OAAO;gBAAA,wBAMMC,mCAAiB,CAACC,+BAA+B,CACnEF,OAAO,EACPG,uBAAW,CACX,EAHOC,MAAM,yBAANA,MAAM;gBAKdC,iBAAM,CAACC,OAAO,CAACF,MAAM,CAAC;gBAEtBC,iBAAM,CAACE,OAAO,CAACX,MAAM,EAAEP,SAAS,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAjDkDmB,4BAAe;AAAA"}
1
+ {"version":3,"file":"UpgradingWithListeners.test.js","names":["UpgradingWithListeners","test","featureCode","shouldHit","actionCode","FeatureFixture","installCachedFeatures","commandFaker","fakeCommand","RegExp","wasHit","emitter","on","emit","results","eventResponseUtil","getAllResponsePayloadsAndErrors","SpruceError","errors","assert","isFalsy","isEqual","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts"],"sourcesContent":["import { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport { FeatureCode } from '../../../features/features.types'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingWithListeners extends AbstractCliTest {\n\t@test('should sync listeners when installed', 'events', true)\n\t@test('should not sync listeners when not installed', 'skills', false)\n\t@test(\n\t\t'should not sync listeners when creating node when not installed',\n\t\t'testsInNodeModule',\n\t\tfalse,\n\t\t'create'\n\t)\n\t@test(\n\t\t'should not sync listeners when creating node when installed',\n\t\t'events',\n\t\tfalse,\n\t\t'create'\n\t)\n\tprotected static async upgradingSyncsListeners(\n\t\tfeatureCode: FeatureCode,\n\t\tshouldHit: boolean,\n\t\tactionCode = 'upgrade'\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures(featureCode)\n\n\t\tthis.commandFaker.fakeCommand(new RegExp(/yarn/))\n\n\t\tlet wasHit = false\n\n\t\tawait this.emitter.on(\n\t\t\t'feature.will-execute',\n\t\t\tasync ({ featureCode, actionCode }) => {\n\t\t\t\tif (featureCode === 'event' && actionCode === 'sync.listeners') {\n\t\t\t\t\twasHit = true\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\n\t\tconst results = await this.emitter.emit('feature.did-execute', {\n\t\t\tfeatureCode: 'node',\n\t\t\tactionCode,\n\t\t\tresults: {},\n\t\t})\n\n\t\tconst { errors } = eventResponseUtil.getAllResponsePayloadsAndErrors(\n\t\t\tresults,\n\t\t\tSpruceError\n\t\t)\n\n\t\tassert.isFalsy(errors)\n\n\t\tassert.isEqual(wasHit, shouldHit)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AAEA;AAA4D;AAAA;AAAA;AAAA,IAEvCA,sBAAsB,WACzC,IAAAC,eAAI,EAAC,sCAAsC,EAAE,QAAQ,EAAE,IAAI,CAAC,UAC5D,IAAAA,eAAI,EAAC,8CAA8C,EAAE,QAAQ,EAAE,KAAK,CAAC,UACrE,IAAAA,eAAI,EACJ,iEAAiE,EACjE,mBAAmB,EACnB,KAAK,EACL,QAAQ,CACR,UACA,IAAAA,eAAI,EACJ,6DAA6D,EAC7D,QAAQ,EACR,KAAK,EACL,QAAQ,CACR;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,6GAbD,kBAeCC,WAAwB,EACxBC,SAAkB;QAAA;UAAA;UAAA;UAAA;UAAA;UAAA;QAAA;UAAA;YAAA;cAAA;gBAClBC,UAAU,8DAAG,SAAS;gBAAA;gBAAA,OAEhB,IAAI,CAACC,cAAc,EAAE,CAACC,qBAAqB,CAACJ,WAAW,CAAC;cAAA;gBAE9D,IAAI,CAACK,YAAY,CAACC,WAAW,CAAC,IAAIC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE7CC,MAAM,GAAG,KAAK;gBAAA;gBAAA,OAEZ,IAAI,CAACC,OAAO,CAACC,EAAE,CACpB,sBAAsB;kBAAA,0FACtB;oBAAA;oBAAA;sBAAA;wBAAA;0BAAA;4BAASV,WAAW,QAAXA,WAAW,EAAEE,UAAU,QAAVA,UAAU;4BAC/B,IAAIF,WAAW,KAAK,OAAO,IAAIE,UAAU,KAAK,gBAAgB,EAAE;8BAC/DM,MAAM,GAAG,IAAI;4BACd;0BAAC;0BAAA;4BAAA;wBAAA;sBAAA;oBAAA;kBAAA,CACD;kBAAA;oBAAA;kBAAA;gBAAA,IACD;cAAA;gBAAA;gBAAA,OAEqB,IAAI,CAACC,OAAO,CAACE,IAAI,CAAC,qBAAqB,EAAE;kBAC9DX,WAAW,EAAE,MAAM;kBACnBE,UAAU,EAAVA,UAAU;kBACVU,OAAO,EAAE,CAAC;gBACX,CAAC,CAAC;cAAA;gBAJIA,OAAO;gBAAA,wBAMMC,mCAAiB,CAACC,+BAA+B,CACnEF,OAAO,EACPG,uBAAW,CACX,EAHOC,MAAM,yBAANA,MAAM;gBAKdC,iBAAM,CAACC,OAAO,CAACF,MAAM,CAAC;gBAEtBC,iBAAM,CAACE,OAAO,CAACX,MAAM,EAAEP,SAAS,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAjDkDmB,4BAAe;AAAA"}
@@ -68,7 +68,7 @@ var CreatingASkillViewTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
68
68
  switch (_context2.prev = _context2.next) {
69
69
  case 0:
70
70
  _context2.next = 2;
71
- return this.getFeatureInstaller();
71
+ return this.featureInstaller;
72
72
  case 2:
73
73
  features = _context2.sent;
74
74
  view = features.getFeature('view');
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingASkillView.test.js","names":["CreatingASkillViewTest","test","action","Action","assert","isFunction","execute","getFeatureInstaller","features","view","getFeature","isEqualDeep","dependencies","code","isRequired","viewType","waitForInput","last","ui","getLastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssert","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async viewFieatureHasExpectedDependencies() {\n\t\tconst features = await this.getFeatureInstaller()\n\t\tconst view = features.getFeature('view')\n\t\tassert.isEqualDeep(view.dependencies, [\n\t\t\t{\n\t\t\t\tcode: 'node',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'schema',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'event',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssert.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async typesSkillViewControllerLoadOptionsOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface SkillViewControllerArgsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`type LoadOptions<Args extends Record<string,any>[]> = Args[0]['args'] extends Record<string, any> ? Args[0]['args'] : Record<never, any>`\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.root': LoadOptions<Parameters<RootSkillViewController['load']>>`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tStubStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new StubStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tdevice: {} as any,\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingASkillView.test.js","names":["CreatingASkillViewTest","test","action","Action","assert","isFunction","execute","featureInstaller","features","view","getFeature","isEqualDeep","dependencies","code","isRequired","viewType","waitForInput","last","ui","getLastInvocation","isEqual","command","reset","isRoot","results","isFalsy","errors","rootSvc","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","contents","diskUtil","readFile","isTruthy","errorAssert","assertError","name","promise","sendInput","dashboardVc","nameReadable","options","choices","value","appointmentsCard","buildTestfile","idInterfaceName","testFile","resolvePath","writeFile","importAll","imported","svcModel","svcId","vcModel","vcId","viewsFile","resolveHashSprucePath","viewContents","trim","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingASkillView.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport CreateAction from '../../../features/view/actions/CreateAction'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillViewTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprivate static action: CreateAction\n\tprivate static rootSvc: string\n\tpublic static appointmentsCard: string\n\tprivate static dashboardVc: string\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.action = this.Action('view', 'create') as CreateAction\n\t}\n\n\t@test()\n\tprotected static hasCreateAction() {\n\t\tassert.isFunction(this.action.execute)\n\t}\n\n\t@test()\n\tprotected static async viewFieatureHasExpectedDependencies() {\n\t\tconst features = await this.featureInstaller\n\t\tconst view = features.getFeature('view')\n\t\tassert.isEqualDeep(view.dependencies, [\n\t\t\t{\n\t\t\t\tcode: 'node',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'schema',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcode: 'event',\n\t\t\t\tisRequired: true,\n\t\t\t},\n\t\t])\n\t}\n\n\t@test()\n\tprotected static async asksIfRootSkillViewIfNotYetCreated() {\n\t\tvoid this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'confirm')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async canCreateRootSkillView() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.rootSvc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Root.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.rootSvc, 'skillViewControllers')\n\t}\n\n\t@test()\n\tprotected static async generatesValidRootSkillView() {\n\t\tawait this.Service('typeChecker').check(this.rootSvc)\n\t}\n\n\t@test()\n\tprotected static async rootSkillViewExtendsAbstractSkillViewController() {\n\t\tconst contents = diskUtil.readFile(this.rootSvc)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class RootSkillViewController extends AbstractSkillViewController'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantCreateTwoRootSvcs() {\n\t\tconst results = await this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t\tisRoot: true,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\n\t\terrorAssert.assertError(results.errors?.[0], 'SKILL_VIEW_EXISTS', {\n\t\t\tname: 'Root',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async asksForNamesIfCreatingSkillViewNotRoot() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'skillView',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\n\t\tawait this.ui.sendInput('Dashboard')\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.dashboardVc = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Dashboard.svc.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(this.dashboardVc, 'skillViewControllers')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async asksForViewModelWhenCreatingSkillView() {\n\t\tconst promise = this.action.execute({\n\t\t\tviewType: 'view',\n\t\t\tnameReadable: 'Appointments card',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, {\n\t\t\tvalue: 'Card',\n\t\t})\n\n\t\tawait this.ui.sendInput('Card')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.appointmentsCard = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'AppointmentsCard.vc.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static skillViewExtendsAbstractViewControllerWithProperView() {\n\t\tconst contents = diskUtil.readFile(this.appointmentsCard)\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default class AppointmentsCardViewController extends AbstractViewController<Card>'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesRootSkillViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'SkillViewControllerId',\n\t\t\tcode: `\nconst root = vcFactory.Controller('testing-views.root', {})\nexport const svcModel = root.render()\nexport const svcId: SkillViewControllerId = 'testing-views.root'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.svcModel)\n\t\tassert.isTruthy(imported.svcId)\n\t}\n\n\t@test()\n\tprotected static async nicelyTypesViewController() {\n\t\tconst contents = this.buildTestfile({\n\t\t\tidInterfaceName: 'ViewControllerId',\n\t\t\tcode: `\n\t\tconst apptCard = vcFactory.Controller('testing-views.appointments-card', {})\n\t\texport const vcModel = apptCard.render()\n\t\texport const vcId: ViewControllerId = 'testing-views.appointments-card'`,\n\t\t})\n\n\t\tconst testFile = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(testFile, contents)\n\n\t\tconst imported = await this.Service('import').importAll(testFile)\n\n\t\tassert.isTruthy(imported.vcModel)\n\t\tassert.isTruthy(imported.vcId)\n\t}\n\n\t@test()\n\tprotected static async typesViewControllerOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface ViewControllerOptionsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.appointments-card': ConstructorParameters<typeof AppointmentsCardViewController>[0]`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async typesSkillViewControllerLoadOptionsOptions() {\n\t\tconst viewsFile = this.resolveHashSprucePath('views', 'views.ts')\n\t\tconst viewContents = diskUtil.readFile(viewsFile)\n\n\t\tassert.doesInclude(viewContents, `interface SkillViewControllerArgsMap`)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`type LoadOptions<Args extends Record<string,any>[]> = Args[0]['args'] extends Record<string, any> ? Args[0]['args'] : Record<never, any>`\n\t\t)\n\t\tassert.doesInclude(\n\t\t\tviewContents,\n\t\t\t`'testing-views.root': LoadOptions<Parameters<RootSkillViewController['load']>>`\n\t\t)\n\t}\n\n\tprivate static buildTestfile(options: {\n\t\tcode: string\n\t\tidInterfaceName: 'SkillViewControllerId' | 'ViewControllerId'\n\t}) {\n\t\tconst { code, idInterfaceName } = options\n\n\t\treturn (\n\t\t\t`\nimport ` +\n\t\t\t`'#spruce/views/views'\nimport {\n\tViewControllerFactory,\n\tAuthenticatorImpl,\n\tStubStorage,\n\t${idInterfaceName},\n} from '@sprucelabs/heartwood-view-controllers'\nimport { vcDiskUtil } from '@sprucelabs/spruce-test-fixtures'\n\nAuthenticatorImpl.setStorage(new StubStorage())\n\nconst vcFactory = ViewControllerFactory.Factory({\n\tcontrollerMap: vcDiskUtil.loadViewControllersAndBuildMap('testing-views', __dirname),\n\tdevice: {} as any,\n\tconnectToApi: async () => {\n\t\treturn 'yes' as any\n\t},\n})\n${code}\n\t\t`.trim()\n\t\t)\n\t}\n}\n"],"mappings":"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"}
@@ -164,7 +164,7 @@ var CreatingAThemeTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtils.
164
164
  while (1) {
165
165
  switch (_context7.prev = _context7.next) {
166
166
  case 0:
167
- emitter = this.getEmitter();
167
+ emitter = this.emitter;
168
168
  hitCount = 0;
169
169
  _spruceSkillUtils.diskUtil.deleteFile(this.getThemePath());
170
170
  _context7.next = 5;
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingATheme.test.js","names":["CreatingAThemeTest","test","assert","isFunction","Action","execute","getSkillFixture","registerCurrentSkill","name","results","isFalsy","errors","isTrue","diskUtil","doesFileExist","resolveHashSprucePath","getThemePath","Service","importDefault","imported","isTruthy","errorAssert","assertError","emitter","getEmitter","hitCount","deleteFile","on","payload","featureCode","actionCode","isEqual","resolvePath","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingATheme.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class CreatingAThemeTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\n\t@test()\n\tprotected static async hasCreateThemeAction() {\n\t\tassert.isFunction(this.Action('view', 'createTheme').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsFirst() {\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'current skill in creating a theme',\n\t\t})\n\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(\n\t\t\t\tthis.resolveHashSprucePath('events/events.contract.ts')\n\t\t\t)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async makesThemeFile() {\n\t\tassert.isTrue(diskUtil.doesFileExist(this.getThemePath()))\n\t}\n\n\t@test()\n\tprotected static async makesValidThemeFile() {\n\t\tconst imported = await this.Service('import').importDefault(\n\t\t\tthis.getThemePath()\n\t\t)\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isTrue('color1' in imported)\n\t}\n\n\t@test()\n\tprotected static async cantRunTwice() {\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'THEME_EXISTS')\n\t}\n\n\t@test()\n\tprotected static async doesNotSyncEventsIfAlreadySynced() {\n\t\tconst emitter = this.getEmitter()\n\t\tlet hitCount = 0\n\n\t\tdiskUtil.deleteFile(this.getThemePath())\n\n\t\tawait emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\n\t\t\tif (featureCode === 'event' && actionCode === 'sync') {\n\t\t\t\thitCount++\n\t\t\t}\n\t\t})\n\n\t\tawait this.Action('view', 'createTheme').execute({})\n\n\t\tassert.isEqual(hitCount, 0)\n\t}\n\n\tprivate static getThemePath(): string {\n\t\treturn this.resolvePath('src', 'themes', 'skill.theme.ts')\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingATheme.test.js","names":["CreatingAThemeTest","test","assert","isFunction","Action","execute","getSkillFixture","registerCurrentSkill","name","results","isFalsy","errors","isTrue","diskUtil","doesFileExist","resolveHashSprucePath","getThemePath","Service","importDefault","imported","isTruthy","errorAssert","assertError","emitter","hitCount","deleteFile","on","payload","featureCode","actionCode","isEqual","resolvePath","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/views/CreatingATheme.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class CreatingAThemeTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\n\t@test()\n\tprotected static async hasCreateThemeAction() {\n\t\tassert.isFunction(this.Action('view', 'createTheme').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsFirst() {\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'current skill in creating a theme',\n\t\t})\n\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(\n\t\t\t\tthis.resolveHashSprucePath('events/events.contract.ts')\n\t\t\t)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async makesThemeFile() {\n\t\tassert.isTrue(diskUtil.doesFileExist(this.getThemePath()))\n\t}\n\n\t@test()\n\tprotected static async makesValidThemeFile() {\n\t\tconst imported = await this.Service('import').importDefault(\n\t\t\tthis.getThemePath()\n\t\t)\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isTrue('color1' in imported)\n\t}\n\n\t@test()\n\tprotected static async cantRunTwice() {\n\t\tconst results = await this.Action('view', 'createTheme').execute({})\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'THEME_EXISTS')\n\t}\n\n\t@test()\n\tprotected static async doesNotSyncEventsIfAlreadySynced() {\n\t\tconst emitter = this.emitter\n\t\tlet hitCount = 0\n\n\t\tdiskUtil.deleteFile(this.getThemePath())\n\n\t\tawait emitter.on('feature.will-execute', async (payload) => {\n\t\t\tconst { featureCode, actionCode } = payload\n\n\t\t\tif (featureCode === 'event' && actionCode === 'sync') {\n\t\t\t\thitCount++\n\t\t\t}\n\t\t})\n\n\t\tawait this.Action('view', 'createTheme').execute({})\n\n\t\tassert.isEqual(hitCount, 0)\n\t}\n\n\tprivate static getThemePath(): string {\n\t\treturn this.resolvePath('src', 'themes', 'skill.theme.ts')\n\t}\n}\n"],"mappings":"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"}
@@ -6,12 +6,12 @@ export default class WatchingForChangesTest extends AbstractCliTest {
6
6
  protected static canStartAndStopWatch(): Promise<void>;
7
7
  protected static watchesInCorrectDir(path: string, shouldFire: boolean): Promise<void>;
8
8
  protected static watcherFiresEventWhenASrcFileChanges(changeCount: number): Promise<void>;
9
- private static stopWatching;
10
- private static startWatching;
11
- protected static watchRunStop(runner: () => Promise<GeneratedFileOrDir[]>): Promise<void>;
12
9
  protected static canTrackAddingDir(): Promise<void>;
13
10
  protected static canTrackDeletingDir(): Promise<void>;
14
11
  protected static canTrackDeletingFile(): Promise<void>;
15
12
  protected static canTrackDeletingFileInDirectory(): Promise<void>;
13
+ private static stopWatching;
14
+ private static startWatching;
15
+ protected static watchRunStop(runner: () => Promise<GeneratedFileOrDir[]>): Promise<void>;
16
16
  private static installWatch;
17
17
  }
@@ -138,13 +138,13 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
138
138
  case 2:
139
139
  cli = _context4.sent;
140
140
  feature = cli.getFeature('watch');
141
- _context4.next = 6;
142
- return this.startWatching(feature);
143
- case 6:
144
141
  fireCount = 0;
145
142
  void cli.on('watcher.did-detect-change', function () {
146
143
  fireCount++;
147
144
  });
145
+ _context4.next = 8;
146
+ return this.startWatching(feature);
147
+ case 8:
148
148
  _spruceSkillUtils.diskUtil.writeFile(this.resolvePath(path, 'test.ts'), 'console.log("hello world")');
149
149
  _context4.next = 11;
150
150
  return this.stopWatching(feature);
@@ -221,126 +221,21 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
221
221
  }
222
222
  return watcherFiresEventWhenASrcFileChanges;
223
223
  }()
224
- }, {
225
- key: "stopWatching",
226
- value: function () {
227
- var _stopWatching = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(feature) {
228
- return _regenerator["default"].wrap(function _callee6$(_context6) {
229
- while (1) {
230
- switch (_context6.prev = _context6.next) {
231
- case 0:
232
- _context6.next = 2;
233
- return this.wait(3000);
234
- case 2:
235
- _context6.next = 4;
236
- return feature.stopWatching();
237
- case 4:
238
- _context6.next = 6;
239
- return this.wait(500);
240
- case 6:
241
- case "end":
242
- return _context6.stop();
243
- }
244
- }
245
- }, _callee6, this);
246
- }));
247
- function stopWatching(_x4) {
248
- return _stopWatching.apply(this, arguments);
249
- }
250
- return stopWatching;
251
- }()
252
- }, {
253
- key: "startWatching",
254
- value: function () {
255
- var _startWatching = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7(feature) {
256
- return _regenerator["default"].wrap(function _callee7$(_context7) {
257
- while (1) {
258
- switch (_context7.prev = _context7.next) {
259
- case 0:
260
- void feature.startWatching({
261
- delay: 2000,
262
- sourceDir: '.'
263
- });
264
- _context7.next = 3;
265
- return this.wait(500);
266
- case 3:
267
- case "end":
268
- return _context7.stop();
269
- }
270
- }
271
- }, _callee7, this);
272
- }));
273
- function startWatching(_x5) {
274
- return _startWatching.apply(this, arguments);
275
- }
276
- return startWatching;
277
- }()
278
- }, {
279
- key: "watchRunStop",
280
- value: function () {
281
- var _watchRunStop = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8(runner) {
282
- var cli, feature, payloadChanges, expected, _iterator, _step, e;
283
- return _regenerator["default"].wrap(function _callee8$(_context8) {
284
- while (1) {
285
- switch (_context8.prev = _context8.next) {
286
- case 0:
287
- _context8.next = 2;
288
- return this.installWatch();
289
- case 2:
290
- cli = _context8.sent;
291
- feature = cli.getFeature('watch');
292
- payloadChanges = {};
293
- void cli.on('watcher.did-detect-change', function (payload) {
294
- payloadChanges = payload.changes;
295
- });
296
- _context8.next = 8;
297
- return this.startWatching(feature);
298
- case 8:
299
- _context8.next = 10;
300
- return runner();
301
- case 10:
302
- expected = _context8.sent;
303
- _context8.next = 13;
304
- return this.stopWatching(feature);
305
- case 13:
306
- _iterator = _createForOfIteratorHelper(expected);
307
- try {
308
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
309
- e = _step.value;
310
- _testUtils.assert.doesInclude(payloadChanges, e);
311
- }
312
- } catch (err) {
313
- _iterator.e(err);
314
- } finally {
315
- _iterator.f();
316
- }
317
- case 15:
318
- case "end":
319
- return _context8.stop();
320
- }
321
- }
322
- }, _callee8, this);
323
- }));
324
- function watchRunStop(_x6) {
325
- return _watchRunStop.apply(this, arguments);
326
- }
327
- return watchRunStop;
328
- }()
329
224
  }, {
330
225
  key: "canTrackAddingDir",
331
226
  value: function () {
332
- var _canTrackAddingDir = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
227
+ var _canTrackAddingDir = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
333
228
  var _this = this;
334
- return _regenerator["default"].wrap(function _callee10$(_context10) {
229
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
335
230
  while (1) {
336
- switch (_context10.prev = _context10.next) {
231
+ switch (_context7.prev = _context7.next) {
337
232
  case 0:
338
- _context10.next = 2;
339
- return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
233
+ _context7.next = 2;
234
+ return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6() {
340
235
  var newDirDest, expected;
341
- return _regenerator["default"].wrap(function _callee9$(_context9) {
236
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
342
237
  while (1) {
343
- switch (_context9.prev = _context9.next) {
238
+ switch (_context6.prev = _context6.next) {
344
239
  case 0:
345
240
  newDirDest = _this.resolvePath('build', 'new_dir');
346
241
  _spruceSkillUtils.diskUtil.createDir(newDirDest);
@@ -353,20 +248,20 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
353
248
  path: _this.resolvePath('build', 'new_dir')
354
249
  }
355
250
  }];
356
- return _context9.abrupt("return", expected);
251
+ return _context6.abrupt("return", expected);
357
252
  case 4:
358
253
  case "end":
359
- return _context9.stop();
254
+ return _context6.stop();
360
255
  }
361
256
  }
362
- }, _callee9);
257
+ }, _callee6);
363
258
  })));
364
259
  case 2:
365
260
  case "end":
366
- return _context10.stop();
261
+ return _context7.stop();
367
262
  }
368
263
  }
369
- }, _callee10, this);
264
+ }, _callee7, this);
370
265
  }));
371
266
  function canTrackAddingDir() {
372
267
  return _canTrackAddingDir.apply(this, arguments);
@@ -376,21 +271,21 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
376
271
  }, {
377
272
  key: "canTrackDeletingDir",
378
273
  value: function () {
379
- var _canTrackDeletingDir = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
274
+ var _canTrackDeletingDir = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee9() {
380
275
  var _this2 = this;
381
276
  var newDirDest;
382
- return _regenerator["default"].wrap(function _callee12$(_context12) {
277
+ return _regenerator["default"].wrap(function _callee9$(_context9) {
383
278
  while (1) {
384
- switch (_context12.prev = _context12.next) {
279
+ switch (_context9.prev = _context9.next) {
385
280
  case 0:
386
281
  newDirDest = this.resolvePath('build', 'new_dir');
387
282
  _spruceSkillUtils.diskUtil.createDir(newDirDest);
388
- _context12.next = 4;
389
- return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
283
+ _context9.next = 4;
284
+ return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee8() {
390
285
  var expected;
391
- return _regenerator["default"].wrap(function _callee11$(_context11) {
286
+ return _regenerator["default"].wrap(function _callee8$(_context8) {
392
287
  while (1) {
393
- switch (_context11.prev = _context11.next) {
288
+ switch (_context8.prev = _context8.next) {
394
289
  case 0:
395
290
  _spruceSkillUtils.diskUtil.deleteDir(newDirDest);
396
291
  expected = [{
@@ -402,20 +297,20 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
402
297
  path: _this2.resolvePath('build', 'new_dir')
403
298
  }
404
299
  }];
405
- return _context11.abrupt("return", expected);
300
+ return _context8.abrupt("return", expected);
406
301
  case 3:
407
302
  case "end":
408
- return _context11.stop();
303
+ return _context8.stop();
409
304
  }
410
305
  }
411
- }, _callee11);
306
+ }, _callee8);
412
307
  })));
413
308
  case 4:
414
309
  case "end":
415
- return _context12.stop();
310
+ return _context9.stop();
416
311
  }
417
312
  }
418
- }, _callee12, this);
313
+ }, _callee9, this);
419
314
  }));
420
315
  function canTrackDeletingDir() {
421
316
  return _canTrackDeletingDir.apply(this, arguments);
@@ -425,21 +320,21 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
425
320
  }, {
426
321
  key: "canTrackDeletingFile",
427
322
  value: function () {
428
- var _canTrackDeletingFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14() {
323
+ var _canTrackDeletingFile = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee11() {
429
324
  var _this3 = this;
430
325
  var newFile;
431
- return _regenerator["default"].wrap(function _callee14$(_context14) {
326
+ return _regenerator["default"].wrap(function _callee11$(_context11) {
432
327
  while (1) {
433
- switch (_context14.prev = _context14.next) {
328
+ switch (_context11.prev = _context11.next) {
434
329
  case 0:
435
330
  newFile = this.resolvePath('build', 'test.js');
436
331
  _spruceSkillUtils.diskUtil.writeFile(newFile, 'test');
437
- _context14.next = 4;
438
- return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
332
+ _context11.next = 4;
333
+ return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee10() {
439
334
  var expected;
440
- return _regenerator["default"].wrap(function _callee13$(_context13) {
335
+ return _regenerator["default"].wrap(function _callee10$(_context10) {
441
336
  while (1) {
442
- switch (_context13.prev = _context13.next) {
337
+ switch (_context10.prev = _context10.next) {
443
338
  case 0:
444
339
  _spruceSkillUtils.diskUtil.deleteFile(newFile);
445
340
  expected = [{
@@ -451,20 +346,20 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
451
346
  path: _this3.resolvePath('build', 'test.js')
452
347
  }
453
348
  }];
454
- return _context13.abrupt("return", expected);
349
+ return _context10.abrupt("return", expected);
455
350
  case 3:
456
351
  case "end":
457
- return _context13.stop();
352
+ return _context10.stop();
458
353
  }
459
354
  }
460
- }, _callee13);
355
+ }, _callee10);
461
356
  })));
462
357
  case 4:
463
358
  case "end":
464
- return _context14.stop();
359
+ return _context11.stop();
465
360
  }
466
361
  }
467
- }, _callee14, this);
362
+ }, _callee11, this);
468
363
  }));
469
364
  function canTrackDeletingFile() {
470
365
  return _canTrackDeletingFile.apply(this, arguments);
@@ -474,23 +369,23 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
474
369
  }, {
475
370
  key: "canTrackDeletingFileInDirectory",
476
371
  value: function () {
477
- var _canTrackDeletingFileInDirectory = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16() {
372
+ var _canTrackDeletingFileInDirectory = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee13() {
478
373
  var _this4 = this;
479
374
  var newDirDest, newFile;
480
- return _regenerator["default"].wrap(function _callee16$(_context16) {
375
+ return _regenerator["default"].wrap(function _callee13$(_context13) {
481
376
  while (1) {
482
- switch (_context16.prev = _context16.next) {
377
+ switch (_context13.prev = _context13.next) {
483
378
  case 0:
484
379
  newDirDest = this.resolvePath('build', 'new_dir');
485
380
  _spruceSkillUtils.diskUtil.createDir(newDirDest);
486
381
  newFile = this.resolvePath('build', 'new_dir', 'test.js');
487
382
  _spruceSkillUtils.diskUtil.writeFile(newFile, 'test');
488
- _context16.next = 6;
489
- return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15() {
383
+ _context13.next = 6;
384
+ return this.watchRunStop( /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee12() {
490
385
  var expected;
491
- return _regenerator["default"].wrap(function _callee15$(_context15) {
386
+ return _regenerator["default"].wrap(function _callee12$(_context12) {
492
387
  while (1) {
493
- switch (_context15.prev = _context15.next) {
388
+ switch (_context12.prev = _context12.next) {
494
389
  case 0:
495
390
  _spruceSkillUtils.diskUtil.deleteFile(newFile);
496
391
  expected = [{
@@ -502,26 +397,128 @@ var WatchingForChangesTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUt
502
397
  path: _this4.resolvePath('build', 'new_dir', 'test.js')
503
398
  }
504
399
  }];
505
- return _context15.abrupt("return", expected);
400
+ return _context12.abrupt("return", expected);
506
401
  case 3:
507
402
  case "end":
508
- return _context15.stop();
403
+ return _context12.stop();
509
404
  }
510
405
  }
511
- }, _callee15);
406
+ }, _callee12);
512
407
  })));
513
408
  case 6:
514
409
  case "end":
515
- return _context16.stop();
410
+ return _context13.stop();
516
411
  }
517
412
  }
518
- }, _callee16, this);
413
+ }, _callee13, this);
519
414
  }));
520
415
  function canTrackDeletingFileInDirectory() {
521
416
  return _canTrackDeletingFileInDirectory.apply(this, arguments);
522
417
  }
523
418
  return canTrackDeletingFileInDirectory;
524
419
  }()
420
+ }, {
421
+ key: "stopWatching",
422
+ value: function () {
423
+ var _stopWatching = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee14(feature) {
424
+ return _regenerator["default"].wrap(function _callee14$(_context14) {
425
+ while (1) {
426
+ switch (_context14.prev = _context14.next) {
427
+ case 0:
428
+ _context14.next = 2;
429
+ return this.wait(3000);
430
+ case 2:
431
+ _context14.next = 4;
432
+ return feature.stopWatching();
433
+ case 4:
434
+ case "end":
435
+ return _context14.stop();
436
+ }
437
+ }
438
+ }, _callee14, this);
439
+ }));
440
+ function stopWatching(_x4) {
441
+ return _stopWatching.apply(this, arguments);
442
+ }
443
+ return stopWatching;
444
+ }()
445
+ }, {
446
+ key: "startWatching",
447
+ value: function () {
448
+ var _startWatching = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee15(feature) {
449
+ return _regenerator["default"].wrap(function _callee15$(_context15) {
450
+ while (1) {
451
+ switch (_context15.prev = _context15.next) {
452
+ case 0:
453
+ void feature.startWatching({
454
+ delay: 200,
455
+ sourceDir: '.'
456
+ });
457
+ _context15.next = 3;
458
+ return this.wait(1000);
459
+ case 3:
460
+ case "end":
461
+ return _context15.stop();
462
+ }
463
+ }
464
+ }, _callee15, this);
465
+ }));
466
+ function startWatching(_x5) {
467
+ return _startWatching.apply(this, arguments);
468
+ }
469
+ return startWatching;
470
+ }()
471
+ }, {
472
+ key: "watchRunStop",
473
+ value: function () {
474
+ var _watchRunStop = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee16(runner) {
475
+ var cli, feature, payloadChanges, expected, _iterator, _step, e;
476
+ return _regenerator["default"].wrap(function _callee16$(_context16) {
477
+ while (1) {
478
+ switch (_context16.prev = _context16.next) {
479
+ case 0:
480
+ _context16.next = 2;
481
+ return this.installWatch();
482
+ case 2:
483
+ cli = _context16.sent;
484
+ feature = cli.getFeature('watch');
485
+ payloadChanges = {};
486
+ void cli.on('watcher.did-detect-change', function (payload) {
487
+ payloadChanges = payload.changes;
488
+ });
489
+ _context16.next = 8;
490
+ return this.startWatching(feature);
491
+ case 8:
492
+ _context16.next = 10;
493
+ return runner();
494
+ case 10:
495
+ expected = _context16.sent;
496
+ _context16.next = 13;
497
+ return this.stopWatching(feature);
498
+ case 13:
499
+ _iterator = _createForOfIteratorHelper(expected);
500
+ try {
501
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
502
+ e = _step.value;
503
+ _testUtils.assert.doesInclude(payloadChanges, e);
504
+ }
505
+ } catch (err) {
506
+ _iterator.e(err);
507
+ } finally {
508
+ _iterator.f();
509
+ }
510
+ case 15:
511
+ case "end":
512
+ return _context16.stop();
513
+ }
514
+ }
515
+ }, _callee16, this);
516
+ }));
517
+ function watchRunStop(_x6) {
518
+ return _watchRunStop.apply(this, arguments);
519
+ }
520
+ return watchRunStop;
521
+ }()
525
522
  }, {
526
523
  key: "installWatch",
527
524
  value: function () {