@sprucelabs/mercury-event-emitter 42.0.557 → 42.0.558

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 (33) hide show
  1. package/build/esm/.spruce/event-cache.json +1 -0
  2. package/build/esm/.spruce/schemas/fields/fieldClassMap.d.ts +2 -0
  3. package/build/esm/.spruce/schemas/fields/fieldClassMap.js +5 -0
  4. package/build/esm/.spruce/schemas/fields/fields.types.d.ts +1 -0
  5. package/build/esm/.spruce/schemas/fields/fields.types.js +3 -0
  6. package/build/esm/.spruce/settings.json +28 -0
  7. package/build/esm/AbstractEventEmitter.d.ts +20 -0
  8. package/build/esm/AbstractEventEmitter.js +200 -0
  9. package/build/esm/errors/SpruceError.d.ts +5 -0
  10. package/build/esm/errors/SpruceError.js +26 -0
  11. package/build/esm/errors/errors.types.d.ts +19 -0
  12. package/build/esm/errors/errors.types.js +1 -0
  13. package/build/esm/index.d.ts +1 -0
  14. package/build/esm/index.js +1 -0
  15. package/package.json +9 -9
  16. package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.d.ts +0 -15
  17. package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.js +0 -134
  18. package/build/__tests__/behavioral/EmittingAndFlatteningResponses.test.js.map +0 -1
  19. package/build/__tests__/behavioral/EmittingEventsSequentally.test.d.ts +0 -4
  20. package/build/__tests__/behavioral/EmittingEventsSequentally.test.js +0 -67
  21. package/build/__tests__/behavioral/EmittingEventsSequentally.test.js.map +0 -1
  22. package/build/__tests__/behavioral/UsingMercuryEventEmitter.test.d.ts +0 -32
  23. package/build/__tests__/behavioral/UsingMercuryEventEmitter.test.js +0 -447
  24. package/build/__tests__/behavioral/UsingMercuryEventEmitter.test.js.map +0 -1
  25. package/build/__tests__/behavioral/testContract.d.ts +0 -52
  26. package/build/__tests__/behavioral/testContract.js +0 -56
  27. package/build/__tests__/behavioral/testContract.js.map +0 -1
  28. /package/build/{.spruce → esm/.spruce}/schemas/fields/fieldClassMap.js.map +0 -0
  29. /package/build/{.spruce → esm/.spruce}/schemas/fields/fields.types.js.map +0 -0
  30. /package/build/{AbstractEventEmitter.js.map → esm/AbstractEventEmitter.js.map} +0 -0
  31. /package/build/{errors → esm/errors}/SpruceError.js.map +0 -0
  32. /package/build/{errors → esm/errors}/errors.types.js.map +0 -0
  33. /package/build/{index.js.map → esm/index.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {}
@@ -0,0 +1,2 @@
1
+ import { fieldClassMap } from '@sprucelabs/schema';
2
+ export default fieldClassMap;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const schema_1 = require('@sprucelabs/schema');
4
+ exports.default = schema_1.fieldClassMap;
5
+ //# sourceMappingURL=fieldClassMap.js.map
@@ -0,0 +1 @@
1
+ export { FieldDefinitions, FieldDefinitionMap, FieldValueTypeGeneratorMap, FieldMap } from '@sprucelabs/schema';
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fields.types.js.map
@@ -0,0 +1,28 @@
1
+ {
2
+ "installed": [
3
+ "test",
4
+ "error",
5
+ "schema"
6
+ ],
7
+ "skipped": [
8
+ "skill"
9
+ ],
10
+ "writer": {
11
+ "skipped": [
12
+ ".gitignore"
13
+ ],
14
+ "skips": [
15
+ "src/index.ts"
16
+ ]
17
+ },
18
+ "scriptUpdater": {
19
+ "skipped": [
20
+ "rebuild",
21
+ "update.dependencies",
22
+ "build.tsc",
23
+ "fix.lint",
24
+ "lint"
25
+ ],
26
+ "skips": []
27
+ }
28
+ }
@@ -0,0 +1,20 @@
1
+ import { EmitCallback, EventSignature, MercuryAggregateResponse, MercuryEventEmitter, EventContract, EventNames, ListenerCallback } from '@sprucelabs/mercury-types';
2
+ import { Schema, SchemaValues } from '@sprucelabs/schema';
3
+ export default class AbstractEventEmitter<Contract extends EventContract> implements MercuryEventEmitter<Contract> {
4
+ private shouldEmitSequentally;
5
+ protected eventContract: EventContract;
6
+ protected listenersByEvent: Record<string, ((payload?: any) => any | Promise<any>)[]>;
7
+ constructor(contract: EventContract, options?: {
8
+ shouldEmitSequentally?: boolean;
9
+ });
10
+ emit<EventName extends EventNames<Contract>, IEventSignature extends EventSignature = Contract['eventSignatures'][EventName], EmitSchema extends Schema = IEventSignature['emitPayloadSchema'] extends Schema ? IEventSignature['emitPayloadSchema'] : never, ResponseSchema extends Schema = IEventSignature['responsePayloadSchema'] extends Schema ? IEventSignature['responsePayloadSchema'] : never>(eventName: EventName, payload?: (EmitSchema extends Schema ? SchemaValues<EmitSchema> : never) | EmitCallback<Contract, EventName>, cb?: EmitCallback<Contract, EventName>): Promise<MercuryAggregateResponse<SchemaValues<ResponseSchema>>>;
11
+ emitAndFlattenResponses<EventName extends EventNames<Contract>, IEventSignature extends EventSignature = Contract['eventSignatures'][EventName], EmitSchema extends Schema = IEventSignature['emitPayloadSchema'] extends Schema ? IEventSignature['emitPayloadSchema'] : never, ResponseSchema extends Schema = IEventSignature['responsePayloadSchema'] extends Schema ? IEventSignature['responsePayloadSchema'] : never>(eventName: EventName, payload?: (EmitSchema extends Schema ? SchemaValues<EmitSchema> : never) | EmitCallback<Contract, EventName>, cb?: EmitCallback<Contract, EventName>): Promise<SchemaValues<ResponseSchema>[]>;
12
+ private emitOne;
13
+ listenCount(eventName: EventNames<Contract>): number;
14
+ mixinContract(contract: EventContract): void;
15
+ protected validateEmitPayload(schema: Schema | undefined | null, actualPayload: any, eventName: string): void;
16
+ protected validateResponsePayload(schema: Schema | undefined | null, actualPayload: any, eventName: string): void;
17
+ private normalizePayloadAndCallback;
18
+ on<EventName extends EventNames<Contract>, IEventSignature extends EventSignature = Contract['eventSignatures'][EventName]>(eventName: EventName, cb: ListenerCallback<IEventSignature>): Promise<void>;
19
+ off(eventName: EventNames<Contract>, cb?: any): Promise<number>;
20
+ }
@@ -0,0 +1,200 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import AbstractSpruceError from '@sprucelabs/error';
11
+ import { validateSchemaValues } from '@sprucelabs/schema';
12
+ import { eventContractUtil, eventResponseUtil, } from '@sprucelabs/spruce-event-utils';
13
+ import SpruceError from './errors/SpruceError.js';
14
+ export default class AbstractEventEmitter {
15
+ constructor(contract, options) {
16
+ var _a;
17
+ this.listenersByEvent = {};
18
+ this.eventContract = contract;
19
+ this.shouldEmitSequentally = (_a = options === null || options === void 0 ? void 0 : options.shouldEmitSequentally) !== null && _a !== void 0 ? _a : false;
20
+ }
21
+ emit(eventName, payload, cb) {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ const { actualPayload, actualCallback } = this.normalizePayloadAndCallback(payload, cb);
24
+ const eventSignature = eventContractUtil.getSignatureByName(this.eventContract, eventName);
25
+ const emitSchema = eventSignature.emitPayloadSchema;
26
+ const responseSchema = eventSignature.responsePayloadSchema;
27
+ this.validateEmitPayload(emitSchema, actualPayload, eventName);
28
+ const listeners = this.listenersByEvent[eventName] || [];
29
+ let totalErrors = 0;
30
+ const emitOneAndValidate = (listenerCb, idx) => __awaiter(this, void 0, void 0, function* () {
31
+ var _a;
32
+ let response = yield this.emitOne({
33
+ idx,
34
+ listenerCb,
35
+ payload: actualPayload,
36
+ totalContracts: listeners.length,
37
+ actualCallback,
38
+ });
39
+ if (responseSchema && !response.errors) {
40
+ try {
41
+ this.validateResponsePayload(responseSchema, (_a = response.payload) !== null && _a !== void 0 ? _a : {}, eventName);
42
+ }
43
+ catch (err) {
44
+ response = {
45
+ errors: [err],
46
+ };
47
+ }
48
+ }
49
+ if (response.errors) {
50
+ totalErrors += response.errors.length;
51
+ }
52
+ return response;
53
+ });
54
+ let responses;
55
+ if (this.shouldEmitSequentally) {
56
+ responses = [];
57
+ let idx = 0;
58
+ for (const listener of listeners) {
59
+ const response = yield emitOneAndValidate(listener, idx);
60
+ responses.push(response);
61
+ idx++;
62
+ }
63
+ }
64
+ else {
65
+ responses = yield Promise.all(listeners.map((listenerCb, idx) => __awaiter(this, void 0, void 0, function* () { return emitOneAndValidate(listenerCb, idx); })));
66
+ }
67
+ return {
68
+ totalContracts: listeners.length,
69
+ totalResponses: listeners.length,
70
+ totalErrors,
71
+ responses,
72
+ };
73
+ });
74
+ }
75
+ emitAndFlattenResponses(eventName, payload, cb) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ const results = yield this.emit(eventName, payload, cb);
78
+ if (results.totalResponses === 0) {
79
+ return [];
80
+ }
81
+ const { payloads, errors } = eventResponseUtil.getAllResponsePayloadsAndErrors(results, SpruceError);
82
+ if (errors === null || errors === void 0 ? void 0 : errors[0]) {
83
+ throw errors[0];
84
+ }
85
+ return payloads;
86
+ });
87
+ }
88
+ emitOne(options) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ let responsePayload;
91
+ let error;
92
+ try {
93
+ responsePayload = yield options.listenerCb(options.payload);
94
+ }
95
+ catch (err) {
96
+ if (err instanceof AbstractSpruceError) {
97
+ error = err;
98
+ }
99
+ else {
100
+ error = new SpruceError({
101
+ code: 'LISTENER_ERROR',
102
+ originalError: err,
103
+ listenerIdx: options.idx,
104
+ });
105
+ }
106
+ }
107
+ if (typeof options.actualCallback === 'function') {
108
+ const emitCallbackPayload = {};
109
+ if (responsePayload) {
110
+ emitCallbackPayload.payload = responsePayload;
111
+ }
112
+ if (error) {
113
+ emitCallbackPayload.errors = [error];
114
+ }
115
+ yield options.actualCallback(emitCallbackPayload);
116
+ }
117
+ const response = {
118
+ payload: responsePayload,
119
+ };
120
+ if (error) {
121
+ response.errors = [error];
122
+ }
123
+ return response;
124
+ });
125
+ }
126
+ listenCount(eventName) {
127
+ return (this.listenersByEvent[eventName] || []).length;
128
+ }
129
+ mixinContract(contract) {
130
+ this.eventContract = eventContractUtil.unifyContracts([
131
+ this.eventContract,
132
+ contract,
133
+ ]);
134
+ }
135
+ validateEmitPayload(schema, actualPayload, eventName) {
136
+ if (schema) {
137
+ try {
138
+ //@ts-ignore
139
+ validateSchemaValues(schema, actualPayload !== null && actualPayload !== void 0 ? actualPayload : {});
140
+ }
141
+ catch (err) {
142
+ throw new SpruceError({
143
+ code: 'INVALID_PAYLOAD',
144
+ originalError: err,
145
+ eventName,
146
+ });
147
+ }
148
+ }
149
+ }
150
+ validateResponsePayload(schema, actualPayload, eventName) {
151
+ if (schema) {
152
+ try {
153
+ //@ts-ignore
154
+ validateSchemaValues(schema, actualPayload !== null && actualPayload !== void 0 ? actualPayload : {});
155
+ }
156
+ catch (err) {
157
+ throw new SpruceError({
158
+ code: 'INVALID_RESPONSE_PAYLOAD',
159
+ originalError: err,
160
+ eventName,
161
+ });
162
+ }
163
+ }
164
+ }
165
+ normalizePayloadAndCallback(payload, cb) {
166
+ const actualPayload = typeof payload !== 'function' ? payload : undefined;
167
+ const actualCallback = typeof payload === 'function' ? payload : cb;
168
+ return { actualPayload, actualCallback };
169
+ }
170
+ on(eventName, cb) {
171
+ return __awaiter(this, void 0, void 0, function* () {
172
+ eventContractUtil.getSignatureByName(this.eventContract, eventName);
173
+ if (!this.listenersByEvent[eventName]) {
174
+ this.listenersByEvent[eventName] = [];
175
+ }
176
+ this.listenersByEvent[eventName].push(cb);
177
+ });
178
+ }
179
+ off(eventName, cb) {
180
+ return __awaiter(this, void 0, void 0, function* () {
181
+ var _a;
182
+ if (cb) {
183
+ let numForgotten = 0;
184
+ this.listenersByEvent[eventName] = (_a = this.listenersByEvent[eventName]) === null || _a === void 0 ? void 0 : _a.filter((listener) => {
185
+ if (listener === cb) {
186
+ numForgotten++;
187
+ return false;
188
+ }
189
+ return true;
190
+ });
191
+ return numForgotten;
192
+ }
193
+ else {
194
+ const total = (this.listenersByEvent[eventName] || []).length;
195
+ delete this.listenersByEvent[eventName];
196
+ return total;
197
+ }
198
+ });
199
+ }
200
+ }
@@ -0,0 +1,5 @@
1
+ import AbstractSpruceError from '@sprucelabs/error';
2
+ import { MercuryEventEmitterErrorOptions } from './errors.types';
3
+ export default class SpruceError extends AbstractSpruceError<MercuryEventEmitterErrorOptions> {
4
+ friendlyMessage(): string;
5
+ }
@@ -0,0 +1,26 @@
1
+ import AbstractSpruceError from '@sprucelabs/error';
2
+ export default class SpruceError extends AbstractSpruceError {
3
+ friendlyMessage() {
4
+ var _a, _b, _c, _d;
5
+ const { options } = this;
6
+ let message;
7
+ switch (options === null || options === void 0 ? void 0 : options.code) {
8
+ case 'LISTENER_ERROR':
9
+ message = `Error in local event listener:\n\n${(_d = (_b = (_a = options.originalError) === null || _a === void 0 ? void 0 : _a.stack) !== null && _b !== void 0 ? _b : (_c = options.originalError) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : options.originalError}`;
10
+ break;
11
+ case 'INVALID_PAYLOAD':
12
+ message = `The emit payload you passed to "${options.eventName}" is invalid${options.originalError
13
+ ? `:\n\n${options.originalError.message}`
14
+ : '.'}`;
15
+ break;
16
+ case 'INVALID_RESPONSE_PAYLOAD':
17
+ message = `The response payload to "${options.eventName}" is invalid${options.originalError
18
+ ? `:\n\n${options.originalError.message}`
19
+ : '.'}`;
20
+ break;
21
+ default:
22
+ message = this.message;
23
+ }
24
+ return message;
25
+ }
26
+ }
@@ -0,0 +1,19 @@
1
+ import { ErrorOptions as ISpruceErrorOptions } from '@sprucelabs/error';
2
+ import { SchemaErrorOptions } from '@sprucelabs/schema';
3
+ export type MercuryEventEmitterErrorOptions = SchemaErrorOptions | InvalidPayloadErrorOptions | InvalidEventNameErrorOptions | ListenerErrorOptions | InvalidResponsePayloadErrorOptions;
4
+ export interface InvalidPayloadErrorOptions extends ISpruceErrorOptions {
5
+ code: 'INVALID_PAYLOAD';
6
+ eventName: string;
7
+ }
8
+ export interface InvalidResponsePayloadErrorOptions extends ISpruceErrorOptions {
9
+ code: 'INVALID_RESPONSE_PAYLOAD';
10
+ eventName: string;
11
+ }
12
+ export interface InvalidEventNameErrorOptions extends ISpruceErrorOptions {
13
+ code: 'INVALID_EVENT_NAME';
14
+ validNames: string[];
15
+ }
16
+ export interface ListenerErrorOptions extends ISpruceErrorOptions {
17
+ code: 'LISTENER_ERROR';
18
+ listenerIdx: number;
19
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export { default as AbstractEventEmitter } from './AbstractEventEmitter';
@@ -0,0 +1 @@
1
+ export { default as AbstractEventEmitter } from './AbstractEventEmitter.js';
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "42.0.557",
6
+ "version": "42.0.558",
7
7
  "files": [
8
8
  "build"
9
9
  ],
@@ -58,18 +58,18 @@
58
58
  "watch.rebuild": "yarn run clean.all && yarn install && yarn run watch.build.dev"
59
59
  },
