@sprucelabs/spruce-cli 14.21.9 → 14.21.13

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 (42) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/.spruce/schemas/fields/fields.types.js +8 -8
  3. package/build/GlobalEmitter.js +4 -2
  4. package/build/GlobalEmitter.js.map +1 -1
  5. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  6. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  7. package/build/__tests__/behavioral/events/CreatingAListener.test.js +28 -17
  8. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  9. package/build/__tests__/implementation/GlobalEmitter.d.ts +4 -0
  10. package/build/__tests__/implementation/GlobalEmitter.js +77 -0
  11. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -0
  12. package/build/__tests__/testDirsAndFiles/mercury-types-package.json +2 -2
  13. package/build/cli.js +1 -1
  14. package/build/constants.js +1 -1
  15. package/build/errors/SpruceError.js +10 -3
  16. package/build/errors/SpruceError.js.map +1 -1
  17. package/build/features/cache/constants.js +1 -1
  18. package/build/features/event/writers/EventWriter.js +1 -1
  19. package/build/features/onboard/scripts/onboarding.first.script.js +1 -1
  20. package/build/features/onboard/scripts/onboarding.short.script.js +2 -2
  21. package/build/features/skill/actions/DashboardAction.js +1 -1
  22. package/build/features/skill/actions/RegisterAction.js +1 -1
  23. package/build/features/test/TestReporter.js +1 -1
  24. package/build/features/test/TestReporter.js.map +1 -1
  25. package/build/features/test/actions/TestAction.js +1 -1
  26. package/build/features/vscode/actions/SetupAction.js +1 -0
  27. package/build/features/vscode/actions/SetupAction.js.map +1 -1
  28. package/build/services/LintService.js +23 -23
  29. package/build/services/LintService.js.map +1 -1
  30. package/build/types/graphicsInterface.types.js +6 -6
  31. package/build/widgets/types/factory.types.js +1 -1
  32. package/package.json +39 -38
  33. package/src/GlobalEmitter.ts +3 -1
  34. package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +1 -1
  35. package/src/__tests__/behavioral/WatchingSkillViews.test.ts +1 -0
  36. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +6 -0
  37. package/src/__tests__/implementation/GlobalEmitter.ts +12 -0
  38. package/src/__tests__/testDirsAndFiles/mercury-types-package.json +2 -2
  39. package/src/errors/SpruceError.ts +7 -0
  40. package/src/features/test/TestReporter.ts +1 -1
  41. package/src/features/vscode/actions/SetupAction.ts +1 -0
  42. package/src/services/LintService.ts +6 -8
package/CHANGELOG.md CHANGED
@@ -3,6 +3,38 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [14.21.13](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.12...v14.21.13) (2021-10-13)
7
+
8
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
9
+
10
+
11
+
12
+
13
+
14
+ ## [14.21.12](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.11...v14.21.12) (2021-10-09)
15
+
16
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
17
+
18
+
19
+
20
+
21
+
22
+ ## [14.21.11](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.10...v14.21.11) (2021-10-08)
23
+
24
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
25
+
26
+
27
+
28
+
29
+
30
+ ## [14.21.10](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.9...v14.21.10) (2021-10-08)
31
+
32
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
33
+
34
+
35
+
36
+
37
+
6
38
  ## [14.21.9](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.21.8...v14.21.9) (2021-10-04)
7
39
 
8
40
  **Note:** Version bump only for package @sprucelabs/spruce-cli
@@ -3,22 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- Object.defineProperty(exports, "FieldDefinitions", {
7
- enumerable: true,
8
- get: function get() {
9
- return _schema.FieldDefinitions;
10
- }
11
- });
12
6
  Object.defineProperty(exports, "FieldDefinitionMap", {
13
7
  enumerable: true,
14
8
  get: function get() {
15
9
  return _schema.FieldDefinitionMap;
16
10
  }
17
11
  });
