@tangential/core
Version:
Core types and support code for Tangential
53 lines • 6.4 kB
JavaScript
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