From fbba8651dee9cd51bd7ab654fb5650a730244b7b Mon Sep 17 00:00:00 2001 From: Joel Chen Date: Tue, 2 Feb 2021 10:42:46 -0800 Subject: [PATCH] fix lint (#1804) --- packages/xarc-app-dev/.eslintrc.js | 4 + packages/xarc-app-dev/package.json | 1 + .../scripts/l10n/flatten-messages.js | 1 + .../scripts/map-isomorphic-cdn.js | 1 + .../scripts/merge-isomorphic-assets.js | 3 +- packages/xarc-app-dev/src/config/archetype.ts | 20 ++-- .../src/config/babel/babelrc-client.ts | 12 +- .../xarc-app-dev/src/config/babel/babelrc.ts | 24 ++-- .../xarc-app-dev/src/config/babel/common.ts | 16 ++- .../xarc-app-dev/src/config/babel/preset.ts | 2 +- packages/xarc-app-dev/src/config/dev-proxy.ts | 27 ++++- packages/xarc-app-dev/src/config/env-app.ts | 11 +- packages/xarc-app-dev/src/config/env-babel.ts | 7 +- packages/xarc-app-dev/src/config/env-karma.ts | 15 ++- packages/xarc-app-dev/src/config/env-proxy.ts | 8 +- .../xarc-app-dev/src/config/env-webpack.ts | 7 +- .../xarc-app-dev/src/config/eslint/js/base.js | 1 + .../src/config/eslint/js/es5-node.js | 1 + .../src/config/eslint/js/es6-node.js | 1 + .../src/config/eslint/js/es6-react.js | 1 + .../src/config/eslint/js/es6-test.js | 1 + .../config/eslint/js/opt-eslint-require.js | 1 + .../src/config/karma/browser-settings.ts | 10 +- .../src/config/karma/entry-xarc.js | 3 +- .../xarc-app-dev/src/config/karma/entry.js | 3 +- .../src/config/karma/karma.conf.coverage.ts | 16 ++- .../src/config/karma/karma.conf.ts | 17 ++- .../src/config/karma/karma.conf.watch.ts | 16 ++- .../src/config/karma/util/load-user-config.ts | 5 + .../xarc-app-dev/src/config/mocha/setup.ts | 8 +- .../src/config/opt2/webpack-options.ts | 5 +- .../src/config/opt2/xarc-options.ts | 21 ++++ packages/xarc-app-dev/src/config/options.ts | 4 + .../src/lib/dev-admin/admin-http.ts | 21 ++-- .../src/lib/dev-admin/automation-io.ts | 27 +++-- .../xarc-app-dev/src/lib/dev-admin/cleanup.ts | 3 + .../src/lib/dev-admin/console-io.ts | 2 +- .../src/lib/dev-admin/dev-http.ts | 8 +- .../src/lib/dev-admin/dev-server-start.ts | 7 +- .../xarc-app-dev/src/lib/dev-admin/index.ts | 3 + .../src/lib/dev-admin/log-parser.ts | 7 ++ .../src/lib/dev-admin/log-view.js | 45 +++++++- .../src/lib/dev-admin/middleware.ts | 10 +- .../src/lib/dev-admin/redbird-proxy.ts | 7 +- .../src/lib/dev-admin/redbird-spawn.ts | 3 + packages/xarc-app-dev/src/lib/dev-tasks.ts | 53 +++++++-- .../xarc-app-dev/src/lib/module-processor.ts | 14 ++- packages/xarc-app-dev/src/lib/stats-mapper.ts | 6 + packages/xarc-app-dev/src/lib/stats-utils.ts | 21 ++++ packages/xarc-app-dev/src/lib/tasks/eslint.ts | 17 +++ .../src/lib/tasks/package-json.ts | 4 + packages/xarc-app-dev/src/lib/utils.ts | 109 +++++++++++++++--- .../src/lib/webpack-dev-express.ts | 8 +- .../src/lib/webpack-dev-fastify.ts | 10 +- .../xarc-app-dev/src/lib/webpack-dev-hapi.ts | 13 ++- .../src/lib/webpack-dev-hapi17.ts | 3 + .../xarc-app-dev/src/lib/webpack-dev-koa.ts | 3 +- .../xarc-app-dev/src/lib/winston-logger.ts | 3 +- .../test/spec/dev-admin/log-parser.spec.ts | 2 +- .../spec/dev-admin/webpack-dev-relay.spec.ts | 2 +- .../test/spec/extract.style.spec.ts | 2 +- .../test/spec/generate-config.spec.ts | 13 +-- .../test/spec/webpack-dev-hapi.spec.ts | 2 +- .../test/spec/webpack-dev-hapi17.spec.ts | 13 +-- packages/xarc-app-dev/test/test-admin-http.ts | 7 +- packages/xarc-app/.eslintrc.js | 4 + packages/xarc-app/src/logger.ts | 2 +- packages/xarc-app/src/support.ts | 2 +- .../xarc-subapp/src/browser/xarc-subapp-v2.ts | 4 +- 69 files changed, 561 insertions(+), 172 deletions(-) create mode 100644 packages/xarc-app-dev/.eslintrc.js create mode 100644 packages/xarc-app/.eslintrc.js diff --git a/packages/xarc-app-dev/.eslintrc.js b/packages/xarc-app-dev/.eslintrc.js new file mode 100644 index 000000000..bbb4f0e07 --- /dev/null +++ b/packages/xarc-app-dev/.eslintrc.js @@ -0,0 +1,4 @@ +const { eslintRcNodeTypeScript } = require("@xarc/module-dev"); +module.exports = { + extends: eslintRcNodeTypeScript +}; diff --git a/packages/xarc-app-dev/package.json b/packages/xarc-app-dev/package.json index 68227f6e9..04e246f41 100644 --- a/packages/xarc-app-dev/package.json +++ b/packages/xarc-app-dev/package.json @@ -17,6 +17,7 @@ "build": "xrun -s compile user/moveDist", "test": "xrun xarc/test-only", "coverage": "xrun xarc/test-cov", + "check": "xrun xarc/check", "format": "prettier --write --print-width 100 *.{js,jsx} `find . -type d -d 1 -exec echo '{}/**/*.{js,jsx}' \\; | egrep -v '(/node_modules/|/dist/|/coverage/)'`", "prepublishOnly": "xrun [[build, docs], xarc/check]", "docs": "xrun xarc/docs", diff --git a/packages/xarc-app-dev/scripts/l10n/flatten-messages.js b/packages/xarc-app-dev/scripts/l10n/flatten-messages.js index 6596b1442..1e8e9de73 100644 --- a/packages/xarc-app-dev/scripts/l10n/flatten-messages.js +++ b/packages/xarc-app-dev/scripts/l10n/flatten-messages.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; /* eslint-disable no-process-exit, no-console */ diff --git a/packages/xarc-app-dev/scripts/map-isomorphic-cdn.js b/packages/xarc-app-dev/scripts/map-isomorphic-cdn.js index 429ce4b51..c504b3d7c 100644 --- a/packages/xarc-app-dev/scripts/map-isomorphic-cdn.js +++ b/packages/xarc-app-dev/scripts/map-isomorphic-cdn.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; /* eslint-disable max-statements, no-process-exit */ diff --git a/packages/xarc-app-dev/scripts/merge-isomorphic-assets.js b/packages/xarc-app-dev/scripts/merge-isomorphic-assets.js index bdbf647cd..33c203e47 100644 --- a/packages/xarc-app-dev/scripts/merge-isomorphic-assets.js +++ b/packages/xarc-app-dev/scripts/merge-isomorphic-assets.js @@ -1,7 +1,6 @@ +/* eslint-disable */ "use strict"; -/* eslint-disable no-process-exit */ - const Fs = require("fs"); const filterScanDir = require("filter-scan-dir"); const Path = require("path"); diff --git a/packages/xarc-app-dev/src/config/archetype.ts b/packages/xarc-app-dev/src/config/archetype.ts index d6a59a0d9..fcec3fde6 100644 --- a/packages/xarc-app-dev/src/config/archetype.ts +++ b/packages/xarc-app-dev/src/config/archetype.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-var-requires, max-statements, no-console */ -import { XarcOptions } from "./opt2/xarc-options"; +import { XarcInternalOptions, XarcOptions } from "./opt2/xarc-options"; import { getDevArchetypeLegacy } from "./options"; import _ from "lodash"; import { getEnvProxy } from "./env-proxy"; @@ -11,10 +11,10 @@ let cachedArchetype = null; /** * Get development options * - * @param user - user options + * @param userOptions - user options * @returns options - final options with defaults and env applied */ -export function getDevOptions(userOptions: XarcOptions = null) { +export function getDevOptions(userOptions: XarcOptions = null): XarcInternalOptions { if (!userOptions && cachedArchetype) { // if cached is already running cachedArchetype._fromCache = true; @@ -39,10 +39,10 @@ export function getDevOptions(userOptions: XarcOptions = null) { cwd: undefined // we know what this is already }; - userOptions = _.merge({}, xarcOptions, userOptions); + const finalOptions = _.merge({}, xarcOptions, userOptions); // checking for cwd from options or from env - const cwd = userOptions.cwd || process.env.XARC_CWD || process.cwd(); + const cwd = finalOptions.cwd || process.env.XARC_CWD || process.cwd(); process.env.XARC_CWD = cwd; const proxy = getEnvProxy(); @@ -51,14 +51,14 @@ export function getDevOptions(userOptions: XarcOptions = null) { _.merge(legacy, proxy); // merge user.webpackOptions into legacy.webpack - _.merge(legacy.webpack, userOptions.webpackOptions); + _.merge(legacy.webpack, finalOptions.webpackOptions); // merge user.babelOptions into legacy.babel - _.merge(legacy.babel, userOptions.babelOptions); + _.merge(legacy.babel, finalOptions.babelOptions); // merge user.addOnFeatures into legacy.options - _.merge(legacy.options, userOptions.addOnFeatures); + _.merge(legacy.options, finalOptions.addOnFeatures); // merge the rest into top level _.merge(legacy, { - ...userOptions, + ...finalOptions, cwd, webpackOptions: undefined, babelOptions: undefined, @@ -67,7 +67,7 @@ export function getDevOptions(userOptions: XarcOptions = null) { // if user's options exist, it means this is invoked by user passing in options // the first time, so save it. - if (userOptions) { + if (finalOptions) { saveXarcOptions(legacy); } diff --git a/packages/xarc-app-dev/src/config/babel/babelrc-client.ts b/packages/xarc-app-dev/src/config/babel/babelrc-client.ts index 7c7e08266..f3b1d61f5 100644 --- a/packages/xarc-app-dev/src/config/babel/babelrc-client.ts +++ b/packages/xarc-app-dev/src/config/babel/babelrc-client.ts @@ -1,10 +1,12 @@ -/* eslint-disable @typescript-eslint/no-var-requires, no-console, @typescript-eslint/ban-ts-ignore */ +/* eslint-disable @typescript-eslint/no-var-requires, no-console, @typescript-eslint/ban-ts-comment */ -const optionalRequire = require("optional-require")(require); -const optFlow = optionalRequire("electrode-archetype-opt-flow"); +import makeOptionalRequire from "optional-require"; import { getPluginFrom, loadXarcOptions } from "./common"; +import _ from "lodash"; + +const optionalRequire = makeOptionalRequire(require); +const optFlow = optionalRequire("electrode-archetype-opt-flow"); const xOptions = loadXarcOptions(process.env.XARC_CWD); -const _ = require("lodash"); const { enableTypeScript, @@ -80,7 +82,7 @@ const { BABEL_ENV, NODE_ENV, ENABLE_KARMA_COV } = process.env; const enableCssModule = Boolean(_.get(xOptions, "webpack.cssModuleSupport")); const enableKarmaCov = ENABLE_KARMA_COV === "true"; const isProduction = (BABEL_ENV || NODE_ENV) === "production"; -const isTest = (BABEL_ENV || NODE_ENV) === "test"; +// const isTest = (BABEL_ENV || NODE_ENV) === "test"; // @ts-ignore const plugins = basePlugins.concat( diff --git a/packages/xarc-app-dev/src/config/babel/babelrc.ts b/packages/xarc-app-dev/src/config/babel/babelrc.ts index 850154d0a..f372ac1dd 100644 --- a/packages/xarc-app-dev/src/config/babel/babelrc.ts +++ b/packages/xarc-app-dev/src/config/babel/babelrc.ts @@ -1,15 +1,18 @@ -/* eslint-disable @typescript-eslint/no-var-requires, no-console, @typescript-eslint/ban-ts-ignore */ +/* eslint-disable no-console, @typescript-eslint/ban-ts-comment */ /* * A single babel RC for all transpiling, including client and server code. * When transpiling for node.js, env XARC_BABEL_TARGET should be set to "node" * and this file will set preset-env targets accordingly. */ -const ck = require("chalker"); -const optionalRequire = require("optional-require")(require); -const optFlow = optionalRequire("electrode-archetype-opt-flow"); +import ck from "chalker"; +import makeOptionalRequire from "optional-require"; +import _ from "lodash"; import { getPluginFrom, loadXarcOptions, detectCSSModule } from "./common"; -const _ = require("lodash"); + +const optionalRequire = makeOptionalRequire(require); + +const optFlow = optionalRequire("electrode-archetype-opt-flow"); const xOptions = loadXarcOptions(process.env.XARC_CWD); @@ -35,7 +38,7 @@ const { BABEL_ENV, NODE_ENV, XARC_BABEL_TARGET, ENABLE_KARMA_COV } = process.env const enableCssModule = detectCSSModule(xOptions); const enableKarmaCov = ENABLE_KARMA_COV === "true"; const isProduction = (BABEL_ENV || NODE_ENV) === "production"; -const isTest = (BABEL_ENV || NODE_ENV) === "test"; +// const isTest = (BABEL_ENV || NODE_ENV) === "test"; const isNodeTarget = XARC_BABEL_TARGET === "node"; /** @@ -50,8 +53,10 @@ const isNodeTarget = XARC_BABEL_TARGET === "node"; * https://github.com/gajus/babel-plugin-react-css-modules/issues/291 * * Resolution: TBD + * + * @returns null or settings for babel-plugin-react-css-modules */ -const getReactCssModulePlugin = () => { +const getReactCssModulePlugin = (): any => { if (!enableCssModule) { return null; } @@ -170,7 +175,10 @@ if (!isJest) { const useBuiltIns = !isNodeTarget && hasMultiTargets - ? { useBuiltIns: "entry", corejs: require("core-js/package.json").version.split(".")[0] } + ? { + useBuiltIns: "entry", + corejs: require("core-js/package.json").version.split(".")[0] // eslint-disable-line + } : {}; const presets = [ diff --git a/packages/xarc-app-dev/src/config/babel/common.ts b/packages/xarc-app-dev/src/config/babel/common.ts index 69683b3ff..612d1a957 100644 --- a/packages/xarc-app-dev/src/config/babel/common.ts +++ b/packages/xarc-app-dev/src/config/babel/common.ts @@ -2,12 +2,16 @@ import requireAt from "require-at"; -// -// Resolve full path of a plugin that's the dependency of host npm package -// -export function getPluginFrom(host, pluginName) { - let err; - for (const pkg of [].concat(host)) { +/** + * Resolve full path of a plugin that's the dependency of another npm package + * + * @param depPkg - pkg that depends on the plugin + * @param pluginName - name of plugin to look for + * @returns full path to a plugin as dep of another package + */ +export function getPluginFrom(depPkg: string | string[], pluginName: string): string { + let err: Error; + for (const pkg of [].concat(depPkg)) { try { return requireAt(require.resolve(`${pkg}/package.json`)).resolve(pluginName); } catch (e) { diff --git a/packages/xarc-app-dev/src/config/babel/preset.ts b/packages/xarc-app-dev/src/config/babel/preset.ts index eda410f4d..dbac291f9 100644 --- a/packages/xarc-app-dev/src/config/babel/preset.ts +++ b/packages/xarc-app-dev/src/config/babel/preset.ts @@ -3,6 +3,6 @@ * * @returns electrode's babel config */ -export = function electrodeBabelRcAsPreset() { +export = function electrodeBabelRcAsPreset(): any { return require("./babelrc"); // eslint-disable-line }; diff --git a/packages/xarc-app-dev/src/config/dev-proxy.ts b/packages/xarc-app-dev/src/config/dev-proxy.ts index 6ecd71687..2200d9fc0 100644 --- a/packages/xarc-app-dev/src/config/dev-proxy.ts +++ b/packages/xarc-app-dev/src/config/dev-proxy.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires, max-statements, no-console, prefer-const */ +/* eslint-disable max-statements, no-console, prefer-const, no-magic-numbers */ import { getDevAdminPortFromEnv, isValidPort } from "../lib/utils"; @@ -10,21 +10,28 @@ import Fs from "fs"; // note: used by subapp-server/lib/util -export function getDevProxy() { +/** + * Get information to run the dev proxy + * + * @returns info for dev proxy + */ +export function getDevProxy(): any { const xarcCwd = process.env.XARC_CWD || process.cwd(); const envWebpack = getEnvWebpack(); const envApp = getEnvApp(); const envProxy = getEnvProxy(); - /* + /** * Look in app's dependencies and devDependencies for a module with a name that starts with ssl-certs, * load it, and try to get dev SSL key/cert file from the functions devKeyFile and devCertFile. * * If they exist and return strings, then use them as the path to the SSL key/cert file * for the dev proxy. + * + * @returns `undefined` or `{key, cert }` */ - function searchSSLCertsModule() { + function searchSSLCertsModule(): any { let sslCertsMod; try { @@ -35,7 +42,7 @@ export function getDevProxy() { Object.keys(appPkg.devDependencies || {}).find(matchModName); if (sslCertsMod) { - const sslCerts = require(sslCertsMod); + const sslCerts = require(sslCertsMod); // eslint-disable-line const key = sslCerts.devKeyFile(); const cert = sslCerts.devCertFile(); Fs.accessSync(key); @@ -58,7 +65,12 @@ export function getDevProxy() { return undefined; } - function searchSSLCerts() { + /** + * search for dev SSL certs under app's directory + * + * @returns SSL cert file paths + */ + function searchSSLCerts(): any { const fromModule = searchSSLCertsModule(); if (fromModule) { @@ -156,4 +168,7 @@ export function getDevProxy() { }; } +/** + * Default information for dev proxy + */ export const devProxy = getDevProxy(); diff --git a/packages/xarc-app-dev/src/config/env-app.ts b/packages/xarc-app-dev/src/config/env-app.ts index 57ae30f2b..bc15d27cd 100644 --- a/packages/xarc-app-dev/src/config/env-app.ts +++ b/packages/xarc-app-dev/src/config/env-app.ts @@ -1,7 +1,12 @@ -export function getEnvApp() { - const xenvConfig = require("xenv-config"); - const { merge } = require("lodash"); +import xenvConfig from "xenv-config"; +import { merge } from "lodash"; +/** + * Get app settings from env + * + * @returns app settings + */ +export function getEnvApp(): any { const appConfigSpec = { host: { env: ["HOST"], default: "localhost" }, port: { env: ["PORT"], default: 3000 }, diff --git a/packages/xarc-app-dev/src/config/env-babel.ts b/packages/xarc-app-dev/src/config/env-babel.ts index fc857c8a4..5df6a66b1 100644 --- a/packages/xarc-app-dev/src/config/env-babel.ts +++ b/packages/xarc-app-dev/src/config/env-babel.ts @@ -3,7 +3,12 @@ import { merge } from "lodash"; import { getUserConfig } from "./user-config"; -export function getEnvBabel() { +/** + * Get babel settings from env (deprecated) + * + * @returns babel settings + */ +export function getEnvBabel(): any { const userConfig = getUserConfig(); const { options } = userConfig; diff --git a/packages/xarc-app-dev/src/config/env-karma.ts b/packages/xarc-app-dev/src/config/env-karma.ts index bd0bcc3b1..9a309acd1 100644 --- a/packages/xarc-app-dev/src/config/env-karma.ts +++ b/packages/xarc-app-dev/src/config/env-karma.ts @@ -1,10 +1,15 @@ -export function getEnvKarma() { - const xenvConfig = require("xenv-config"); - const { merge } = require("lodash"); - const userConfig = require("./user-config"); +import xenvConfig from "xenv-config"; +import { merge } from "lodash"; +import { getUserConfig } from "./user-config"; +/** + * Get karma settings from env (deprecated) + * + * @returns karma settings from env + */ +export function getEnvKarma(): any { const karmaConfigSpec = { browser: { env: "KARMA_BROWSER", default: "chrome" } }; - return xenvConfig(karmaConfigSpec, userConfig.karma, { merge }); + return xenvConfig(karmaConfigSpec, getUserConfig().karma, { merge }); } diff --git a/packages/xarc-app-dev/src/config/env-proxy.ts b/packages/xarc-app-dev/src/config/env-proxy.ts index 96d2979e2..a13d3a4cb 100644 --- a/packages/xarc-app-dev/src/config/env-proxy.ts +++ b/packages/xarc-app-dev/src/config/env-proxy.ts @@ -3,7 +3,12 @@ import { isValidPort } from "../lib/utils"; import { merge } from "lodash"; -export function getEnvProxy() { +/** + * Get proxy settings from env (deprecated) + * + * @returns proxy settings from env + */ +export function getEnvProxy(): any { const proxyConfigSpec = { httpsPort: { env: [ @@ -24,5 +29,6 @@ export function getEnvProxy() { }, elevated: { env: ["ELECTRODE_DEV_ELEVATED"], default: false } }; + return xenvConfig(proxyConfigSpec, {}, { merge }); } diff --git a/packages/xarc-app-dev/src/config/env-webpack.ts b/packages/xarc-app-dev/src/config/env-webpack.ts index 6f4c39454..85d638d39 100644 --- a/packages/xarc-app-dev/src/config/env-webpack.ts +++ b/packages/xarc-app-dev/src/config/env-webpack.ts @@ -2,7 +2,12 @@ import xenvConfig from "xenv-config"; import { merge } from "lodash"; import { getUserConfig } from "./user-config"; -export function getEnvWebpack() { +/** + * Get webpack settings from env (deprecated) + * + * @returns webpack settings from env + */ +export function getEnvWebpack(): any { const userConfig = getUserConfig(); const webpackConfigSpec = { diff --git a/packages/xarc-app-dev/src/config/eslint/js/base.js b/packages/xarc-app-dev/src/config/eslint/js/base.js index 91a18f264..676243476 100644 --- a/packages/xarc-app-dev/src/config/eslint/js/base.js +++ b/packages/xarc-app-dev/src/config/eslint/js/base.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; const optEslintRequire = require("./opt-eslint-require"); diff --git a/packages/xarc-app-dev/src/config/eslint/js/es5-node.js b/packages/xarc-app-dev/src/config/eslint/js/es5-node.js index 72616817b..f19ed5927 100644 --- a/packages/xarc-app-dev/src/config/eslint/js/es5-node.js +++ b/packages/xarc-app-dev/src/config/eslint/js/es5-node.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; const optEslintRequire = require("./opt-eslint-require"); module.exports = optEslintRequire("eslint-config-walmart/configurations/es5-node"); diff --git a/packages/xarc-app-dev/src/config/eslint/js/es6-node.js b/packages/xarc-app-dev/src/config/eslint/js/es6-node.js index 2af893c18..a70dafb8c 100644 --- a/packages/xarc-app-dev/src/config/eslint/js/es6-node.js +++ b/packages/xarc-app-dev/src/config/eslint/js/es6-node.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; const optEslintRequire = require("./opt-eslint-require"); module.exports = optEslintRequire("eslint-config-walmart/configurations/es6-node"); diff --git a/packages/xarc-app-dev/src/config/eslint/js/es6-react.js b/packages/xarc-app-dev/src/config/eslint/js/es6-react.js index 096214343..b324f2a10 100644 --- a/packages/xarc-app-dev/src/config/eslint/js/es6-react.js +++ b/packages/xarc-app-dev/src/config/eslint/js/es6-react.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; const optEslintRequire = require("./opt-eslint-require"); module.exports = optEslintRequire("eslint-config-walmart/configurations/es6-react"); diff --git a/packages/xarc-app-dev/src/config/eslint/js/es6-test.js b/packages/xarc-app-dev/src/config/eslint/js/es6-test.js index a51581b9c..734f1af54 100644 --- a/packages/xarc-app-dev/src/config/eslint/js/es6-test.js +++ b/packages/xarc-app-dev/src/config/eslint/js/es6-test.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; const optEslintRequire = require("./opt-eslint-require"); module.exports = optEslintRequire("eslint-config-walmart/configurations/es6-test"); diff --git a/packages/xarc-app-dev/src/config/eslint/js/opt-eslint-require.js b/packages/xarc-app-dev/src/config/eslint/js/opt-eslint-require.js index 9a78b9f3c..5bf11c5b0 100644 --- a/packages/xarc-app-dev/src/config/eslint/js/opt-eslint-require.js +++ b/packages/xarc-app-dev/src/config/eslint/js/opt-eslint-require.js @@ -1,3 +1,4 @@ +/* eslint-disable */ "use strict"; try { diff --git a/packages/xarc-app-dev/src/config/karma/browser-settings.ts b/packages/xarc-app-dev/src/config/karma/browser-settings.ts index c2ae663b2..9d1440cd3 100644 --- a/packages/xarc-app-dev/src/config/karma/browser-settings.ts +++ b/packages/xarc-app-dev/src/config/karma/browser-settings.ts @@ -1,10 +1,16 @@ -/* eslint-disable @typescript-eslint/no-var-requires, no-process-exit */ +/* eslint-disable no-process-exit */ import { loadXarcOptions } from "../../lib/utils"; import { logger } from "../../lib/logger"; -export = function(settings) { +/** + * Karma settings to update for the specified browser + * + * @param settings - incoming settings to update + * @returns updated settings + */ +export = function updateKarmaBrowserSettings(settings: any): any { const xarcOptions = loadXarcOptions(); const browser = xarcOptions.karma.browser.toLowerCase(); diff --git a/packages/xarc-app-dev/src/config/karma/entry-xarc.js b/packages/xarc-app-dev/src/config/karma/entry-xarc.js index 314bc160e..6d94acef9 100644 --- a/packages/xarc-app-dev/src/config/karma/entry-xarc.js +++ b/packages/xarc-app-dev/src/config/karma/entry-xarc.js @@ -1,7 +1,6 @@ +/* eslint-disable */ "use strict"; -/* eslint-disable no-var */ - /** * All requires in this file will be processed by webpack, which is unforgiving * about missing dependencies and will generate hard module not found errors, diff --git a/packages/xarc-app-dev/src/config/karma/entry.js b/packages/xarc-app-dev/src/config/karma/entry.js index e34563d95..8117aa212 100644 --- a/packages/xarc-app-dev/src/config/karma/entry.js +++ b/packages/xarc-app-dev/src/config/karma/entry.js @@ -1,7 +1,6 @@ +/* eslint-disable */ "use strict"; -/* eslint-disable no-var */ - /** * All requires in this file will be processed by webpack, which is unforgiving * about missing dependencies and will generate hard module not found errors, diff --git a/packages/xarc-app-dev/src/config/karma/karma.conf.coverage.ts b/packages/xarc-app-dev/src/config/karma/karma.conf.coverage.ts index 8d12fa13a..2a2b58e9b 100644 --- a/packages/xarc-app-dev/src/config/karma/karma.conf.coverage.ts +++ b/packages/xarc-app-dev/src/config/karma/karma.conf.coverage.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ process.env.KARMA_RUN_TYPE = "coverage"; import Path from "path"; @@ -8,16 +7,23 @@ import Path from "path"; * * This configuration is the same as basic one-shot version, just with coverage. */ -const karmaConf = require("./karma.conf"); +import karmaConf from "./karma.conf"; import { loadUserConfig } from "./util/load-user-config"; -const customCheck = require("@xarc/webpack/lib/util/custom-check"); +import { loadXarcOptions } from "../../lib/utils"; +const customCheck = require("@xarc/webpack/lib/util/custom-check"); // eslint-disable-line +// eslint-disable-next-line const webpackCovCfg = require(customCheck.getWebpackStartConfig( "../webpack/webpack.config.coverage", false )); -import { loadXarcOptions } from "../../lib/utils"; -export = function(config) { +/** + * Get Karma config for coverage + * + * @param config base config + * @returns karma config + */ +export = function(config): any { const xarcOptions = loadXarcOptions(); const xarcCwd = xarcOptions.cwd; diff --git a/packages/xarc-app-dev/src/config/karma/karma.conf.ts b/packages/xarc-app-dev/src/config/karma/karma.conf.ts index 5b1f96c2e..bfd126b86 100644 --- a/packages/xarc-app-dev/src/config/karma/karma.conf.ts +++ b/packages/xarc-app-dev/src/config/karma/karma.conf.ts @@ -6,6 +6,9 @@ const browserSettings = require("./browser-settings"); const loadElectrodeDll = require("./util/load-electrode-dll"); import { loadXarcOptions } from "../../lib/utils"; +/** + * + */ function getXarcOptPlugins() { try { require.resolve("@xarc/opt-karma"); @@ -28,6 +31,9 @@ function getXarcOptPlugins() { } } +/** + * + */ function getArchetypeOptPlugins() { try { require.resolve("electrode-archetype-opt-karma"); @@ -72,6 +78,9 @@ PREPROCESSORS[MAIN_PATH] = ["webpack", "sourcemap"]; const DLL_PATHS = loadElectrodeDll().map(x => require.resolve(x)); +/** + * + */ function loadWebpackConfig() { if (!process.env.KARMA_RUN_TYPE) { process.env.KARMA_RUN_TYPE = "base"; @@ -84,7 +93,13 @@ function loadWebpackConfig() { return {}; } -export = function(config) { +/** + * get karma config + * + * @param config + * @returns karma config + */ +export = function getKarmaConfig(config): any { let plugins = getXarcOptPlugins() || getArchetypeOptPlugins(); if (!plugins) { console.error("ERROR: @xarc/opt-karma not found - running karma tests is not possible"); diff --git a/packages/xarc-app-dev/src/config/karma/karma.conf.watch.ts b/packages/xarc-app-dev/src/config/karma/karma.conf.watch.ts index ad62c9f53..c5d9f33f9 100644 --- a/packages/xarc-app-dev/src/config/karma/karma.conf.watch.ts +++ b/packages/xarc-app-dev/src/config/karma/karma.conf.watch.ts @@ -1,31 +1,35 @@ -/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/ban-ts-ignore */ /* * Karma Configuration: "watch" version. * * This configuration allows live updates of code changes. */ -const dev = require("./karma.conf.dev"); +import Path from "path"; +import dev from "./karma.conf.dev"; import { loadUserConfig } from "./util/load-user-config"; -const Path = require("path"); +/** + * Karma config for watching mode + * + * @param config + * @returns karma config + */ export = function(config) { dev(config); const settings = { crossOriginAttribute: false, files: [ // Test bundle (must be created via `npm run dev|server-test`) - "http://127.0.0.1:3001/assets/bundle.js" + "http://127.0.0.1:3001/assets/bundle.js" as any // Watch these files but do not add them to the bundle. ].concat( - // @ts-ignore ["src/client/**", "test/**"].map(pattern => { return { pattern, included: false, served: false, watched: true - }; + } as any; }) ) }; diff --git a/packages/xarc-app-dev/src/config/karma/util/load-user-config.ts b/packages/xarc-app-dev/src/config/karma/util/load-user-config.ts index e7773843f..102d471ce 100644 --- a/packages/xarc-app-dev/src/config/karma/util/load-user-config.ts +++ b/packages/xarc-app-dev/src/config/karma/util/load-user-config.ts @@ -6,6 +6,11 @@ import assert from "assert"; const optionalRequire = makeOptionalRequire(require); +/** + * @param filename + * @param config + * @param settings + */ export function loadUserConfig(filename, config, settings) { const filePath = Path.resolve("archetype/config/karma", filename); const userConfig = optionalRequire(filePath); diff --git a/packages/xarc-app-dev/src/config/mocha/setup.ts b/packages/xarc-app-dev/src/config/mocha/setup.ts index f77ccc702..16432973c 100644 --- a/packages/xarc-app-dev/src/config/mocha/setup.ts +++ b/packages/xarc-app-dev/src/config/mocha/setup.ts @@ -1,5 +1,3 @@ -/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/ban-ts-ignore */ - import makeOptionalRequire from "optional-require"; const optionalRequire = makeOptionalRequire(require); @@ -12,6 +10,9 @@ if (Enzyme && Adapter) { const chai = optionalRequire("chai"); +/** + * @param addons + */ function chaiUse(addons) { [].concat(addons).forEach(x => { const AddonMod = x && optionalRequire(x); @@ -26,6 +27,5 @@ if (chai) { chai.config.includeStack = true; - // @ts-ignore - global.expect = chai.expect; + (global as any).expect = chai.expect; } diff --git a/packages/xarc-app-dev/src/config/opt2/webpack-options.ts b/packages/xarc-app-dev/src/config/opt2/webpack-options.ts index 9d0ff5bab..da1b149e1 100644 --- a/packages/xarc-app-dev/src/config/opt2/webpack-options.ts +++ b/packages/xarc-app-dev/src/config/opt2/webpack-options.ts @@ -80,6 +80,7 @@ export type WebpackOptions = { * Enable webpack's NodeSourcePlugin to simulate node.js libs in browser * - **Default: `false`** * - If not set, then check env `ENABLE_NODESOURCE_PLUGIN` + * * @remarks * This will bundle 100K+ of JavaScript to simulate node.js env */ @@ -133,14 +134,14 @@ export type WebpackOptions = { * - if not set, then we check env: `OPTIMIZE_CSS_OPTIONS` (which should be a JSON string) * - TBD: define type for it */ - optimizeCssOptions?: object; + optimizeCssOptions?: Record; /** * Custom object with list of webpack DLLs to load * - **Default: `{}`** * - if not set, then we check env: `ELECTRODE_LOAD_DLLS` (which should be a JSON string) * - TBD: define type for it */ - loadDlls?: object; + loadDlls?: Record; /** * Should webpack minify code output in production mode? * - **Default: `true`** diff --git a/packages/xarc-app-dev/src/config/opt2/xarc-options.ts b/packages/xarc-app-dev/src/config/opt2/xarc-options.ts index d16d43e8e..1f95213cd 100644 --- a/packages/xarc-app-dev/src/config/opt2/xarc-options.ts +++ b/packages/xarc-app-dev/src/config/opt2/xarc-options.ts @@ -2,6 +2,9 @@ import { AddOnFeatures } from "./add-on-features"; import { WebpackOptions } from "./webpack-options"; import { BabelOptions } from "./babel-options"; +/** + * User facing options for configuring features + */ export type XarcOptions = { // configurations from env-app.ts /** @@ -115,3 +118,21 @@ export type XarcOptions = { */ namespace?: string; }; + +/** + * Internal options for configuring features base on user options + */ +export type XarcInternalOptions = XarcOptions & { + options: any; + webpack: any; + babel: any; + jest: any; + karma: any; + config: any; + AppMode?: any; + devDir?: string; + eTmpDir?: string; + prodModulesDir?: string; + prodDir?: string; + checkUserBabelRc?: () => boolean; +}; diff --git a/packages/xarc-app-dev/src/config/options.ts b/packages/xarc-app-dev/src/config/options.ts index a3d23be03..bff5e7a5e 100644 --- a/packages/xarc-app-dev/src/config/options.ts +++ b/packages/xarc-app-dev/src/config/options.ts @@ -14,6 +14,10 @@ import { PROD_DIR, ETMP_DIR } from "@xarc/app"; const optionalRequire = makeOptionalRequire(require); +/** + * @param dependencies + * @param isDev + */ export function checkOptArchetypeInAppDep(dependencies, isDev = undefined) { const options = dependencies .filter(x => x.startsWith("electrode-archetype-opt-") || x.startsWith("@xarc/opt-")) diff --git a/packages/xarc-app-dev/src/lib/dev-admin/admin-http.ts b/packages/xarc-app-dev/src/lib/dev-admin/admin-http.ts index a7fa58357..88c363b4f 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/admin-http.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/admin-http.ts @@ -1,4 +1,4 @@ -/* eslint-disable max-statements */ +/* eslint-disable max-statements, no-magic-numbers */ import http from "http"; import Path from "path"; @@ -10,7 +10,7 @@ import _ from "lodash"; export type AdminHttpOptions = { port?: number; - getLogs?: Function; + getLogs?: (name: string) => any; }; /** @@ -32,6 +32,9 @@ type EventClient = { res: http.ServerResponse; }; +/** + * @param str + */ function parseEntryId(str: string): LogEntryId { if (str.indexOf(",") > 0) { const parts = str.split(","); @@ -44,6 +47,10 @@ function parseEntryId(str: string): LogEntryId { return { ts: parseInt(str) }; } +/** + * @param a + * @param b + */ function compareEntryId(a: LogEntryId, b: LogEntryId) { if (a.ts === b.ts) { return (a.tx || 0) - (b.tx || 0); @@ -51,13 +58,13 @@ function compareEntryId(a: LogEntryId, b: LogEntryId) { return a.ts - b.ts; } -function stringifyEntryId(entryId) { - return entryId.tx ? `${entryId.ts},${entryId.tx}` : `${entryId.ts}`; -} +// function stringifyEntryId(entryId) { +// return entryId.tx ? `${entryId.ts},${entryId.tx}` : `${entryId.ts}`; +// } export class AdminHttp { _server: http.Server; - _getLogs: Function; + _getLogs: (name: string) => any; _logHtml: string; _adminHtml: string; _port: number; @@ -76,7 +83,7 @@ export class AdminHttp { this._eventClients = {}; } - _readAsset(filename: string, memoize: string, processor?: Function): string { + _readAsset(filename: string, memoize: string, processor?: (c: any) => any): string { if (!this[memoize]) { let content = Fs.readFileSync(filename).toString(); if (processor) { diff --git a/packages/xarc-app-dev/src/lib/dev-admin/automation-io.ts b/packages/xarc-app-dev/src/lib/dev-admin/automation-io.ts index c019f9e79..98276f5e3 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/automation-io.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/automation-io.ts @@ -1,7 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-empty-function */ -/* eslint-disable @typescript-eslint/ban-ts-ignore */ - -/* eslint-disable no-console, no-process-exit */ +/* eslint-disable no-console */ export class AutomationIO { constructor(name) { @@ -12,7 +9,9 @@ export class AutomationIO { `); } - setup() {} + setup() { + // + } async getUserInput() { return new Promise(resolve => { @@ -24,15 +23,23 @@ export class AutomationIO { console.log(...args); } - write() {} + write() { + // + } - addItem() {} + addItem() { + // + } - updateItem() {} + updateItem() { + // + } - removeItem() {} + removeItem() { + // + } exit() { - process.exit(); + process.exit(); // eslint-disable-line } } diff --git a/packages/xarc-app-dev/src/lib/dev-admin/cleanup.ts b/packages/xarc-app-dev/src/lib/dev-admin/cleanup.ts index 1ddea3ee9..a0657b49a 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/cleanup.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/cleanup.ts @@ -26,6 +26,9 @@ export const doCleanup = async () => { }); }; +/** + * + */ export function setupCleanupHooks() { ["uncaughtException", "unhandledRejection"].forEach((event: any) => { process.on(event, async (err: Error) => { diff --git a/packages/xarc-app-dev/src/lib/dev-admin/console-io.ts b/packages/xarc-app-dev/src/lib/dev-admin/console-io.ts index 36a4db706..8dbc8c337 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/console-io.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/console-io.ts @@ -1,4 +1,4 @@ -/* eslint-disable no-console, no-process-exit */ +/* eslint-disable no-console, no-process-exit, @typescript-eslint/ban-ts-comment */ import readline from "readline"; import VisualLogger from "visual-logger"; diff --git a/packages/xarc-app-dev/src/lib/dev-admin/dev-http.ts b/packages/xarc-app-dev/src/lib/dev-admin/dev-http.ts index 58a4d5b2e..b10cea834 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/dev-http.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/dev-http.ts @@ -26,6 +26,12 @@ export interface DevHttpServer { addListener: (event: HttpServerEvent, hander: any) => void; } +/** + * @param root0 + * @param root0.port + * @param root0.host + * @param root0.protocol + */ function getMiddleware({ port, host, protocol = "http" }: DevHttpServerOptions) { const middleware = new Middleware({ baseUrl: () => { @@ -102,7 +108,7 @@ export const setupHttpDevServer = function({ server.listen(port, host); }, stop: () => { - server.close(function() { + server.close(() => { /* eslint-disable no-console */ console.log("Server closed!"); }); diff --git a/packages/xarc-app-dev/src/lib/dev-admin/dev-server-start.ts b/packages/xarc-app-dev/src/lib/dev-admin/dev-server-start.ts index b0a7d1b85..3659599fc 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/dev-server-start.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/dev-server-start.ts @@ -1,11 +1,11 @@ /* eslint-disable global-require, no-console */ import ck from "chalker"; -import { createServer } from "http"; import { setupHttpDevServer } from "./dev-http"; /** * Create HTTP server for dev admin + * * @param xarcOptions - xarc options * * @returns http server @@ -32,6 +32,9 @@ function createDevAdminHttpServer(xarcOptions) { return devHttpServer; } +/** + * + */ export function startDevServer() { // // Requiring all the modules, such as webpack, could take a long time, especially @@ -39,7 +42,7 @@ export function startDevServer() { // Doing require here helps with the perception of how long webpack dev server // took to start up. // - const { loadXarcOptions } = require("../../lib/utils"); + const { loadXarcOptions } = require("../../lib/utils"); // eslint-disable-line const xarcOptions = loadXarcOptions(); const started = createDevAdminHttpServer(xarcOptions); diff --git a/packages/xarc-app-dev/src/lib/dev-admin/index.ts b/packages/xarc-app-dev/src/lib/dev-admin/index.ts index 9e596da64..23cbd5b64 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/index.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/index.ts @@ -2,6 +2,9 @@ import NixClap from "nix-clap"; import { AdminServer } from "./admin-server"; import { setupCleanupHooks } from "./cleanup"; +/** + * + */ function startDevAdmin() { const parsed = new NixClap() .init({ diff --git a/packages/xarc-app-dev/src/lib/dev-admin/log-parser.ts b/packages/xarc-app-dev/src/lib/dev-admin/log-parser.ts index 7ad3cc1ae..4fd92dcbf 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/log-parser.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/log-parser.ts @@ -22,6 +22,10 @@ const tagLevelMap = { "debugger listening on": "silly" }; +/** + * @param str + * @param last + */ export function parse(str: string, last: any) { let jsonData; let show; @@ -107,6 +111,9 @@ const Levels = { } }; +/** + * @param event + */ export function getLogEventAsHtml(event) { const levelInfo = Levels[event.level]; const levelName = levelInfo.name.substring(0, 4); diff --git a/packages/xarc-app-dev/src/lib/dev-admin/log-view.js b/packages/xarc-app-dev/src/lib/dev-admin/log-view.js index 9c042eac0..7b7e8623f 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/log-view.js +++ b/packages/xarc-app-dev/src/lib/dev-admin/log-view.js @@ -1,4 +1,4 @@ -"use strict"; + /* eslint-disable no-magic-numbers, no-use-before-define, no-unused-vars */ /* eslint-disable no-console, max-statements, no-param-reassign, complexity */ @@ -9,6 +9,9 @@ let logStreamReconnectDelay = 5000; let logStreamReconnectTimer; let debugStreamEvents; +/** + * + */ function startLogStream() { const close = () => { if (logStream) { @@ -55,6 +58,10 @@ const logDisplayElement = document.getElementById("logs"); // when received new entries, only those with ID after this are kept let lastEntryId = { ts: 0, tx: 0 }; +/** + * @param a + * @param b + */ function compareEntryId(a, b) { if (a.ts === b.ts) { return (a.tx || 0) - (b.tx || 0); @@ -62,6 +69,9 @@ function compareEntryId(a, b) { return a.ts - b.ts; } +/** + * @param entryId + */ function stringifyEntryId(entryId) { return entryId.tx ? `${entryId.ts},${entryId.tx}` : `${entryId.ts}`; } @@ -166,6 +176,9 @@ class HashValues { const hashVal = new HashValues(); +/** + * + */ function getLevelSelections() { const levels = Object.keys(defaultLevelSelections); const levelSelections = levels.reduce((acc, level) => { @@ -176,10 +189,17 @@ function getLevelSelections() { return { ...defaultLevelSelections, ...levelSelections }; } +/** + * + */ function levelChangeHandler() { refreshLogs(getLevelSelections(), false); } +/** + * @param levelSelections + * @param scrollToEnd + */ function refreshLogs(levelSelections, scrollToEnd = true) { levelSelections = levelSelections || getLevelSelections(); @@ -203,12 +223,18 @@ function refreshLogs(levelSelections, scrollToEnd = true) { hashVal.add(offLevels); } +/** + * + */ function clearLogs() { while (logDisplayElement.lastChild) { logDisplayElement.removeChild(logDisplayElement.lastChild); } } +/** + * + */ function wipeLogs() { const last = logDisplayElement.lastChild; @@ -224,6 +250,11 @@ function wipeLogs() { clearLogs(); } +/** + * @param data + * @param levelSelections + * @param scrollToEnd + */ async function updateLogs(data, levelSelections, scrollToEnd = true) { levelSelections = levelSelections || getLevelSelections(); @@ -276,6 +307,10 @@ async function updateLogs(data, levelSelections, scrollToEnd = true) { } } +/** + * @param levelSelections + * @param scrollToEnd + */ async function displayLogs(levelSelections, scrollToEnd = true) { levelSelections = levelSelections || getLevelSelections(); @@ -302,6 +337,9 @@ async function displayLogs(levelSelections, scrollToEnd = true) { updateLogs(data, levelSelections, scrollToEnd); } +/** + * + */ function updateLevelCheckboxes() { Object.keys(defaultLevelSelections).forEach(k => { const elem = document.getElementById(`level.${k}`); @@ -311,6 +349,9 @@ function updateLevelCheckboxes() { }); } +/** + * @param str + */ function parseEntryId(str) { if (str.indexOf(",") > 0) { const parts = str.split(","); @@ -344,7 +385,7 @@ window.addEventListener( false ); -window.addEventListener("keypress", function(event) { +window.addEventListener("keypress", (event) => { if (event.ctrlKey && event.code === "KeyK") { wipeLogs(); } diff --git a/packages/xarc-app-dev/src/lib/dev-admin/middleware.ts b/packages/xarc-app-dev/src/lib/dev-admin/middleware.ts index 822b0b5c8..254169fb3 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/middleware.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/middleware.ts @@ -1,15 +1,16 @@ /* eslint-disable no-console, no-magic-numbers, max-statements */ -/* eslint-disable max-params, prefer-template, complexity, global-require */ +/* eslint-disable max-params, prefer-template, complexity */ import Path from "path"; import Fs from "fs"; import webpack from "webpack"; import hotHelpers from "webpack-hot-middleware/helpers"; import Url from "url"; -const { getWebpackStartConfig } = require("@xarc/webpack/lib/util/custom-check"); import { devProxy } from "../../config/dev-proxy"; import { formUrl } from "../utils"; +const { getWebpackStartConfig } = require("@xarc/webpack/lib/util/custom-check"); // eslint-disable-line + hotHelpers.pathMatch = (url, path) => { try { return Url.parse(url).pathname === Url.parse(path).pathname; @@ -28,6 +29,9 @@ import { getBundles } from "../stats-mapper"; const { fullDevServer, controlPaths } = devProxy; +/** + * @param {...any} args + */ function urlJoin(...args) { if (args.length < 1) return undefined; @@ -94,7 +98,7 @@ export class Middleware { setup() { const options = this._options; - const config = require(getWebpackStartConfig("webpack.config.dev.js", false)); + const config = require(getWebpackStartConfig("webpack.config.dev.js", false)); // eslint-disable-line this._hmrPath = controlPaths.hmr; diff --git a/packages/xarc-app-dev/src/lib/dev-admin/redbird-proxy.ts b/packages/xarc-app-dev/src/lib/dev-admin/redbird-proxy.ts index ce52797e0..2ed73b295 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/redbird-proxy.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/redbird-proxy.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/ban-ts-ignore */ /* eslint-disable max-statements, no-process-exit, global-require, no-console */ import assert from "assert"; @@ -153,13 +152,10 @@ const registerElectrodeDevRules = ({ // repeat all rules for 127.0.0.1 appForwards.map(([src, target, opts]) => { return [ - // @ts-ignore formUrl({ protocol, port, ...src, host: src.host || "127.0.0.1" }), formUrl({ ...target, - // @ts-ignore protocol: target.protocol || "http", - // @ts-ignore host: target.host || "127.0.0.1" }), opts @@ -322,7 +318,6 @@ View status at ${proxyUrls.https || proxyUrls.http}${controlPaths.status} // if primary protocol is https, then register regular http rules at httpPort if (enableSsl && isValidPort(options.httpPort)) { - // @ts-ignore registerElectrodeDevRules({ proxy, protocol: "http", @@ -331,7 +326,7 @@ View status at ${proxyUrls.https || proxyUrls.http}${controlPaths.status} appPort: options.appPort, webpackDevPort: options.webpackDevPort, restart - }); + } as any); } if (userDevProxy && userDevProxy.setupRules) { diff --git a/packages/xarc-app-dev/src/lib/dev-admin/redbird-spawn.ts b/packages/xarc-app-dev/src/lib/dev-admin/redbird-spawn.ts index 21b774eac..c49b3b473 100644 --- a/packages/xarc-app-dev/src/lib/dev-admin/redbird-spawn.ts +++ b/packages/xarc-app-dev/src/lib/dev-admin/redbird-spawn.ts @@ -69,6 +69,9 @@ const handleRestart = type => { }); }; +/** + * + */ async function mainSpawn() { if (await isProxyRunning()) { console.log("Electrode dev proxy already running - exiting."); diff --git a/packages/xarc-app-dev/src/lib/dev-tasks.ts b/packages/xarc-app-dev/src/lib/dev-tasks.ts index 093b4a0e8..4ee733069 100644 --- a/packages/xarc-app-dev/src/lib/dev-tasks.ts +++ b/packages/xarc-app-dev/src/lib/dev-tasks.ts @@ -52,26 +52,44 @@ function webpackCmd() { return Fs.existsSync(exactCmd) ? Path.relative(xarcCwd, exactCmd) : cmd; } +/** + * @param str + */ function quote(str) { return str.startsWith(`"`) ? str : `"${str}"`; } +/** + * + */ function setProductionEnv() { process.env.NODE_ENV = "production"; } +/** + * + */ function setDevelopmentEnv() { process.env.NODE_ENV = "development"; } +/** + * + */ function setKarmaCovEnv() { process.env.ENABLE_KARMA_COV = "true"; } +/** + * + */ function setStaticFilesEnv() { process.env.STATIC_FILES = "true"; } +/** + * + */ function setWebpackDev() { process.env.WEBPACK_DEV = "true"; } @@ -86,7 +104,7 @@ export { XarcOptions } from "../config/opt2/xarc-options"; * @returns the instance of @xarc/run that's required */ export const getDevTaskRunner = (cwd: string = process.cwd()) => { - return requireAt(cwd)("@xarc/run") || require("@xarc/run"); + return requireAt(cwd)("@xarc/run") || xrun; }; /** @@ -109,16 +127,19 @@ export const getDevTaskRunner = (cwd: string = process.cwd()) => { * loadXarcDevTasks(); * ``` * - * @param xrun - `@xarc/run` task runner. pass `null` and an + * @param userXrun - `@xarc/run` task runner. pass `null` and an * internal version will be used. * @param userOptions user provided options to configure features etc * * @returns The `@xarc/run` task runner instance that was used. */ -export function loadXarcDevTasks(xrun, userOptions: XarcOptions = {}) { +export function loadXarcDevTasks(userXrun, userOptions: XarcOptions = {}) { let xarcOptions = getDevOptions(userOptions); xarcCwd = xarcOptions.cwd; + /** + * + */ function setupPath() { const nmBin = Path.join("node_modules", ".bin"); xsh.envPath.addToFront(Path.resolve(xarcCwd, nmBin)); @@ -195,6 +216,9 @@ export function loadXarcDevTasks(xrun, userOptions: XarcOptions = {}) { const eTmpDir = xarcOptions.eTmpDir; + /** + * + */ function removeLogFiles() { try { Fs.unlinkSync(Path.resolve(xarcCwd, "archetype-exceptions.log")); @@ -210,6 +234,9 @@ export function loadXarcDevTasks(xrun, userOptions: XarcOptions = {}) { * resources so they work offline.] * */ + /** + * + */ function generateServiceWorker() { const NODE_ENV = process.env.NODE_ENV; const serviceWorkerExists = Fs.existsSync("./service-worker.js"); @@ -239,6 +266,9 @@ export function loadXarcDevTasks(xrun, userOptions: XarcOptions = {}) { } } + /** + * + */ function inlineCriticalCSS() { const HOST = process.env.HOST || "localhost"; const PORT = process.env.PORT || 3000; @@ -280,6 +310,9 @@ export function loadXarcDevTasks(xrun, userOptions: XarcOptions = {}) { }); } + /** + * @param argFlags + */ function startAppServer(argFlags = []) { argFlags = argFlags || []; const x = argFlags.length > 0 ? ` with options: ${argFlags.join(" ")}` : ""; @@ -289,6 +322,9 @@ export function loadXarcDevTasks(xrun, userOptions: XarcOptions = {}) { return exec(`node`, argFlags, Path.join(xarcOptions.AppMode.lib.server, "index.js")); } + /** + * + */ function generateBrowsersListRc() { const configRcFile = ".browserslistrc"; const destRcFile = Path.resolve(xarcCwd, configRcFile); @@ -325,6 +361,9 @@ ie >= 11 // - when invoking tasks in [], starting name with ? means optional (ie: won't fail if task not found) // eslint-disable-next-line complexity + /** + * @param xrun2 + */ function makeTasks(xrun2) { process.env.ENABLE_KARMA_COV = "false"; @@ -771,7 +810,7 @@ export = { - NODE_ENV is set to 'production' if it's not set. - options: [all options will be passed to node when starting your app server]`, task(context) { - xrun.updateEnv( + userXrun.updateEnv( { NODE_ENV: "production" }, @@ -1202,14 +1241,14 @@ You only need to run this if you are doing something not through the xarc tasks. // require.resolve(`${archetype.devArchetypeName}/package.json`); // } - xrun = xrun || getDevTaskRunner(xarcCwd); + userXrun = userXrun || getDevTaskRunner(xarcCwd); process.env._ELECTRODE_DEV_ = "1"; if (!process.env.hasOwnProperty("FORCE_COLOR")) { process.env.FORCE_COLOR = "1"; // force color for chalk } - xrun.load("electrode", makeTasks(xrun), -10); + userXrun.load("electrode", makeTasks(userXrun), -10); generateBrowsersListRc(); - return xrun; + return userXrun; } diff --git a/packages/xarc-app-dev/src/lib/module-processor.ts b/packages/xarc-app-dev/src/lib/module-processor.ts index ca3e8b0b6..680817b97 100644 --- a/packages/xarc-app-dev/src/lib/module-processor.ts +++ b/packages/xarc-app-dev/src/lib/module-processor.ts @@ -1,8 +1,3 @@ -/** - * Take webpack Stat JSON output and group modules by npm packages, - * noting duplicates if there are any. - */ - import Path from "path"; import { loadXarcOptions } from "./utils"; @@ -15,6 +10,12 @@ const atModRegex = new RegExp(`([^/]+/[^/]+)/(.+)`); // match packageName/file const modRegex = new RegExp(`([^/]+)/(.+)`); +/** + * Process modules from webpack stats for reporter display. + * + * Take webpack Stat JSON output and group modules by npm packages, + * noting duplicates if there are any. + */ export class ModuleProcessor { statJson: any; modulesByPackage: any; @@ -101,12 +102,13 @@ export class ModuleProcessor { try { if (split.name !== ".") { const xarcOptions = loadXarcOptions(); + // eslint-disable-next-line return require(Path.resolve( xarcOptions.cwd, parents.join(nmSep), split.name, "package.json" - )).version; // eslint-disable-line + )).version; } else { return "-"; } diff --git a/packages/xarc-app-dev/src/lib/stats-mapper.ts b/packages/xarc-app-dev/src/lib/stats-mapper.ts index 05c2f5775..2fabce5c9 100644 --- a/packages/xarc-app-dev/src/lib/stats-mapper.ts +++ b/packages/xarc-app-dev/src/lib/stats-mapper.ts @@ -1,6 +1,9 @@ import _ from "lodash"; import { loadXarcOptions } from "./utils"; +/** + * @param stats + */ function extractBundles(stats) { // Stats has modules, single bundle if (stats.modules) return [stats]; @@ -15,6 +18,9 @@ const xarcOptions = loadXarcOptions(); const xarcCwd = xarcOptions.cwd; const WEBPACK_LOADER_MARKER = `!${xarcCwd[0]}`; +/** + * @param statsResult + */ export function getBundles(statsResult) { const mapModules = mod => { if (mod.modules) { diff --git a/packages/xarc-app-dev/src/lib/stats-utils.ts b/packages/xarc-app-dev/src/lib/stats-utils.ts index ad343e005..f9f30680a 100644 --- a/packages/xarc-app-dev/src/lib/stats-utils.ts +++ b/packages/xarc-app-dev/src/lib/stats-utils.ts @@ -3,6 +3,9 @@ import _ from "lodash"; import { ModuleProcessor } from "./module-processor"; import AnsiConvert from "ansi-to-html"; +/** + * @param html + */ export function escapeHtml(html) { const htmlMap = { "<": "<", @@ -11,11 +14,17 @@ export function escapeHtml(html) { return html.replace(/([<>])/g, (m, a) => htmlMap[a]); } +/** + * @param stats + */ export function getInfo(stats) { const info = _.pick(stats, ["hash", "version", "time", "publicPath"]); return info; } +/** + * @param stats + */ export function getAssets(stats) { if (stats.assets && stats.assets.length > 0) { return stats.assets.map(asset => { @@ -26,6 +35,9 @@ export function getAssets(stats) { return []; } +/** + * @param stats + */ export function getModulesByPkg(stats) { const processor = new ModuleProcessor(stats); return { @@ -34,6 +46,9 @@ export function getModulesByPkg(stats) { }; } +/** + * @param logs + */ export function logsToHtml(logs) { if (logs) { const convert = new AnsiConvert(); @@ -42,10 +57,16 @@ export function logsToHtml(logs) { return []; } +/** + * @param stats + */ export function getErrorsHtml(stats) { return logsToHtml(stats.errors); } +/** + * @param stats + */ export function getWarningsHtml(stats) { return logsToHtml(stats.warnings); } diff --git a/packages/xarc-app-dev/src/lib/tasks/eslint.ts b/packages/xarc-app-dev/src/lib/tasks/eslint.ts index da7695f35..9406c4b6a 100644 --- a/packages/xarc-app-dev/src/lib/tasks/eslint.ts +++ b/packages/xarc-app-dev/src/lib/tasks/eslint.ts @@ -20,6 +20,10 @@ const optionalRequire = makeOptionalRequire(require); * */ +/** + * @param options + * @param xarcOptions + */ function lint(options, xarcOptions) { const ext = options.ext ? ` --ext ${options.ext}` : ""; @@ -69,6 +73,9 @@ function lint(options, xarcOptions) { * return tasks to show eslint is not enabled */ +/** + * + */ function eslintDisabledTasks() { const lintDisabled = () => { logger.info(`eslint tasks are disabled because @xarc/opt-eslint is not installed. @@ -83,6 +90,9 @@ function eslintDisabledTasks() { /** * Generate legacy tasks that were for eslint-4.0, messy, no JS config support etc + * + * @param xarcOptions + * @param xrun */ export function eslint4Tasks(xarcOptions: any, xrun: any) { const AppMode = xarcOptions.AppMode; @@ -184,6 +194,9 @@ export function eslint4Tasks(xarcOptions: any, xrun: any) { /** * Generate tasks for eslint-7.0 + * + * @param xarcOptions + * @param xrun */ export function eslint7Tasks(xarcOptions: any, xrun: any) { if (!xarcOptions.options.eslint) { @@ -215,6 +228,10 @@ export function eslint7Tasks(xarcOptions: any, xrun: any) { }; } +/** + * @param xarcOptions + * @param xrun + */ export function eslintTasks(xarcOptions: any, xrun: any) { // const xarcOptPkg = optionalRequire("@xarc/opt-eslint/package.json"); diff --git a/packages/xarc-app-dev/src/lib/tasks/package-json.ts b/packages/xarc-app-dev/src/lib/tasks/package-json.ts index a229a98e4..ea1d9d7e9 100644 --- a/packages/xarc-app-dev/src/lib/tasks/package-json.ts +++ b/packages/xarc-app-dev/src/lib/tasks/package-json.ts @@ -4,6 +4,7 @@ import _ from "lodash"; /** * Add a list of packages to a package.json's depedencies + * * @param pkgJson - package.json data * @param packages - list of packages to add * @param dep - which dependencies section to add @@ -34,6 +35,7 @@ export const addDepToPkgJson = (pkgJson: any, packages: Record, /** * Load a package.json from dir + * * @param dir - directory * @returns package.json object */ @@ -43,7 +45,9 @@ export const loadPkgJson = (dir: string) => { /** * Save a package.json to dir + * * @param dir - directory + * @param pkgJson * @params pkgJson - package.json object * @returns none */ diff --git a/packages/xarc-app-dev/src/lib/utils.ts b/packages/xarc-app-dev/src/lib/utils.ts index 1cfb735d3..ae0a74e31 100644 --- a/packages/xarc-app-dev/src/lib/utils.ts +++ b/packages/xarc-app-dev/src/lib/utils.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires, no-console */ +/* eslint-disable no-console, no-magic-numbers */ import readPkgUp from "read-pkg-up"; import pkgUp from "pkg-up"; @@ -9,10 +9,22 @@ import Path from "path"; import Fs from "fs"; import _ from "lodash"; import Url from "url"; +import { XarcInternalOptions, XarcOptions } from "../config/opt2/xarc-options"; -export const getOptArchetypeRequire = require("@xarc/webpack/lib/util/get-opt-require"); +export const getOptArchetypeRequire = require("@xarc/webpack/lib/util/get-opt-require"); // eslint-disable-line -export const formUrl = ({ protocol = "http", host = "", port = "", path = "" }) => { +/** + * Form a url string from URL object + * + * @param urlObj - object with URL info + * @param urlObj.protocol - protocol + * @param urlObj.host - host + * @param urlObj.port - port + * @param urlObj.path - path + * + * @returns url string + */ +export const formUrl = ({ protocol = "http", host = "", port = "", path = "" }): string => { const proto = protocol.toString().toLowerCase(); const sp = port.toString(); const host2 = @@ -23,7 +35,12 @@ export const formUrl = ({ protocol = "http", host = "", port = "", path = "" }) return Url.format({ protocol: proto, host: host2, pathname: path }); }; -export function checkUserBabelRc() { +/** + * Check user's babel rc files + * + * @returns babel type or false if none was found + */ +export function checkUserBabelRc(): false | string { const user = Path.resolve(".babelrc"); if (Fs.existsSync(user)) { const userRc = JSON.parse(Fs.readFileSync(user).toString()); @@ -44,7 +61,12 @@ export function checkUserBabelRc() { let myPkg; let myDir; -export function getMyPkg() { +/** + * Return this module's package.json and directory + * + * @returns `{ myPkg, myDir }` + */ +export function getMyPkg(): any { if (!myPkg) { myPkg = readPkgUp.sync({ cwd: __dirname }); myDir = Path.dirname(pkgUp.sync({ cwd: __dirname })); @@ -53,8 +75,13 @@ export function getMyPkg() { return { myPkg, myDir }; } -export function createGitIgnoreDir(dir, comment) { - comment = comment || ""; +/** + * Create a directory that's ignored by git + * + * @param dir - name of dir to create + * @param comment - comment about why it's ignored etc + */ +export function createGitIgnoreDir(dir: string, comment = ""): void { const dirFP = Path.resolve(dir); try { mkdirp.sync(dirFP); @@ -70,7 +97,14 @@ export function createGitIgnoreDir(dir, comment) { const regExpSig = "@xarc/__RegExp__@"; -export const jsonStringifier = (key, value) => { +/** + * JSON.stringify custom stringifier, for converting Regex to string + * + * @param _key - unused + * @param value - data to stringify + * @returns string | unknown + */ +export const jsonStringifier = (_key: string, value: unknown): string | unknown => { if (value instanceof RegExp) { return `${regExpSig}${value.toString()}`; } else { @@ -78,7 +112,14 @@ export const jsonStringifier = (key, value) => { } }; -export const jsonParser = (key, value) => { +/** + * JSON.parse custom parser, for detecting and converting regex string to RegEx object + * + * @param _key - unused + * @param value - value to parse + * @returns RegExp | unknown + */ +export const jsonParser = (_key: string, value: unknown): RegExp | unknown => { if (typeof value === "string" && value.startsWith(regExpSig)) { const m = value.substr(regExpSig.length).match(/\/(.*)\/(.*)?/); return new RegExp(m[1], m[2] || ""); @@ -89,10 +130,17 @@ export const jsonParser = (key, value) => { let cachedXarcOptions; +/** + * Load xarc options that's saved to disk + * + * @param dir - app directory + * @param showError - log error if failed + * @returns xarc options + */ export function loadXarcOptions( dir: string = process.env.XARC_CWD || process.cwd(), showError = true -) { +): XarcInternalOptions { if (cachedXarcOptions) { return cachedXarcOptions; } @@ -120,17 +168,27 @@ xarc's development code. webpack: {}, babel: {}, options: {} - }); + } as XarcInternalOptions); } } +/** + * Create electrode's temp directory + * + * @param eTmpDir - name of the temp dir + */ function createElectrodeTmpDir(eTmpDir = ".etmp") { createGitIgnoreDir(Path.resolve(eTmpDir), "Electrode tmp dir"); } -export function saveXarcOptions(config) { - const filename = `${config.eTmpDir}/xarc-options.json`; - const copy = { ...config, pkg: undefined, devPkg: undefined }; +/** + * Save xarc options to disk + * + * @param options - options to save + */ +export function saveXarcOptions(options: any): void { + const filename = `${options.eTmpDir}/xarc-options.json`; + const copy = { ...options, pkg: undefined, devPkg: undefined }; let existStr; try { @@ -142,7 +200,7 @@ export function saveXarcOptions(config) { const str = JSON.stringify(copy, jsonStringifier, 2); if (str !== existStr) { try { - createElectrodeTmpDir(config.eTmpDir); + createElectrodeTmpDir(options.eTmpDir); Fs.writeFileSync(filename, str); } catch (err) { @@ -154,7 +212,13 @@ export function saveXarcOptions(config) { } } -export function detectCSSModule(xOptions) { +/** + * Detect if CSS modules should be enabled + * + * @param xOptions xarc options + * @returns `true` or `false` + */ +export function detectCSSModule(xOptions: XarcOptions): boolean { const cssModuleSupport = _.get(xOptions, "webpack.cssModuleSupport", undefined); if (cssModuleSupport === undefined) { return true; @@ -162,6 +226,12 @@ export function detectCSSModule(xOptions) { return Boolean(cssModuleSupport); } +/** + * Get dev admin's http port from env + * + * @param fallback fallback port + * @returns port number + */ export function getDevAdminPortFromEnv(fallback?: number): number { const fromEnv = parseInt( process.env.XARC_ADMIN_PORT || @@ -174,9 +244,10 @@ export function getDevAdminPortFromEnv(fallback?: number): number { /** * Check if a port number is valid - * @param p - port number + * + * @param port - port number * @returns `true` or `false` */ -export const isValidPort = p => { - return Number.isInteger(p) && p >= 0 && p < 65536; +export const isValidPort = (port: number): boolean => { + return Number.isInteger(port) && port >= 0 && port < 65536; }; diff --git a/packages/xarc-app-dev/src/lib/webpack-dev-express.ts b/packages/xarc-app-dev/src/lib/webpack-dev-express.ts index 1bca72efa..0ccc0b2d4 100644 --- a/packages/xarc-app-dev/src/lib/webpack-dev-express.ts +++ b/packages/xarc-app-dev/src/lib/webpack-dev-express.ts @@ -2,14 +2,16 @@ import { AppDevMiddleware } from "./app-dev-middleware"; /** * Express middleware for webpack dev server - * @param app + * + * @param app express app + * */ -export function expressMiddleware(app) { +export function expressMiddleware(app: any): void { const isProduction = process.env.NODE_ENV === "production"; if (!isProduction) { const middleware = new AppDevMiddleware(); middleware.setup(); - app.use((req, res, next) => { + app.use((req, _res, next) => { if (!req.app) req.app = {}; req.app.webpackDev = middleware.webpackDev; next(); diff --git a/packages/xarc-app-dev/src/lib/webpack-dev-fastify.ts b/packages/xarc-app-dev/src/lib/webpack-dev-fastify.ts index 87ee578ab..c06d87a93 100644 --- a/packages/xarc-app-dev/src/lib/webpack-dev-fastify.ts +++ b/packages/xarc-app-dev/src/lib/webpack-dev-fastify.ts @@ -3,7 +3,13 @@ import { AppDevMiddleware } from "./app-dev-middleware"; -export async function fastifyPlugin(server) { +/** + * webpack dev server fastify plugin + * + * @param server fastify server + * + */ +export async function fastifyPlugin(server: any): Promise { if (process.env.WEBPACK_DEV) { const middleware = new AppDevMiddleware(); @@ -13,6 +19,4 @@ export async function fastifyPlugin(server) { request.app.webpackDev = middleware.webpackDev; }); } - - return; } diff --git a/packages/xarc-app-dev/src/lib/webpack-dev-hapi.ts b/packages/xarc-app-dev/src/lib/webpack-dev-hapi.ts index e8a07052c..a32335810 100644 --- a/packages/xarc-app-dev/src/lib/webpack-dev-hapi.ts +++ b/packages/xarc-app-dev/src/lib/webpack-dev-hapi.ts @@ -2,7 +2,16 @@ import { AppDevMiddleware } from "./app-dev-middleware"; -export function register(server, options, next) { +/** + * Hapi 16 and lower plugin for webpack dev + * + * @param server hapi server + * @param _options plugin options + * @param next callback + * + * @returns nothing + */ +export function register(server: any, _options: any, next: (err?: Error) => void): void { try { const middleware = new AppDevMiddleware(); @@ -18,7 +27,7 @@ export function register(server, options, next) { return next && next(); } catch (err) { if (next) { - next(err); + return next(err); } else { throw err; } diff --git a/packages/xarc-app-dev/src/lib/webpack-dev-hapi17.ts b/packages/xarc-app-dev/src/lib/webpack-dev-hapi17.ts index f1df5839f..62554452f 100644 --- a/packages/xarc-app-dev/src/lib/webpack-dev-hapi17.ts +++ b/packages/xarc-app-dev/src/lib/webpack-dev-hapi17.ts @@ -3,6 +3,9 @@ import { AppDevMiddleware } from "./app-dev-middleware"; +/** + * @param server + */ function register(server) { const middleware = new AppDevMiddleware(); diff --git a/packages/xarc-app-dev/src/lib/webpack-dev-koa.ts b/packages/xarc-app-dev/src/lib/webpack-dev-koa.ts index 68e2526f1..03d81e96b 100644 --- a/packages/xarc-app-dev/src/lib/webpack-dev-koa.ts +++ b/packages/xarc-app-dev/src/lib/webpack-dev-koa.ts @@ -2,9 +2,10 @@ import { AppDevMiddleware } from "./app-dev-middleware"; /** * webpack dev middleware for app using Koa + * * @param app - koa app */ -export function koaMiddleware(app) { +export function koaMiddleware(app): void { const isProduction = process.env.NODE_ENV === "production"; if (!isProduction) { const middleware = new AppDevMiddleware(); diff --git a/packages/xarc-app-dev/src/lib/winston-logger.ts b/packages/xarc-app-dev/src/lib/winston-logger.ts index d660be0af..899bd17bb 100644 --- a/packages/xarc-app-dev/src/lib/winston-logger.ts +++ b/packages/xarc-app-dev/src/lib/winston-logger.ts @@ -2,13 +2,14 @@ /** * Make a logger using winston for logging development info + * * @param winston - winston * @param handlers - log handlers * @param options - log options * * @returns winston logger */ -export const makeWinstonLogger = (winston, handlers = true, options: any = {}) => { +export const makeWinstonLogger = (winston, handlers = true, options: any = {}): any => { return new winston.Logger({ exceptionHandlers: handlers && [ new winston.transports.Console({ diff --git a/packages/xarc-app-dev/test/spec/dev-admin/log-parser.spec.ts b/packages/xarc-app-dev/test/spec/dev-admin/log-parser.spec.ts index 5d4979bf9..154f4c038 100644 --- a/packages/xarc-app-dev/test/spec/dev-admin/log-parser.spec.ts +++ b/packages/xarc-app-dev/test/spec/dev-admin/log-parser.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-var-requires, prefer-arrow-callback */ const { parse } = require("../../../src/lib/dev-admin/log-parser"); import { describe, it } from "mocha"; diff --git a/packages/xarc-app-dev/test/spec/dev-admin/webpack-dev-relay.spec.ts b/packages/xarc-app-dev/test/spec/dev-admin/webpack-dev-relay.spec.ts index df6db2843..b0b20d01f 100644 --- a/packages/xarc-app-dev/test/spec/dev-admin/webpack-dev-relay.spec.ts +++ b/packages/xarc-app-dev/test/spec/dev-admin/webpack-dev-relay.spec.ts @@ -1,4 +1,4 @@ -/* eslint-disable @typescript-eslint/no-var-requires, callback-return */ +/* eslint-disable @typescript-eslint/no-var-requires, no-magic-numbers, callback-return, prefer-arrow-callback */ const { EventEmitter } = require("events"); import { WebpackDevRelay } from "../../../src/lib/dev-admin/webpack-dev-relay"; diff --git a/packages/xarc-app-dev/test/spec/extract.style.spec.ts b/packages/xarc-app-dev/test/spec/extract.style.spec.ts index bf66b0708..73a35221b 100644 --- a/packages/xarc-app-dev/test/spec/extract.style.spec.ts +++ b/packages/xarc-app-dev/test/spec/extract.style.spec.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-empty-function */ -/* eslint-disable @typescript-eslint/ban-ts-ignore, no-invalid-this, @typescript-eslint/class-name-casing */ +/* eslint-disable no-invalid-this, global-require, no-magic-numbers */ /* eslint-disable no-unused-expressions, max-nested-callbacks, no-unused-expressions */ import { getDevOptions } from "../../src/config/archetype"; diff --git a/packages/xarc-app-dev/test/spec/generate-config.spec.ts b/packages/xarc-app-dev/test/spec/generate-config.spec.ts index 8d56ea85c..2ed992f94 100644 --- a/packages/xarc-app-dev/test/spec/generate-config.spec.ts +++ b/packages/xarc-app-dev/test/spec/generate-config.spec.ts @@ -1,14 +1,13 @@ -/* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-empty-function */ -/* eslint-disable @typescript-eslint/ban-ts-ignore, no-invalid-this, @typescript-eslint/class-name-casing */ - -const mockRequire = require("mock-require"); -const Path = require("path"); - -const moduleName = "@xarc/webpack/lib/util/generate-config"; +/* eslint-disable global-require, no-magic-numbers, @typescript-eslint/no-empty-function */ +/* eslint-disable no-invalid-this, @typescript-eslint/no-var-requires */ +import mockRequire from "mock-require"; +import Path from "path"; import { before, beforeEach, describe, it, after, afterEach } from "mocha"; import { expect } from "chai"; +const moduleName = "@xarc/webpack/lib/util/generate-config"; + // TODO: should move to xarc-webpack describe.skip("generate-config", function() { this.timeout(10000); diff --git a/packages/xarc-app-dev/test/spec/webpack-dev-hapi.spec.ts b/packages/xarc-app-dev/test/spec/webpack-dev-hapi.spec.ts index 525f40678..f1e9d63ae 100644 --- a/packages/xarc-app-dev/test/spec/webpack-dev-hapi.spec.ts +++ b/packages/xarc-app-dev/test/spec/webpack-dev-hapi.spec.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-empty-function */ -/* eslint-disable @typescript-eslint/ban-ts-ignore, no-invalid-this, @typescript-eslint/class-name-casing */ +/* eslint-disable no-invalid-this, no-magic-numbers, prefer-arrow-callback */ const moduleName = "../../src/lib/index"; diff --git a/packages/xarc-app-dev/test/spec/webpack-dev-hapi17.spec.ts b/packages/xarc-app-dev/test/spec/webpack-dev-hapi17.spec.ts index ee08f01c6..9a6145f66 100644 --- a/packages/xarc-app-dev/test/spec/webpack-dev-hapi17.spec.ts +++ b/packages/xarc-app-dev/test/spec/webpack-dev-hapi17.spec.ts @@ -1,14 +1,13 @@ /* eslint-disable @typescript-eslint/no-var-requires, @typescript-eslint/no-empty-function */ -/* eslint-disable @typescript-eslint/ban-ts-ignore, no-invalid-this, @typescript-eslint/class-name-casing */ - -const { hapi17Plugin } = require("../../src/lib/webpack-dev-hapi17"); - -const moduleName = "../../src/lib/index"; +/* eslint-disable no-invalid-this, no-magic-numbers */ +import { hapi17Plugin } from "../../src/lib/webpack-dev-hapi17"; import { asyncVerify, runFinally } from "run-verify"; import { expect } from "chai"; import { before, beforeEach, describe, it, after, afterEach } from "mocha"; -const electrodeServer = require("electrode-server"); +import electrodeServer from "electrode-server"; + +const moduleName = "../../src/lib/index"; describe("dev-hapi 17", function() { this.timeout(10000); @@ -32,7 +31,7 @@ describe("dev-hapi 17", function() { server.route({ method: "GET", path: "/test", - handler: (request, h) => { + handler: (request, _h) => { data.request = request; data.called = true; return "DONE"; diff --git a/packages/xarc-app-dev/test/test-admin-http.ts b/packages/xarc-app-dev/test/test-admin-http.ts index b94957c6a..4ecae52ba 100644 --- a/packages/xarc-app-dev/test/test-admin-http.ts +++ b/packages/xarc-app-dev/test/test-admin-http.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-magic-numbers */ /** * A simple test to run a admin HTTP standalone with a mock logging generator * for testing the log viewer in streaming mode @@ -8,7 +9,7 @@ import { AdminHttp } from "../src/lib/dev-admin/admin-http"; const logs = []; const ah = new AdminHttp({ - getLogs(app) { + getLogs(_app) { return logs; } }); @@ -17,7 +18,7 @@ let lineId = 1; let now; let tx = 0; -const i1 = setInterval(() => { +setInterval(() => { if (tx === 0) { now = Date.now(); } @@ -37,7 +38,7 @@ const i1 = setInterval(() => { } }, 100); -const i2 = setInterval(() => { +setInterval(() => { ah.sendLogsToStreamClients(); }, 250); diff --git a/packages/xarc-app/.eslintrc.js b/packages/xarc-app/.eslintrc.js new file mode 100644 index 000000000..bbb4f0e07 --- /dev/null +++ b/packages/xarc-app/.eslintrc.js @@ -0,0 +1,4 @@ +const { eslintRcNodeTypeScript } = require("@xarc/module-dev"); +module.exports = { + extends: eslintRcNodeTypeScript +}; diff --git a/packages/xarc-app/src/logger.ts b/packages/xarc-app/src/logger.ts index 4460b3575..5085badaf 100644 --- a/packages/xarc-app/src/logger.ts +++ b/packages/xarc-app/src/logger.ts @@ -1,4 +1,4 @@ -/* eslint-disable global-require */ +/* eslint-disable global-require, @typescript-eslint/no-var-requires */ export const logger = { _logger: undefined, diff --git a/packages/xarc-app/src/support.ts b/packages/xarc-app/src/support.ts index 6ed6369db..397fc891d 100644 --- a/packages/xarc-app/src/support.ts +++ b/packages/xarc-app/src/support.ts @@ -69,7 +69,7 @@ export type XarcCdnAssetsMappingOptions = { * 2. config/assets.json * */ - mapping?: object; + mapping?: Record; /** * Only setup in production mode (NODE_ENV === "production") */ diff --git a/packages/xarc-subapp/src/browser/xarc-subapp-v2.ts b/packages/xarc-subapp/src/browser/xarc-subapp-v2.ts index 10f41d7c5..b02b14945 100644 --- a/packages/xarc-subapp/src/browser/xarc-subapp-v2.ts +++ b/packages/xarc-subapp/src/browser/xarc-subapp-v2.ts @@ -14,8 +14,6 @@ import { _xarcV2RunTimeInfo } from "../subapp/index"; -const MAX_CALL_DEPTH = 15; - // // all console.log and console.debug in this file will be optimized out for production // Do not use xarcV2.debug in this file. @@ -44,6 +42,8 @@ export function xarcV2Client( // }; + const MAX_CALL_DEPTH = 15; + const version = 2000000; // ###.###.### major.minor.patch console.log("xarcV2 version", version);