60
60
  "dependencies": {
61
- "@sprucelabs/error": "^6.0.509",
62
- "@sprucelabs/mercury-types": "^47.0.561",
63
- "@sprucelabs/schema": "^30.0.520",
64
- "@sprucelabs/spruce-event-utils": "^40.1.281"
61
+ "@sprucelabs/error": "^6.0.511",
62
+ "@sprucelabs/mercury-types": "^47.0.563",
63
+ "@sprucelabs/schema": "^30.0.522",
64
+ "@sprucelabs/spruce-event-utils": "^40.1.283"
65
65
  },
66
66
  "devDependencies": {
67
- "@sprucelabs/esm-postbuild": "^6.0.492",
68
- "@sprucelabs/jest-json-reporter": "^8.0.510",
69
- "@sprucelabs/resolve-path-aliases": "^2.0.488",
67
+ "@sprucelabs/esm-postbuild": "^6.0.494",
68
+ "@sprucelabs/jest-json-reporter": "^8.0.512",
69
+ "@sprucelabs/resolve-path-aliases": "^2.0.490",
70
70
  "@sprucelabs/semantic-release": "^5.0.2",
71
71
  "@sprucelabs/test": "^9.0.55",
72
- "@sprucelabs/test-utils": "^5.1.464",
72
+ "@sprucelabs/test-utils": "^5.1.466",
73
73
  "@types/node": "^22.7.9",
74
74
  "chokidar-cli": "^3.0.0",
75
75
  "eslint": "^9.13.0",
@@ -1,15 +0,0 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
2
- export default class EmittingAndFlatteningResponsesTest extends AbstractSpruceTest {
3
- private static emitter;
4
- protected static beforeEach(): Promise<void>;
5
- protected static emitsAndGetsNothing(): Promise<void>;
6
- protected static throwsOnErrorInFirstResponse(): Promise<void>;
7
- protected static getsBackExpectedResponses(): Promise<void>;
8
- protected static getsBackAllResponses(): Promise<void>;
9
- protected static throwsErrorIf3rdResponseIsError(): Promise<void>;
10
- protected static callsCallbackForFirst(): Promise<void>;
11
- protected static callsCallbackForEachListener(): Promise<void>;
12
- private static makeEventThrow;
13
- private static emit;
14
- private static addListener;
15
- }
@@ -1,134 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __importDefault = (this && this.__importDefault) || function (mod) {
32
- return (mod && mod.__esModule) ? mod : { "default": mod };
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- const schema_1 = require("@sprucelabs/schema");
36
- const test_1 = __importStar(require("@sprucelabs/test"));
37
- const AbstractEventEmitter_1 = __importDefault(require("../../AbstractEventEmitter"));
38
- const testContract_1 = require("./testContract");
39
- class EventEmitter extends AbstractEventEmitter_1.default {
40
- }
41
- class EmittingAndFlatteningResponsesTest extends test_1.default {
42
- static async beforeEach() {
43
- await super.beforeEach();
44
- this.emitter = new EventEmitter(testContract_1.testContract);
45
- }
46
- static async emitsAndGetsNothing() {
47
- const results = await this.emitter.emitAndFlattenResponses('eventWithResponsePayload');
48
- test_1.assert.isLength(results, 0);
49
- }
50
- static async throwsOnErrorInFirstResponse() {
51
- await this.makeEventThrow();
52
- await test_1.assert.doesThrowAsync(() => this.emitter.emitAndFlattenResponses('eventWithResponsePayload'));
53
- }
54
- static async getsBackExpectedResponses() {
55
- await this.addListener('test');
56
- const results = await this.emit();
57
- test_1.assert.isLength(results, 1);
58
- test_1.assert.isEqualDeep(results, [{ requiredTextField: 'test' }]);
59
- }
60
- static async getsBackAllResponses() {
61
- await this.addListener('test');
62
- await this.addListener('test1');
63
- await this.addListener('test2');
64
- const results = await this.emit();
65
- test_1.assert.isLength(results, 3);
66
- }
67
- static async throwsErrorIf3rdResponseIsError() {
68
- await this.addListener('aoeu');
69
- await this.addListener('aoeuy5');
70
- await this.makeEventThrow('eventWithEmitAndResponsePayload');
71
- await test_1.assert.doesThrowAsync(() => this.emitter.emitAndFlattenResponses('eventWithEmitAndResponsePayload'));
72
- }
73
- static async callsCallbackForFirst() {
74
- await this.addListener('aoeuaoeu');
75
- let hitCount = 0;
76
- await this.emit(() => {
77
- hitCount++;
78
- });
79
- test_1.assert.isEqual(hitCount, 1);
80
- }
81
- static async callsCallbackForEachListener() {
82
- await this.addListener('aoeuaoeu');
83
- await this.addListener('aoeuaoeu');
84
- await this.addListener('aoeuaoeu');
85
- await this.addListener('aoeuaoeu');
86
- let hitCount = 0;
87
- await this.emit(() => {
88
- hitCount++;
89
- });
90
- test_1.assert.isEqual(hitCount, 4);
91
- }
92
- static async makeEventThrow(eventName = 'eventWithResponsePayload') {
93
- await this.emitter.on(eventName, () => {
94
- throw new schema_1.SchemaError({
95
- code: 'INVALID_PARAMETERS',
96
- parameters: ['test'],
97
- });
98
- });
99
- }
100
- static async emit(cb) {
101
- return await this.emitter.emitAndFlattenResponses('eventWithEmitAndResponsePayload', {
102
- requiredTextField: 'testing',
103
- }, cb);
104
- }
105
- static async addListener(responseValue) {
106
- await this.emitter.on('eventWithEmitAndResponsePayload', () => {
107
- return {
108
- requiredTextField: responseValue,
109
- };
110
- });
111
- }
112
- }
113
- exports.default = EmittingAndFlatteningResponsesTest;
114
- __decorate([
115
- (0, test_1.test)()
116
- ], EmittingAndFlatteningResponsesTest, "emitsAndGetsNothing", null);
117
- __decorate([
118
- (0, test_1.test)()
119
- ], EmittingAndFlatteningResponsesTest, "throwsOnErrorInFirstResponse", null);
120
- __decorate([
121
- (0, test_1.test)()
122
- ], EmittingAndFlatteningResponsesTest, "getsBackExpectedResponses", null);
123
- __decorate([
124
- (0, test_1.test)()
125
- ], EmittingAndFlatteningResponsesTest, "getsBackAllResponses", null);
126
- __decorate([
127
- (0, test_1.test)()
128
- ], EmittingAndFlatteningResponsesTest, "throwsErrorIf3rdResponseIsError", null);
129
- __decorate([
130
- (0, test_1.test)()
131
- ], EmittingAndFlatteningResponsesTest, "callsCallbackForFirst", null);
132
- __decorate([
133
- (0, test_1.test)()
134
- ], EmittingAndFlatteningResponsesTest, "callsCallbackForEachListener", null);
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmittingAndFlatteningResponses.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/EmittingAndFlatteningResponses.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
2
- export default class EmittingEventsSequentallyTest extends AbstractSpruceTest {
3
- protected static eventsShouldWaitForTheEventBeforeWhenEmittingSequentally(shouldEmitSequentally: boolean): Promise<void>;
4
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __importDefault = (this && this.__importDefault) || function (mod) {
9
- return (mod && mod.__esModule) ? mod : { "default": mod };
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const mercury_types_1 = require("@sprucelabs/mercury-types");
13
- const schema_1 = require("@sprucelabs/schema");
14
- const test_1 = __importDefault(require("@sprucelabs/test"));
15
- const test_utils_1 = require("@sprucelabs/test-utils");
16
- const AbstractEventEmitter_1 = __importDefault(require("../../AbstractEventEmitter"));
17
- class EmittingEventsSequentallyTest extends test_1.default {
18
- static async eventsShouldWaitForTheEventBeforeWhenEmittingSequentally(shouldEmitSequentally) {
19
- const emitter = new EventEmitter(contract, {
20
- shouldEmitSequentally,
21
- });
22
- let wasEvent2Hit = false;
23
- await emitter.on('event', async () => {
24
- return {
25
- num: 0,
26
- };
27
- });
28
- await emitter.on('event', async () => {
29
- await new Promise((resolve) => setTimeout(resolve, 100));
30
- test_utils_1.assert.isTrue(wasEvent2Hit !== shouldEmitSequentally);
31
- return { num: 1 };
32
- });
33
- await emitter.on('event', async () => {
34
- wasEvent2Hit = true;
35
- return { num: 2 };
36
- });
37
- const results = await emitter.emit('event');
38
- test_utils_1.assert.isEqualDeep(results.responses, [
39
- { payload: { num: 0 } },
40
- { payload: { num: 1 } },
41
- { payload: { num: 2 } },
42
- ]);
43
- }
44
- }
45
- exports.default = EmittingEventsSequentallyTest;
46
- __decorate([
47
- (0, test_utils_1.test)('should fire sequentally', true),
48
- (0, test_utils_1.test)('should fire in parallel', false)
49
- ], EmittingEventsSequentallyTest, "eventsShouldWaitForTheEventBeforeWhenEmittingSequentally", null);
50
- const contract = (0, mercury_types_1.buildEventContract)({
51
- eventSignatures: {
52
- event: {
53
- responsePayloadSchema: (0, schema_1.buildSchema)({
54
- id: 'response',
55
- fields: {
56
- num: {
57
- type: 'number',
58
- isRequired: true,
59
- options: {},
60
- },
61
- },
62
- }),
63
- },
64
- },
65
- });
66
- class EventEmitter extends AbstractEventEmitter_1.default {
67
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"EmittingEventsSequentally.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/EmittingEventsSequentally.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,6DAA6E;AAC7E,+CAAgD;AAChD,4DAAiD;AACjD,uDAAqD;AACrD,sFAA6D;AAE7D,MAAqB,6BAA8B,SAAQ,cAAkB;IAGlD,AAAb,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAC3E,qBAA8B;QAE9B,MAAM,OAAO,GAAG,IAAI,YAAY,CAAW,QAAQ,EAAE;YACjD,qBAAqB;SACxB,CAAC,CAAA;QAEF,IAAI,YAAY,GAAG,KAAK,CAAA;QAExB,MAAM,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjC,OAAO;gBACH,GAAG,EAAE,CAAC;aACT,CAAA;QACL,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;YACxD,mBAAM,CAAC,MAAM,CAAC,YAAY,KAAK,qBAAqB,CAAC,CAAA;YACrD,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YACjC,YAAY,GAAG,IAAI,CAAA;YACnB,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;QACrB,CAAC,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE3C,mBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE;YAClC,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;YACvB,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;YACvB,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE;SAC1B,CAAC,CAAA;IACN,CAAC;CACJ;AArCD,gDAqCC;AAlC0B;IAFtB,IAAA,iBAAI,EAAC,yBAAyB,EAAE,IAAI,CAAC;IACrC,IAAA,iBAAI,EAAC,yBAAyB,EAAE,KAAK,CAAC;mGAkCtC;AAGL,MAAM,QAAQ,GAAG,IAAA,kCAAkB,EAAC;IAChC,eAAe,EAAE;QACb,KAAK,EAAE;YACH,qBAAqB,EAAE,IAAA,oBAAW,EAAC;gBAC/B,EAAE,EAAE,UAAU;gBACd,MAAM,EAAE;oBACJ,GAAG,EAAE;wBACD,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,IAAI;wBAChB,OAAO,EAAE,EAAE;qBACd;iBACJ;aACJ,CAAC;SACL;KACJ;CACJ,CAAC,CAAA;AAEF,MAAM,YAEJ,SAAQ,8BAA8B;CAAG"}
@@ -1,32 +0,0 @@
1
- import AbstractSpruceTest from '@sprucelabs/test';
2
- export default class MercuryEventEmitterTest extends AbstractSpruceTest {
3
- private static emitter;
4
- private static testEmitter;
5
- protected static beforeEach(): Promise<void>;
6
- protected static canCreateEmitter(): void;
7
- protected static tracksListeners(): void;
8
- protected static listenCountStartsAtZero(): void;
9
- protected static listenCountIncrements(): void;
10
- protected static oneListenerCanBeCleared(): Promise<void>;
11
- protected static twoListenersCanBeCleared(): Promise<void>;
12
- protected static specificListenerCanBeCleared(): Promise<void>;
13
- protected static clearingListenersHonorsEventName(): void;
14
- protected static emittingTriggersCallback(): Promise<void>;
15
- protected static emitPassesThroughEmitPayload(): Promise<void>;
16
- protected static oneListenerCanRespondWithPayload(): Promise<void>;
17
- protected static multipleListenersCanRespondWithPayloads(): Promise<void>;
18
- protected static emitCanListenToEachListener(): Promise<void>;
19
- protected static emitAndRespondCanEachHandlePayloads(): Promise<void>;
20
- protected static respondsToEachCallbackWithoutPayload(): Promise<void>;
21
- protected static emittingBadEventThrows(): Promise<void>;
22
- protected static canValidateEmitPayload(): Promise<void>;
23
- protected static reportsBackSingleErrorFromListeners(): Promise<void>;
24
- protected static reportsBackOneErrorOneSuccessFromListeners(): Promise<void>;
25
- protected static reportsBackMultipleErrorsFromListeners(): Promise<void>;
26
- protected static spruceErrorsInListenersAreRetained(): Promise<void>;
27
- protected static throwsWhenAddingListenerNotOnContract(): Promise<void>;
28
- protected static rendersTextErrorsInListeners(): Promise<void>;
29
- private static emitAndAssertExpectedErrors;
30
- private static assertExpectedErrors;
31
- private static assertError;
32
- }
@@ -1,447 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
- return c > 3 && r && Object.defineProperty(target, key, r), r;
23
- };
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- var __importDefault = (this && this.__importDefault) || function (mod) {
32
- return (mod && mod.__esModule) ? mod : { "default": mod };
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- const spruce_event_utils_1 = require("@sprucelabs/spruce-event-utils");
36
- const test_1 = __importStar(require("@sprucelabs/test"));
37
- const test_utils_1 = require("@sprucelabs/test-utils");
38
- const AbstractEventEmitter_1 = __importDefault(require("../../AbstractEventEmitter"));
39
- const SpruceError_1 = __importDefault(require("../../errors/SpruceError"));
40
- const testContract_1 = require("./testContract");
41
- class EventEmitter extends AbstractEventEmitter_1.default {
42
- listenCount(eventName) {
43
- return (this.listenersByEvent[eventName] || []).length;
44
- }
45
- }
46
- class MercuryEventEmitterTest extends test_1.default {
47
- static async beforeEach() {
48
- await super.beforeEach();
49
- this.testEmitter = new EventEmitter(testContract_1.testContract);
50
- this.emitter = this.testEmitter;
51
- }
52
- static canCreateEmitter() {
53
- const emitter = MercuryEventEmitterTest.emitter;
54
- test_1.assert.isTruthy(emitter);
55
- }
56
- static tracksListeners() {
57
- void this.emitter.on('eventOne', () => { });
58
- }
59
- static listenCountStartsAtZero() {
60
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 0);
61
- }
62
- static listenCountIncrements() {
63
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 0);
64
- void this.emitter.on('eventOne', () => { });
65
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 1);
66
- }
67
- static async oneListenerCanBeCleared() {
68
- void this.emitter.on('eventOne', () => { });
69
- const numForgotten = await this.emitter.off('eventOne');
70
- test_1.assert.isEqual(numForgotten, 1);
71
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 0);
72
- }
73
- static async twoListenersCanBeCleared() {
74
- void this.emitter.on('eventOne', () => { });
75
- void this.emitter.on('eventOne', () => { });
76
- const numForgotten = await this.emitter.off('eventOne');
77
- test_1.assert.isEqual(numForgotten, 2);
78
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 0);
79
- }
80
- static async specificListenerCanBeCleared() {
81
- let cb1Count = 0;
82
- let cb2Count = 0;
83
- const cb = () => {
84
- cb1Count++;
85
- };
86
- void this.emitter.on('eventTwo', cb);
87
- void this.emitter.on('eventOne', cb);
88
- void this.emitter.on('eventOne', () => {
89
- cb2Count++;
90
- });
91
- void this.emitter.on('eventTwo', cb);
92
- let numForgotten = await this.emitter.off('eventOne', cb);
93
- test_1.assert.isEqual(numForgotten, 1);
94
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 1);
95
- await this.emitter.emit('eventOne');
96
- test_1.assert.isEqual(cb1Count, 0);
97
- await this.emitter.emit('eventTwo');
98
- test_1.assert.isEqual(cb2Count, 1);
99
- numForgotten = await this.emitter.off('eventOne', () => { });
100
- test_1.assert.isEqual(numForgotten, 0);
101
- numForgotten = await this.emitter.off('eventTwo', cb);
102
- test_1.assert.isEqual(numForgotten, 2);
103
- }
104
- static clearingListenersHonorsEventName() {
105
- void this.emitter.on('eventOne', () => { });
106
- void this.emitter.on('eventTwo', () => { });
107
- void this.emitter.off('eventOne');
108
- test_1.assert.isEqual(this.testEmitter.listenCount('eventOne'), 0);
109
- test_1.assert.isEqual(this.testEmitter.listenCount('eventTwo'), 1);
110
- }
111
- static async emittingTriggersCallback() {
112
- let fired = false;
113
- void this.emitter.on('eventOne', () => {
114
- fired = true;
115
- });
116
- await this.emitter.emit('eventOne');
117
- test_1.assert.isTrue(fired);
118
- }
119
- static async emitPassesThroughEmitPayload() {
120
- let payload;
121
- void this.emitter.on('eventWithEmitPayload', (p) => {
122
- payload = p;
123
- });
124
- await this.emitter.emit('eventWithEmitPayload', {
125
- optionalTextField: 'hello world',
126
- });
127
- test_1.assert.isEqualDeep(payload, { optionalTextField: 'hello world' });
128
- }
129
- static async oneListenerCanRespondWithPayload() {
130
- void this.emitter.on('eventWithResponsePayload', () => {
131
- return {
132
- requiredTextField: 'foo bar',
133
- };
134
- });
135
- const responses = await this.emitter.emit('eventWithResponsePayload');
136
- test_1.assert.isEqualDeep(responses, {
137
- totalContracts: 1,
138
- totalResponses: 1,
139
- totalErrors: 0,
140
- responses: [
141
- {
142
- payload: {
143
- requiredTextField: 'foo bar',
144
- },
145
- },
146
- ],
147
- });
148
- }
149
- static async multipleListenersCanRespondWithPayloads() {
150
- void this.emitter.on('eventWithResponsePayload', () => ({
151
- requiredTextField: 'foo bar',
152
- }));
153
- void this.emitter.on('eventWithResponsePayload', () => ({
154
- requiredTextField: 'hello world',
155
- }));
156
- const responses = await this.emitter.emit('eventWithResponsePayload');
157
- test_1.assert.isEqualDeep(responses, {
158
- totalContracts: 2,
159
- totalResponses: 2,
160
- totalErrors: 0,
161
- responses: [
162
- {
163
- payload: {
164
- requiredTextField: 'foo bar',
165
- },
166
- },
167
- {
168
- payload: {
169
- requiredTextField: 'hello world',
170
- },
171
- },
172
- ],
173
- });
174
- }
175
- static async emitCanListenToEachListener() {
176
- void this.emitter.on('eventWithResponsePayload', () => ({
177
- requiredTextField: 'foo bar',
178
- }));
179
- void this.emitter.on('eventWithResponsePayload', () => ({
180
- requiredTextField: 'hello world',
181
- }));
182
- let count = 0;
183
- const payloads = [];
184
- await this.emitter.emit('eventWithResponsePayload', (payload) => {
185
- count++;
186
- payloads.push(payload);
187
- });
188
- test_1.assert.isEqual(count, 2);
189
- test_1.assert.isEqualDeep(payloads, [
190
- {
191
- payload: {
192
- requiredTextField: 'foo bar',
193
- },
194
- },
195
- {
196
- payload: {
197
- requiredTextField: 'hello world',
198
- },
199
- },
200
- ]);
201
- }
202
- static async emitAndRespondCanEachHandlePayloads() {
203
- void this.emitter.on('eventWithEmitAndResponsePayload', () => ({
204
- requiredTextField: 'foo bar',
205
- }));
206
- void this.emitter.on('eventWithEmitAndResponsePayload', () => ({
207
- requiredTextField: 'hello world',
208
- }));
209
- let count = 0;
210
- const listenerResponses = [];
211
- const results = await this.emitter.emit('eventWithEmitAndResponsePayload', { requiredTextField: 'great' }, (response) => {
212
- count++;
213
- listenerResponses.push(response);
214
- });
215
- test_1.assert.isEqual(count, 2);
216
- test_1.assert.isEqualDeep(listenerResponses, [
217
- {
218
- payload: {
219
- requiredTextField: 'foo bar',
220
- },
221
- },
222
- {
223
- payload: {
224
- requiredTextField: 'hello world',
225
- },
226
- },
227
- ]);
228
- test_1.assert.isEqualDeep(results, {
229
- totalContracts: 2,
230
- totalResponses: 2,
231
- totalErrors: 0,
232
- responses: [
233
- {
234
- payload: {
235
- requiredTextField: 'foo bar',
236
- },
237
- },
238
- {
239
- payload: {
240
- requiredTextField: 'hello world',
241
- },
242
- },
243
- ],
244
- });
245
- }
246
- static async respondsToEachCallbackWithoutPayload() {
247
- void this.emitter.on('eventWithResponsePayload', () => ({
248
- requiredTextField: 'foo bar',
249
- }));
250
- void this.emitter.on('eventWithResponsePayload', () => ({
251
- requiredTextField: 'hello world',
252
- }));
253
- void this.emitter.on('eventWithResponsePayload', () => ({
254
- requiredTextField: 'hello world',
255
- }));
256
- let hitCount = 0;
257
- await this.emitter.emit('eventWithResponsePayload', () => {
258
- hitCount++;
259
- });
260
- test_1.assert.isEqual(hitCount, 3);
261
- }
262
- static async emittingBadEventThrows() {
263
- const error = (await test_1.assert.doesThrowAsync(() =>
264
- //@ts-ignore
265
- this.emitter.emit('does-not-exist')));
266
- this.assertError(error, 'INVALID_EVENT_NAME', {
267
- validNames: [
268
- 'eventOne',
269
- 'eventTwo',
270
- 'eventWithEmitPayload',
271
- 'eventWithResponsePayload',
272
- 'eventWithEmitAndResponsePayload',
273
- ],
274
- });
275
- }
276
- static async canValidateEmitPayload() {
277
- const error = (await test_1.assert.doesThrowAsync(() =>
278
- //@ts-ignore
279
- this.emitter.emit('eventWithEmitPayload', { bad: true })));
280
- this.assertError(error, 'INVALID_PAYLOAD', {
281
- eventName: 'eventWithEmitPayload',
282
- });
283
- }
284
- static async reportsBackSingleErrorFromListeners() {
285
- void this.emitter.on('eventOne', () => {
286
- throw new Error('oh no!');
287
- });
288
- const totalListeners = 1;
289
- const expectedErrors = ['oh no!'];
290
- await this.emitAndAssertExpectedErrors(totalListeners, expectedErrors);
291
- }
292
- static async reportsBackOneErrorOneSuccessFromListeners() {
293
- void this.emitter.on('eventOne', () => {
294
- throw new Error('oh no!');
295
- });
296
- void this.emitter.on('eventOne', () => { });
297
- const totalListeners = 2;
298
- const expectedErrors = ['oh no!', undefined];
299
- await this.emitAndAssertExpectedErrors(totalListeners, expectedErrors);
300
- }
301
- static async reportsBackMultipleErrorsFromListeners() {
302
- void this.emitter.on('eventOne', () => {
303
- throw new Error('oh no!');
304
- });
305
- void this.emitter.on('eventOne', () => {
306
- throw new Error('oh yes!');
307
- });
308
- void this.emitter.on('eventOne', () => { });
309
- const totalListeners = 3;
310
- const expectedErrors = ['oh no!', 'oh yes!', undefined];
311
- await this.emitAndAssertExpectedErrors(totalListeners, expectedErrors);
312
- }
313
- static async spruceErrorsInListenersAreRetained() {
314
- void this.emitter.on('eventOne', () => {
315
- throw new SpruceError_1.default({
316
- code: 'MISSING_PARAMETERS',
317
- parameters: [],
318
- });
319
- });
320
- const results = await this.emitter.emit('eventOne');
321
- spruce_event_utils_1.eventAssertUtil.assertErrorFromResponse(results, 'MISSING_PARAMETERS');
322
- }
323
- static async throwsWhenAddingListenerNotOnContract() {
324
- const err = await test_1.assert.doesThrowAsync(() =>
325
- //@ts-ignore
326
- this.emitter.on('taco', () => { }));
327
- test_utils_1.errorAssert.assertError(err, 'INVALID_EVENT_NAME');
328
- }
329
- static async rendersTextErrorsInListeners() {
330
- void this.emitter.on('eventOne', () => {
331
- throw 'uh ooooh!';
332
- });
333
- const results = await this.emitter.emit('eventOne');
334
- test_1.assert.doesInclude(results.responses[0]?.errors?.[0].message, 'uh ooooh!');
335
- }
336
- static async emitAndAssertExpectedErrors(totalListeners, expectedErrors) {
337
- let listenerResponses = [];
338
- const results = await this.emitter.emit('eventOne', (response) => {
339
- listenerResponses.push(response);
340
- });
341
- this.assertExpectedErrors(listenerResponses, totalListeners, expectedErrors, results);
342
- }
343
- static assertExpectedErrors(listenerResponses, totalListeners, expectedErrors, results) {
344
- test_1.assert.isLength(listenerResponses, totalListeners);
345
- test_1.assert.doesInclude(results, {
346
- totalContracts: totalListeners,
347
- totalResponses: totalListeners,
348
- totalErrors: expectedErrors.filter((err) => !!err).length,
349
- });
350
- let idx = 0;
351
- for (const err of expectedErrors) {
352
- if (!err) {
353
- test_1.assert.isFalsy(listenerResponses[idx].errors);
354
- test_1.assert.isFalsy(results.responses[idx].errors);
355
- }
356
- else {
357
- test_1.assert.doesInclude(listenerResponses[idx], {
358
- 'errors[].message': err,
359
- });
360
- test_1.assert.doesInclude(results.responses[idx], {
361
- 'errors[].message': err,
362
- });
363
- }
364
- idx++;
365
- }
366
- }
367
- static assertError(error, expectedCode, expectedPartialOptions) {
368
- if (error.options.code === expectedCode) {
369
- if (expectedPartialOptions) {
370
- test_1.assert.doesInclude(error.options, expectedPartialOptions);
371
- }
372
- }
373
- else {
374
- test_1.assert.fail(`Invalid error code. Expected ${expectedCode} but got ${error.options.code}`);
375
- }
376
- }
377
- }
378
- exports.default = MercuryEventEmitterTest;
379
- __decorate([
380
- (0, test_1.test)()
381
- ], MercuryEventEmitterTest, "canCreateEmitter", null);
382
- __decorate([
383
- (0, test_1.test)()
384
- ], MercuryEventEmitterTest, "tracksListeners", null);
385
- __decorate([
386
- (0, test_1.test)()
387
- ], MercuryEventEmitterTest, "listenCountStartsAtZero", null);
388
- __decorate([
389
- (0, test_1.test)()
390
- ], MercuryEventEmitterTest, "listenCountIncrements", null);
391
- __decorate([
392
- (0, test_1.test)()
393
- ], MercuryEventEmitterTest, "oneListenerCanBeCleared", null);
394
- __decorate([
395
- (0, test_1.test)()
396
- ], MercuryEventEmitterTest, "twoListenersCanBeCleared", null);
397
- __decorate([
398
- (0, test_1.test)()
399
- ], MercuryEventEmitterTest, "specificListenerCanBeCleared", null);
400
- __decorate([
401
- (0, test_1.test)()
402
- ], MercuryEventEmitterTest, "clearingListenersHonorsEventName", null);
403
- __decorate([
404
- (0, test_1.test)()
405
- ], MercuryEventEmitterTest, "emittingTriggersCallback", null);
406
- __decorate([
407
- (0, test_1.test)()
408
- ], MercuryEventEmitterTest, "emitPassesThroughEmitPayload", null);
409
- __decorate([
410
- (0, test_1.test)()
411
- ], MercuryEventEmitterTest, "oneListenerCanRespondWithPayload", null);
412
- __decorate([
413
- (0, test_1.test)()
414
- ], MercuryEventEmitterTest, "multipleListenersCanRespondWithPayloads", null);
415
- __decorate([
416
- (0, test_1.test)()
417
- ], MercuryEventEmitterTest, "emitCanListenToEachListener", null);
418
- __decorate([
419
- (0, test_1.test)()
420
- ], MercuryEventEmitterTest, "emitAndRespondCanEachHandlePayloads", null);
421
- __decorate([
422
- (0, test_1.test)()
423
- ], MercuryEventEmitterTest, "respondsToEachCallbackWithoutPayload", null);
424
- __decorate([
425
- (0, test_1.test)()
426
- ], MercuryEventEmitterTest, "emittingBadEventThrows", null);
427
- __decorate([
428
- (0, test_1.test)()
429
- ], MercuryEventEmitterTest, "canValidateEmitPayload", null);
430
- __decorate([
431
- (0, test_1.test)()
432
- ], MercuryEventEmitterTest, "reportsBackSingleErrorFromListeners", null);
433
- __decorate([
434
- (0, test_1.test)()
435
- ], MercuryEventEmitterTest, "reportsBackOneErrorOneSuccessFromListeners", null);
436
- __decorate([
437
- (0, test_1.test)()
438
- ], MercuryEventEmitterTest, "reportsBackMultipleErrorsFromListeners", null);
439
- __decorate([
440
- (0, test_1.test)()
441
- ], MercuryEventEmitterTest, "spruceErrorsInListenersAreRetained", null);
442
- __decorate([
443
- (0, test_1.test)()
444
- ], MercuryEventEmitterTest, "throwsWhenAddingListenerNotOnContract", null);
445
- __decorate([
446
- (0, test_1.test)()
447
- ], MercuryEventEmitterTest, "rendersTextErrorsInListeners", null);
@@ -1 +0,0 @@
1
- {"version":3,"file":"UsingMercuryEventEmitter.test.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/UsingMercuryEventEmitter.test.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- export declare const testContract: {
2
- eventSignatures: {
3
- eventOne: {};
4
- eventTwo: {};
5
- eventWithEmitPayload: {
6
- emitPayloadSchema: {
7
- id: string;
8
- name: string;
9
- fields: {
10
- optionalTextField: {
11
- type: "text";
12
- };
13
- };
14
- };
15
- };
16
- eventWithResponsePayload: {
17
- responsePayloadSchema: {
18
- id: string;
19
- name: string;
20
- fields: {
21
- requiredTextField: {
22
- type: "text";
23
- isRequired: true;
24
- };
25
- };
26
- };
27
- };
28
- eventWithEmitAndResponsePayload: {
29
- emitPayloadSchema: {
30
- id: string;
31
- name: string;
32
- fields: {
33
- requiredTextField: {
34
- type: "text";
35
- isRequired: true;
36
- };
37
- };
38
- };
39
- responsePayloadSchema: {
40
- id: string;
41
- name: string;
42
- fields: {
43
- requiredTextField: {
44
- type: "text";
45
- isRequired: true;
46
- };
47
- };
48
- };
49
- };
50
- };
51
- };
52
- export type TestContract = typeof testContract;
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.testContract = void 0;
4
- const mercury_types_1 = require("@sprucelabs/mercury-types");
5
- const schema_1 = require("@sprucelabs/schema");
6
- exports.testContract = (0, mercury_types_1.buildEventContract)({
7
- eventSignatures: {
8
- eventOne: {},
9
- eventTwo: {},
10
- eventWithEmitPayload: {
11
- emitPayloadSchema: (0, schema_1.buildSchema)({
12
- id: 'emitPayloadWithOptionalTextField',
13
- name: 'Emit payload with optional text field',
14
- fields: {
15
- optionalTextField: {
16
- type: 'text',
17
- },
18
- },
19
- }),
20
- },
21
- eventWithResponsePayload: {
22
- responsePayloadSchema: (0, schema_1.buildSchema)({
23
- id: 'responsePayloadWithRequiredTextField',
24
- name: 'responsePayloadWithRequiredTextField',
25
- fields: {
26
- requiredTextField: {
27
- type: 'text',
28
- isRequired: true,
29
- },
30
- },
31
- }),
32
- },
33
- eventWithEmitAndResponsePayload: {
34
- emitPayloadSchema: (0, schema_1.buildSchema)({
35
- id: 'emitPayloadWithRequiredTextField',
36
- name: 'emitPayloadWithRequiredTextField',
37
- fields: {
38
- requiredTextField: {
39
- type: 'text',
40
- isRequired: true,
41
- },
42
- },
43
- }),
44
- responsePayloadSchema: (0, schema_1.buildSchema)({
45
- id: 'secondPayloadWithRequiredTextField',
46
- name: 'secondPayloadWithRequiredTextField',
47
- fields: {
48
- requiredTextField: {
49
- type: 'text',
50
- isRequired: true,
51
- },
52
- },
53
- }),
54
- },
55
- },
56
- });
@@ -1 +0,0 @@
1
- {"version":3,"file":"testContract.js","sourceRoot":"","sources":["../../../src/__tests__/behavioral/testContract.ts"],"names":[],"mappings":";;;AAAA,6DAA8D;AAC9D,+CAAgD;AAEnC,QAAA,YAAY,GAAG,IAAA,kCAAkB,EAAC;IAC3C,eAAe,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,QAAQ,EAAE,EAAE;QACZ,oBAAoB,EAAE;YAClB,iBAAiB,EAAE,IAAA,oBAAW,EAAC;gBAC3B,EAAE,EAAE,kCAAkC;gBACtC,IAAI,EAAE,uCAAuC;gBAC7C,MAAM,EAAE;oBACJ,iBAAiB,EAAE;wBACf,IAAI,EAAE,MAAM;qBACf;iBACJ;aACJ,CAAC;SACL;QACD,wBAAwB,EAAE;YACtB,qBAAqB,EAAE,IAAA,oBAAW,EAAC;gBAC/B,EAAE,EAAE,sCAAsC;gBAC1C,IAAI,EAAE,sCAAsC;gBAC5C,MAAM,EAAE;oBACJ,iBAAiB,EAAE;wBACf,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,IAAI;qBACnB;iBACJ;aACJ,CAAC;SACL;QACD,+BAA+B,EAAE;YAC7B,iBAAiB,EAAE,IAAA,oBAAW,EAAC;gBAC3B,EAAE,EAAE,kCAAkC;gBACtC,IAAI,EAAE,kCAAkC;gBACxC,MAAM,EAAE;oBACJ,iBAAiB,EAAE;wBACf,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,IAAI;qBACnB;iBACJ;aACJ,CAAC;YACF,qBAAqB,EAAE,IAAA,oBAAW,EAAC;gBAC/B,EAAE,EAAE,oCAAoC;gBACxC,IAAI,EAAE,oCAAoC;gBAC1C,MAAM,EAAE;oBACJ,iBAAiB,EAAE;wBACf,IAAI,EAAE,MAAM;wBACZ,UAAU,EAAE,IAAI;qBACnB;iBACJ;aACJ,CAAC;SACL;KACJ;CACJ,CAAC,CAAA"}
File without changes
File without changes