From dc5da2d5d61bd20051ee8b5bffa23773ee7d44f3 Mon Sep 17 00:00:00 2001 From: Idan Amit Date: Sun, 26 Aug 2018 16:05:19 +0300 Subject: Add tslint report to sdc-pubsub sonar Added tslint report to sdc-pubsub sonar Fixed all issues raised from tslint report Change-Id: Iac8174b4a72f190c4b607c2d7ee55f7db457b4b5 Issue-ID: SDC-1668 Signed-off-by: Idan Amit --- lib/base-pubsub.ts | 49 ++++++++++--------- lib/plugin-pubsub.ts | 6 +-- package.json | 5 +- pom.xml | 11 +++++ tslint.json | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 175 insertions(+), 29 deletions(-) create mode 100644 tslint.json diff --git a/lib/base-pubsub.ts b/lib/base-pubsub.ts index 41e8039..36b959a 100644 --- a/lib/base-pubsub.ts +++ b/lib/base-pubsub.ts @@ -3,20 +3,20 @@ declare const window: Window; export class BasePubSub { subscribers: Map; - eventsCallbacks: Array; + eventsCallbacks: Function[]; clientId: string; - eventsToWait: Map>; + eventsToWait: Map; lastEventNotified: string; constructor(pluginId: string) { this.subscribers = new Map(); this.eventsCallbacks = []; - this.eventsToWait = new Map>(); + this.eventsToWait = new Map(); 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) { @@ -33,8 +33,8 @@ export class BasePubSub { } 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) { @@ -43,12 +43,12 @@ export class BasePubSub { } 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 @@ -63,12 +63,12 @@ export class BasePubSub { 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) { @@ -77,31 +77,30 @@ export class BasePubSub { }; 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) => + public isWaitingForEvent(eventName: string): boolean { + return Array.from(this.eventsToWait.values()).some((eventsList: string[]) => eventsList.indexOf(eventName) !== -1 ); } @@ -110,7 +109,7 @@ export class BasePubSub { if (this.subscribers.has(event.data.originId)) { this.eventsCallbacks.forEach((callback: Function) => { callback(event.data, event); - }) + }); } } } diff --git a/lib/plugin-pubsub.ts b/lib/plugin-pubsub.ts index 3a34de9..ec4afb2 100644 --- a/lib/plugin-pubsub.ts +++ b/lib/plugin-pubsub.ts @@ -1,16 +1,16 @@ -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) { + constructor(pluginId: string, parentUrl: string, eventsToWait?: string[]) { super(pluginId); this.register('sdc-hub', window.parent, parentUrl); this.subscribe(eventsToWait); } - public subscribe(eventsToWait?: Array) { + public subscribe(eventsToWait?: string[]) { const registerData = { pluginId: this.clientId, eventsToWait: eventsToWait || [] diff --git a/package.json b/package.json index a075e40..455d508 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,8 @@ "scripts": { "clean": "rimraf dist", "build": "tsc && webpack --mode development", - "test": "jest" + "test": "jest", + "lint": "./node_modules/.bin/tslint -t json -o ./coverage/tslint-report.json --project ./tsconfig.json" }, "keywords": [ "sdc", @@ -26,6 +27,8 @@ "jest-sonar-reporter": "^2.0.0", "rimraf": "^2.6.2", "ts-jest": "^23.0.1", + "tslint": "^5.11.0", + "tslint-sonarts": "^1.7.0", "typescript": "2.7.2", "webpack": "4.12.0", "webpack-cli": "^3.1.0" diff --git a/pom.xml b/pom.xml index b186789..368de37 100644 --- a/pom.xml +++ b/pom.xml @@ -18,6 +18,7 @@ lib lib/*.spec.ts coverage/lcov.info + coverage/tslint-report.json coverage/test-report.xml @@ -112,6 +113,16 @@ + + npm tslint + + npm + + + run lint + + + npm run build diff --git a/tslint.json b/tslint.json new file mode 100644 index 0000000..c08c75a --- /dev/null +++ b/tslint.json @@ -0,0 +1,133 @@ +{ + "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 -- cgit 1.2.3-korg