From 45bcbf9eb192a212daba0ef9bf379782e4763379 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Thu, 22 Feb 2018 19:25:02 +0000 Subject: [PATCH 1/7] Install eslint & standard --- services/web/npm-shrinkwrap.json | 715 ++++++++++++++++++++++++++++++- services/web/package.json | 7 + 2 files changed, 713 insertions(+), 9 deletions(-) diff --git a/services/web/npm-shrinkwrap.json b/services/web/npm-shrinkwrap.json index 9f0417cb11..9709537a5b 100644 --- a/services/web/npm-shrinkwrap.json +++ b/services/web/npm-shrinkwrap.json @@ -48,6 +48,12 @@ } } }, + "acorn-jsx": { + "version": "3.0.1", + "from": "acorn-jsx@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "dev": true + }, "acorn-node": { "version": "1.3.0", "from": "acorn-node@>=1.2.0 <2.0.0", @@ -163,6 +169,12 @@ } } }, + "ansi-escapes": { + "version": "3.0.0", + "from": "ansi-escapes@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz", + "dev": true + }, "ansi-html": { "version": "0.0.7", "from": "ansi-html@0.0.7", @@ -325,6 +337,12 @@ "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", "dev": true }, + "arrify": { + "version": "1.0.1", + "from": "arrify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "dev": true + }, "asap": { "version": "2.0.6", "from": "asap@>=2.0.3 <2.1.0", @@ -1373,12 +1391,24 @@ "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", "dev": true }, + "caller-path": { + "version": "0.1.0", + "from": "caller-path@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "dev": true + }, "callsite": { "version": "1.0.0", "from": "callsite@1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", "dev": true }, + "callsites": { + "version": "0.2.0", + "from": "callsites@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "dev": true + }, "camelcase": { "version": "1.2.1", "from": "camelcase@>=1.0.2 <2.0.0", @@ -1461,6 +1491,12 @@ "from": "character-parser@1.2.0", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.0.tgz" }, + "chardet": { + "version": "0.4.2", + "from": "chardet@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "dev": true + }, "check-error": { "version": "1.0.2", "from": "check-error@>=1.0.1 <2.0.0", @@ -1593,6 +1629,18 @@ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", "dev": true }, + "cli-cursor": { + "version": "2.1.0", + "from": "cli-cursor@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "dev": true + }, + "cli-width": { + "version": "2.2.0", + "from": "cli-width@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "dev": true + }, "cliff": { "version": "0.1.10", "from": "cliff@>=0.1.9 <0.2.0", @@ -1872,6 +1920,12 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "dev": true }, + "contains-path": { + "version": "0.1.0", + "from": "contains-path@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "dev": true + }, "content-disposition": { "version": "0.5.0", "from": "content-disposition@0.5.0", @@ -2168,8 +2222,7 @@ "version": "0.1.3", "from": "deep-is@>=0.1.3 <0.2.0", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "dev": true, - "optional": true + "dev": true }, "define-properties": { "version": "1.1.2", @@ -2362,6 +2415,12 @@ "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", "dev": true }, + "doctrine": { + "version": "2.1.0", + "from": "doctrine@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "dev": true + }, "doctypes": { "version": "1.1.0", "from": "doctypes@>=1.1.0 <2.0.0", @@ -2723,11 +2782,301 @@ "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", "dev": true }, + "eslint": { + "version": "4.18.1", + "from": "eslint@>=4.18.1 <5.0.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.18.1.tgz", + "dev": true, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "from": "ansi-regex@^3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "from": "ansi-styles@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "from": "argparse@>=1.0.7 <2.0.0", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "dev": true + }, + "chalk": { + "version": "2.3.1", + "from": "chalk@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "dev": true + }, + "concat-stream": { + "version": "1.6.0", + "from": "concat-stream@>=1.6.0 <2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "dev": true + }, + "debug": { + "version": "3.1.0", + "from": "debug@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "dev": true + }, + "esprima": { + "version": "4.0.0", + "from": "esprima@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "dev": true + }, + "glob": { + "version": "7.1.2", + "from": "glob@>=7.1.2 <8.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "dev": true + }, + "globals": { + "version": "11.3.0", + "from": "globals@>=11.0.1 <12.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.3.0.tgz", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "from": "has-flag@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "dev": true + }, + "js-yaml": { + "version": "3.10.0", + "from": "js-yaml@>=3.9.1 <4.0.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.10.0.tgz", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "from": "process-nextick-args@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "dev": true + }, + "readable-stream": { + "version": "2.3.4", + "from": "readable-stream@>=2.2.2 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.4.tgz", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "from": "string_decoder@>=1.0.3 <1.1.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "from": "strip-ansi@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "dev": true + }, + "supports-color": { + "version": "5.2.0", + "from": "supports-color@>=5.2.0 <6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "dev": true + } + } + }, + "eslint-config-standard": { + "version": "11.0.0", + "from": "eslint-config-standard@>=11.0.0 <12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-11.0.0.tgz", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.2", + "from": "eslint-import-resolver-node@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.9", + "from": "debug@>=2.6.9 <3.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "dev": true + } + } + }, + "eslint-loader": { + "version": "1.9.0", + "from": "eslint-loader@>=1.9.0 <2.0.0", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-1.9.0.tgz", + "dev": true, + "dependencies": { + "glob": { + "version": "7.1.2", + "from": "glob@^7.0.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@^3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "from": "rimraf@^2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "dev": true + } + } + }, + "eslint-module-utils": { + "version": "2.1.1", + "from": "eslint-module-utils@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.1.1.tgz", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.9", + "from": "debug@>=2.6.8 <3.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "from": "find-up@^1.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "from": "path-exists@^2.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "dev": true + }, + "pkg-dir": { + "version": "1.0.0", + "from": "pkg-dir@^1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.9.0", + "from": "eslint-plugin-import@>=2.9.0 <3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.9.0.tgz", + "dev": true, + "dependencies": { + "debug": { + "version": "2.6.9", + "from": "debug@>=2.6.8 <3.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "dev": true + }, + "doctrine": { + "version": "1.5.0", + "from": "doctrine@1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "from": "isarray@^1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@^3.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "6.0.1", + "from": "eslint-plugin-node@>=6.0.0 <7.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-6.0.1.tgz", + "dev": true, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "from": "minimatch@^3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + }, + "semver": { + "version": "5.5.0", + "from": "semver@>=5.4.1 <6.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "dev": true + } + } + }, + "eslint-plugin-promise": { + "version": "3.6.0", + "from": "eslint-plugin-promise@>=3.6.0 <4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.6.0.tgz", + "dev": true + }, + "eslint-plugin-standard": { + "version": "3.0.1", + "from": "eslint-plugin-standard@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", + "dev": true + }, + "eslint-scope": { + "version": "3.7.1", + "from": "eslint-scope@>=3.7.1 <4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.0.0", + "from": "eslint-visitor-keys@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "dev": true + }, + "espree": { + "version": "3.5.3", + "from": "espree@>=3.5.2 <4.0.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.3.tgz", + "dev": true, + "dependencies": { + "acorn": { + "version": "5.4.1", + "from": "acorn@>=5.4.0 <6.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.4.1.tgz", + "dev": true + } + } + }, "esprima": { "version": "1.0.4", "from": "esprima@>=1.0.2 <1.1.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz" }, + "esquery": { + "version": "1.0.0", + "from": "esquery@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "dev": true + }, "esrecurse": { "version": "4.2.0", "from": "esrecurse@>=4.1.0 <5.0.0", @@ -3031,6 +3380,20 @@ "from": "extendible@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/extendible/-/extendible-0.1.1.tgz" }, + "external-editor": { + "version": "2.1.0", + "from": "external-editor@>=2.0.4 <3.0.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.1.0.tgz", + "dev": true, + "dependencies": { + "iconv-lite": { + "version": "0.4.19", + "from": "iconv-lite@>=0.4.17 <0.5.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "dev": true + } + } + }, "extglob": { "version": "2.0.4", "from": "extglob@>=2.0.2 <3.0.0", @@ -3067,8 +3430,7 @@ "version": "2.0.6", "from": "fast-levenshtein@>=2.0.4 <2.1.0", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "dev": true, - "optional": true + "dev": true }, "faye-websocket": { "version": "0.10.0", @@ -3081,6 +3443,18 @@ "from": "fd-slicer@>=1.0.1 <1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz" }, + "figures": { + "version": "2.0.0", + "from": "figures@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "dev": true + }, + "file-entry-cache": { + "version": "2.0.0", + "from": "file-entry-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "dev": true + }, "file-uri-to-path": { "version": "1.0.0", "from": "file-uri-to-path@>=1.0.0 <2.0.0", @@ -3153,6 +3527,56 @@ } } }, + "flat-cache": { + "version": "1.3.0", + "from": "flat-cache@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", + "dev": true, + "dependencies": { + "circular-json": { + "version": "0.3.3", + "from": "circular-json@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "dev": true + }, + "del": { + "version": "2.2.2", + "from": "del@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "dev": true + }, + "glob": { + "version": "7.1.2", + "from": "glob@^7.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "dev": true + }, + "globby": { + "version": "5.0.0", + "from": "globby@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "from": "minimatch@^3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "dev": true + }, + "pify": { + "version": "2.3.0", + "from": "pify@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "from": "rimraf@>=2.2.8 <3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "dev": true + } + } + }, "flatiron": { "version": "0.4.3", "from": "flatiron@>=0.4.2 <0.5.0", @@ -4097,6 +4521,12 @@ "from": "function-bind@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" }, + "functional-red-black-tree": { + "version": "1.0.1", + "from": "functional-red-black-tree@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "dev": true + }, "gauge": { "version": "2.7.4", "from": "gauge@>=2.7.3 <2.8.0", @@ -5152,6 +5582,12 @@ "from": "ienoopen@1.0.0", "resolved": "https://registry.npmjs.org/ienoopen/-/ienoopen-1.0.0.tgz" }, + "ignore": { + "version": "3.3.7", + "from": "ignore@>=3.3.3 <4.0.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz", + "dev": true + }, "ignore-by-default": { "version": "1.0.1", "from": "ignore-by-default@>=1.0.1 <2.0.0", @@ -5229,6 +5665,62 @@ } } }, + "inquirer": { + "version": "3.3.0", + "from": "inquirer@>=3.0.6 <4.0.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "dev": true, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "from": "ansi-regex@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "from": "ansi-styles@^3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "dev": true + }, + "chalk": { + "version": "2.3.1", + "from": "chalk@^2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "from": "has-flag@^3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "from": "is-fullwidth-code-point@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "from": "string-width@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "from": "strip-ansi@^4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "dev": true + }, + "supports-color": { + "version": "5.2.0", + "from": "supports-color@^5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "dev": true + } + } + }, "insert-module-globals": { "version": "7.0.1", "from": "insert-module-globals@>=7.0.0 <8.0.0", @@ -5526,6 +6018,12 @@ "from": "is-regex@>=1.0.3 <2.0.0", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz" }, + "is-resolvable": { + "version": "1.1.0", + "from": "is-resolvable@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "dev": true + }, "is-retry-allowed": { "version": "1.1.0", "from": "is-retry-allowed@>=1.0.0 <2.0.0", @@ -5660,6 +6158,12 @@ "from": "json-stable-stringify@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "from": "json-stable-stringify-without-jsonify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "from": "json-stringify-safe@>=5.0.1 <5.1.0", @@ -6284,8 +6788,7 @@ "version": "0.3.0", "from": "levn@>=0.3.0 <0.4.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "dev": true, - "optional": true + "dev": true }, "lexical-scope": { "version": "1.2.0", @@ -6335,6 +6838,38 @@ } } }, + "loader-fs-cache": { + "version": "1.0.1", + "from": "loader-fs-cache@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.1.tgz", + "dev": true, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "from": "find-cache-dir@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "from": "find-up@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "dev": true + }, + "path-exists": { + "version": "2.1.0", + "from": "path-exists@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "dev": true + }, + "pkg-dir": { + "version": "1.0.0", + "from": "pkg-dir@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "dev": true + } + } + }, "loader-runner": { "version": "2.3.0", "from": "loader-runner@>=2.3.0 <3.0.0", @@ -7731,6 +8266,12 @@ } } }, + "natural-compare": { + "version": "1.4.0", + "from": "natural-compare@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "dev": true + }, "nconf": { "version": "0.6.9", "from": "nconf@>=0.6.9 <0.7.0", @@ -8089,6 +8630,12 @@ } } }, + "object-hash": { + "version": "1.2.0", + "from": "object-hash@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.2.0.tgz", + "dev": true + }, "object-keys": { "version": "1.0.11", "from": "object-keys@>=1.0.8 <2.0.0", @@ -8287,6 +8834,12 @@ } } }, + "onetime": { + "version": "2.0.1", + "from": "onetime@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "dev": true + }, "opn": { "version": "5.2.0", "from": "opn@>=5.1.0 <6.0.0", @@ -8303,14 +8856,12 @@ "from": "optionator@>=0.8.1 <0.9.0", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "dev": true, - "optional": true, "dependencies": { "wordwrap": { "version": "1.0.0", "from": "wordwrap@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "dev": true, - "optional": true + "dev": true } } }, @@ -8709,6 +9260,12 @@ "from": "platform@1.3.5", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.5.tgz" }, + "pluralize": { + "version": "7.0.0", + "from": "pluralize@>=7.0.0 <8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "dev": true + }, "pooling": { "version": "0.4.6", "from": "pooling@0.4.6", @@ -8812,6 +9369,12 @@ "from": "process-nextick-args@>=1.0.6 <1.1.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz" }, + "progress": { + "version": "2.0.0", + "from": "progress@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", + "dev": true + }, "promise": { "version": "2.0.0", "from": "promise@>=2.0.0 <2.1.0", @@ -9416,6 +9979,20 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "dev": true }, + "require-uncached": { + "version": "1.0.3", + "from": "require-uncached@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "dev": true, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "from": "resolve-from@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "dev": true + } + } + }, "requirejs": { "version": "2.1.22", "from": "https://registry.npmjs.org/requirejs/-/requirejs-2.1.22.tgz", @@ -9457,6 +10034,12 @@ "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "dev": true }, + "restore-cursor": { + "version": "2.0.0", + "from": "restore-cursor@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "dev": true + }, "retry-as-promised": { "version": "2.3.2", "from": "retry-as-promised@>=2.0.0 <3.0.0", @@ -9506,6 +10089,32 @@ "from": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#master", "resolved": "git+https://github.com/ShaneKilkelly/rolling-rate-limiter.git#8a1a2cd8aaf9cd1a75cc81317b7f261157be2149" }, + "run-async": { + "version": "2.3.0", + "from": "run-async@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "dev": true, + "dependencies": { + "is-promise": { + "version": "2.1.0", + "from": "is-promise@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "dev": true + } + } + }, + "rx-lite": { + "version": "4.0.8", + "from": "rx-lite@>=4.0.8 <5.0.0", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "from": "rx-lite-aggregates@>=4.0.8 <5.0.0", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "dev": true + }, "safe-buffer": { "version": "5.1.1", "from": "safe-buffer@>=5.1.1 <5.2.0", @@ -9893,6 +10502,20 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "dev": true }, + "slice-ansi": { + "version": "1.0.0", + "from": "slice-ansi@1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "from": "is-fullwidth-code-point@^2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "dev": true + } + } + }, "sliced": { "version": "1.0.1", "from": "sliced@1.0.1", @@ -10216,6 +10839,12 @@ } } }, + "sprintf-js": { + "version": "1.0.3", + "from": "sprintf-js@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "dev": true + }, "srcset": { "version": "1.0.0", "from": "srcset@>=1.0.0 <2.0.0", @@ -10530,6 +11159,62 @@ "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", "dev": true }, + "table": { + "version": "4.0.2", + "from": "table@>=4.0.1 <5.0.0", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "dev": true, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "from": "ansi-regex@^3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "dev": true + }, + "ansi-styles": { + "version": "3.2.0", + "from": "ansi-styles@^3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "dev": true + }, + "chalk": { + "version": "2.3.1", + "from": "chalk@^2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.1.tgz", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "from": "has-flag@^3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "from": "is-fullwidth-code-point@^2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "from": "string-width@^2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "from": "strip-ansi@^4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "dev": true + }, + "supports-color": { + "version": "5.2.0", + "from": "supports-color@^5.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.2.0.tgz", + "dev": true + } + } + }, "tapable": { "version": "0.2.8", "from": "tapable@>=0.2.7 <0.3.0", @@ -10614,6 +11299,12 @@ "from": "text-encoding@>=0.6.4 <0.7.0", "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz" }, + "text-table": { + "version": "0.2.0", + "from": "text-table@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "dev": true + }, "through": { "version": "2.3.8", "from": "through@>=2.3.1 <2.4.0", @@ -12186,6 +12877,12 @@ "from": "wrappy@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" }, + "write": { + "version": "0.2.1", + "from": "write@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "dev": true + }, "write-file-atomic": { "version": "2.3.0", "from": "write-file-atomic@>=2.0.0 <3.0.0", diff --git a/services/web/package.json b/services/web/package.json index 336c526749..ab847d48c2 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -98,6 +98,13 @@ "clean-css": "^3.4.18", "coffee-script": "^1.7.1", "es6-promise": "^4.0.5", + "eslint": "^4.18.1", + "eslint-config-standard": "^11.0.0", + "eslint-loader": "^1.9.0", + "eslint-plugin-import": "^2.9.0", + "eslint-plugin-node": "^6.0.0", + "eslint-plugin-promise": "^3.6.0", + "eslint-plugin-standard": "^3.0.1", "grunt": "0.4.5", "grunt-available-tasks": "0.4.1", "grunt-bunyan": "0.5.0", From 24ddb46b95b8e644acbd5ea7e6af2d5a6252a87d Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Thu, 22 Feb 2018 19:25:26 +0000 Subject: [PATCH 2/7] Configure eslint --- services/web/.eslintignore | 5 +++++ services/web/.eslintrc | 3 +++ 2 files changed, 8 insertions(+) create mode 100644 services/web/.eslintignore create mode 100644 services/web/.eslintrc diff --git a/services/web/.eslintignore b/services/web/.eslintignore new file mode 100644 index 0000000000..512476ae7a --- /dev/null +++ b/services/web/.eslintignore @@ -0,0 +1,5 @@ +app/js +modules +public/js +public/minjs +test/**/js \ No newline at end of file diff --git a/services/web/.eslintrc b/services/web/.eslintrc new file mode 100644 index 0000000000..f119f23279 --- /dev/null +++ b/services/web/.eslintrc @@ -0,0 +1,3 @@ +{ + "extends": ["standard"] +} \ No newline at end of file From 61a60c04a6cb100cc5dcbe85aa10c724a77016d3 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Thu, 22 Feb 2018 19:27:25 +0000 Subject: [PATCH 3/7] Webpack uses eslint on compile --- services/web/webpack.config.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/services/web/webpack.config.js b/services/web/webpack.config.js index b9474cffac..3f7c199b07 100644 --- a/services/web/webpack.config.js +++ b/services/web/webpack.config.js @@ -31,10 +31,16 @@ module.exports = { // Define how file types are handled by webpack module: { rules: [{ - // Pass application JS files through babel-loader, compiling to ES5 - test: /\.js$/, // Only compile .js files + // Ensure eslint is run before compilation with babel + enforce: 'pre', + test: /\.js$/, + // Only compile application files (dependencies are in ES5 already) + exclude: /node_modules/, + loader: 'eslint-loader' + }, { + // Pass application JS files through babel-loader, compiling to ES5 + test: /\.js$/, // Only compile application files (dependencies are in ES5 already) - // include: [path.join(__dirname, './public/frontend')], exclude: /node_modules/, use: [{ loader: 'babel-loader', From 94b7cdcae08ba7040d4bd4fe31da7b90d8cd27b1 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Thu, 22 Feb 2018 19:27:30 +0000 Subject: [PATCH 4/7] Fix linting --- services/web/public/es/rich-text.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/web/public/es/rich-text.js b/services/web/public/es/rich-text.js index 14399c1663..f87cb46339 100644 --- a/services/web/public/es/rich-text.js +++ b/services/web/public/es/rich-text.js @@ -1,10 +1,10 @@ import CodeMirror, { Doc } from 'codemirror' -export function init(rootEl) { +export function init (rootEl) { return CodeMirror(rootEl) } -export function openDoc(cm, content) { +export function openDoc (cm, content) { const newDoc = Doc(content) cm.swapDoc(newDoc) return newDoc From 3b3f967198130536143a99f282fe38b7cb090a71 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Fri, 23 Feb 2018 11:31:47 +0000 Subject: [PATCH 5/7] Ignore some top level files --- services/web/.eslintignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/services/web/.eslintignore b/services/web/.eslintignore index 512476ae7a..e58055f406 100644 --- a/services/web/.eslintignore +++ b/services/web/.eslintignore @@ -2,4 +2,7 @@ app/js modules public/js public/minjs -test/**/js \ No newline at end of file +test/**/js +app.js +webpack.config.* +karma.conf.js \ No newline at end of file From 325f91ed2ea185b3b42d819f73184bec533f4c87 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Fri, 23 Feb 2018 11:41:21 +0000 Subject: [PATCH 6/7] Add scripts for running linting --- services/web/Makefile | 3 +++ services/web/package.json | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/services/web/Makefile b/services/web/Makefile index 76d8891dd7..d72459c4b7 100644 --- a/services/web/Makefile +++ b/services/web/Makefile @@ -222,6 +222,9 @@ ci: MOCHA_ARGS="--reporter tap" \ $(MAKE) test +lint: + npm -q run lint + .PHONY: all add install update test test_unit test_frontend test_acceptance \ test_acceptance_start_service test_acceptance_stop_service \ diff --git a/services/web/package.json b/services/web/package.json index ab847d48c2..3a5609f072 100644 --- a/services/web/package.json +++ b/services/web/package.json @@ -20,7 +20,8 @@ "start": "npm -q run compile && node app.js", "nodemon": "nodemon --config nodemon.json", "nodemon:frontend": "nodemon --config nodemon.frontend.json", - "webpack": "webpack-dev-server --config webpack.config.dev.js" + "webpack": "webpack-dev-server --config webpack.config.dev.js", + "lint": "eslint -f unix ." }, "dependencies": { "archiver": "0.9.0", From cba07f79eeebf53ad46b9ccd67c4b6245db23329 Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Fri, 23 Feb 2018 11:44:43 +0000 Subject: [PATCH 7/7] Run linting on CI --- services/web/Jenkinsfile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/services/web/Jenkinsfile b/services/web/Jenkinsfile index 7734de259a..7953aa0dbc 100644 --- a/services/web/Jenkinsfile +++ b/services/web/Jenkinsfile @@ -54,6 +54,18 @@ pipeline { sh 'node_modules/.bin/grunt version' } } + + stage('Lint') { + agent { + docker { + image 'node:6.9.5' + reuseNode true + } + } + steps { + sh 'make --no-print-directory lint' + } + } stage('Unit Test') { agent {