From 14999a4f57e87bd96fcacd974f37ee84dfd31400 Mon Sep 17 00:00:00 2001 From: hensm Date: Sat, 15 Feb 2020 06:06:57 +0000 Subject: [PATCH] TSLint compliance --- ext/src/background/StatusManager.ts | 2 +- ext/src/background/background.ts | 38 ++--- .../NativeReceiverSelector.ts | 4 +- ext/src/lib/loadSender.ts | 2 +- ext/src/lib/logger.ts | 8 +- ext/src/lib/options.ts | 2 +- ext/src/lib/typedStorage.ts | 12 +- ext/src/lib/userAgents.ts | 4 +- ext/src/senders/media/index.ts | 8 +- .../senders/media/overlay/descriptorUtils.ts | 2 +- .../senders/media/overlay/overlayContent.ts | 4 +- ext/src/senders/mirroring.ts | 3 +- ext/src/shim/cast/classes/Session.ts | 33 ++-- ext/src/shim/cast/index.ts | 11 +- ext/src/ui/options/index.tsx | 2 +- ext/src/ui/popup/index.tsx | 2 +- package-lock.json | 157 ++++++++++++++++++ package.json | 1 + tslint.json | 1 + 19 files changed, 219 insertions(+), 77 deletions(-) diff --git a/ext/src/background/StatusManager.ts b/ext/src/background/StatusManager.ts index 4f0a0de..5658777 100644 --- a/ext/src/background/StatusManager.ts +++ b/ext/src/background/StatusManager.ts @@ -56,7 +56,7 @@ export default new class StatusManager } } - public * getReceivers() { + public *getReceivers () { for (const [, receiver ] of this.receivers) { if (receiver.status && receiver.status.application && receiver.status.volume) { diff --git a/ext/src/background/background.ts b/ext/src/background/background.ts index 48b7f82..0f7e755 100755 --- a/ext/src/background/background.ts +++ b/ext/src/background/background.ts @@ -45,23 +45,9 @@ browser.runtime.onInstalled.addListener(async details => { }); -function initBrowserAction () { +async function initBrowserAction () { logger.info("init (browser action)"); - /*browser.browserAction.disable(); - - function onServiceChange () { - if (StatusManager.getReceivers().length) { - browser.browserAction.enable(); - } else { - browser.browserAction.disable(); - } - } - - StatusManager.addEventListener("serviceUp", onServiceChange); - StatusManager.addEventListener("serviceDown", onServiceChange);*/ - - /** * When the browser action is clicked, open a receiver * selector and load a sender for the response. The @@ -463,7 +449,7 @@ async function initRequestListener () { } -function initWhitelist () { +async function initWhitelist () { logger.info("init (whitelist)"); type OnBeforeSendHeadersDetails = Parameters header.name === "Host"); for (const header of details.requestHeaders) { + const { os } = await browser.runtime.getPlatformInfo(); + if (header.name.toLowerCase() === "user-agent") { /** * New YouTube breaks without the default user agent string, @@ -497,7 +482,7 @@ function initWhitelist () { break; } - header.value = chromeUserAgent; + header.value = getChromeUserAgent(os); break; } } @@ -526,7 +511,7 @@ function initWhitelist () { } // Register on first run - registerUserAgentWhitelist(); + await registerUserAgentWhitelist(); // Re-register when options change options.addEventListener("changed", ev => { @@ -559,7 +544,7 @@ async function initMediaOverlay () { , runAt: "document_start" }); } catch (err) { - logger.error("Failed to register media overlay") + logger.error("Failed to register media overlay"); } } @@ -577,7 +562,7 @@ async function initMediaOverlay () { await unregisterMediaOverlayContentScript(); await registerMediaOverlayContentScript(); } - }) + }); } @@ -601,16 +586,13 @@ async function init () { isInitialized = true; + await StatusManager.init(); + await ShimManager.init(); await initMenus(); await initRequestListener(); await initWhitelist(); await initMediaOverlay(); - - await StatusManager.init(); - await ShimManager.init(); - - await initBrowserAction(); diff --git a/ext/src/background/receiverSelector/NativeReceiverSelector.ts b/ext/src/background/receiverSelector/NativeReceiverSelector.ts index 7ea7bad..55606e1 100644 --- a/ext/src/background/receiverSelector/NativeReceiverSelector.ts +++ b/ext/src/background/receiverSelector/NativeReceiverSelector.ts @@ -104,8 +104,8 @@ export default class NativeReceiverSelector , i18n_extensionName: _("extensionName") , i18n_castButtonTitle: _("popupCastButtonTitle") , i18n_stopButtonTitle: _("popupStopButtonTitle") - , i18n_mediaTypeApp: - knownApps[requestedAppId]?.name ?? _("popupMediaTypeApp") + , i18n_mediaTypeApp: knownApps[requestedAppId]?.name + ?? _("popupMediaTypeApp") , i18n_mediaTypeTab: _("popupMediaTypeTab") , i18n_mediaTypeScreen: _("popupMediaTypeScreen") , i18n_mediaTypeFile: _("popupMediaTypeFile") diff --git a/ext/src/lib/loadSender.ts b/ext/src/lib/loadSender.ts index 193297c..94c11ee 100644 --- a/ext/src/lib/loadSender.ts +++ b/ext/src/lib/loadSender.ts @@ -35,7 +35,7 @@ export default async function loadSender (opts: LoadSenderOptions) { const shim = ShimManager.getShim(opts.tabId, opts.frameId); if (!shim) { throw logger.error(`Shim not found at tabId ${ - opts.tabId} / frameId ${opts.frameId}`) + opts.tabId} / frameId ${opts.frameId}`); } shim.contentPort.postMessage({ diff --git a/ext/src/lib/logger.ts b/ext/src/lib/logger.ts index 98c13aa..e6bb19e 100644 --- a/ext/src/lib/logger.ts +++ b/ext/src/lib/logger.ts @@ -3,15 +3,17 @@ export class Logger { constructor (private prefix: string) {} - log (message: string, data?: any) { + public log (message: string, data?: any) { const formattedMessage = `${this.prefix} (Log): ${message}`; if (data) { + // tslint:disable-next-line:no-console console.log(formattedMessage, data); } else { + // tslint:disable-next-line:no-console console.log(formattedMessage); } } - info (message: string, data?: any) { + public info (message: string, data?: any) { const formattedMessage = `${this.prefix} (Info): ${message}`; if (data) { console.info(formattedMessage, data); @@ -19,7 +21,7 @@ export class Logger { console.info(formattedMessage); } } - error (message: string, data?: any) { + public error (message: string, data?: any) { const formattedMessage = `${this.prefix} (Error): ${message}`; if (data) { console.error(formattedMessage, data); diff --git a/ext/src/lib/options.ts b/ext/src/lib/options.ts index 7e3d7a2..e8d076f 100644 --- a/ext/src/lib/options.ts +++ b/ext/src/lib/options.ts @@ -107,7 +107,7 @@ export default new class extends TypedEventTarget { * Returns storage promise. */ public async setAll (options: Options): Promise { - return storageArea.set({ options }) + return storageArea.set({ options }); } /** diff --git a/ext/src/lib/typedStorage.ts b/ext/src/lib/typedStorage.ts index f01d1de..b224777 100644 --- a/ext/src/lib/typedStorage.ts +++ b/ext/src/lib/typedStorage.ts @@ -16,7 +16,7 @@ export class TypedStorageArea { /** * Retrieves one or more items from the storage area. * - * @param keys - + * @param keys - * A string, array of strings or partial schema object * (with default values) indicating which keys to retrieve * from storage. @@ -24,7 +24,7 @@ export class TypedStorageArea { public async get> ( keys?: SchemaKey - | Array + | SchemaKey[] | SchemaPartial | null | undefined) : Promise { * Gets the amount of storage space — in bytes — used by one * or more items in the storage area. * - * @param keys - + * @param keys - * A string or array of strings indicating the keys of * which to get the storage space. */ public async getBytesInUse ( - keys?: Schema | Array): Promise { + keys?: Schema | SchemaKey[]): Promise { return await this.storageArea.getBytesInUse(keys); } @@ -61,12 +61,12 @@ export class TypedStorageArea { /** * Removes one or more items from the storage area. * - * @param keys - + * @param keys - * A string or array of strings indicating which keys to * remove from storage. */ public async remove ( - keys: SchemaKey | Array): Promise { + keys: SchemaKey | SchemaKey[]): Promise { await this.storageArea.remove(keys); } diff --git a/ext/src/lib/userAgents.ts b/ext/src/lib/userAgents.ts index 7fb2176..8b4eead 100644 --- a/ext/src/lib/userAgents.ts +++ b/ext/src/lib/userAgents.ts @@ -6,9 +6,9 @@ const PLATFORM_WIN = "Windows NT 10.0; Win64; x64"; const PLATFORM_LINUX = "X11; Linux x86_64"; const UA_CHROME = "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"; -const UA_HYBRID = "Chrome/80.0.3987.87 Gecko/20100101 Firefox/72.0" +const UA_HYBRID = "Chrome/80.0.3987.87 Gecko/20100101 Firefox/72.0"; -export function getChromeUserAgent(platform: string, hybrid = false) { +export function getChromeUserAgent (platform: string, hybrid = false) { let platformComponent: string; if (platform === "mac") { platformComponent = hybrid diff --git a/ext/src/senders/media/index.ts b/ext/src/senders/media/index.ts index ed4c640..ef586d7 100644 --- a/ext/src/senders/media/index.ts +++ b/ext/src/senders/media/index.ts @@ -91,8 +91,9 @@ function getSession (opts: InitOptions): Promise { } } - // TODO: Handle this - function sessionListener () {} + function sessionListener () { + // TODO: Handle this + } function onRequestSessionSuccess (session: cast.Session) { resolve(session); @@ -136,7 +137,7 @@ function getMedia (opts: InitOptions): Promise { = await startMediaServer(mediaTitle, port); const baseUrl = new URL(`http://${host}:${port}/`); - mediaUrl = new URL(mediaPath, baseUrl) + mediaUrl = new URL(mediaPath, baseUrl); subtitleUrls = subtitlePaths.map( path => new URL(path, baseUrl)); @@ -395,6 +396,7 @@ export async function init (opts: InitOptions) { }); if (await options.get("mediaStopOnUnload")) { + // tslint:disable-next-line: no-empty currentSession.stop(() => {}, () => {}); } }); diff --git a/ext/src/senders/media/overlay/descriptorUtils.ts b/ext/src/senders/media/overlay/descriptorUtils.ts index 691386d..3537193 100644 --- a/ext/src/senders/media/overlay/descriptorUtils.ts +++ b/ext/src/senders/media/overlay/descriptorUtils.ts @@ -43,7 +43,7 @@ export function bindPropertyDescriptor ( * element and collect them into a property descriptor map. */ export function clonePropsDescriptor ( - target: T, props: Array) + target: T, props: any[]) : PropertyDescriptorMap { return props.reduce((descriptorMap, prop) => { diff --git a/ext/src/senders/media/overlay/overlayContent.ts b/ext/src/senders/media/overlay/overlayContent.ts index 604ca05..3b92555 100644 --- a/ext/src/senders/media/overlay/overlayContent.ts +++ b/ext/src/senders/media/overlay/overlayContent.ts @@ -51,6 +51,7 @@ function deepQuerySelector (selector: string): Element | null { , XPathResult.ORDERED_NODE_ITERATOR_TYPE); let node: Node | null; + // tslint:disable-next-line: no-conditional-assignment while (node = result.iterateNext()) { const shadowRoot = getShadowRootFromNode(node); if (!shadowRoot) { @@ -78,6 +79,7 @@ function deepQuerySelectorAll (selector: string): Node[] { const nodes: Node[] = []; let node: Node | null; + // tslint:disable-next-line: no-conditional-assignment while (node = result.iterateNext()) { const shadowRoot = getShadowRootFromNode(node); if (shadowRoot) { @@ -361,7 +363,7 @@ document.addEventListener("DOMContentLoaded", () => { const mediaElements = document.querySelectorAll(mediaSelector); const deepMediaElements = deepQuerySelectorAll(mediaSelector); - for (const mediaElement of [...Array.from(mediaElements), ...deepMediaElements]) { + for (const mediaElement of [...mediaElements, ...deepMediaElements]) { wrapMediaElement(mediaElement as HTMLMediaElement); } }); diff --git a/ext/src/senders/mirroring.ts b/ext/src/senders/mirroring.ts index 56c3cdf..f4ead03 100644 --- a/ext/src/senders/mirroring.ts +++ b/ext/src/senders/mirroring.ts @@ -35,7 +35,7 @@ function sendAppMessage (subject: string, data: any) { session.sendMessage(FX_CAST_RECEIVER_APP_NAMESPACE, { subject , data - }, () => {}, () => {}); + }); } @@ -45,7 +45,6 @@ window.addEventListener("beforeunload", () => { async function onRequestSessionSuccess (newSession: cast.Session) { - cast.logMessage("onRequestSessionSuccess"); session = newSession; diff --git a/ext/src/shim/cast/classes/Session.ts b/ext/src/shim/cast/classes/Session.ts index a2d531c..3ec6256 100755 --- a/ext/src/shim/cast/classes/Session.ts +++ b/ext/src/shim/cast/classes/Session.ts @@ -295,8 +295,8 @@ export default class Session { } public leave ( - successCallback: SuccessCallback - , errorCallback: ErrorCallback): void { + successCallback?: SuccessCallback + , errorCallback?: ErrorCallback): void { const id = uuid(); @@ -314,8 +314,8 @@ export default class Session { public loadMedia ( loadRequest: LoadRequest - , successCallback: LoadSuccessCallback - , errorCallback: ErrorCallback): void { + , successCallback?: LoadSuccessCallback + , errorCallback?: ErrorCallback): void { this._sendMediaMessage({ type: "LOAD" @@ -372,8 +372,8 @@ export default class Session { public queueLoad ( _queueLoadRequest: QueueLoadRequest - , _successCallback: LoadSuccessCallback - , _errorCallback: ErrorCallback): void { + , _successCallback?: LoadSuccessCallback + , _errorCallback?: ErrorCallback): void { logger.info("STUB :: Session#queueLoad"); } @@ -399,8 +399,8 @@ export default class Session { public sendMessage ( namespace: string , message: {} | string - , successCallback: SuccessCallback - , errorCallback: ErrorCallback): void { + , successCallback?: SuccessCallback + , errorCallback?: ErrorCallback): void { const messageId = uuid(); @@ -422,8 +422,8 @@ export default class Session { public setReceiverMuted ( muted: boolean - , successCallback: SuccessCallback - , errorCallback: ErrorCallback) { + , successCallback?: SuccessCallback + , errorCallback?: ErrorCallback) { const volumeId = uuid(); @@ -441,8 +441,8 @@ export default class Session { public setReceiverVolumeLevel ( newLevel: number - , successCallback: SuccessCallback - , errorCallback: ErrorCallback): void { + , successCallback?: SuccessCallback + , errorCallback?: ErrorCallback): void { const volumeId = uuid(); @@ -459,8 +459,8 @@ export default class Session { } public stop ( - successCallback: SuccessCallback - , errorCallback: ErrorCallback): void { + successCallback?: SuccessCallback + , errorCallback?: ErrorCallback): void { const stopId = uuid(); @@ -478,9 +478,6 @@ export default class Session { private _sendMediaMessage (message: string | {}) { - this.sendMessage( - "urn:x-cast:com.google.cast.media" - , message - , () => {}, () => {}); + this.sendMessage("urn:x-cast:com.google.cast.media", message); } } diff --git a/ext/src/shim/cast/index.ts b/ext/src/shim/cast/index.ts index a26dbe1..2e372a4 100755 --- a/ext/src/shim/cast/index.ts +++ b/ext/src/shim/cast/index.ts @@ -178,8 +178,8 @@ export function requestSession ( export function _requestSession ( _receiver: Receiver - , successCallback: RequestSessionSuccessCallback - , errorCallback: ErrorCallback): void { + , successCallback?: RequestSessionSuccessCallback + , errorCallback?: ErrorCallback): void { logger.info("cast._requestSession"); @@ -243,7 +243,7 @@ export function _requestSession ( const lastSession = sessionList[sessionList.length - 1]; if (lastSession.status !== SessionStatus.STOPPED) { - lastSession.stop(createSession, () => {}); + lastSession.stop(createSession); } } else { createSession(); @@ -368,7 +368,7 @@ onMessage(async message => { const lastSession = sessionList[sessionList.length - 1]; if (lastSession.status !== SessionStatus.STOPPED) { - lastSession.stop(createSession, () => {}); + lastSession.stop(createSession); } } else { createSession(); @@ -417,8 +417,7 @@ onMessage(async message => { _requestSession(receiver , session => { apiConfig.sessionListener(session); - } - , () => {}); + }); break; } diff --git a/ext/src/ui/options/index.tsx b/ext/src/ui/options/index.tsx index 42b1cf3..a9ceeca 100644 --- a/ext/src/ui/options/index.tsx +++ b/ext/src/ui/options/index.tsx @@ -390,7 +390,7 @@ class OptionsApp extends Component<{}, OptionsAppState> { { _("optionsUserAgentWhitelistContent") }
- { this.state.options?.userAgentWhitelist && + { this.state.options?.userAgentWhitelist && { showAlternateAction: ev.type === "keydown" }); } - } + }; window.addEventListener("keydown", handleActionKeyEvents); window.addEventListener("keyup", handleActionKeyEvents); diff --git a/package-lock.json b/package-lock.json index 4b24761..7218f8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,6 +2,26 @@ "requires": true, "lockfileVersion": 1, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, "@types/minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", @@ -53,6 +73,15 @@ "color-convert": "^1.9.0" } }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -69,6 +98,12 @@ "concat-map": "0.0.1" } }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -122,6 +157,12 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -143,12 +184,30 @@ "clone": "^1.0.2" } }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -234,6 +293,22 @@ "perfy": "^1.1.5" } }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -300,6 +375,23 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, "node-emoji": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz", @@ -359,6 +451,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, "perfy": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/perfy/-/perfy-1.1.5.tgz", @@ -386,6 +484,15 @@ "util-deprecate": "~1.0.1" } }, + "resolve": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.1.tgz", + "integrity": "sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -447,6 +554,12 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -483,6 +596,50 @@ "os-tmpdir": "~1.0.1" } }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, + "tslint": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.0.0.tgz", + "integrity": "sha512-9nLya8GBtlFmmFMW7oXXwoXS1NkrccqTqAtwXzdPV9e2mqSEvCki6iHL/Fbzi5oqbugshzgGPk7KBb2qNP1DSA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.10.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, "typescript": { "version": "3.7.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.4.tgz", diff --git a/package.json b/package.json index a54640c..fcd0a18 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "minimist": "^1.2.0", "selenium-webdriver": "^4.0.0-alpha.5", "semver": "^6.3.0", + "tslint": "^6.0.0", "typescript": "^3.7.4", "uuid": "^3.3.3", "ws": "^7.2.1" diff --git a/tslint.json b/tslint.json index 7cff856..0584edc 100644 --- a/tslint.json +++ b/tslint.json @@ -5,6 +5,7 @@ ] , "jsRules": false , "rules": { + "array-type": [ true, "array-simple" ], "arrow-parens": false , "import-spacing": false , "interface-name": false