export class BasePubSub {
subscribers: Map<string, ISubscriber>;
- eventsCallbacks: Array<Function>;
+ eventsCallbacks: Function[];
clientId: string;
- eventsToWait: Map<string, Array<string>>;
+ eventsToWait: Map<string, string[]>;
lastEventNotified: string;
constructor(pluginId: string) {
this.subscribers = new Map<string, ISubscriber>();
this.eventsCallbacks = [];
- this.eventsToWait = new Map<string, Array<string>>();
+ this.eventsToWait = new Map<string, string[]>();
this.clientId = pluginId;
- this.lastEventNotified = "";
+ this.lastEventNotified = '';
this.onMessage = this.onMessage.bind(this);
- window.addEventListener("message", this.onMessage);
+ window.addEventListener('message', this.onMessage);
}
public register(subscriberId: string, subscriberWindow: Window, subscriberUrl: string) {
}
public on(callback: Function) {
- let functionExists = this.eventsCallbacks.find((func: Function) => {
- return callback.toString() == func.toString()
+ const functionExists = this.eventsCallbacks.find((func: Function) => {
+ return callback.toString() === func.toString();
});
if (!functionExists) {
}
public off(callback: Function) {
- let index = this.eventsCallbacks.indexOf(callback);
- this.eventsCallbacks.splice(index, 1)
+ const index = this.eventsCallbacks.indexOf(callback);
+ this.eventsCallbacks.splice(index, 1);
}
- public notify(eventType:string, eventData?:any) {
- let eventObj = {
+ public notify(eventType: string, eventData?: any) {
+ const eventObj = {
type: eventType,
data: eventData,
originId: this.clientId
return {
subscribe: function(callbackFn) {
- if(this.subscribers.size !== 0) {
- let subscribersToNotify = Array.from(this.subscribers.keys());
+ if (this.subscribers.size !== 0) {
+ const subscribersToNotify = Array.from(this.subscribers.keys());
const checkNotifyComplete = (subscriberId: string) => {
- let index = subscribersToNotify.indexOf(subscriberId);
+ const index = subscribersToNotify.indexOf(subscriberId);
subscribersToNotify.splice(index, 1);
if (subscribersToNotify.length === 0) {
};
this.subscribers.forEach((subscriber: ISubscriber, subscriberId: string) => {
- if (this.eventsToWait.has(subscriberId) && this.eventsToWait.get(subscriberId).indexOf(eventType) !== -1) {
+ if (this.eventsToWait.has(subscriberId) &&
+ this.eventsToWait.get(subscriberId).indexOf(eventType) !== -1) {
- const actionCompletedFunction = (eventData, subId = subscriberId) => {
- if (eventData.type == "ACTION_COMPLETED") {
+ const actionCompletedFunction = (actionCompletedEventData, subId = subscriberId) => {
+ if (actionCompletedEventData.type === 'ACTION_COMPLETED') {
checkNotifyComplete(subId);
}
this.off(actionCompletedFunction);
};
this.on(actionCompletedFunction);
- }
- else {
+ } else {
checkNotifyComplete(subscriberId);
}
});
- }
- else {
+ } else {
callbackFn();
}
}.bind(this)
- }
+ };
}
- public isWaitingForEvent(eventName: string) : boolean {
- return Array.from(this.eventsToWait.values()).some((eventsList: Array<string>) =>
+ public isWaitingForEvent(eventName: string): boolean {
+ return Array.from(this.eventsToWait.values()).some((eventsList: string[]) =>
eventsList.indexOf(eventName) !== -1
);
}
if (this.subscribers.has(event.data.originId)) {
this.eventsCallbacks.forEach((callback: Function) => {
callback(event.data, event);
- })
+ });
}
}
}
-import {BasePubSub} from "./base-pubsub";
+import { BasePubSub } from './base-pubsub';
declare const window: Window;
export class PluginPubSub extends BasePubSub {
- constructor(pluginId: string, parentUrl: string, eventsToWait?: Array<string>) {
+ constructor(pluginId: string, parentUrl: string, eventsToWait?: string[]) {
super(pluginId);
this.register('sdc-hub', window.parent, parentUrl);
this.subscribe(eventsToWait);
}
- public subscribe(eventsToWait?: Array<string>) {
+ public subscribe(eventsToWait?: string[]) {
const registerData = {
pluginId: this.clientId,
eventsToWait: eventsToWait || []
--- /dev/null
+{
+ "extends": [
+ "tslint:recommended",
+ "tslint-sonarts"
+ ],
+ "rules": {
+ "cognitive-complexity": false,
+ "trailing-comma": true,
+ "callable-types": true,
+ "class-name": true,
+ "comment-format": [
+ true,
+ "check-space"
+ ],
+ "curly": true,
+ "eofline": true,
+ "forin": true,
+ "import-spacing": true,
+ "indent": [
+ true,
+ "spaces"
+ ],
+ //"interface-over-type-literal": true,
+ //"label-position": true,
+ "max-line-length": [
+ true,
+ 120
+ ],
+ "member-access": false,
+ "member-ordering": [
+ true,
+ {
+ "order": "fields-first"
+ }
+ ],
+ "no-arg": true,
+ "no-bitwise": true,
+ "no-console": [
+ true,
+ "debug",
+ "info",
+ "time",
+ "timeEnd",
+ "trace"
+ ],
+ "no-construct": true,
+ "no-debugger": true,
+ "no-empty": true,
+ "no-empty-interface": true,
+ "no-eval": true,
+ "no-inferrable-types": false,
+ "no-shadowed-variable": true,
+ "no-string-literal": true,
+ "no-string-throw": true,
+ "no-switch-case-fall-through": true,
+ "no-trailing-whitespace": true,
+ "no-unused-expression": [
+ true,
+ "allow-fast-null-checks"
+ ],
+ "no-var-keyword": true,
+ "object-literal-sort-keys": false,
+ "one-line": [
+ true,
+ "check-open-brace",
+ "check-catch",
+ "check-else",
+ "check-whitespace"
+ ],
+ "prefer-const": true,
+ "quotemark": [
+ true,
+ "single"
+ ],
+ "semicolon": [
+ true,
+ "always"
+ ],
+ "triple-equals": [
+ true,
+ "allow-null-check",
+ "allow-undefined-check"
+ ],
+ "typedef-whitespace": [
+ true,
+ {
+ "call-signature": "nospace",
+ "index-signature": "nospace",
+ "parameter": "nospace",
+ "property-declaration": "nospace",
+ "variable-declaration": "nospace"
+ }
+ ],
+ "variable-name": [
+ true,
+ "check-format",
+ "ban-keywords"
+ ],
+ "whitespace": [
+ true,
+ "check-branch",
+ "check-decl",
+ "check-operator",
+ "check-module",
+ "check-separator",
+ "check-type",
+ "check-preblock"
+ ],
+ "ban-types": [
+ true,
+ [
+ "Object",
+ "Avoid using the `Object` type. Did you mean `object`?"
+ ],
+ [
+ "Boolean",
+ "Avoid using the `Boolean` type. Did you mean `boolean`?"
+ ],
+ [
+ "Number",
+ "Avoid using the `Number` type. Did you mean `number`?"
+ ],
+ [
+ "String",
+ "Avoid using the `String` type. Did you mean `string`?"
+ ],
+ [
+ "Symbol",
+ "Avoid using the `Symbol` type. Did you mean `symbol`?"
+ ]
+ ]
+ }
+}
\ No newline at end of file