UNPKG

@tangential/core

Version:

Core types and support code for Tangential

53 lines 6.4 kB
import { EventEmitter, Injectable } from '@angular/core'; import { share } from 'rxjs/operators'; //noinspection ES6PreferShortImport import { generatePushID } from '../util/generate-push-id'; import * as i0 from "@angular/core"; export const Intention = { /** * An action has been performed. For example, a user has been created, granted a permission, removed, etc. */ action: 'action', /** * A general event, typically used to communicate UI state across domains. */ event: 'event', /** * A BusMessage whose intent is to record a log message. */ log: 'log', /** * A BusMessage whose intent is to provide a message to the Visitor. It is up to the currently active UI to determine the best method * of sharing the message payload. */ notification: 'notification', /** * A BusMessage that communicates that the current Visitor has requested than an action be performed. For example, clicked a button * that is intended to result in a user being created, a permission being granted, etc. */ request: 'request', }; export class BusMessage { /** @todo: 'intent' should probably be handled by static creation methods. */ constructor(source, intent, key) { this.id = generatePushID(); this.source = source; this.intent = intent || 'event'; // this should not be optional. this.key = key || '_'; } } export class MessageBus { constructor() { this.bus = new EventEmitter(false); this.all = this.bus.pipe(share()); } post(message) { this.bus.next(message); } } MessageBus.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MessageBus, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); MessageBus.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MessageBus }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.10", ngImport: i0, type: MessageBus, decorators: [{ type: Injectable }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1idXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nZW50aWFsL2NvcmUvc3JjL2xpYi9tZXNzYWdlLWJ1cy9tZXNzYWdlLWJ1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDWCxNQUFNLGVBQWUsQ0FBQTtBQUV0QixPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sZ0JBQWdCLENBQUE7QUFDcEMsbUNBQW1DO0FBQ25DLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQTs7QUFJdkQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3ZCOztPQUVHO0lBQ0gsTUFBTSxFQUEwQixRQUFRO0lBRXhDOztPQUVHO0lBQ0gsS0FBSyxFQUEyQixPQUFPO0lBRXZDOztPQUVHO0lBQ0gsR0FBRyxFQUE2QixLQUFLO0lBRXJDOzs7T0FHRztJQUNILFlBQVksRUFBb0IsY0FBYztJQUU5Qzs7O09BR0c7SUFDSCxPQUFPLEVBQXlCLFNBQVM7Q0FDMUMsQ0FBQTtBQUdELE1BQU0sT0FBTyxVQUFVO0lBTXJCLDZFQUE2RTtJQUM3RSxZQUFZLE1BQWMsRUFBRSxNQUF5QixFQUFFLEdBQVk7UUFDakUsSUFBSSxDQUFDLEVBQUUsR0FBRyxjQUFjLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxPQUFPLENBQUEsQ0FBQywrQkFBK0I7UUFDL0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxDQUFBO0lBQ3ZCLENBQUM7Q0FDRjtBQUdELE1BQU0sT0FBTyxVQUFVO0lBS3JCO1FBRlEsUUFBRyxHQUE2QixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUc3RCxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFtQjtRQUN0QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN4QixDQUFDOzt3R0FYVSxVQUFVOzRHQUFWLFVBQVU7NEZBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0YWJsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtzaGFyZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG4vL25vaW5zcGVjdGlvbiBFUzZQcmVmZXJTaG9ydEltcG9ydFxuaW1wb3J0IHtnZW5lcmF0ZVB1c2hJRH0gZnJvbSAnLi4vdXRpbC9nZW5lcmF0ZS1wdXNoLWlkJ1xuXG5leHBvcnQgdHlwZSBCdXNNZXNzYWdlSW50ZW50ID0gJ3JlcXVlc3QnIHwgJ2FjdGlvbicgfCAnZXZlbnQnIHwgJ25vdGlmaWNhdGlvbicgfCAnbG9nJ1xuXG5leHBvcnQgY29uc3QgSW50ZW50aW9uID0ge1xuICAvKipcbiAgICogQW4gYWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZC4gRm9yIGV4YW1wbGUsIGEgdXNlciBoYXMgYmVlbiBjcmVhdGVkLCBncmFudGVkIGEgcGVybWlzc2lvbiwgcmVtb3ZlZCwgZXRjLlxuICAgKi9cbiAgYWN0aW9uOiAgICAgICA8QnVzTWVzc2FnZUludGVudD4nYWN0aW9uJyxcblxuICAvKipcbiAgICogQSBnZW5lcmFsIGV2ZW50LCB0eXBpY2FsbHkgdXNlZCB0byBjb21tdW5pY2F0ZSBVSSBzdGF0ZSBhY3Jvc3MgZG9tYWlucy5cbiAgICovXG4gIGV2ZW50OiAgICAgICAgPEJ1c01lc3NhZ2VJbnRlbnQ+J2V2ZW50JyxcblxuICAvKipcbiAgICogIEEgQnVzTWVzc2FnZSB3aG9zZSBpbnRlbnQgaXMgdG8gcmVjb3JkIGEgbG9nIG1lc3NhZ2UuXG4gICAqL1xuICBsb2c6ICAgICAgICAgIDxCdXNNZXNzYWdlSW50ZW50Pidsb2cnLFxuXG4gIC8qKlxuICAgKiBBIEJ1c01lc3NhZ2Ugd2hvc2UgaW50ZW50IGlzIHRvIHByb3ZpZGUgYSBtZXNzYWdlIHRvIHRoZSBWaXNpdG9yLiBJdCBpcyB1cCB0byB0aGUgY3VycmVudGx5IGFjdGl2ZSBVSSB0byBkZXRlcm1pbmUgdGhlIGJlc3QgbWV0aG9kXG4gICAqIG9mIHNoYXJpbmcgdGhlIG1lc3NhZ2UgcGF5bG9hZC5cbiAgICovXG4gIG5vdGlmaWNhdGlvbjogPEJ1c01lc3NhZ2VJbnRlbnQ+J25vdGlmaWNhdGlvbicsXG5cbiAgLyoqXG4gICAqIEEgQnVzTWVzc2FnZSB0aGF0IGNvbW11bmljYXRlcyB0aGF0IHRoZSBjdXJyZW50IFZpc2l0b3IgaGFzIHJlcXVlc3RlZCB0aGFuIGFuIGFjdGlvbiBiZSBwZXJmb3JtZWQuIEZvciBleGFtcGxlLCBjbGlja2VkIGEgYnV0dG9uXG4gICAqIHRoYXQgaXMgaW50ZW5kZWQgdG8gcmVzdWx0IGluIGEgdXNlciBiZWluZyBjcmVhdGVkLCBhIHBlcm1pc3Npb24gYmVpbmcgZ3JhbnRlZCwgZXRjLlxuICAgKi9cbiAgcmVxdWVzdDogICAgICA8QnVzTWVzc2FnZUludGVudD4ncmVxdWVzdCcsXG59XG5cblxuZXhwb3J0IGNsYXNzIEJ1c01lc3NhZ2Uge1xuICBwdWJsaWMgaWQ6IHN0cmluZ1xuICBwdWJsaWMgaW50ZW50OiBCdXNNZXNzYWdlSW50ZW50XG4gIHB1YmxpYyBrZXk6IHN0cmluZ1xuICBwdWJsaWMgc291cmNlOiBzdHJpbmdcblxuICAvKiogQHRvZG86ICdpbnRlbnQnIHNob3VsZCBwcm9iYWJseSBiZSBoYW5kbGVkIGJ5IHN0YXRpYyBjcmVhdGlvbiBtZXRob2RzLiAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U6IHN0cmluZywgaW50ZW50PzogQnVzTWVzc2FnZUludGVudCwga2V5Pzogc3RyaW5nKSB7XG4gICAgdGhpcy5pZCA9IGdlbmVyYXRlUHVzaElEKClcbiAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZVxuICAgIHRoaXMuaW50ZW50ID0gaW50ZW50IHx8ICdldmVudCcgLy8gdGhpcyBzaG91bGQgbm90IGJlIG9wdGlvbmFsLlxuICAgIHRoaXMua2V5ID0ga2V5IHx8ICdfJ1xuICB9XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBNZXNzYWdlQnVzIHtcblxuICBwdWJsaWMgYWxsOiBPYnNlcnZhYmxlPEJ1c01lc3NhZ2U+XG4gIHByaXZhdGUgYnVzOiBFdmVudEVtaXR0ZXI8QnVzTWVzc2FnZT4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuYWxsID0gdGhpcy5idXMucGlwZShzaGFyZSgpKTtcbiAgfVxuXG4gIHBvc3QobWVzc2FnZTogQnVzTWVzc2FnZSkge1xuICAgIHRoaXMuYnVzLm5leHQobWVzc2FnZSlcbiAgfVxufVxuIl19