18
- Object.defineProperty(exports, "FieldValueTypeGeneratorMap", {
12
+ Object.defineProperty(exports, "FieldDefinitions", {
19
13
  enumerable: true,
20
14
  get: function get() {
21
- return _schema.FieldValueTypeGeneratorMap;
15
+ return _schema.FieldDefinitions;
22
16
  }
23
17
  });
24
18
  Object.defineProperty(exports, "FieldMap", {
@@ -27,6 +21,12 @@ Object.defineProperty(exports, "FieldMap", {
27
21
  return _schema.FieldMap;
28
22
  }
29
23
  });
24
+ Object.defineProperty(exports, "FieldValueTypeGeneratorMap", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _schema.FieldValueTypeGeneratorMap;
28
+ }
29
+ });
30
30
 
31
31
  var _schema = require("@sprucelabs/schema");
32
32
  //# sourceMappingURL=fields.types.js.map
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.globalContract = void 0;
8
+ exports.globalContract = exports["default"] = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
@@ -198,7 +198,9 @@ var CliGlobalEmitter = /*#__PURE__*/function (_AbstractEventEmitter) {
198
198
  (0, _createClass2["default"])(CliGlobalEmitter, null, [{
199
199
  key: "Emitter",
200
200
  value: function Emitter() {
201
- return new CliGlobalEmitter(globalContract);
201
+ return new CliGlobalEmitter(globalContract, {
202
+ shouldEmitSequentally: true
203
+ });
202
204
  }
203
205
  }]);
204
206
  return CliGlobalEmitter;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/GlobalEmitter.ts"],"names":["globalContract","eventSignatures","emitPayloadSchema","watcherDidDetectChangesEmitPayloadSchema","id","fields","schemas","type","isArray","options","valueType","responsePayloadSchema","abstractClasses","isRequired","schema","name","label","featureCode","importsWhenLocal","actionCode","actionResponseSchema","results","reporter","filesToSkip","CliGlobalEmitter","AbstractEventEmitter"],"mappings":"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","sourcesContent":["import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter'\nimport {\n\tbuildEventContract,\n\tMercuryEventEmitter,\n} from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport watcherDidDetectChangesEmitPayloadSchema from '#spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema'\nimport { actionResponseSchema } from './features/features.types'\n\nexport const globalContract = buildEventContract({\n\teventSignatures: {\n\t\t'watcher.did-detect-change': {\n\t\t\temitPayloadSchema: watcherDidDetectChangesEmitPayloadSchema,\n\t\t},\n\t\t'schema.did-fetch-schemas': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'didFetchSchemasEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\tschemas: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'Schema',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'didFetchSchemasResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\tschemas: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'Schema',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'skill.register-dashboard-widgets': {},\n\n\t\t'test.register-abstract-test-classes': {\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'registerAbstractTestClassResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\tabstractClasses: {\n\t\t\t\t\t\ttype: 'schema',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tschema: buildSchema({\n\t\t\t\t\t\t\t\tid: 'abstractClassRegistration',\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\timport: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfeatureCode: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t},\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\t\t},\n\t\t'feature.will-execute': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'willExecuteEmitPayload',\n\t\t\t\timportsWhenLocal: [\n\t\t\t\t\t'import { FeatureActionResponse } from #spruce/../features/features/features.types',\n\t\t\t\t],\n\t\t\t\tfields: {\n\t\t\t\t\tfeatureCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\tactionCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\toptions: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'willExecuteResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\t...actionResponseSchema.fields,\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'feature.did-execute': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'didExecuteEmitPayload',\n\t\t\t\timportsWhenLocal: [\n\t\t\t\t\t'import { FeatureActionResponse } from #spruce/../features/features/features.types',\n\t\t\t\t],\n\t\t\t\tfields: {\n\t\t\t\t\tfeatureCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\tactionCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\tresults: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'FeatureActionResponse',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'didExecuteResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\t...actionResponseSchema.fields,\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'test.reporter-did-boot': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'testReporterDidBootEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\treporter: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'TestAction',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'skill.will-write-directory-template': {\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'wilLWriteDirectoryTemplateResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\tfilesToSkip: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t},\n})\n\nexport type GlobalEventContract = typeof globalContract\nexport type GlobalEmitter = MercuryEventEmitter<GlobalEventContract>\n\nexport default class CliGlobalEmitter extends AbstractEventEmitter<GlobalEventContract> {\n\tpublic static Emitter() {\n\t\treturn new CliGlobalEmitter(globalContract) as GlobalEmitter\n\t}\n}\n"],"file":"GlobalEmitter.js"}
1
+ {"version":3,"sources":["../src/GlobalEmitter.ts"],"names":["globalContract","eventSignatures","emitPayloadSchema","watcherDidDetectChangesEmitPayloadSchema","id","fields","schemas","type","isArray","options","valueType","responsePayloadSchema","abstractClasses","isRequired","schema","name","label","featureCode","importsWhenLocal","actionCode","actionResponseSchema","results","reporter","filesToSkip","CliGlobalEmitter","shouldEmitSequentally","AbstractEventEmitter"],"mappings":"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","sourcesContent":["import { AbstractEventEmitter } from '@sprucelabs/mercury-event-emitter'\nimport {\n\tbuildEventContract,\n\tMercuryEventEmitter,\n} from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport watcherDidDetectChangesEmitPayloadSchema from '#spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema'\nimport { actionResponseSchema } from './features/features.types'\n\nexport const globalContract = buildEventContract({\n\teventSignatures: {\n\t\t'watcher.did-detect-change': {\n\t\t\temitPayloadSchema: watcherDidDetectChangesEmitPayloadSchema,\n\t\t},\n\t\t'schema.did-fetch-schemas': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'didFetchSchemasEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\tschemas: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'Schema',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'didFetchSchemasResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\tschemas: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'Schema',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'skill.register-dashboard-widgets': {},\n\n\t\t'test.register-abstract-test-classes': {\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'registerAbstractTestClassResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\tabstractClasses: {\n\t\t\t\t\t\ttype: 'schema',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tschema: buildSchema({\n\t\t\t\t\t\t\t\tid: 'abstractClassRegistration',\n\t\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\t\tname: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tlabel: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\timport: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tfeatureCode: {\n\t\t\t\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\t\t\t},\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\t\t},\n\t\t'feature.will-execute': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'willExecuteEmitPayload',\n\t\t\t\timportsWhenLocal: [\n\t\t\t\t\t'import { FeatureActionResponse } from #spruce/../features/features/features.types',\n\t\t\t\t],\n\t\t\t\tfields: {\n\t\t\t\t\tfeatureCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\tactionCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\toptions: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'Record<string, any>',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'willExecuteResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\t...actionResponseSchema.fields,\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'feature.did-execute': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'didExecuteEmitPayload',\n\t\t\t\timportsWhenLocal: [\n\t\t\t\t\t'import { FeatureActionResponse } from #spruce/../features/features/features.types',\n\t\t\t\t],\n\t\t\t\tfields: {\n\t\t\t\t\tfeatureCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\tactionCode: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t},\n\t\t\t\t\tresults: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'FeatureActionResponse',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'didExecuteResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\t...actionResponseSchema.fields,\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'test.reporter-did-boot': {\n\t\t\temitPayloadSchema: buildSchema({\n\t\t\t\tid: 'testReporterDidBootEmitPayload',\n\t\t\t\tfields: {\n\t\t\t\t\treporter: {\n\t\t\t\t\t\ttype: 'raw',\n\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tvalueType: 'TestAction',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t\t'skill.will-write-directory-template': {\n\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\tid: 'wilLWriteDirectoryTemplateResponsePayload',\n\t\t\t\tfields: {\n\t\t\t\t\tfilesToSkip: {\n\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\tisArray: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}),\n\t\t},\n\t},\n})\n\nexport type GlobalEventContract = typeof globalContract\nexport type GlobalEmitter = MercuryEventEmitter<GlobalEventContract>\n\nexport default class CliGlobalEmitter extends AbstractEventEmitter<GlobalEventContract> {\n\tpublic static Emitter() {\n\t\treturn new CliGlobalEmitter(globalContract, {\n\t\t\tshouldEmitSequentally: true,\n\t\t}) as GlobalEmitter\n\t}\n}\n"],"file":"GlobalEmitter.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts"],"names":["SettingLogTransportsInASkillTest","action","Action","assert","isFunction","execute","createTransport","results","isFalsy","errors","nameReadable","nameCamel","namesUtil","toCamel","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","resolvePath","isTrue","diskUtil","doesFileExist","isTruthy","errorAssertUtil","assertError","name","transportContents","createTransportWithContents","Service","build","boot","meta","kill","cwd","writeFile","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class SettingLogTransportsInASkillTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'skills'\n\n\t@test()\n\tprotected static async hasCreateTransportCommand() {\n\t\tconst action = this.Action('log', 'createTransport')\n\t\tassert.isFunction(action.execute)\n\t}\n\n\t@test()\n\tprotected static async needsNameOfTransport() {\n\t\tconst results = await this.createTransport()\n\t\tassert.isFalsy(results.errors)\n\t}\n\n\t@test('can create transport 1', 'Sms')\n\t@test('can create transport 2', 'Email')\n\tprotected static async createsTransportFile(nameReadable: string) {\n\t\tconst results = await this.createTransport(nameReadable)\n\t\tconst nameCamel = namesUtil.toCamel(nameReadable)\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`${nameCamel}Transport.plugin.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tmatch,\n\t\t\tthis.resolvePath('src/logTransports', `${nameCamel}Transport.plugin.ts`)\n\t\t)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(match))\n\t}\n\n\t@test()\n\tprotected static async cantCreateTransportThatAlreadyExists() {\n\t\tconst results = await this.createTransport('Slack')\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssertUtil.assertError(results.errors[0], 'TRANSPORT_ALREADY_EXISTS', {\n\t\t\tname: 'Slack',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async logsWriteToTransports() {\n\t\tconst transportContents = `\n\t\timport { diskUtil, Level, LogTransport } from '@sprucelabs/spruce-skill-utils'\n\t\t\n\t\texport default function (): {\n\t\t\tlevels: Level[]\n\t\t\ttransport: LogTransport\n\t\t} | null {\n\t\t\treturn {\n\t\t\t\tlevels: ['ERROR', 'INFO', 'WARN'],\n\t\t\t\ttransport: (...messageParts: string[]) => {\n\t\t\t\t\tconst message = messageParts.join(' ')\n\t\t\t\t\tdiskUtil.writeFile(\n\t\t\t\t\t\tdiskUtil.resolvePath(__dirname, '..', '..', 'log.txt'),\n\t\t\t\t\t\tmessage\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\t`\n\n\t\tawait this.createTransportWithContents(transportContents, 'File')\n\n\t\tawait this.Service('build').build()\n\t\tconst boot = await this.Action('skill', 'boot').execute({})\n\n\t\tawait boot.meta?.kill()\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(diskUtil.resolvePath(this.cwd, 'log.txt'))\n\t\t)\n\t}\n\n\tprivate static async createTransportWithContents(\n\t\ttransportContents: string,\n\t\tnameReadable: string\n\t) {\n\t\tconst results = await this.createTransport(nameReadable)\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`${namesUtil.toCamel(nameReadable)}Transport.plugin.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(match, transportContents)\n\t}\n\n\tprivate static async createTransport(nameReadable = 'Slack') {\n\t\tconst action = this.Action('log', 'createTransport')\n\t\tconst results = await action.execute({\n\t\t\tnameReadable,\n\t\t\tnameCamel: namesUtil.toCamel(nameReadable),\n\t\t})\n\t\treturn results\n\t}\n}\n"],"file":"SettingLogTransportsInASkill.test.js"}
1
+ {"version":3,"sources":["../../../src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts"],"names":["SettingLogTransportsInASkillTest","action","Action","assert","isFunction","execute","createTransport","results","isFalsy","errors","nameReadable","nameCamel","namesUtil","toCamel","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","resolvePath","isTrue","diskUtil","doesFileExist","isTruthy","errorAssertUtil","assertError","name","transportContents","createTransportWithContents","Service","build","boot","meta","kill","cwd","writeFile","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class SettingLogTransportsInASkillTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'skills'\n\n\t@test()\n\tprotected static async hasCreateTransportCommand() {\n\t\tconst action = this.Action('log', 'createTransport')\n\t\tassert.isFunction(action.execute)\n\t}\n\n\t@test()\n\tprotected static async needsNameOfTransport() {\n\t\tconst results = await this.createTransport()\n\t\tassert.isFalsy(results.errors)\n\t}\n\n\t@test('can create transport 1', 'Sms')\n\t@test('can create transport 2', 'Email')\n\tprotected static async createsTransportFile(nameReadable: string) {\n\t\tconst results = await this.createTransport(nameReadable)\n\t\tconst nameCamel = namesUtil.toCamel(nameReadable)\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`${nameCamel}Transport.plugin.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tmatch,\n\t\t\tthis.resolvePath('src/logTransports', `${nameCamel}Transport.plugin.ts`)\n\t\t)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(match))\n\t}\n\n\t@test()\n\tprotected static async cantCreateTransportThatAlreadyExists() {\n\t\tconst results = await this.createTransport('Slack')\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssertUtil.assertError(results.errors[0], 'TRANSPORT_ALREADY_EXISTS', {\n\t\t\tname: 'Slack',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async logsWriteToTransports() {\n\t\tconst transportContents = `\n\t\timport { diskUtil, Level, LogTransport } from '@sprucelabs/spruce-skill-utils'\n\t\t\n\t\texport default function (): {\n\t\t\tlevels: Level[]\n\t\t\ttransport: LogTransport\n\t\t} | null {\n\t\t\treturn {\n\t\t\t\tlevels: ['ERROR', 'INFO', 'WARN'],\n\t\t\t\ttransport: (...messageParts: string[]) => {\n\t\t\t\t\tconst message = messageParts.join(' ')\n\t\t\t\t\tdiskUtil.writeFile(\n\t\t\t\t\t\tdiskUtil.resolvePath(__dirname, '..', '..', 'log.txt'),\n\t\t\t\t\t\tmessage\n\t\t\t\t\t)\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t\t`\n\n\t\tawait this.createTransportWithContents(transportContents, 'File')\n\t\tawait this.Service('build').build()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({})\n\n\t\tawait boot.meta?.kill()\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(diskUtil.resolvePath(this.cwd, 'log.txt'))\n\t\t)\n\t}\n\n\tprivate static async createTransportWithContents(\n\t\ttransportContents: string,\n\t\tnameReadable: string\n\t) {\n\t\tconst results = await this.createTransport(nameReadable)\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`${namesUtil.toCamel(nameReadable)}Transport.plugin.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(match, transportContents)\n\t}\n\n\tprivate static async createTransport(nameReadable = 'Slack') {\n\t\tconst action = this.Action('log', 'createTransport')\n\t\tconst results = await action.execute({\n\t\t\tnameReadable,\n\t\t\tnameCamel: namesUtil.toCamel(nameReadable),\n\t\t})\n\t\treturn results\n\t}\n}\n"],"file":"SettingLogTransportsInASkill.test.js"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/__tests__/behavioral/WatchingSkillViews.test.ts"],"names":["WatchingSkillViewsTest","oldBootExecute","BootAction","prototype","execute","getFeatureInstaller","isInstalled","SettingsService","isMarkedAsInstalled","assert","isFunction","Action","wasHit","CommandService","setMockResponse","code","callback","watchAction","wait","isTrue","kill","hitCount","isEqual","emitFileChangeEvent","passedOptions","options","shouldReturnImmediately","actionPromise","didWait","waitPromise","Promise","resolve","setTimeout","isFalse","watchFeature","getFeature","wasStarted","wasStopped","startWatching","stopWatching","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","name","getViewFixture","createViewController","nameKebab","namePascal","Service","build","results","isFalsy","errors","pid","getPid","meta","bootPromise","assertProcessRunning","doesThrowAsync","reject","ps","lookup","err","length","emitter","getEmitter","emit","changes","schemaId","version","values","action","path","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { SettingsService } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport ps from 'ps-node'\nimport BootAction from '../../features/skill/actions/BootAction'\nimport WatchAction from '../../features/view/actions/WatchAction'\nimport CommandService from '../../services/CommandService'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\n\nexport default class WatchingSkillViewsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprotected static oldBootExecute: any\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.oldBootExecute = BootAction.prototype.execute\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.getFeatureInstaller().isInstalled = async () => true\n\t\tSettingsService.prototype.isMarkedAsInstalled = () => true\n\t\tBootAction.prototype.execute = this.oldBootExecute\n\t}\n\n\t@test()\n\tprotected static async hasWatchSkillViewsEvent() {\n\t\tassert.isFunction(this.Action('view', 'watch').execute)\n\t}\n\n\t@test()\n\tprotected static async shouldCallBoot() {\n\t\tlet wasHit = false\n\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t\tcallback: () => {\n\t\t\t\twasHit = true\n\t\t\t},\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tvoid watchAction.execute({})\n\t\tawait this.wait(10)\n\t\tassert.isTrue(wasHit)\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async shouldCallBootAgainOnFileChange() {\n\t\tlet hitCount = 0\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t\tcallback: () => {\n\t\t\t\thitCount++\n\t\t\t},\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\n\t\tvoid watchAction.execute({})\n\n\t\tawait this.wait(10)\n\n\t\tassert.isEqual(hitCount, 1)\n\n\t\tawait this.emitFileChangeEvent()\n\n\t\tassert.isEqual(hitCount, 2)\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async changesDuringBootOfSkillKillSkill() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\n\t\tlet passedOptions: any = null\n\n\t\t//@ts-ignore\n\t\tBootAction.prototype.execute = (options: any) => {\n\t\t\tpassedOptions = options\n\t\t}\n\n\t\tvoid watchAction.execute()\n\n\t\tawait this.wait(100)\n\n\t\tassert.isTrue(passedOptions.shouldReturnImmediately)\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async holdsOnAction() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tconst actionPromise = watchAction.execute()\n\t\tlet didWait = false\n\t\tconst waitPromise = new Promise((resolve) => {\n\t\t\tsetTimeout(async () => {\n\t\t\t\tdidWait = true\n\t\t\t\tawait watchAction.kill()\n\t\t\t\tresolve(null)\n\t\t\t}, 1000)\n\t\t})\n\n\t\tawait actionPromise\n\t\tawait waitPromise\n\n\t\tassert.isTrue(didWait)\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async canKillAction() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tconst actionPromise = watchAction.execute()\n\n\t\tlet didWait = false\n\t\tconst waitPromise = new Promise((resolve) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tdidWait = true\n\t\t\t\tresolve(null)\n\t\t\t}, 1000)\n\t\t})\n\n\t\tawait this.wait(100)\n\n\t\tawait watchAction.kill()\n\n\t\tawait actionPromise\n\n\t\tassert.isFalse(didWait)\n\n\t\tawait waitPromise\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async makeSureWatcherIsStartedAndStopped() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchFeature = this.getFeatureInstaller().getFeature('watch')\n\t\tlet wasStarted = false\n\t\tlet wasStopped = false\n\n\t\twatchFeature.startWatching = async () => {\n\t\t\twasStarted = true\n\t\t}\n\n\t\twatchFeature.stopWatching = async () => {\n\t\t\twasStopped = true\n\t\t}\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tvoid watchAction.execute()\n\n\t\tawait this.wait(100)\n\n\t\tassert.isTrue(wasStarted)\n\t\tassert.isFalse(wasStopped)\n\n\t\tawait watchAction.kill()\n\t\tawait this.wait(100)\n\n\t\tassert.isTrue(wasStarted)\n\t\tassert.isTrue(wasStopped)\n\t}\n\n\t@test()\n\tprotected static async killingActionKillsProcess() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: `Watching skill views`,\n\t\t})\n\n\t\tawait this.getViewFixture().createViewController({\n\t\t\tnameKebab: 'root',\n\t\t\tnamePascal: 'Root',\n\t\t})\n\n\t\tawait this.Action('view', 'sync').execute({})\n\t\tawait this.Service('build').build()\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tconst results = await watchAction.execute({ shouldReturnImmediately: true })\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tlet pid = watchAction.getPid()\n\n\t\twhile (!pid) {\n\t\t\tawait this.wait(100)\n\t\t\tpid = watchAction.getPid()\n\t\t}\n\n\t\tawait results.meta?.bootPromise\n\n\t\tawait this.assertProcessRunning(pid)\n\n\t\tawait watchAction.kill()\n\n\t\tawait this.wait(500)\n\n\t\tawait assert.doesThrowAsync(() => this.assertProcessRunning(pid as number))\n\t}\n\n\tprivate static async assertProcessRunning(pid: number) {\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tps.lookup({ pid }, (err: any, results: any) => {\n\t\t\t\tif (err || results.length !== 1) {\n\t\t\t\t\treject('boot process not running')\n\t\t\t\t}\n\n\t\t\t\tresolve(results)\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate static async emitFileChangeEvent() {\n\t\tconst emitter = this.getEmitter()\n\n\t\tawait emitter.emit('watcher.did-detect-change', {\n\t\t\tchanges: [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'updated',\n\t\t\t\t\t\tname: 'Cool name!',\n\t\t\t\t\t\tpath: '/',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n}\n"],"file":"WatchingSkillViews.test.js"}
1
+ {"version":3,"sources":["../../../src/__tests__/behavioral/WatchingSkillViews.test.ts"],"names":["WatchingSkillViewsTest","oldBootExecute","BootAction","prototype","execute","getFeatureInstaller","isInstalled","SettingsService","isMarkedAsInstalled","assert","isFunction","Action","wasHit","CommandService","setMockResponse","code","callback","watchAction","wait","isTrue","kill","hitCount","isEqual","emitFileChangeEvent","passedOptions","options","shouldReturnImmediately","actionPromise","didWait","waitPromise","Promise","resolve","setTimeout","isFalse","watchFeature","getFeature","wasStarted","wasStopped","startWatching","stopWatching","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","name","getViewFixture","createViewController","nameKebab","namePascal","Service","build","results","isFalsy","errors","pid","getPid","meta","bootPromise","assertProcessRunning","doesThrowAsync","reject","ps","lookup","err","length","emitter","getEmitter","emit","changes","schemaId","version","values","action","path","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { SettingsService } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport ps from 'ps-node'\nimport BootAction from '../../features/skill/actions/BootAction'\nimport WatchAction from '../../features/view/actions/WatchAction'\nimport CommandService from '../../services/CommandService'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\n\nexport default class WatchingSkillViewsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'views'\n\tprotected static oldBootExecute: any\n\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.oldBootExecute = BootAction.prototype.execute\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.getFeatureInstaller().isInstalled = async () => true\n\t\tSettingsService.prototype.isMarkedAsInstalled = () => true\n\t\tBootAction.prototype.execute = this.oldBootExecute\n\t}\n\n\t@test()\n\tprotected static async hasWatchSkillViewsEvent() {\n\t\tassert.isFunction(this.Action('view', 'watch').execute)\n\t}\n\n\t@test()\n\tprotected static async shouldCallBoot() {\n\t\tlet wasHit = false\n\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t\tcallback: () => {\n\t\t\t\twasHit = true\n\t\t\t},\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tvoid watchAction.execute({})\n\t\tawait this.wait(10)\n\t\tassert.isTrue(wasHit)\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async shouldCallBootAgainOnFileChange() {\n\t\tlet hitCount = 0\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t\tcallback: () => {\n\t\t\t\thitCount++\n\t\t\t},\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\n\t\tvoid watchAction.execute({})\n\n\t\tawait this.wait(10)\n\n\t\tassert.isEqual(hitCount, 1)\n\n\t\tawait this.emitFileChangeEvent()\n\n\t\tassert.isEqual(hitCount, 2)\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async changesDuringBootOfSkillKillSkill() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\n\t\tlet passedOptions: any = null\n\n\t\t//@ts-ignore\n\t\tBootAction.prototype.execute = (options: any) => {\n\t\t\tpassedOptions = options\n\t\t}\n\n\t\tvoid watchAction.execute()\n\n\t\tawait this.wait(100)\n\n\t\tassert.isTrue(passedOptions.shouldReturnImmediately)\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async holdsOnAction() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tconst actionPromise = watchAction.execute()\n\t\tlet didWait = false\n\t\tconst waitPromise = new Promise((resolve) => {\n\t\t\tsetTimeout(async () => {\n\t\t\t\tdidWait = true\n\t\t\t\tawait watchAction.kill()\n\t\t\t\tresolve(null)\n\t\t\t}, 1000)\n\t\t})\n\n\t\tawait actionPromise\n\t\tawait waitPromise\n\n\t\tassert.isTrue(didWait)\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async canKillAction() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tconst actionPromise = watchAction.execute()\n\n\t\tlet didWait = false\n\t\tconst waitPromise = new Promise((resolve) => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tdidWait = true\n\t\t\t\tresolve(null)\n\t\t\t}, 1000)\n\t\t})\n\n\t\tawait this.wait(100)\n\n\t\tawait watchAction.kill()\n\n\t\tawait actionPromise\n\n\t\tassert.isFalse(didWait)\n\n\t\tawait waitPromise\n\n\t\tawait watchAction.kill()\n\t}\n\n\t@test()\n\tprotected static async makeSureWatcherIsStartedAndStopped() {\n\t\tCommandService.setMockResponse(/yarn boot/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst watchFeature = this.getFeatureInstaller().getFeature('watch')\n\t\tlet wasStarted = false\n\t\tlet wasStopped = false\n\n\t\twatchFeature.startWatching = async () => {\n\t\t\twasStarted = true\n\t\t}\n\n\t\twatchFeature.stopWatching = async () => {\n\t\t\twasStopped = true\n\t\t}\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tvoid watchAction.execute()\n\n\t\tawait this.wait(100)\n\n\t\tassert.isTrue(wasStarted)\n\t\tassert.isFalse(wasStopped)\n\n\t\tawait watchAction.kill()\n\t\tawait this.wait(100)\n\n\t\tassert.isTrue(wasStarted)\n\t\tassert.isTrue(wasStopped)\n\t}\n\n\t@test()\n\tprotected static async killingActionKillsProcess() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: `Watching skill views`,\n\t\t})\n\n\t\tawait this.getViewFixture().createViewController({\n\t\t\tnameKebab: 'root',\n\t\t\tnamePascal: 'Root',\n\t\t})\n\n\t\tawait this.Action('view', 'sync').execute({})\n\n\t\tawait this.Service('build').build()\n\n\t\tconst watchAction = this.Action('view', 'watch') as WatchAction\n\t\tconst results = await watchAction.execute({ shouldReturnImmediately: true })\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tlet pid = watchAction.getPid()\n\n\t\twhile (!pid) {\n\t\t\tawait this.wait(100)\n\t\t\tpid = watchAction.getPid()\n\t\t}\n\n\t\tawait results.meta?.bootPromise\n\n\t\tawait this.assertProcessRunning(pid)\n\n\t\tawait watchAction.kill()\n\n\t\tawait this.wait(500)\n\n\t\tawait assert.doesThrowAsync(() => this.assertProcessRunning(pid as number))\n\t}\n\n\tprivate static async assertProcessRunning(pid: number) {\n\t\tawait new Promise((resolve, reject) => {\n\t\t\tps.lookup({ pid }, (err: any, results: any) => {\n\t\t\t\tif (err || results.length !== 1) {\n\t\t\t\t\treject('boot process not running')\n\t\t\t\t}\n\n\t\t\t\tresolve(results)\n\t\t\t})\n\t\t})\n\t}\n\n\tprivate static async emitFileChangeEvent() {\n\t\tconst emitter = this.getEmitter()\n\n\t\tawait emitter.emit('watcher.did-detect-change', {\n\t\t\tchanges: [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'updated',\n\t\t\t\t\t\tname: 'Cool name!',\n\t\t\t\t\t\tpath: '/',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\t}\n}\n"],"file":"WatchingSkillViews.test.js"}
@@ -351,7 +351,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
351
351
  var _emittingEventTriggersListenerAndCrashesWithListenerNotImplemented = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
352
352
  var _boot$meta, _boot$meta$promise, _boot$meta2;
353
353
 
354
- var _yield$this$setupSkil3, currentSkill, skill2, eventContract, org, boot, client, eventName, results, error, responderRef;
354
+ var _yield$this$setupSkil3, currentSkill, skill2, eventContract, org, currentClient, boot, client, eventName, results, error, responderRef;
355
355
 
356
356
  return _regenerator["default"].wrap(function _callee7$(_context7) {
357
357
  while (1) {
@@ -396,39 +396,50 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
396
396
  eventContract = _yield$this$setupSkil3.eventContract;
397
397
  org = _yield$this$setupSkil3.org;
398
398
  _context7.next = 9;
399
+ return this.connectToApi({
400
+ shouldAuthAsCurrentSkill: true
401
+ });
402
+
403
+ case 9:
404
+ currentClient = _context7.sent;
405
+ _context7.next = 12;
406
+ return currentClient.disconnect();
407
+
408
+ case 12:
409
+ _context7.next = 14;
399
410
  return this.Action('skill', 'boot').execute({
400
411
  local: true
401
412
  });
402
413
 
403
- case 9:
414
+ case 14:
404
415
  boot = _context7.sent;
405
416
 
406
417
  _test.assert.isFalsy(boot.errors); //give the skill time to boot
407
418
 
408
419
 
409
- _context7.next = 13;
420
+ _context7.next = 18;
410
421
  return this.wait(20000);
411
422
 
412
- case 13:
413
- _context7.next = 15;
423
+ case 18:
424
+ _context7.next = 20;
414
425
  return this.connectToApi({
415
426
  skillId: skill2.id,
416
427
  apiKey: skill2.apiKey
417
428
  });
418
429
 
419
- case 15:
430
+ case 20:
420
431
  client = _context7.sent;
421
432
  eventName = "".concat(skill2.slug, ".my-new-event::").concat(this.expectedVersion);
422
433
  client.mixinContract({
423
434
  eventSignatures: (0, _defineProperty2["default"])({}, eventName, eventContract.eventSignatures["my-new-event::".concat(this.expectedVersion)])
424
435
  });
425
436
 
426
- case 18:
427
- _context7.next = 20;
437
+ case 23:
438
+ _context7.next = 25;
428
439
  return this.wait(5000);
429
440
 
430
- case 20:
431
- _context7.next = 22;
441
+ case 25:
442
+ _context7.next = 27;
432
443
  return client.emit(eventName, {
433
444
  target: {
434
445
  organizationId: org.id
@@ -438,16 +449,16 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
438
449
  }
439
450
  });
440
451
 
441
- case 22:
452
+ case 27:
442
453
  results = _context7.sent;
443
454
 
444
- case 23:
455
+ case 28:
445
456
  if (results.totalContracts < 1) {
446
- _context7.next = 18;
457
+ _context7.next = 23;
447
458
  break;
448
459
  }
449
460
 
450
- case 24:
461
+ case 29:
451
462
  _test.assert.isEqual(results.totalContracts, 1);
452
463
 
453
464
  _test.assert.isEqual(results.totalErrors, 1);
@@ -457,10 +468,10 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
457
468
  (_boot$meta = boot.meta) === null || _boot$meta === void 0 ? void 0 : (_boot$meta$promise = _boot$meta.promise) === null || _boot$meta$promise === void 0 ? void 0 : _boot$meta$promise["catch"](function (err) {
458
469
  _test.assert.fail(err.stack);
459
470
  });
460
- _context7.next = 30;
471
+ _context7.next = 35;
461
472
  return (_boot$meta2 = boot.meta) === null || _boot$meta2 === void 0 ? void 0 : _boot$meta2.kill();
462
473
 
463
- case 30:
474
+ case 35:
464
475
  error = _test.assert.doesThrow(function () {
465
476
  return _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(results);
466
477
  });
@@ -471,7 +482,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
471
482
 
472
483
  _test.assert.isEqual(responderRef, "skill:".concat(currentSkill.id, ":").concat(currentSkill.slug));
473
484
 
474
- case 34:
485
+ case 39:
475
486
  case "end":
476
487
  return _context7.stop();
477
488
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","local","boot","wait","connectToApi","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\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 { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\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\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\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.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\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\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\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.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\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\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.lastInvocation()\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 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 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\teventErrorAssertUtil.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\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\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 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"],"file":"CreatingAListener.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","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","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\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 { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\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\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\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.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\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\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\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.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\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\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.lastInvocation()\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 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\teventErrorAssertUtil.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\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\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 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"],"file":"CreatingAListener.test.js"}
@@ -0,0 +1,4 @@
1
+ import AbstractCliTest from '../../tests/AbstractCliTest';
2
+ export default class GlobalEmitterTest extends AbstractCliTest {
3
+ protected static globalEmitterEmitsSEquentally(): Promise<void>;
4
+ }
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
25
+
26
+ var _test = require("@sprucelabs/test");
27
+
28
+ var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
29
+
30
+ var _dec, _class;
31
+
32
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
33
+
34
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
35
+
36
+ var GlobalEmitterTest = (_dec = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
37
+ (0, _inherits2["default"])(GlobalEmitterTest, _AbstractCliTest);
38
+
39
+ var _super = _createSuper(GlobalEmitterTest);
40
+
41
+ function GlobalEmitterTest() {
42
+ (0, _classCallCheck2["default"])(this, GlobalEmitterTest);
43
+ return _super.apply(this, arguments);
44
+ }
45
+
46
+ (0, _createClass2["default"])(GlobalEmitterTest, null, [{
47
+ key: "globalEmitterEmitsSEquentally",
48
+ value: function () {
49
+ var _globalEmitterEmitsSEquentally = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
50
+ var emitter;
51
+ return _regenerator["default"].wrap(function _callee$(_context) {
52
+ while (1) {
53
+ switch (_context.prev = _context.next) {
54
+ case 0:
55
+ emitter = this.getEmitter(); //@ts-ignore
56
+
57
+ _test.assert.isTrue(emitter.shouldEmitSequentally);
58
+
59
+ case 2:
60
+ case "end":
61
+ return _context.stop();
62
+ }
63
+ }
64
+ }, _callee, this);
65
+ }));
66
+
67
+ function globalEmitterEmitsSEquentally() {
68
+ return _globalEmitterEmitsSEquentally.apply(this, arguments);
69
+ }
70
+
71
+ return globalEmitterEmitsSEquentally;
72
+ }()
73
+ }]);
74
+ return GlobalEmitterTest;
75
+ }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsSEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsSEquentally"), _class)), _class));
76
+ exports["default"] = GlobalEmitterTest;
77
+ //# sourceMappingURL=GlobalEmitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/__tests__/implementation/GlobalEmitter.ts"],"names":["GlobalEmitterTest","emitter","getEmitter","assert","isTrue","shouldEmitSequentally","AbstractCliTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;IAEqBA,iB,WACnB,iB;;;;;;;;;;;;;yHAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAEOC,gBAAAA,OAFP,GAEiB,KAAKC,UAAL,EAFjB,EAIC;;AACAC,6BAAOC,MAAP,CAAcH,OAAO,CAACI,qBAAtB;;AALD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAD8CC,4B","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsSEquentally() {\n\t\tconst emitter = this.getEmitter()\n\n\t\t//@ts-ignore\n\t\tassert.isTrue(emitter.shouldEmitSequentally)\n\t}\n}\n"],"file":"GlobalEmitter.js"}
@@ -58,8 +58,8 @@
58
58
  "chokidar-cli": "^2.1.0",
59
59
  "concurrently": "^5.3.0",
60
60
  "conventional-changelog-sprucelabs": "^1.1.2",
61
- "eslint": "^7.14.0",
62
- "eslint-config-spruce": "10.9.135",
61
+ "eslint": "^8.0.0",
62
+ "eslint-config-spruce": "^10.10.14",
63
63
  "jest": "^26.6.3",
64
64
  "jest-circus": "^26.6.3",
65
65
  "prettier": "^2.2.0",
package/build/cli.js CHANGED
@@ -5,8 +5,8 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.run = run;
9
8
  exports["default"] = void 0;
9
+ exports.run = run;
10
10
 
11
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
12
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.FILE_ACTION_ALWAYS_SKIP = exports.FILE_ACTION_SKIP = exports.FILE_ACTION_OVERWRITE = exports.CLI_HERO = exports.DEFAULT_HOST = void 0;
6
+ exports.FILE_ACTION_SKIP = exports.FILE_ACTION_OVERWRITE = exports.FILE_ACTION_ALWAYS_SKIP = exports.DEFAULT_HOST = exports.CLI_HERO = void 0;
7
7
  var DEFAULT_HOST = 'https://mercury.spruce.ai';
8
8
  exports.DEFAULT_HOST = DEFAULT_HOST;
9
9
  var CLI_HERO = 'Sprucebot';
@@ -50,7 +50,7 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
50
50
  value:
51
51
  /** An easy to understand version of the errors */
52
52
  function friendlyMessage() {
53
- var _options$friendlyMess, _options$originalErro2, _options$originalErro3, _options$friendlyMess2, _options$originalErro4, _options$originalErro5, _options$originalErro6, _ref, _options$friendlyMess3, _options$originalErro7;
53
+ var _options$friendlyMess, _options$originalErro2, _options$originalErro3, _options$friendlyMess2, _options$originalErro4, _options$originalErro5, _options$originalErro7, _ref, _options$friendlyMess3, _options$originalErro8;
54
54
 
55
55
  var options = this.options;
56
56
  var message;
@@ -109,6 +109,13 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
109
109
 
110
110
  case 'LINT_FAILED':
111
111
  message = "Lint failed on pattern ".concat(options.pattern, ".");
112
+
113
+ if (options.originalError) {
114
+ var _options$originalErro6;
115
+
116
+ message += "\n\nOriginal error:".concat((_options$originalErro6 = options.originalError.stack) !== null && _options$originalErro6 !== void 0 ? _options$originalErro6 : options.originalError.message);
117
+ }
118
+
112
119
  break;
113
120
 
114
121
  case 'EXECUTING_COMMAND_FAILED':
@@ -213,11 +220,11 @@ var SpruceError = /*#__PURE__*/function (_AbstractSpruceError) {
213
220
  break;
214
221
 
215
222
  case 'INVALID_EVENT_CONTRACT':
216
- message = "The event named `".concat(options.fullyQualifiedEventName, "` is not valid. Check ").concat(options.brokenProperty, ". The original error is:\n\n").concat((_options$originalErro6 = options.originalError) === null || _options$originalErro6 === void 0 ? void 0 : _options$originalErro6.message);
223
+ message = "The event named `".concat(options.fullyQualifiedEventName, "` is not valid. Check ").concat(options.brokenProperty, ". The original error is:\n\n").concat((_options$originalErro7 = options.originalError) === null || _options$originalErro7 === void 0 ? void 0 : _options$originalErro7.message);
217
224
  break;
218
225
 
219
226
  case 'BOOT_ERROR':
220
- message = "Booting your skill failed: ".concat((_ref = (_options$friendlyMess3 = options.friendlyMessage) !== null && _options$friendlyMess3 !== void 0 ? _options$friendlyMess3 : (_options$originalErro7 = options.originalError) === null || _options$originalErro7 === void 0 ? void 0 : _options$originalErro7.message) !== null && _ref !== void 0 ? _ref : 'Not sure why, tho.');
227
+ message = "Booting your skill failed: ".concat((_ref = (_options$friendlyMess3 = options.friendlyMessage) !== null && _options$friendlyMess3 !== void 0 ? _options$friendlyMess3 : (_options$originalErro8 = options.originalError) === null || _options$originalErro8 === void 0 ? void 0 : _options$originalErro8.message) !== null && _ref !== void 0 ? _ref : 'Not sure why, tho.');
221
228
  break;
222
229
 
223
230
  case 'DEPLOY_FAILED':