From 1bfa5236fda894395c1c30368ebc0d9c5505d339 Mon Sep 17 00:00:00 2001 From: Interfaced Date: Mon, 3 Feb 2020 18:11:18 +0700 Subject: [PATCH] Version 2.2.2 GitOrigin-RevId: 82b121f4866bb649b51e5dc239ce38081f705b75 --- .eslintrc.js | 25 +- CHANGELOG.md | 4 + LICENSE | 2 +- cli/ares.js | 12 +- index.js | 106 +++---- lib/abstract-drm-hook.js | 8 + lib/device.js | 2 +- lib/factory.js | 2 +- lib/info.js | 2 +- lib/input.js | 72 ++--- lib/legacy-stateful-html5-video.js | 8 + lib/media-option.js | 10 + lib/playready-hook.js | 8 + lib/stateful-html5-video.js | 8 + lib/verimatrix-hook.js | 8 + lib/video.js | 2 +- lib/view-port.js | 2 +- package-lock.json | 460 +++++++++++++++++++++-------- package.json | 15 +- 19 files changed, 520 insertions(+), 236 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 51daaf6..770cf60 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,11 +1,29 @@ +const currentYear = (new Date).getFullYear(); +const copyrightHeader = [ + '', + ' * This file is part of the ZombieBox package.', + ' *', + ` * Copyright © 2014-${currentYear}, Interfaced`, + ' *', + ' * For the full copyright and license information, please view the LICENSE', + ' * file that was distributed with this source code.', + ' ' +]; + module.exports = { extends: 'interfaced', + plugins: [ + 'header' + ], overrides: [ { files: ['lib/**/*.js'], extends: 'interfaced/esm', settings: { - 'import/resolver': 'zombiebox' + 'import/resolver': 'zombiebox', + }, + rules: { + 'header/header': ['error', 'block', copyrightHeader] }, globals: { // see externs @@ -15,7 +33,10 @@ module.exports = { }, { files: ['index.js', 'cli/**/*.js'], - extends: 'interfaced/node' + extends: 'interfaced/node', + rules: { + 'header/header': ['error', 'block', copyrightHeader] + } }, { files: ['externs/**/*.js'], diff --git a/CHANGELOG.md b/CHANGELOG.md index f72873f..e0b63bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 2.2.2 (03.02.2020) +* Support ZombieBox 2.6 +* Better logging and output + ## 2.2.1 (17.01.2020) * Init gracefully if some platform data could not be fetched. diff --git a/LICENSE b/LICENSE index 9baad46..1b7530f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright © 2014-2019 Interfaced +Copyright © 2014-2020 Interfaced Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal diff --git a/cli/ares.js b/cli/ares.js index 768b596..89bf199 100644 --- a/cli/ares.js +++ b/cli/ares.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright (c) 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -40,10 +40,7 @@ async function exec(toolsDir, command, args, expectedSuccessMessage) { ); if (expectedSuccessMessage && !result.stdout.includes(expectedSuccessMessage)) { - console.log(result.stdout); - console.error(result.stderr); - - throw new Error(`${command} failed`); + throw new Error(`${command} failed\n${result.stdout}\n${result.stderr}`); } return result.all; @@ -78,8 +75,6 @@ async function build(toolsDir, srcDir, outDir = srcDir) { 'ares-package', [srcDir, '--outdir', outDir, '--no-minify'] ); - - console.log(`The ipk package was built into ${outDir}`); } @@ -96,7 +91,6 @@ async function install(toolsDir, ipk, deviceName) { [ipk, '-d', deviceName], 'Success' ); - console.log(`Installed ${path.basename(ipk)}`); } @@ -113,7 +107,6 @@ async function launch(toolsDir, appId, deviceName) { [appId, '-d', deviceName], 'Launched' ); - console.log(`Launched ${appId}`); } @@ -151,7 +144,6 @@ async function uninstall(toolsDir, appId, deviceName) { 'ares-install', ['-d', deviceName, '--remove', appId] ); - console.log(`Uninstalled ${appId}`); } diff --git a/index.js b/index.js index 6a03cbf..afeb86a 100644 --- a/index.js +++ b/index.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright (c) 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. @@ -12,7 +12,7 @@ const fse = require('fs-extra'); const imageSize = require('image-size'); const path = require('path'); const inquirer = require('inquirer'); -const {AbstractPlatform, utils: {mergeConfigs}} = require('zombiebox'); +const {AbstractPlatform, utils: {mergeConfigs}, logger: zbLogger} = require('zombiebox'); const { getInstalledApps, build, @@ -22,6 +22,8 @@ const { uninstall } = require('./cli/ares'); +const logger = zbLogger.createChild('webOS'); + /** */ @@ -83,6 +85,8 @@ class PlatformWebOS extends AbstractPlatform { const selectAppFromDevice = async (toolsDir, deviceName) => { const installedApps = await getInstalledApps(toolsDir, deviceName); + logger.silly(`Installed apps: ${installedApps.join(', ')}`); + if (!installedApps.length) { throw new Error('No apps installed on device'); } @@ -97,13 +101,6 @@ class PlatformWebOS extends AbstractPlatform { return appId; }; - const logify = (promise) => promise - .catch((error) => { - if (error) { - console.error(error.message); - } - }); - /** * @param {Yargs} yargs * @return {Yargs} @@ -121,14 +118,14 @@ class PlatformWebOS extends AbstractPlatform { .middleware( async (argv) => { if (!argv.appId) { - console.info('Application identifier was not provided.'); + logger.info('Application identifier was not provided.'); try { argv.appId = await this._findAppId(distPath); - console.warn(`Using application ID ${argv.appId} from local build folder`); + logger.info(`Using application ID ${argv.appId} from local build folder`); } catch (e) { - console.error(`Could not extract application ID from local build: ${e.message}`); + logger.error(`Could not extract application ID from local build: ${e.message}`); argv.appId = await selectAppFromDevice(toolsDir, argv.device); } @@ -152,9 +149,13 @@ class PlatformWebOS extends AbstractPlatform { 'Install app on a device', demandDevice, async ({device}) => { + logger.verbose(`Installing application`); const ipk = await this._findIpk(distPath); - logify(install(toolsDir, ipk, device)); + logger.debug(`Found ipk file: ${ipk}`); + + await install(toolsDir, ipk, device); + logger.info(`Installation successful`); } ) .command( @@ -164,7 +165,11 @@ class PlatformWebOS extends AbstractPlatform { demandDevice(yargs); demandAppId(yargs); }, - ({device, appId}) => logify(launch(toolsDir, appId, device)) + async ({device, appId}) => { + logger.verbose(`Launching ${appId} on ${device}`); + await launch(toolsDir, appId, device); + logger.info(`Application launched`); + } ) .command( 'inspect [appId]', @@ -173,7 +178,10 @@ class PlatformWebOS extends AbstractPlatform { demandDevice(yargs); demandAppId(yargs); }, - ({device, appId}) => logify(inspect(toolsDir, appId, device)) + async ({device, appId}) => { + logger.verbose(`Starting ${appId} on ${device} with inspector`); + await inspect(toolsDir, appId, device); + } ) .command( 'uninstall [appId]', @@ -182,22 +190,23 @@ class PlatformWebOS extends AbstractPlatform { demandDevice(yargs); demandAppId(yargs); }, - ({device, appId}) => logify(uninstall(toolsDir, appId, device)) + async ({device, appId}) => { + logger.verbose(`Uninstalling ${appId} from ${device}`); + await uninstall(toolsDir, appId, device); + logger.info(`Application uninstalled`); + } ) .command( 'list ', 'List installed applications on a device', demandDevice, async ({device}) => { - const apps = await logify(getInstalledApps(toolsDir, device)); - if (!apps) { - return; - } + logger.verbose(`Querying installed apps on ${device}`); + const apps = await getInstalledApps(toolsDir, device); if (apps.length) { - console.log('Installed applications:'); - console.log(apps.join('\n')); + logger.output(`Installed applications: \n\t${apps.join('\n\t')}`); } else { - console.log('No apps installed'); + logger.output('No apps installed'); } } ) @@ -206,10 +215,11 @@ class PlatformWebOS extends AbstractPlatform { 'Remove all installed apps from a device', demandDevice, async ({device}) => { + logger.verbose(`Cleaning installed apps from ${device}`); const installedApps = await getInstalledApps(toolsDir, device); if (!installedApps.length) { - console.log('No apps installed'); + logger.output('No apps installed, nothing to clean'); return; } @@ -221,21 +231,27 @@ class PlatformWebOS extends AbstractPlatform { default: installedApps }); - return Promise.all(confirmed.map((appId) => logify(uninstall(toolsDir, appId, device)))); + await Promise.all(confirmed.map((appId) => uninstall(toolsDir, appId, device))); + logger.info(`Cleanup done`); } ) - .demandCommand(1, 1, 'No command specified'); + .demandCommand(1, 1, 'No command specified') + .fail((message, error) => { + if (message) { + logger.error(message); + } + if (error instanceof Error) { + logger.error(error.toString()); + logger.debug(error.stack); + } + process.exit(1); + }); } /** * @override */ - async buildApp(app, distDir) { - /** - * @type {Array} - */ - const warnings = []; - const buildHelper = app.getBuildHelper(); + async pack(app, distDir) { const config = app.getConfig(); const {name, version} = app.getAppPackageJson(); /** @@ -243,15 +259,10 @@ class PlatformWebOS extends AbstractPlatform { */ const originalUserConfig = config.platforms.webos; - warnings.push( - await buildHelper.writeIndexHTML(path.join(distDir, 'index.html')) - ); - const defaultAppInfo = this._createDefaultAppInfo(name, version); const userImgConfig = await this._createUserImgConfig(originalUserConfig.img); - const {images, warnings: imagesCheckWarnings} = await this._checkAndFilterImages(userImgConfig); - warnings.push(imagesCheckWarnings.join('\n')); + const images = await this._checkAndFilterImages(userImgConfig); const defaultImgConfig = this._generateDefaultImageFullPathObject(__dirname); const resultImgConfig = mergeConfigs(defaultImgConfig, images); @@ -264,13 +275,9 @@ class PlatformWebOS extends AbstractPlatform { PlatformWebOS.ImageDistPath ); - buildHelper.copyStaticFiles(distDir); - await fse.writeJson(path.join(distDir, 'appinfo.json'), resultAppInfo); await build(config.platforms.webos.toolsDir, distDir); - - return warnings.filter(Boolean).join('\n'); } /** @@ -314,10 +321,7 @@ class PlatformWebOS extends AbstractPlatform { /** * @param {Object} files - * @return {{ - * images: Object, - * warnings: Array - * }} + * @return {Object} * @protected */ async _checkAndFilterImages(files) { @@ -384,16 +388,13 @@ class PlatformWebOS extends AbstractPlatform { try { await check(createImageChecks(imageName, imagePath)); - accumulator.images[imageName] = imagePath; + accumulator[imageName] = imagePath; } catch (warning) { - accumulator.warnings.push(warning); + logger.warn(warning); } return Promise.resolve(accumulator); - }, Promise.resolve({ - images: {}, - warnings: [] - })); + }, Promise.resolve({})); } /** @@ -437,6 +438,7 @@ class PlatformWebOS extends AbstractPlatform { .map((sourcePath) => { const destinationPath = path.join(imagesDist, path.basename(sourcePath)); + logger.silly(`Copying, ${sourcePath} to ${destinationPath}`); return fse.copy(sourcePath, destinationPath); }); diff --git a/lib/abstract-drm-hook.js b/lib/abstract-drm-hook.js index 4c32de7..07e83ff 100644 --- a/lib/abstract-drm-hook.js +++ b/lib/abstract-drm-hook.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2014-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import EventPublisher from 'zb/events/event-publisher'; import {Type} from 'zb/device/drm/drm'; import IDrmClient from 'zb/device/interfaces/i-drm-client'; diff --git a/lib/device.js b/lib/device.js index 5c25102..723e000 100644 --- a/lib/device.js +++ b/lib/device.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright © 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/lib/factory.js b/lib/factory.js index f2f7db0..30de460 100644 --- a/lib/factory.js +++ b/lib/factory.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright © 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/lib/info.js b/lib/info.js index 275b95e..f0feb12 100644 --- a/lib/info.js +++ b/lib/info.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright © 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/lib/input.js b/lib/input.js index ac6a6e7..b92a943 100644 --- a/lib/input.js +++ b/lib/input.js @@ -1,14 +1,14 @@ /* * This file is part of the ZombieBox package. * - * Copyright © 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ import AbstractInput from 'zb/device/abstract-input'; import UnsupportedFeature from 'zb/device/errors/unsupported-feature'; -import Keys from 'zb/device/input/keys'; +import Key from 'zb/device/input/key'; /** @@ -56,40 +56,40 @@ export default class Input extends AbstractInput { _createKeysMap() { const map = {}; - map[403] = Keys.RED; - map[404] = Keys.GREEN; - map[405] = Keys.YELLOW; - map[406] = Keys.BLUE; - - map[37] = Keys.LEFT; - map[38] = Keys.UP; - map[39] = Keys.RIGHT; - map[40] = Keys.DOWN; - - map[13] = Keys.ENTER; - map[461] = Keys.BACK; - - map[48] = Keys.DIGIT_0; - map[49] = Keys.DIGIT_1; - map[50] = Keys.DIGIT_2; - map[51] = Keys.DIGIT_3; - map[52] = Keys.DIGIT_4; - map[53] = Keys.DIGIT_5; - map[54] = Keys.DIGIT_6; - map[55] = Keys.DIGIT_7; - map[56] = Keys.DIGIT_8; - map[57] = Keys.DIGIT_9; - - map[19] = Keys.PAUSE; - map[415] = Keys.PLAY; - map[413] = Keys.STOP; - map[417] = Keys.FWD; - map[412] = Keys.REW; - - map[1056] = Keys.MENU; - map[457] = Keys.INFO; - map[33] = Keys.PAGE_UP; - map[34] = Keys.PAGE_DOWN; + map[403] = Key.RED; + map[404] = Key.GREEN; + map[405] = Key.YELLOW; + map[406] = Key.BLUE; + + map[37] = Key.LEFT; + map[38] = Key.UP; + map[39] = Key.RIGHT; + map[40] = Key.DOWN; + + map[13] = Key.ENTER; + map[461] = Key.BACK; + + map[48] = Key.DIGIT_0; + map[49] = Key.DIGIT_1; + map[50] = Key.DIGIT_2; + map[51] = Key.DIGIT_3; + map[52] = Key.DIGIT_4; + map[53] = Key.DIGIT_5; + map[54] = Key.DIGIT_6; + map[55] = Key.DIGIT_7; + map[56] = Key.DIGIT_8; + map[57] = Key.DIGIT_9; + + map[19] = Key.PAUSE; + map[415] = Key.PLAY; + map[413] = Key.STOP; + map[417] = Key.FWD; + map[412] = Key.REW; + + map[1056] = Key.MENU; + map[457] = Key.INFO; + map[33] = Key.PAGE_UP; + map[34] = Key.PAGE_DOWN; return map; } diff --git a/lib/legacy-stateful-html5-video.js b/lib/legacy-stateful-html5-video.js index 67520a1..8ea97eb 100644 --- a/lib/legacy-stateful-html5-video.js +++ b/lib/legacy-stateful-html5-video.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2014-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import {State} from 'zb/device/interfaces/i-stateful-video'; import StatefulHtml5Video from './stateful-html5-video'; diff --git a/lib/media-option.js b/lib/media-option.js index b28ba98..127808a 100644 --- a/lib/media-option.js +++ b/lib/media-option.js @@ -1,3 +1,13 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2014-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + + /** * @param {MediaOption} mediaOption * @return {string} diff --git a/lib/playready-hook.js b/lib/playready-hook.js index 6b5768c..c910ce7 100644 --- a/lib/playready-hook.js +++ b/lib/playready-hook.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2014-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import PlayReadyClient from 'zb/device/drm/playready-client'; import AbstractDrmHook from './abstract-drm-hook'; diff --git a/lib/stateful-html5-video.js b/lib/stateful-html5-video.js index babce49..d318991 100644 --- a/lib/stateful-html5-video.js +++ b/lib/stateful-html5-video.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2014-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import BaseStatefulHtml5Video from 'zb/device/common/stateful-html5-video'; import {State, PrepareOption as BasePrepareOption} from 'zb/device/interfaces/i-stateful-video'; import {node} from 'zb/html'; diff --git a/lib/verimatrix-hook.js b/lib/verimatrix-hook.js index cbb761f..0d6a782 100644 --- a/lib/verimatrix-hook.js +++ b/lib/verimatrix-hook.js @@ -1,3 +1,11 @@ +/* + * This file is part of the ZombieBox package. + * + * Copyright © 2014-2020, Interfaced + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ import VerimatrixClient from 'zb/device/drm/verimatrix-client'; import AbstractDrmHook from './abstract-drm-hook'; diff --git a/lib/video.js b/lib/video.js index f783332..818134c 100644 --- a/lib/video.js +++ b/lib/video.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright © 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/lib/view-port.js b/lib/view-port.js index 2ba8dd5..ce39547 100644 --- a/lib/view-port.js +++ b/lib/view-port.js @@ -1,7 +1,7 @@ /* * This file is part of the ZombieBox package. * - * Copyright © 2014-2019, Interfaced + * Copyright © 2014-2020, Interfaced * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. diff --git a/package-lock.json b/package-lock.json index 127fa59..e5c0a15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "zombiebox-platform-webos", - "version": "2.2.1", + "version": "2.2.2", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -125,9 +125,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -187,17 +187,17 @@ } }, "autoprefixer": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.3.tgz", - "integrity": "sha512-8T5Y1C5Iyj6PgkPSFd0ODvK9DIleuPKUPYniNxybS47g2k2wFgLZ46lGQHlBuGKIAEV8fbCDfKCCRS1tvOgc3Q==", + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.7.4.tgz", + "integrity": "sha512-g0Ya30YrMBAEZk60lp+qfX5YQllG+S5W3GYCFvyHTvhOki0AEQJLPEcIuGRsqVwLi8FvXPVtwTGhfr38hVpm0g==", "dev": true, "requires": { - "browserslist": "^4.8.0", - "caniuse-lite": "^1.0.30001012", + "browserslist": "^4.8.3", + "caniuse-lite": "^1.0.30001020", "chalk": "^2.4.2", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", - "postcss": "^7.0.23", + "postcss": "^7.0.26", "postcss-value-parser": "^4.0.2" }, "dependencies": { @@ -265,14 +265,14 @@ } }, "browserslist": { - "version": "4.8.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.2.tgz", - "integrity": "sha512-+M4oeaTplPm/f1pXDw84YohEv7B1i/2Aisei8s4s6k3QsoSHa7i5sz8u/cGQkkatCPxMASKxPualR4wwYgVboA==", + "version": "4.8.6", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.8.6.tgz", + "integrity": "sha512-ZHao85gf0eZ0ESxLfCp73GG9O/VTytYDIkIiZDlURppLTI9wErSM/5yAKEq6rcUdxBLjMELmrYUJGg5sxGKMHg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001015", - "electron-to-chromium": "^1.3.322", - "node-releases": "^1.1.42" + "caniuse-lite": "^1.0.30001023", + "electron-to-chromium": "^1.3.341", + "node-releases": "^1.1.47" } }, "buffer": { @@ -304,9 +304,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001017", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001017.tgz", - "integrity": "sha512-EDnZyOJ6eYh6lHmCvCdHAFbfV4KJ9lSdfv4h/ppEhrU/Yudkl7jujwMZ1we6RX7DXqBfT04pVMQ4J+1wcTlsKA==", + "version": "1.0.30001023", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001023.tgz", + "integrity": "sha512-C5TDMiYG11EOhVOA62W1p3UsJ2z4DsHtMBQtjzp3ZsUglcQn62WOUgW0y795c7A5uZ+GCEIvzkMatLIlAsbNTA==", "dev": true }, "chalk": { @@ -411,9 +411,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -427,6 +427,16 @@ } } }, + "color": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz", + "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -440,6 +450,38 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colornames": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/colornames/-/colornames-1.1.1.tgz", + "integrity": "sha1-+IiQMGhcfE/54qVZ9Qd+t2qBb5Y=", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "colorspace": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.2.tgz", + "integrity": "sha512-vt+OoIP2d76xLhjwbBaucYlNSpPsrJWPlBTtwCpQKIu6/CSMutyzX93O/Do0qzpH3YoHEes8YEFXyZ797rEhzQ==", + "dev": true, + "requires": { + "color": "3.0.x", + "text-hex": "1.0.x" + } + }, "comment-parser": { "version": "0.7.2", "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-0.7.2.tgz", @@ -459,9 +501,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -669,6 +711,17 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "diagnostics": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz", + "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==", + "dev": true, + "requires": { + "colorspace": "1.1.x", + "enabled": "1.0.x", + "kuler": "1.0.x" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -685,9 +738,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.322", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.322.tgz", - "integrity": "sha512-Tc8JQEfGQ1MzfSzI/bTlSr7btJv/FFO7Yh6tanqVmIWOuNCu6/D1MilIEgLtmWqIrsv+o4IjpLAhgMBr/ncNAA==", + "version": "1.3.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.344.tgz", + "integrity": "sha512-tvbx2Wl8WBR+ym3u492D0L6/jH+8NoQXqe46+QhbWH3voVPauGuZYeb1QAXYoOAWuiP2dbSvlBx0kQ1F3hu/Mw==", "dev": true }, "emoji-regex": { @@ -696,6 +749,15 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", "dev": true }, + "enabled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-1.0.2.tgz", + "integrity": "sha1-ll9lE9LC0cX0ZStkouM5ZGf8L5M=", + "dev": true, + "requires": { + "env-variable": "0.0.x" + } + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -710,6 +772,12 @@ "once": "^1.4.0" } }, + "env-variable": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.6.tgz", + "integrity": "sha512-bHz59NlBbtS0NhftmR8+ExBEekE7br0e01jw+kk0NDro7TtZzBYZ5ScGPs3OmwnpyfHTHOtr1Y6uedCdrIldtg==", + "dev": true + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -720,9 +788,9 @@ } }, "es-abstract": { - "version": "1.17.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.2.tgz", - "integrity": "sha512-YoKuru3Lyoy7yVTBSH2j7UxTqe/je3dWAruC0sHvZX1GNd5zX8SSLvQqEgO9b3Ex8IW+goFI9arEEsFIbulhOw==", + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", @@ -848,9 +916,9 @@ "dev": true }, "resolve": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", - "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -918,10 +986,16 @@ } } }, + "eslint-plugin-header": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz", + "integrity": "sha512-OIu2ciVW8jK4Ove4JHm1I7X0C98PZuLCyCsoUhAm2HpyGS+zr34qLM6iV06unnDvssvvEh5BkOfaLRF+N7cGoQ==", + "dev": true + }, "eslint-plugin-import": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", - "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -964,9 +1038,9 @@ "dev": true }, "resolve": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", - "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -1002,16 +1076,15 @@ } }, "eslint-plugin-jsdoc": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-20.3.1.tgz", - "integrity": "sha512-JQ25OXvseVm84pX2mcVvKtGwrZDeAxgFUkq11f/pJpbGJMANYcLaMAUuW7U3cGhapWh+Gj04At/enAt26dpOeg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-21.0.0.tgz", + "integrity": "sha512-CdLGe2oyw5YAX9rxq9bVz7H2PK+r8PVwdGuvYGMBstpbVD/66yUAgRFQRsJwAsRKLmReo58Lw1jFdNcxdOc4eg==", "dev": true, "requires": { "comment-parser": "^0.7.2", "debug": "^4.1.1", "jsdoctypeparser": "^6.1.0", "lodash": "^4.17.15", - "object.entries-ponyfill": "^1.0.1", "regextras": "^0.7.0", "semver": "^6.3.0", "spdx-expression-parse": "^3.0.0" @@ -1228,6 +1301,18 @@ "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, + "fast-safe-stringify": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", + "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==", + "dev": true + }, + "fecha": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz", + "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg==", + "dev": true + }, "figures": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", @@ -1319,9 +1404,9 @@ "dev": true }, "follow-redirects": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", - "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.10.0.tgz", + "integrity": "sha512-4eyLK6s6lH32nOvLLwlIOnr9zrL8Sm+OvW4pVTJNoXeGzYIkHVf+pADQi+OJ0E67hiuSLezPVPyBcIZO50TmmQ==", "dev": true, "requires": { "debug": "^3.0.0" @@ -1432,17 +1517,17 @@ } }, "google-closure-compiler": { - "version": "20191111.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20191111.0.0.tgz", - "integrity": "sha512-Ji+FaqYKXNbJ78N5Do6hu61mPrB9D+8xSnmRO59u2CrIbmNCtoFnqkCAAL4Ye8LR8foRqtkDdiKJSblpe+5ttg==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200112.0.0.tgz", + "integrity": "sha512-8d43B3hU2pAFy6MD946oslArRe11jPJ/h/VaPPiiSMoSMFxnDpd8jjVJfM2solFSNOOZ9OacA6g/RVGMyp5lvg==", "dev": true, "requires": { "chalk": "2.x", - "google-closure-compiler-java": "^20191111.0.0", - "google-closure-compiler-js": "^20191111.0.0", - "google-closure-compiler-linux": "^20191111.0.0", - "google-closure-compiler-osx": "^20191111.0.0", - "google-closure-compiler-windows": "^20191111.0.0", + "google-closure-compiler-java": "^20200112.0.0", + "google-closure-compiler-js": "^20200112.0.0", + "google-closure-compiler-linux": "^20200112.0.0", + "google-closure-compiler-osx": "^20200112.0.0", + "google-closure-compiler-windows": "^20200112.0.0", "minimist": "1.x", "vinyl": "2.x", "vinyl-sourcemaps-apply": "^0.2.0" @@ -1457,35 +1542,35 @@ } }, "google-closure-compiler-java": { - "version": "20191111.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20191111.0.0.tgz", - "integrity": "sha512-JgsQtJVVgDuj50VPQV1OgHxMy78daTL3d607V6zF/qETl3rEEiazEGfXDGUX/1V1SUOW+Y03Ct9bcO3LMxNlxg==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200112.0.0.tgz", + "integrity": "sha512-h/ExDCXAw88nOniQSbbK6et31kOwmaDxl6t52dnETCIzituQtGToPzy21vUel1o8o+FvWUybLoap+dEYBam1pA==", "dev": true }, "google-closure-compiler-js": { - "version": "20191111.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20191111.0.0.tgz", - "integrity": "sha512-W3Oy5NF5CMgUv31CMbgLN7zhdCTVMTnNI//iEPYMotzXfX8viyOnTMipDDwJNeMnY7lfXbQrYOo+QkWP6WzZtg==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200112.0.0.tgz", + "integrity": "sha512-xW47rSuiRaql6q1YN7+b3FXIW74b1nCcENVwm9cigw1H5gWoBMBJOmpZiXnjMfmYC+MALjPQ8giMzvSeP+2X5A==", "dev": true }, "google-closure-compiler-linux": { - "version": "20191111.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20191111.0.0.tgz", - "integrity": "sha512-pxxB83Ae7G9OHFSOEzOYlp844YyqQgU1RXBpCGBKeDAQrs3dykHqRhNGZdI7N1tsby/pT+hKL1US2l/CslPqag==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200112.0.0.tgz", + "integrity": "sha512-imTfdYP7BVTzzp3y7MuZP+98nEkbX7LZsZtxalNpl56vd+Ysc9/vOHXS14CdSoThaXIVlzX/lfjOlBRqPow+ew==", "dev": true, "optional": true }, "google-closure-compiler-osx": { - "version": "20191111.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20191111.0.0.tgz", - "integrity": "sha512-sviL1DLN+dDfYBLzmU6+2Yk19P1uzUHQuKaXrHxEYZkU4jTJNq/TC4xi6t0ZgvLQEm2Vf7xhOrt80TYKnoQaVg==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200112.0.0.tgz", + "integrity": "sha512-E3S1KqZw4+Zov0VXCkjomPrYhyuuV6jH9InBchQ7cZfipFJjhQmSRf39u4Mu0sINW7GXfODZbzBwOXhEIquFQw==", "dev": true, "optional": true }, "google-closure-compiler-windows": { - "version": "20191111.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20191111.0.0.tgz", - "integrity": "sha512-iKdz2bWrrM4zLv3USCRtWX4kLWzZhbj/afh/W6giLxg5XQzbNg+UpVF+2G6f/LEYK9UNBgS2TdyNTuw8mod+Mg==", + "version": "20200112.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200112.0.0.tgz", + "integrity": "sha512-+5+UJFKXH0LGnYEHSVJxWwhtvX/MI6uebkAQkhma0057QsKs8fOToWuHL8/UbJULB4WUPa3DlHy0+Izs5z6lCQ==", "dev": true, "optional": true }, @@ -1615,9 +1700,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "inquirer": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz", - "integrity": "sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", "requires": { "ansi-escapes": "^4.2.1", "chalk": "^2.4.2", @@ -1813,6 +1898,15 @@ "graceful-fs": "^4.1.11" } }, + "kuler": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz", + "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==", + "dev": true, + "requires": { + "colornames": "^1.1.1" + } + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -1823,9 +1917,9 @@ }, "dependencies": { "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -1931,6 +2025,19 @@ "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", "dev": true }, + "logform": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.1.2.tgz", + "integrity": "sha512-+lZh4OpERDBLqjiwDLpAWNQu6KMjnlXH2ByZwCuSqVPJletw0kTWJf5CgSNAUKn1KUkv3m2cUz/LK8zyEy7wzQ==", + "dev": true, + "requires": { + "colors": "^1.2.1", + "fast-safe-stringify": "^2.0.4", + "fecha": "^2.3.3", + "ms": "^2.1.1", + "triple-beam": "^1.3.0" + } + }, "mdn-data": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", @@ -2031,9 +2138,9 @@ "dev": true }, "node-releases": { - "version": "1.1.44", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.44.tgz", - "integrity": "sha512-NwbdvJyR7nrcGrXvKAvzc5raj/NkoJudkarh2yIpJ4t0NH4aqjUDz/486P+ynIW5eokKOfzGNRdYoLfBlomruw==", + "version": "1.1.47", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.47.tgz", + "integrity": "sha512-k4xjVPx5FpwBUj0Gw7uvFOTF4Ep8Hok1I6qjwL3pLfwe7Y0REQSAqOwwv9TWBCUtMHxcXfY4PgRLRozcChvTcA==", "dev": true, "requires": { "semver": "^6.3.0" @@ -2116,12 +2223,6 @@ "object-keys": "^1.0.11" } }, - "object.entries-ponyfill": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.entries-ponyfill/-/object.entries-ponyfill-1.0.1.tgz", - "integrity": "sha1-Kavfd8v70mVm3RqiTp2I9lQz0lY=", - "dev": true - }, "object.values": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", @@ -2157,6 +2258,12 @@ "wrappy": "1" } }, + "one-time": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-0.0.4.tgz", + "integrity": "sha1-+M33eISCb+Tf+T46nMN7HkSAdC4=", + "dev": true + }, "onetime": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", @@ -2266,9 +2373,9 @@ } }, "picomatch": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", - "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", "dev": true }, "pify": { @@ -2293,9 +2400,9 @@ "dev": true }, "postcss": { - "version": "7.0.25", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", - "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", + "version": "7.0.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", + "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -2321,13 +2428,32 @@ } }, "postcss-attribute-case-insensitive": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.1.tgz", - "integrity": "sha512-L2YKB3vF4PetdTIthQVeT+7YiSzMoNMLLYxPXXppOOP7NoazEAy45sh2LvJ8leCQjfBcfkYQs8TtCcQjeZTp8A==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", "dev": true, "requires": { "postcss": "^7.0.2", - "postcss-selector-parser": "^5.0.0" + "postcss-selector-parser": "^6.0.2" + }, + "dependencies": { + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } } }, "postcss-color-functional-notation": { @@ -2968,9 +3094,9 @@ } }, "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", "dev": true, "requires": { "inherits": "^2.0.3", @@ -3191,6 +3317,23 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -3254,6 +3397,12 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "dev": true + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -3396,6 +3545,12 @@ "readable-stream": "^3.1.1" } }, + "text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==", + "dev": true + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -3436,6 +3591,12 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", "dev": true }, + "triple-beam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", + "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==", + "dev": true + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", @@ -3557,6 +3718,58 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "winston": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.2.1.tgz", + "integrity": "sha512-zU6vgnS9dAWCEKg/QYigd6cgMVVNwyTzKs81XZtTFuRwJOcDdBg7AU0mXVyNbs7O5RH2zdv+BdNZUlx7mXPuOw==", + "dev": true, + "requires": { + "async": "^2.6.1", + "diagnostics": "^1.1.1", + "is-stream": "^1.1.0", + "logform": "^2.1.1", + "one-time": "0.0.4", + "readable-stream": "^3.1.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.3.0" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + } + } + }, + "winston-transport": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.3.0.tgz", + "integrity": "sha512-B2wPuwUi3vhzn/51Uukcao4dIduEiPOcOt9HJ3QeaXgkJ5Z7UwpBzxS4ZGNHtrxrUvTwemsQiSys0ihOf8Mp1A==", + "dev": true, + "requires": { + "readable-stream": "^2.3.6", + "triple-beam": "^1.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -3581,9 +3794,9 @@ "dev": true }, "ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { "@types/color-name": "^1.1.1", @@ -3646,9 +3859,9 @@ "dev": true }, "yargs": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.0.2.tgz", - "integrity": "sha512-GH/X/hYt+x5hOat4LMnCqMd8r5Cv78heOMIJn1hr7QPPBqfeC6p89Y78+WB9yGDvfpCvgasfmWLzNzEioOUD9Q==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.1.0.tgz", + "integrity": "sha512-T39FNN1b6hCW4SOIk1XyTOWxtXdcen0t+XYrysQmChzSipvhBO8Bj0nK1ozAasdk24dNWuMZvr4k24nz+8HHLg==", "dev": true, "requires": { "cliui": "^6.0.0", @@ -3684,9 +3897,9 @@ } }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -3745,9 +3958,9 @@ } }, "zip-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.2.tgz", - "integrity": "sha512-ykebHGa2+uzth/R4HZLkZh3XFJzivhVsjJt8bN3GvBzLaqqrUdRacu+c4QtnUgjkkQfsOuNE1JgLKMCPNmkKgg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", + "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", "dev": true, "requires": { "archiver-utils": "^2.1.0", @@ -3756,9 +3969,9 @@ } }, "zombiebox": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/zombiebox/-/zombiebox-2.4.0.tgz", - "integrity": "sha512-kalWW4/YiCnDzyLaHF4e9BcK04uBwJit5ggAbm8lI0BXZ0wOnAv+ycHRULcO2Ijg5axFW8OiryDCjkYiRyBszQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/zombiebox/-/zombiebox-2.6.1.tgz", + "integrity": "sha512-MQA0Kipwe/dYaT8m7sH//YlFsvSC7J8l803dUEioqXZ+XWYqmEGMLgb5JYvsN43mfgcEpD/+O/UbbXaP9n4jmw==", "dev": true, "requires": { "archiver": "^3.1.1", @@ -3767,30 +3980,31 @@ "connect": "3.7.0", "espree": "^6.1.2", "fs-extra": "^8.1.0", - "google-closure-compiler": "^20191111.0.0", + "google-closure-compiler": "^20200112.0.0", "http-proxy": "1.18.0", "jsonschema": "^1.2.5", "klaw": "^3.0.0", "klaw-sync": "^6.0.0", "lodash": "^4.17.15", "morgan": "1.9.1", - "postcss": "^7.0.25", + "postcss": "^7.0.26", "postcss-csso": "^4.0.0", "postcss-import": "^12.0.1", "postcss-preset-env": "^6.7.0", "postcss-url": "^9.0.0", "postcss-values-parser": "^3.0.5", - "semver": "^7.1.1", + "semver": "^7.1.2", "send": "^0.17.1", "serve-static": "1.14.1", - "yargs": "^15.0.2", + "winston": "^3.2.1", + "yargs": "^15.1.0", "zb-log-server": "0.0.6" }, "dependencies": { "ansi-styles": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.0.tgz", - "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { "@types/color-name": "^1.1.1", @@ -3829,9 +4043,9 @@ "dev": true }, "semver": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.1.tgz", - "integrity": "sha512-WfuG+fl6eh3eZ2qAf6goB7nhiCd7NPXhmyFxigB/TOkQyeLP8w8GsVehvtGNtnNmyboz4TgeK40B1Kbql/8c5A==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", + "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==", "dev": true }, "supports-color": { diff --git a/package.json b/package.json index a4e53fa..71e51f7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "zombiebox-platform-webos", "description": "LG webOS Smart TV support abstraction layer for ZombieBox framework", - "version": "2.2.1", + "version": "2.2.2", "license": "MIT", "author": "Interfaced (https://interfaced.tv)", "homepage": "https://github.com/interfaced/zombiebox-platform-webos", @@ -40,19 +40,20 @@ "execa": "^4.0.0", "fs-extra": "^8.1.0", "image-size": "^0.8.3", - "inquirer": "^7.0.3" + "inquirer": "^7.0.4" }, "devDependencies": { "eslint": "^6.8.0", - "eslint-import-resolver-zombiebox": "^1.0.1", "eslint-config-interfaced": "^2.0.0", - "eslint-plugin-import": "^2.20.0", + "eslint-import-resolver-zombiebox": "^1.0.1", + "eslint-plugin-header": "^3.0.0", + "eslint-plugin-import": "^2.20.1", "eslint-plugin-interfaced": "^2.0.0", - "eslint-plugin-jsdoc": "^20.3.1", + "eslint-plugin-jsdoc": "^21.0.0", "eslint-plugin-node": "^11.0.0", - "zombiebox": "^2.4.0" + "zombiebox": "^2.6.1" }, "peerDependencies": { - "zombiebox": "^2.4.0" + "zombiebox": "^2.6.1" } }