diff --git a/dist/Eventful.d.ts b/dist/Eventful.d.ts index b5746b2..0df3ed5 100644 --- a/dist/Eventful.d.ts +++ b/dist/Eventful.d.ts @@ -1,11 +1,94 @@ import type { Constructor } from 'lowclass'; +/** + * @mixin + * @class Eventful - An instance of Eventful emits events that code can + * subscribe to with callbacks. Events may optionally pass a payload to the + * callbacks. + * + * Callbacks can be associated with contexts to be called with (called with + * Function.prototype.call), which offers more performance than similar + * patterns that don't allow contexts to be specified (in those cases the user + * has to create new arrow functions or function clones with + * Function.prototype.bind, which is heavier). + * + * For example, suppose some object `rectangle` emits events named "resize". + * One can react to those events by subscribing to them with a callback: + * + * ```js + * const onResize = size => { + * // whenever `object` emits a "resize" event, the event passes a payload + * // containing the new size of `object`: + * console.log(size) // for example, {x: 123, y: 123} + * } + * + * rectangle.on("resize", onResize) + * ``` + * + * To stop reacting to the "resize" event later, we can unsubscribe the + * callback from the "resize" events: + * + * ```js + * rectangle.off("resize", onResize) + * ``` + */ export declare function Eventful(Base?: T): { new (...a: any[]): { + /** + * @method on - Register a `callback` to be executed any + * time an event with name `eventName` is triggered by an instance of + * Eventful. If a `context` is passed to `.on()`, the `callback` is + * associated with both `eventName` and `context`. Make sure to also + * call `.off()` with the same `context` or else the callabck + * associated with that `context` will not be removed. + * + * @param {string} eventName - The name of the event to listen for. + * @param {Function} callback - A callback that will be called anytime the event named `eventName` happens. The callback may receive certain arguments depending on the event that the callback is subscribed to. + * @param {any} context - An optional context to call the callback with. Passing no context is the same as subscribing `callback` for a `context` of `undefined`. + */ on(eventName: string, callback: Function, context?: any): void; + /** + * @method off - Stop a `callback` from being fired for event named `eventName`. If + * the callback was previously registered along with a `context` in + * `.on()`, be sure to pass the `context` to `.off()` as well. + * + * @param {string} eventName - The name of the event to unsubscribe `callback` from. + * @param {Function} callback - The callback that will be no longer be executed when the event happens. + * @param {any} context - A context associated with `callback`. Not passing a `context` arg is equivalent to unsubscribing the `callback` for `context` of `undefined`. + */ off(eventName: string, callback?: Function, context?: any): void; + /** + * @method emit - Cause the event with name `eventName` to be emitted + * (i.e. cause the event to happen). Any callbacks subscribed to the + * event will be executed and passed the arguments that passed into the + * emit call. + * + * For example, inside a Rectangle class we might see + * + * ```js + * this.emit("resize", {x, y}) + * ``` + * + * @param {string} eventName - The name of the event to emit. + * @param {data} any - The data that is passed to each callback subscribed to the event. + */ emit(eventName: string, data?: any): void; "__#1@#eventMap": Map> | null; }; } & T; +/** + * @decorator + * @function emits - This is a decorator that when used on a property in a + * class definition, causes setting of that property to emit the specified + * event, with the event payload being the property value. This decorator must + * be used in a class that extends from Eventful, otherwise an error is thrown. + * + * @example + * class Foo { + * @emits('propchange') foo = 123 + * } + * const f = new Foo + * f.on('propchange', value => console.log('value: ', value)) + * f.foo = 456 // logs "value: 456" + */ export declare function emits(eventName: string): any; //# sourceMappingURL=Eventful.d.ts.map \ No newline at end of file diff --git a/dist/Eventful.d.ts.map b/dist/Eventful.d.ts.map index 555fcae..aba86ef 100644 --- a/dist/Eventful.d.ts.map +++ b/dist/Eventful.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Eventful.d.ts","sourceRoot":"","sources":["../src/Eventful.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAA;AA4CzC,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,GAAE,CAAiB;;sBAiBvD,MAAM,YAAY,QAAQ,YAAY,GAAG;uBAwBxC,MAAM,aAAa,QAAQ,YAAY,GAAG;wBAmCzC,MAAM,SAAS,GAAG;0BAqBvB,IAAI,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;;MAMtD;AA2BD,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAI5C"} \ No newline at end of file +{"version":3,"file":"Eventful.d.ts","sourceRoot":"","sources":["../src/Eventful.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAA;AAYzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,GAAE,CAAiB;;QAKrE;;;;;;;;;;;WAWG;sBACW,MAAM,YAAY,QAAQ,YAAY,GAAG;QAevD;;;;;;;;WAQG;uBACY,MAAM,aAAa,QAAQ,YAAY,GAAG;QAoBzD;;;;;;;;;;;;;;WAcG;wBACa,MAAM,SAAS,GAAG;0BAqBvB,IAAI,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;;MAMtD;AAYD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAI5C"} \ No newline at end of file diff --git a/dist/Eventful.js b/dist/Eventful.js index 758b8c8..ec7b7ca 100644 --- a/dist/Eventful.js +++ b/dist/Eventful.js @@ -1,8 +1,61 @@ +// TODO, make strongly typed event args. Combine with stuff in Events.ts (or similar). +// TODO, Make sure emit will not attempt to call event handlers removed +// during emit (in place modification of listeners array during emit iteration +// will try to access undefined after the end of the array). Possibly use +// for..of with a Set instead, otherwise modify the iteration index manually. +// TODO, an option to defer events, and batch them (so that 3 of the +// same event and payload triggers only one event instead of three) +/** + * @mixin + * @class Eventful - An instance of Eventful emits events that code can + * subscribe to with callbacks. Events may optionally pass a payload to the + * callbacks. + * + * Callbacks can be associated with contexts to be called with (called with + * Function.prototype.call), which offers more performance than similar + * patterns that don't allow contexts to be specified (in those cases the user + * has to create new arrow functions or function clones with + * Function.prototype.bind, which is heavier). + * + * For example, suppose some object `rectangle` emits events named "resize". + * One can react to those events by subscribing to them with a callback: + * + * ```js + * const onResize = size => { + * // whenever `object` emits a "resize" event, the event passes a payload + * // containing the new size of `object`: + * console.log(size) // for example, {x: 123, y: 123} + * } + * + * rectangle.on("resize", onResize) + * ``` + * + * To stop reacting to the "resize" event later, we can unsubscribe the + * callback from the "resize" events: + * + * ```js + * rectangle.off("resize", onResize) + * ``` + */ export function Eventful(Base = Object) { class Eventful extends Base { + // @ts-ignore to avoid "is using private name" errors in consumer code. [isEventful] = isEventful; + /** + * @method on - Register a `callback` to be executed any + * time an event with name `eventName` is triggered by an instance of + * Eventful. If a `context` is passed to `.on()`, the `callback` is + * associated with both `eventName` and `context`. Make sure to also + * call `.off()` with the same `context` or else the callabck + * associated with that `context` will not be removed. + * + * @param {string} eventName - The name of the event to listen for. + * @param {Function} callback - A callback that will be called anytime the event named `eventName` happens. The callback may receive certain arguments depending on the event that the callback is subscribed to. + * @param {any} context - An optional context to call the callback with. Passing no context is the same as subscribing `callback` for a `context` of `undefined`. + */ on(eventName, callback, context) { let eventMap = this.#eventMap; + // @prod-prune if (typeof callback !== 'function') throw new Error('Expected a function in callback argument of Eventful#on.'); if (!eventMap) @@ -12,6 +65,15 @@ export function Eventful(Base = Object) { eventMap.set(eventName, (callbacks = [])); callbacks.push([callback, context]); } + /** + * @method off - Stop a `callback` from being fired for event named `eventName`. If + * the callback was previously registered along with a `context` in + * `.on()`, be sure to pass the `context` to `.off()` as well. + * + * @param {string} eventName - The name of the event to unsubscribe `callback` from. + * @param {Function} callback - The callback that will be no longer be executed when the event happens. + * @param {any} context - A context associated with `callback`. Not passing a `context` arg is equivalent to unsubscribing the `callback` for `context` of `undefined`. + */ off(eventName, callback, context) { const eventMap = this.#eventMap; if (!eventMap) @@ -28,6 +90,21 @@ export function Eventful(Base = Object) { if (eventMap.size === 0) this.#eventMap = null; } + /** + * @method emit - Cause the event with name `eventName` to be emitted + * (i.e. cause the event to happen). Any callbacks subscribed to the + * event will be executed and passed the arguments that passed into the + * emit call. + * + * For example, inside a Rectangle class we might see + * + * ```js + * this.emit("resize", {x, y}) + * ``` + * + * @param {string} eventName - The name of the event to emit. + * @param {data} any - The data that is passed to each callback subscribed to the event. + */ emit(eventName, data) { const eventMap = this.#eventMap; if (!eventMap) @@ -60,6 +137,21 @@ Object.defineProperty(Eventful, Symbol.hasInstance, { return false; }, }); +/** + * @decorator + * @function emits - This is a decorator that when used on a property in a + * class definition, causes setting of that property to emit the specified + * event, with the event payload being the property value. This decorator must + * be used in a class that extends from Eventful, otherwise an error is thrown. + * + * @example + * class Foo { + * @emits('propchange') foo = 123 + * } + * const f = new Foo + * f.on('propchange', value => console.log('value: ', value)) + * f.foo = 456 // logs "value: 456" + */ export function emits(eventName) { return (prototype, propName, descriptor) => { return _emits(prototype, propName, descriptor ?? undefined, eventName); @@ -69,6 +161,7 @@ function _emits(prototype, propName, descriptor, eventName) { if (!(prototype instanceof Eventful)) throw new TypeError('The @emits decorator is only for use on properties of classes that extend from Eventful.'); const vName = Symbol('@emits: ' + propName); + // property decorators are not passed a descriptor (unlike decorators on accessors or methods) let calledAsPropertyDecorator = false; if (!descriptor) { calledAsPropertyDecorator = true; @@ -84,6 +177,7 @@ function _emits(prototype, propName, descriptor, eventName) { hasOriginalAccessor = true; originalGet = descriptor.get; originalSet = descriptor.set; + // reactivity requires both if (!originalSet) { console.warn('The `@emits` decorator was used on an accessor named "' + propName + @@ -96,6 +190,8 @@ function _emits(prototype, propName, descriptor, eventName) { else { initialValue = descriptor.value; writable = descriptor.writable; + // if it isn't writable, we don't need to make a reactive variable because + // the value won't change if (!writable) { console.warn('The `@emits` decorator was used on a property named "' + propName + @@ -134,7 +230,9 @@ function _emits(prototype, propName, descriptor, eventName) { ? { set(newValue) { originalSet.call(this, newValue); + // TODO should we defer the event, or not? Perhaps provide an option, and defer by default. Promise.resolve().then(emitEvent.bind(this)); + // emitEvent.call(this as Eventful) }, } : { @@ -146,9 +244,15 @@ function _emits(prototype, propName, descriptor, eventName) { }, }), }; + // If a decorator is called on a property, then returning a descriptor does + // nothing, so we need to set the descriptor manually. if (calledAsPropertyDecorator) Object.defineProperty(prototype, propName, descriptor); + // If a decorator is called on an accessor or method, then we must return a + // descriptor in order to modify it, and doing it manually won't work. else return descriptor; + // Weird, huh? + // This will all change with updates to the ES decorators proposal, https://github.com/tc39/proposal-decorators } //# sourceMappingURL=Eventful.js.map \ No newline at end of file diff --git a/dist/Eventful.js.map b/dist/Eventful.js.map index 9dd314d..f23142b 100644 --- a/dist/Eventful.js.map +++ b/dist/Eventful.js.map @@ -1 +1 @@ -{"version":3,"file":"Eventful.js","sourceRoot":"","sources":["../src/Eventful.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Eventful.js","sourceRoot":"","sources":["../src/Eventful.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/Eventful.test.js b/dist/Eventful.test.js index 4521b46..a18032a 100644 --- a/dist/Eventful.test.js +++ b/dist/Eventful.test.js @@ -95,6 +95,7 @@ describe('Eventful', () => { const o1 = {}; const o2 = {}; const callback = function (data) { + // the first two calls if (data.n <= 1) { if (data.n === 0) { data.n++; @@ -105,6 +106,7 @@ describe('Eventful', () => { expect(this).toBe(o2); } } + // the 3rd and 4th calls else { data.n++; expect(this).toBe(o2); diff --git a/dist/Eventful.test.js.map b/dist/Eventful.test.js.map index 1b8bfe5..3f6c642 100644 --- a/dist/Eventful.test.js.map +++ b/dist/Eventful.test.js.map @@ -1 +1 @@ -{"version":3,"file":"Eventful.test.js","sourceRoot":"","sources":["../src/Eventful.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Eventful.test.js","sourceRoot":"","sources":["../src/Eventful.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file