From 079be4ef071cf9cefed0becba6dc5f5e26764577 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 00:04:35 +0900 Subject: [PATCH 01/14] update manifest_version, background --- browser/manifest.json | 43 +++++++++++++++++-------------------------- 1 file changed, 17 insertions(+), 26 deletions(-) diff --git a/browser/manifest.json b/browser/manifest.json index 54b5809..c537443 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -1,6 +1,7 @@ { "background": { - "page": "background.html" + "service_worker": "./build/background.js", + "type": "module" }, "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'; connect-src * data: blob:;", "options_ui": { @@ -9,48 +10,38 @@ "description": "Unofficial browser extension for Scrapbox", "icons": { "128": "icon.png", - "48" : "icon.png", - "16" : "icon.png" + "48": "icon.png", + "16": "icon.png" }, - "manifest_version": 2, + "manifest_version": 3, "name": "ScrapScripts", "content_scripts": [ { - "matches": [""], - "js": [ - "build/bundle.js" - ], - "run_at": "document_start" + "matches": [""], + "js": ["build/bundle.js"], + "run_at": "document_start" }, { "matches": ["*://scrapbox.io/*", "http://localhost/*"], - "css": [ - "content_scripts_css/scrapbox-io/main.css" - ], - "js": [ - "build/scrapbox-io.js" - ], + "css": ["content_scripts_css/scrapbox-io/main.css"], + "js": ["build/scrapbox-io.js"], "run_at": "document_end" }, { "matches": ["*://gyazo.com/*"], - "css": [ - "content_scripts_css/scrapbox-io/main.css" - ], - "js": [ - "build/gyazo-com.js" - ], + "css": ["content_scripts_css/scrapbox-io/main.css"], + "js": ["build/gyazo-com.js"], "run_at": "document_end" } ], "permissions": [ - "contextMenus", - "tabs", - "activeTab", - "clipboardRead", - "" + "contextMenus", + "tabs", + "activeTab", + "clipboardRead", + "" ], "version": "1.2.2" From 4eb25bcde94fd79ae1e4d2fe604dce3b95afa818 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 00:17:58 +0900 Subject: [PATCH 02/14] update content_security_policy --- browser/manifest.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/browser/manifest.json b/browser/manifest.json index c537443..19f5fee 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -3,7 +3,9 @@ "service_worker": "./build/background.js", "type": "module" }, - "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'; connect-src * data: blob:;", + "content_security_policy": { + "extension_pages": "script-src 'self'; object-src 'self'; connect-src * data: blob:;" + }, "options_ui": { "page": "options.html" }, From 24dc0d65cab6af5986febdca4f1f38cb72669d64 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 00:20:16 +0900 Subject: [PATCH 03/14] remove "" from permissions --- browser/manifest.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/browser/manifest.json b/browser/manifest.json index 19f5fee..c37bd1e 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -38,13 +38,7 @@ } ], - "permissions": [ - "contextMenus", - "tabs", - "activeTab", - "clipboardRead", - "" - ], + "permissions": ["contextMenus", "tabs", "activeTab", "clipboardRead"], "version": "1.2.2" } From 0d842fbf86224eee33f4efe9fd7d2b64e15028c8 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 00:28:35 +0900 Subject: [PATCH 04/14] =?UTF-8?q?serviceworker.js=E3=82=92=E6=9B=B8?= =?UTF-8?q?=E3=81=84=E3=81=A6=E3=81=84=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- browser/manifest.json | 2 +- client/serviceworker.js | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 client/serviceworker.js diff --git a/browser/manifest.json b/browser/manifest.json index c37bd1e..4e97a46 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -1,6 +1,6 @@ { "background": { - "service_worker": "./build/background.js", + "service_worker": "./build/serviceworker.js", "type": "module" }, "content_security_policy": { diff --git a/client/serviceworker.js b/client/serviceworker.js new file mode 100644 index 0000000..e69de29 From 7c1aadee21b59c4ffc8304a9b2e95fa72a722612 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 00:43:20 +0900 Subject: [PATCH 05/14] uninstall standard --- package-lock.json | 2242 +-------------------------------------------- package.json | 3 +- 2 files changed, 18 insertions(+), 2227 deletions(-) diff --git a/package-lock.json b/package-lock.json index f44aafe..8a1574d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,8 +18,7 @@ "watchify": "^3.9.0" }, "devDependencies": { - "ava": "^0.20.0", - "standard": "^10.0.2" + "ava": "^0.20.0" } }, "node_modules/@ava/babel-plugin-throws-helper": { @@ -130,27 +129,6 @@ "acorn": "^5.0.0" } }, - "node_modules/acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "dependencies": { - "acorn": "^3.0.4" - } - }, - "node_modules/acorn-jsx/node_modules/acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/acorn-node": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.5.2.tgz", @@ -161,34 +139,6 @@ "xtend": "^4.0.1" } }, - "node_modules/ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "dependencies": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - } - }, - "node_modules/ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true, - "peerDependencies": { - "ajv": ">=4.10.0" - } - }, - "node_modules/ajv/node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "dependencies": { - "jsonify": "~0.0.0" - } - }, "node_modules/ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -331,16 +281,6 @@ "node": ">=0.10.0" } }, - "node_modules/array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1575,27 +1515,6 @@ "node": ">=0.10.0" } }, - "node_modules/caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "dependencies": { - "callsites": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", @@ -1676,13 +1595,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "dev": true - }, "node_modules/clean-stack": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", @@ -1744,22 +1656,6 @@ "node": ">=4" } }, - "node_modules/cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true, - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, "node_modules/co-with-promise": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", @@ -1806,15 +1702,6 @@ "node": ">=4" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", @@ -1932,15 +1819,6 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, - "node_modules/contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/convert-source-map": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", @@ -2082,15 +1960,6 @@ "node": ">=0.10.0" } }, - "node_modules/d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "dependencies": { - "es5-ext": "^0.10.9" - } - }, "node_modules/date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -2113,15 +1982,6 @@ "ms": "2.0.0" } }, - "node_modules/debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -2146,12 +2006,6 @@ "node": ">=4.0.0" } }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, "node_modules/define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -2169,64 +2023,6 @@ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, - "node_modules/deglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", - "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", - "dev": true, - "dependencies": { - "find-root": "^1.0.0", - "glob": "^7.0.5", - "ignore": "^3.0.9", - "pkg-config": "^1.1.0", - "run-parallel": "^1.1.2", - "uniq": "^1.0.1" - } - }, - "node_modules/del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "dependencies": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "dependencies": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/del/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/deps-sort": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", @@ -2292,18 +2088,6 @@ "randombytes": "^2.0.0" } }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -2413,83 +2197,12 @@ "node": ">= 0.4" } }, - "node_modules/es5-ext": { - "version": "0.10.45", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", - "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", - "dev": true, - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2498,253 +2211,6 @@ "node": ">=0.8.0" } }, - "node_modules/escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "dependencies": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "dependencies": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", - "dev": true, - "peerDependencies": { - "eslint": ">=3.19.0", - "eslint-plugin-import": ">=2.2.0", - "eslint-plugin-node": ">=4.2.2", - "eslint-plugin-promise": ">=3.5.0", - "eslint-plugin-standard": ">=3.0.0" - } - }, - "node_modules/eslint-config-standard-jsx": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", - "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", - "dev": true, - "peerDependencies": { - "eslint": ">=3.19.0", - "eslint-plugin-react": ">=6.10.3" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "dev": true, - "dependencies": { - "debug": "^2.2.0", - "object-assign": "^4.0.1", - "resolve": "^1.1.6" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", - "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", - "dev": true, - "dependencies": { - "debug": "^2.6.8", - "pkg-dir": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", - "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", - "dev": true, - "dependencies": { - "builtin-modules": "^1.1.1", - "contains-path": "^0.1.0", - "debug": "^2.2.0", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.2.0", - "eslint-module-utils": "^2.0.0", - "has": "^1.0.1", - "lodash.cond": "^4.3.0", - "minimatch": "^3.0.3", - "pkg-up": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "2.x - 3.x" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz", - "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==", - "dev": true, - "dependencies": { - "ignore": "^3.0.11", - "minimatch": "^3.0.2", - "object-assign": "^4.0.1", - "resolve": "^1.1.7", - "semver": "5.3.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": ">=3.1.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/eslint-plugin-promise": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", - "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "dependencies": { - "array.prototype.find": "^2.0.1", - "doctrine": "^1.2.2", - "has": "^1.0.1", - "jsx-ast-utils": "^1.3.4", - "object.assign": "^4.0.4" - }, - "engines": { - "node": ">=0.10" - }, - "peerDependencies": { - "eslint": "^2.0.0 || ^3.0.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "dependencies": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", - "dev": true, - "peerDependencies": { - "eslint": ">=3.19.0" - } - }, - "node_modules/eslint/node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "dependencies": { - "jsonify": "~0.0.0" - } - }, - "node_modules/eslint/node_modules/user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/espower-location-detector": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", @@ -2757,19 +2223,6 @@ "xtend": "^4.0.0" } }, - "node_modules/espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "dependencies": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", @@ -2792,30 +2245,6 @@ "core-js": "^2.0.0" } }, - "node_modules/esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "dependencies": { - "estraverse": "^4.0.0" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "dependencies": { - "estraverse": "^4.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, "node_modules/estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", @@ -2833,16 +2262,6 @@ "node": ">=0.10.0" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "node_modules/event-stream": { "version": "3.3.4", "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -2903,15 +2322,6 @@ "which": "^1.2.9" } }, - "node_modules/exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -2951,12 +2361,6 @@ "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", "dev": true }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, "node_modules/figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -2969,19 +2373,6 @@ "node": ">=4" } }, - "node_modules/file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "dependencies": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -3019,12 +2410,6 @@ "node": ">=0.10.0" } }, - "node_modules/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, "node_modules/find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -3037,21 +2422,6 @@ "node": ">=4" } }, - "node_modules/flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", - "dev": true, - "dependencies": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/fn-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fn-name/-/fn-name-2.0.1.tgz", @@ -3747,21 +3117,6 @@ "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", "dev": true }, - "node_modules/generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "node_modules/generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "dependencies": { - "is-property": "^1.0.0" - } - }, "node_modules/get-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", @@ -3944,15 +3299,6 @@ "node": ">=4" } }, - "node_modules/has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/has-yarn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", @@ -4065,12 +3411,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" }, - "node_modules/ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, "node_modules/ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -4176,109 +3516,6 @@ "source-map": "~0.5.3" } }, - "node_modules/inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "dependencies": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" - } - }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "dependencies": { - "restore-cursor": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inquirer/node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inquirer/node_modules/onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inquirer/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/insert-module-globals": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", @@ -4299,12 +3536,6 @@ "insert-module-globals": "bin/cmd.js" } }, - "node_modules/interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -4469,30 +3700,11 @@ "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", "dev": true, "dependencies": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "node_modules/is-my-json-valid": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", - "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", - "dev": true, - "dependencies": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/is-npm": { @@ -4536,27 +3748,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "dependencies": { - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -4600,12 +3791,6 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "node_modules/is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -4626,12 +3811,6 @@ "node": ">= 0.4" } }, - "node_modules/is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "node_modules/is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -4768,15 +3947,6 @@ "node >= 0.2.0" ] }, - "node_modules/jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/JSONStream": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.3.tgz", @@ -4792,15 +3962,6 @@ "node": "*" } }, - "node_modules/jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -4851,19 +4012,6 @@ "node": ">=4" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -4908,12 +4056,6 @@ "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", "dev": true }, - "node_modules/lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -5357,30 +4499,12 @@ "node": ">=0.10.0" } }, - "node_modules/mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, "node_modules/nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "optional": true }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "node_modules/nice-try": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", @@ -5503,21 +4627,6 @@ "node": ">= 0.4" } }, - "node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -5584,23 +4693,6 @@ "node": ">=0.10.0" } }, - "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -5897,20 +4989,6 @@ "node": ">=4" } }, - "node_modules/pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", - "dev": true, - "dependencies": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", @@ -5948,43 +5026,6 @@ "node": ">=0.10.0" } }, - "node_modules/pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "dependencies": { - "find-up": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/plur": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", @@ -5997,21 +5038,6 @@ "node": ">=0.10.0" } }, - "node_modules/pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -6073,15 +5099,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, - "node_modules/progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/ps-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", @@ -6324,41 +5341,6 @@ "node": ">=0.6" } }, - "node_modules/readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" - } - }, - "node_modules/readline2/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -6524,28 +5506,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "dependencies": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-uncached/node_modules/resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -6597,18 +5557,6 @@ "node": ">=4" } }, - "node_modules/rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "dependencies": { - "glob": "^7.0.5" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -6618,27 +5566,6 @@ "inherits": "^2.0.1" } }, - "node_modules/run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "dependencies": { - "once": "^1.3.0" - } - }, - "node_modules/run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, - "node_modules/rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -6723,24 +5650,6 @@ "jsonify": "~0.0.0" } }, - "node_modules/shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "iojs": "*", - "node": ">=0.11.0" - } - }, "node_modules/signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -6863,56 +5772,6 @@ "node": ">=0.10.0" } }, - "node_modules/standard": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz", - "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==", - "dev": true, - "dependencies": { - "eslint": "~3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-config-standard-jsx": "4.0.2", - "eslint-plugin-import": "~2.2.0", - "eslint-plugin-node": "~4.2.2", - "eslint-plugin-promise": "~3.5.0", - "eslint-plugin-react": "~6.10.0", - "eslint-plugin-standard": "~3.0.1", - "standard-engine": "~7.0.0" - }, - "bin": { - "standard": "bin/cmd.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz", - "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=", - "dev": true, - "dependencies": { - "deglob": "^2.1.0", - "get-stdin": "^5.0.1", - "minimist": "^1.1.0", - "pkg-conf": "^2.0.0" - } - }, - "node_modules/standard-engine/node_modules/get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/standard-engine/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, "node_modules/stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -7117,29 +5976,6 @@ "acorn-node": "^1.2.0" } }, - "node_modules/table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "dependencies": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - } - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -7310,18 +6146,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -7355,12 +6179,6 @@ "undeclared-identifiers": "bin.js" } }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, "node_modules/unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -7569,39 +6387,21 @@ }, "node_modules/widest-line": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", - "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", - "dev": true, - "dependencies": { - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", "dev": true, "dependencies": { - "mkdirp": "^0.5.1" + "string-width": "^2.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, "node_modules/write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", @@ -7766,23 +6566,6 @@ "acorn": "^5.0.0" } }, - "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } - }, "acorn-node": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.5.2.tgz", @@ -7793,34 +6576,6 @@ "xtend": "^4.0.1" } }, - "ajv": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", - "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", - "dev": true, - "requires": { - "co": "^4.6.0", - "json-stable-stringify": "^1.0.1" - }, - "dependencies": { - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - } - } - }, - "ajv-keywords": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", - "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", - "dev": true, - "requires": {} - }, "ansi-align": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", @@ -7930,16 +6685,6 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, - "array.prototype.find": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", - "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.7.0" - } - }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -9104,21 +7849,6 @@ "integrity": "sha1-qEq8glpV70yysCi9dOIFpluaSZY=", "dev": true }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, - "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", - "dev": true - }, "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", @@ -9184,12 +7914,6 @@ "safe-buffer": "^5.0.1" } }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", - "dev": true - }, "clean-stack": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-1.3.0.tgz", @@ -9233,18 +7957,6 @@ "string-width": "^2.0.0" } }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, "co-with-promise": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co-with-promise/-/co-with-promise-4.6.0.tgz", @@ -9280,12 +7992,6 @@ "convert-to-spaces": "^1.0.1" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true - }, "color-convert": { "version": "1.9.2", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", @@ -9396,12 +8102,6 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "convert-source-map": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", @@ -9521,15 +8221,6 @@ "array-find-index": "^1.0.1" } }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "dev": true, - "requires": { - "es5-ext": "^0.10.9" - } - }, "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", @@ -9549,12 +8240,6 @@ "ms": "2.0.0" } }, - "debug-log": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", - "integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8=", - "dev": true - }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -9573,12 +8258,6 @@ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, "define-properties": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", @@ -9593,57 +8272,6 @@ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" }, - "deglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", - "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", - "dev": true, - "requires": { - "find-root": "^1.0.0", - "glob": "^7.0.5", - "ignore": "^3.0.9", - "pkg-config": "^1.1.0", - "run-parallel": "^1.1.2", - "uniq": "^1.0.1" - } - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "deps-sort": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", @@ -9699,15 +8327,6 @@ "randombytes": "^2.0.0" } }, - "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -9801,287 +8420,17 @@ "is-symbol": "^1.0.1" } }, - "es5-ext": { - "version": "0.10.45", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.45.tgz", - "integrity": "sha512-FkfM6Vxxfmztilbxxz5UKSD4ICMf5tSpRFtDNtkAhOxZ0EKtX6qwmXNyH/sFyIbX2P/nU5AMiA9jilWsUGJzCQ==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, "es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "es6-weak-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", - "integrity": "sha1-XjqzIlH/0VOKH45f+hNXdy+S2W8=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dev": true, - "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", - "integrity": "sha1-yPxiAcf0DdCJQbh8CFdnOGpnmsw=", - "dev": true, - "requires": { - "babel-code-frame": "^6.16.0", - "chalk": "^1.1.3", - "concat-stream": "^1.5.2", - "debug": "^2.1.1", - "doctrine": "^2.0.0", - "escope": "^3.6.0", - "espree": "^3.4.0", - "esquery": "^1.0.0", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "file-entry-cache": "^2.0.0", - "glob": "^7.0.3", - "globals": "^9.14.0", - "ignore": "^3.2.0", - "imurmurhash": "^0.1.4", - "inquirer": "^0.12.0", - "is-my-json-valid": "^2.10.0", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.5.1", - "json-stable-stringify": "^1.0.0", - "levn": "^0.3.0", - "lodash": "^4.0.0", - "mkdirp": "^0.5.0", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.1", - "pluralize": "^1.2.1", - "progress": "^1.1.8", - "require-uncached": "^1.0.2", - "shelljs": "^0.7.5", - "strip-bom": "^3.0.0", - "strip-json-comments": "~2.0.1", - "table": "^3.7.8", - "text-table": "~0.2.0", - "user-home": "^2.0.0" - }, - "dependencies": { - "json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dev": true, - "requires": { - "jsonify": "~0.0.0" - } - }, - "user-home": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", - "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", - "dev": true, - "requires": { - "os-homedir": "^1.0.0" - } - } - } - }, - "eslint-config-standard": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-10.2.1.tgz", - "integrity": "sha1-wGHk0GbzedwXzVYsZOgZtN1FRZE=", - "dev": true, - "requires": {} - }, - "eslint-config-standard-jsx": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-4.0.2.tgz", - "integrity": "sha512-F8fRh2WFnTek7dZH9ZaE0PCBwdVGkwVWZmizla/DDNOmg7Tx6B/IlK5+oYpiX29jpu73LszeJj5i1axEZv6VMw==", - "dev": true, - "requires": {} - }, - "eslint-import-resolver-node": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.2.3.tgz", - "integrity": "sha1-Wt2BBujJKNssuiMrzZ76hG49oWw=", - "dev": true, - "requires": { - "debug": "^2.2.0", - "object-assign": "^4.0.1", - "resolve": "^1.1.6" - } - }, - "eslint-module-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", - "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", - "dev": true, - "requires": { - "debug": "^2.6.8", - "pkg-dir": "^1.0.0" - } - }, - "eslint-plugin-import": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.2.0.tgz", - "integrity": "sha1-crowb60wXWfEgWNIpGmaQimsi04=", - "dev": true, - "requires": { - "builtin-modules": "^1.1.1", - "contains-path": "^0.1.0", - "debug": "^2.2.0", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.2.0", - "eslint-module-utils": "^2.0.0", - "has": "^1.0.1", - "lodash.cond": "^4.3.0", - "minimatch": "^3.0.3", - "pkg-up": "^1.0.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } - } - }, - "eslint-plugin-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-4.2.3.tgz", - "integrity": "sha512-vIUQPuwbVYdz/CYnlTLsJrRy7iXHQjdEe5wz0XhhdTym3IInM/zZLlPf9nZ2mThsH0QcsieCOWs2vOeCy/22LQ==", - "dev": true, - "requires": { - "ignore": "^3.0.11", - "minimatch": "^3.0.2", - "object-assign": "^4.0.1", - "resolve": "^1.1.7", - "semver": "5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true - } - } - }, - "eslint-plugin-promise": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-3.5.0.tgz", - "integrity": "sha1-ePu2/+BHIBYnVp6FpsU3OvKmj8o=", - "dev": true - }, - "eslint-plugin-react": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.10.3.tgz", - "integrity": "sha1-xUNb6wZ3ThLH2y9qut3L+QDNP3g=", - "dev": true, - "requires": { - "array.prototype.find": "^2.0.1", - "doctrine": "^1.2.2", - "has": "^1.0.1", - "jsx-ast-utils": "^1.3.4", - "object.assign": "^4.0.4" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } - } - }, - "eslint-plugin-standard": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-3.0.1.tgz", - "integrity": "sha1-NNDJFbRe3G8BA5PH7vOCOwhWXPI=", - "dev": true, - "requires": {} - }, "espower-location-detector": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/espower-location-detector/-/espower-location-detector-1.0.0.tgz", @@ -10094,16 +8443,6 @@ "xtend": "^4.0.0" } }, - "espree": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", - "dev": true, - "requires": { - "acorn": "^5.5.0", - "acorn-jsx": "^3.0.0" - } - }, "esprima": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", @@ -10119,24 +8458,6 @@ "core-js": "^2.0.0" } }, - "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", - "dev": true, - "requires": { - "estraverse": "^4.0.0" - } - }, - "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } - }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", @@ -10148,16 +8469,6 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "event-stream": { "version": "3.3.4", "resolved": "http://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -10214,12 +8525,6 @@ } } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", - "dev": true - }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -10250,12 +8555,6 @@ "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", "dev": true }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -10265,16 +8564,6 @@ "escape-string-regexp": "^1.0.5" } }, - "file-entry-cache": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", - "dev": true, - "requires": { - "flat-cache": "^1.2.1", - "object-assign": "^4.0.1" - } - }, "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", @@ -10303,31 +8592,13 @@ "pkg-dir": "^1.0.0" } }, - "find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", - "dev": true - }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" + "locate-path": "^2.0.0" } }, "fn-name": { @@ -10861,21 +9132,6 @@ "integrity": "sha1-VdO/qm6v1QWlD5vIH99XVkoLsHE=", "dev": true }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=", - "dev": true - }, - "generate-object-property": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", - "dev": true, - "requires": { - "is-property": "^1.0.0" - } - }, "get-assigned-identifiers": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", @@ -11015,12 +9271,6 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, "has-yarn": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", @@ -11117,12 +9367,6 @@ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==" }, - "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", - "dev": true - }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -11205,90 +9449,6 @@ "source-map": "~0.5.3" } }, - "inquirer": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", - "dev": true, - "requires": { - "ansi-escapes": "^1.1.0", - "ansi-regex": "^2.0.0", - "chalk": "^1.0.0", - "cli-cursor": "^1.0.1", - "cli-width": "^2.0.0", - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, - "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" - } - }, - "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "onetime": { - "version": "1.1.0", - "resolved": "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", - "dev": true - }, - "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", - "dev": true, - "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } - } - }, "insert-module-globals": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz", @@ -11306,12 +9466,6 @@ "xtend": "^4.0.0" } }, - "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=", - "dev": true - }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -11438,25 +9592,6 @@ "is-path-inside": "^1.0.0" } }, - "is-my-ip-valid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", - "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", - "dev": true - }, - "is-my-json-valid": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.17.2.tgz", - "integrity": "sha512-IBhBslgngMQN8DDSppmgDv7RNrlFotuuDsKcrCP3+HbFaVivIBU7u9oiiErw8sH4ynx3+gOGQ3q2otkgiSi6kg==", - "dev": true, - "requires": { - "generate-function": "^2.0.0", - "generate-object-property": "^1.1.0", - "is-my-ip-valid": "^1.0.0", - "jsonpointer": "^4.0.0", - "xtend": "^4.0.0" - } - }, "is-npm": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", @@ -11486,21 +9621,6 @@ "symbol-observable": "^0.2.2" } }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", @@ -11532,12 +9652,6 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", - "dev": true - }, "is-redirect": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", @@ -11552,12 +9666,6 @@ "has": "^1.0.1" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, "is-retry-allowed": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", @@ -11664,12 +9772,6 @@ "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", - "dev": true - }, "JSONStream": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.3.tgz", @@ -11679,12 +9781,6 @@ "through": ">=2.2.7 <3" } }, - "jsx-ast-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", - "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=", - "dev": true - }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -11728,16 +9824,6 @@ "package-json": "^4.0.0" } }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", @@ -11776,12 +9862,6 @@ "integrity": "sha1-buMFc6A6GmDWcKYu8zwQzxr9vdQ=", "dev": true }, - "lodash.cond": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.cond/-/lodash.cond-4.5.2.tgz", - "integrity": "sha1-9HGh2khr5g9quVXRcRVSPdHSVdU=", - "dev": true - }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -12145,30 +10225,12 @@ "minimatch": "^3.0.0" } }, - "mute-stream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", - "dev": true - }, "nan": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", "optional": true }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.4.tgz", @@ -12261,18 +10323,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -12326,20 +10376,6 @@ "object-assign": "^4.0.1" } }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", @@ -12573,17 +10609,6 @@ "load-json-file": "^4.0.0" } }, - "pkg-config": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", - "integrity": "sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q=", - "dev": true, - "requires": { - "debug-log": "^1.0.0", - "find-root": "^1.0.0", - "xtend": "^4.0.1" - } - }, "pkg-dir": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", @@ -12614,36 +10639,6 @@ } } }, - "pkg-up": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-1.0.0.tgz", - "integrity": "sha1-Pgj7RhUlxEIWJKM7n35tCvWwWiY=", - "dev": true, - "requires": { - "find-up": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } - } - }, "plur": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/plur/-/plur-2.1.2.tgz", @@ -12653,18 +10648,6 @@ "irregular-plurals": "^1.0.0" } }, - "pluralize": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", - "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -12710,12 +10693,6 @@ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, - "progress": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", - "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", - "dev": true - }, "ps-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", @@ -12918,37 +10895,6 @@ "set-immediate-shim": "^1.0.1" } }, - "readline2": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", - "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "mute-stream": "0.0.5" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - } - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", @@ -13085,24 +11031,6 @@ "integrity": "sha1-WhtS63Dr7UPrmC6XTIWrWVceVvo=", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", - "dev": true - } - } - }, "resolve": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", @@ -13144,15 +11072,6 @@ "signal-exit": "^3.0.2" } }, - "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", - "dev": true, - "requires": { - "glob": "^7.0.5" - } - }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -13162,27 +11081,6 @@ "inherits": "^2.0.1" } }, - "run-async": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "^1.3.0" - } - }, - "run-parallel": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", - "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", - "dev": true - }, - "rx-lite": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", - "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", - "dev": true - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -13249,17 +11147,6 @@ "jsonify": "~0.0.0" } }, - "shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -13361,49 +11248,6 @@ "integrity": "sha1-1PM6tU6OOHeLDKXP07OvsS22hiA=", "dev": true }, - "standard": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/standard/-/standard-10.0.3.tgz", - "integrity": "sha512-JURZ+85ExKLQULckDFijdX5WHzN6RC7fgiZNSV4jFQVo+3tPoQGHyBrGekye/yf0aOfb4210EM5qPNlc2cRh4w==", - "dev": true, - "requires": { - "eslint": "~3.19.0", - "eslint-config-standard": "10.2.1", - "eslint-config-standard-jsx": "4.0.2", - "eslint-plugin-import": "~2.2.0", - "eslint-plugin-node": "~4.2.2", - "eslint-plugin-promise": "~3.5.0", - "eslint-plugin-react": "~6.10.0", - "eslint-plugin-standard": "~3.0.1", - "standard-engine": "~7.0.0" - } - }, - "standard-engine": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-7.0.0.tgz", - "integrity": "sha1-67d7nI/CyBZf+jU72Rug3/Qa9pA=", - "dev": true, - "requires": { - "deglob": "^2.1.0", - "get-stdin": "^5.0.1", - "minimist": "^1.1.0", - "pkg-conf": "^2.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz", - "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=", - "dev": true - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "stream-browserify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", @@ -13573,28 +11417,6 @@ "acorn-node": "^1.2.0" } }, - "table": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", - "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", - "dev": true, - "requires": { - "ajv": "^4.7.0", - "ajv-keywords": "^1.0.0", - "chalk": "^1.1.1", - "lodash": "^4.0.0", - "slice-ansi": "0.0.4", - "string-width": "^2.0.0" - }, - "dependencies": { - "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", - "dev": true - } - } - }, "term-size": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", @@ -13722,15 +11544,6 @@ "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -13758,12 +11571,6 @@ "xtend": "^4.0.1" } }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, "unique-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", @@ -13941,26 +11748,11 @@ "string-width": "^2.1.1" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" - } - }, "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", diff --git a/package.json b/package.json index 22bff69..7b12b39 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,7 @@ "zip": "run-s zip:**", "zip:chrome": "zip -r -FS ./zip/chrome.zip browser/", "zip:firefox": "sh zip-firefox.sh", - "test": "run-s test:**", - "test:standard": "standard --fix src/*.js src/**/*.js" + "test": "run-s test:**" }, "dependencies": { "babel-cli": "^6.24.1", From 790c5320756e5cd0d83e98460b9fbf271bcd2156 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 00:56:18 +0900 Subject: [PATCH 06/14] =?UTF-8?q?Chrome=20API=E3=81=AE=E7=94=9F=E5=AD=98?= =?UTF-8?q?=E7=A2=BA=E8=AA=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/serviceworker.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/client/serviceworker.js b/client/serviceworker.js index e69de29..9dceb39 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -0,0 +1,15 @@ +// background + +const isChrome = () => { + return /Chrome/.test(navigator.userAgent); +}; + +const app = isChrome() ? chrome : browser; + +console.log(app); +console.log(app.tabs); + +console.log(app.runtime.onMessage.addListener); +console.log(app.tabs.getSelected); +console.log(app.tabs.query); +console.log(app.tabs.sendMessage); From b6c98f086a53283c06b58514755ed5ae62bf92c1 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 01:08:11 +0900 Subject: [PATCH 07/14] =?UTF-8?q?=E3=81=9D=E3=81=AE=E3=81=BE=E3=81=BE?= =?UTF-8?q?=E7=A7=BB=E6=A4=8D=E3=81=97=E3=81=A6=E3=81=BF=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/serviceworker.js | 58 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 6 deletions(-) diff --git a/client/serviceworker.js b/client/serviceworker.js index 9dceb39..491d550 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -6,10 +6,56 @@ const isChrome = () => { const app = isChrome() ? chrome : browser; -console.log(app); -console.log(app.tabs); +app.runtime.onMessage.addListener(function (request, sender, sendResponse) { + const cmd = request.command; -console.log(app.runtime.onMessage.addListener); -console.log(app.tabs.getSelected); -console.log(app.tabs.query); -console.log(app.tabs.sendMessage); + // 外部サイトで発動する機能を有効にする + if (cmd === "enable-daiiz-script") { + const funcProjectPairs = request.func_project_pairs; + const funcNames = Object.keys(funcProjectPairs); + for (let i = 0; i < funcNames.length; i++) { + const funcName = funcNames[i]; + const projectName = funcProjectPairs[funcName]; + + if (!funcName || funcName.length === 0) { + return; + } + if (!projectName || projectName.length === 0) { + localStorage.removeItem(funcName); + } else if (projectName.length > 0) { + localStorage[funcName] = projectName; + } + } + return; + } + + // 設定された値を返す + if (cmd === "get-project-name") { + const funcNames = request.func_names; + const projectNames = {}; + for (let i = 0; i < funcNames.length; i++) { + const funcName = funcNames[i]; + if (localStorage[funcName]) { + projectNames[funcName] = localStorage[funcName]; + } + } + sendResponse(projectNames); + return; + } + + // Clipboardに保持されたURLのページタイトルを返却する + if (cmd === "get-clipboard-page") { + const bg = window.app.extension.getBackgroundPage(); + const textarea = document.querySelector("#daiiz-ctrlv"); + textarea.value = ""; + textarea.focus(); + bg.document.execCommand("paste"); + // resopondWebpageTitleOrRawText(textarea.value, sendResponse); + } + + // URLのページタイトルを返却する + if (cmd === "fetch-page-title") { + const text = request.rawText; + // resopondWebpageTitleOrRawText(text, sendResponse); + } +}); From 840f39f4c31557a5d9b8b8fd85e534fd42711dda Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 01:44:37 +0900 Subject: [PATCH 08/14] =?UTF-8?q?chrome.storage.local=E3=82=92=E4=BD=BF?= =?UTF-8?q?=E3=81=86=E3=81=AE=E3=81=A7permission=E3=81=ABstorage=E3=82=92?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- browser/manifest.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/browser/manifest.json b/browser/manifest.json index 4e97a46..cac72f0 100644 --- a/browser/manifest.json +++ b/browser/manifest.json @@ -38,7 +38,15 @@ } ], - "permissions": ["contextMenus", "tabs", "activeTab", "clipboardRead"], + "permissions": [ + "contextMenus", + "tabs", + "activeTab", + "clipboardRead", + "storage" + ], + + "host_permissions": ["*://*/*"], "version": "1.2.2" } From 670fd2ad214594bc56235e2d1e7477736ccfc6ac Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 01:48:31 +0900 Subject: [PATCH 09/14] support enable-daiiz-script --- client/serviceworker.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/client/serviceworker.js b/client/serviceworker.js index 491d550..582bac2 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -13,6 +13,7 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { if (cmd === "enable-daiiz-script") { const funcProjectPairs = request.func_project_pairs; const funcNames = Object.keys(funcProjectPairs); + console.log("[enable-daiiz-script]", funcNames); for (let i = 0; i < funcNames.length; i++) { const funcName = funcNames[i]; const projectName = funcProjectPairs[funcName]; @@ -21,9 +22,13 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { return; } if (!projectName || projectName.length === 0) { - localStorage.removeItem(funcName); + app.storage.local.remove([funcName], () => { + console.log("removed:", funcName); + }); } else if (projectName.length > 0) { - localStorage[funcName] = projectName; + app.storage.local.set({ [funcName]: projectName }, () => { + console.log("set:", funcName); + }); } } return; @@ -31,6 +36,7 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { // 設定された値を返す if (cmd === "get-project-name") { + console.log("[get-project-name]"); const funcNames = request.func_names; const projectNames = {}; for (let i = 0; i < funcNames.length; i++) { @@ -45,6 +51,7 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { // Clipboardに保持されたURLのページタイトルを返却する if (cmd === "get-clipboard-page") { + console.log("[get-clipboard-page]"); const bg = window.app.extension.getBackgroundPage(); const textarea = document.querySelector("#daiiz-ctrlv"); textarea.value = ""; @@ -55,6 +62,7 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { // URLのページタイトルを返却する if (cmd === "fetch-page-title") { + console.log("#", "fetch-page-title"); const text = request.rawText; // resopondWebpageTitleOrRawText(text, sendResponse); } From bc1f9f363644791cf85acefaf5a208ffacfed791 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 01:59:48 +0900 Subject: [PATCH 10/14] =?UTF-8?q?background=20script=E3=81=A7clipboard?= =?UTF-8?q?=E3=81=AB=E3=82=A2=E3=82=AF=E3=82=BB=E3=82=B9=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=81=99=E3=81=B9=E3=81=AF=E3=81=AA=E3=81=84=E6=B0=97=E3=81=8C?= =?UTF-8?q?=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/serviceworker.js | 11 ++- src/scrapbox-io/paste-webpage-url.js | 143 ++++++++++++++------------- 2 files changed, 83 insertions(+), 71 deletions(-) diff --git a/client/serviceworker.js b/client/serviceworker.js index 582bac2..c00cf53 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -52,11 +52,12 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { // Clipboardに保持されたURLのページタイトルを返却する if (cmd === "get-clipboard-page") { console.log("[get-clipboard-page]"); - const bg = window.app.extension.getBackgroundPage(); - const textarea = document.querySelector("#daiiz-ctrlv"); - textarea.value = ""; - textarea.focus(); - bg.document.execCommand("paste"); + + // const bg = window.app.extension.getBackgroundPage(); + // const textarea = document.querySelector("#daiiz-ctrlv"); + // textarea.value = ""; + // textarea.focus(); + // bg.document.execCommand("paste"); // resopondWebpageTitleOrRawText(textarea.value, sendResponse); } diff --git a/src/scrapbox-io/paste-webpage-url.js b/src/scrapbox-io/paste-webpage-url.js index 510a317..16dd9b9 100644 --- a/src/scrapbox-io/paste-webpage-url.js +++ b/src/scrapbox-io/paste-webpage-url.js @@ -1,105 +1,116 @@ -const $ = require('jquery') -const {isChrome, isFirefox} = require('../browser') -const daiizScrapboxManage = require('./manage') -const {installed} = daiizScrapboxManage +const $ = require("jquery"); +const { isChrome, isFirefox } = require("../browser"); +const daiizScrapboxManage = require("./manage"); +const { installed } = daiizScrapboxManage; const keys = { ctrl: 17, alt: 18, - v: 86 -} + v: 86, +}; const execPasteChrome = () => { // background scriptに処理を依頼する - window.app.runtime.sendMessage({ - command: 'get-clipboard-page' - }, text => { - if (!text) return - insertTextToScrapboxCursor(text) - }) -} + window.app.runtime.sendMessage( + { + command: "get-clipboard-page", + }, + (text) => { + if (!text) return; + insertTextToScrapboxCursor(text); + } + ); +}; const execPasteFirefox = async () => { // background scriptに処理を依頼できない // 拡張機能用のtextareaを生成してbody末尾に挿入 - let textarea = document.querySelector('#daiiz-ctrlv') + let textarea = document.querySelector("#daiiz-ctrlv"); if (!textarea) { - textarea = document.createElement('textarea') - textarea.setAttribute('id', 'daiiz-ctrlv') - document.body.appendChild(textarea) + textarea = document.createElement("textarea"); + textarea.setAttribute("id", "daiiz-ctrlv"); + document.body.appendChild(textarea); } // clipboardが保持する内容を流し込んで値を取得 - let rawText - const onPaste = event => {rawText = event.clipboardData.getData('text/plain')} - textarea.value = '' - textarea.focus() - document.addEventListener('paste', onPaste, false) - document.execCommand('paste') - document.removeEventListener('paste', onPaste, false) - textarea.remove() + let rawText; + const onPaste = (event) => { + rawText = event.clipboardData.getData("text/plain"); + }; + textarea.value = ""; + textarea.focus(); + document.addEventListener("paste", onPaste, false); + document.execCommand("paste"); + document.removeEventListener("paste", onPaste, false); + textarea.remove(); // fetch APIの実行してtextを解決する処理はbackground scriptに依頼する - window.app.runtime.sendMessage({ - command: 'fetch-page-title', - rawText - }, text => { - if (!text) return - insertTextToScrapboxCursor(text) - }) -} + window.app.runtime.sendMessage( + { + command: "fetch-page-title", + rawText, + }, + (text) => { + if (!text) return; + insertTextToScrapboxCursor(text); + } + ); +}; -const insertTextToScrapboxCursor = text => { +const insertTextToScrapboxCursor = (text) => { // Scrapboxで入力を待ち受けているtextarea要素 - const textInput = document.querySelector('#text-input') + const textInput = document.querySelector("#text-input"); if (isChrome()) { - textInput.focus() - document.execCommand('insertText', false, text) + textInput.focus(); + document.execCommand("insertText", false, text); } else { // Firefoxでは document.execCommand('insertText') が使えない // 代わりに自前で生成したUIEventを発行すればいい // https://www.everythingfrontend.com/posts/insert-text-into-textarea-at-cursor-position.html - const start = textInput.selectionStart // in this case maybe 0 - textInput.setRangeText(text) - textInput.selectionStart = textInput.selectionEnd = start + text.length - const uiEvent = document.createEvent('UIEvent') - uiEvent.initEvent('input', true, false) - textInput.dispatchEvent(uiEvent) + const start = textInput.selectionStart; // in this case maybe 0 + textInput.setRangeText(text); + textInput.selectionStart = textInput.selectionEnd = start + text.length; + const uiEvent = document.createEvent("UIEvent"); + uiEvent.initEvent("input", true, false); + textInput.dispatchEvent(uiEvent); } -} +}; exports.enable = () => { - let c = 0 + let c = 0; - $(window).on('keydown', event => { - const key = installed('daiiz-paste-url-title') - if (!key) return - const { keyCode } = event - if (keyCode === keys[key]) c = 1 - }) + $(window).on("keydown", (event) => { + const key = installed("daiiz-paste-url-title"); + if (!key) return; + const { keyCode } = event; + if (keyCode === keys[key]) c = 1; + }); - $(window).on('keydown', event => { - if (!installed('daiiz-paste-url-title')) return - const { keyCode } = event + $(window).on("keydown", (event) => { + if (!installed("daiiz-paste-url-title")) return; + const { keyCode } = event; if (keyCode !== keys.v || c !== 1) { - return + return; } - event.preventDefault() - event.stopPropagation() + event.preventDefault(); + event.stopPropagation(); if (isChrome()) { - execPasteChrome() + // execPasteChrome(); + execPasteFirefox(); } else if (isFirefox()) { - execPasteFirefox() + execPasteFirefox(); } - }) + }); - $(window).on('keyup', () => {c = 0}) + $(window).on("keyup", () => { + c = 0; + }); window.app.runtime.onMessage.addListener((request, sender, sendResponse) => { - const {command, externalLink} = request + const { command, externalLink } = request; - if (command === 're:get-clipboard-page') { - insertTextToScrapboxCursor(externalLink) + if (command === "re:get-clipboard-page") { + insertTextToScrapboxCursor(externalLink); } - }) -} + }); +}; From 35a9a6c52f613184e0a91396d325259fefd51157 Mon Sep 17 00:00:00 2001 From: daiiz Date: Mon, 1 Aug 2022 02:17:26 +0900 Subject: [PATCH 11/14] aa --- client/serviceworker.js | 93 ++++++++++++++++++++++++---- src/scrapbox-io/paste-webpage-url.js | 29 +++++---- 2 files changed, 97 insertions(+), 25 deletions(-) diff --git a/client/serviceworker.js b/client/serviceworker.js index c00cf53..05f7813 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -49,22 +49,91 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { return; } + // 廃止 // Clipboardに保持されたURLのページタイトルを返却する - if (cmd === "get-clipboard-page") { - console.log("[get-clipboard-page]"); - - // const bg = window.app.extension.getBackgroundPage(); - // const textarea = document.querySelector("#daiiz-ctrlv"); - // textarea.value = ""; - // textarea.focus(); - // bg.document.execCommand("paste"); - // resopondWebpageTitleOrRawText(textarea.value, sendResponse); - } + // if (cmd === "get-clipboard-page") { + // console.log("[get-clipboard-page]"); + // // const bg = window.app.extension.getBackgroundPage(); + // // const textarea = document.querySelector("#daiiz-ctrlv"); + // // textarea.value = ""; + // // textarea.focus(); + // // bg.document.execCommand("paste"); + // // resopondWebpageTitleOrRawText(textarea.value, sendResponse); + // } // URLのページタイトルを返却する if (cmd === "fetch-page-title") { - console.log("#", "fetch-page-title"); const text = request.rawText; - // resopondWebpageTitleOrRawText(text, sendResponse); + console.log("#", "fetch-page-title", text); + resopondWebpageTitleOrRawText(text, sendResponse); } }); + +const resopondWebpageTitleOrRawText = (text, sendResponse) => { + if (text.match(/\n/)) { + return sendResponse(text); + } + if (text.match(/^https?:\/\/scrapbox\.io\//)) { + return sendResponse(text); + } + if (text.match(/gyazo\.com\//)) { + return sendResponse(text); + } + if (text.match(/www\.youtube\.com\//)) { + return sendResponse(text); + } + if (text.match(/www\.google/) && text.match(/\/maps\//)) { + return sendResponse(text); + } + if (text.match(/^https?:\/\//)) { + fetchPage(text); + return; + } + return sendResponse(text); +}; + +const fetchPage = async (url) => { + const tabs = await app.tabs.query({ currentWindow: true, active: true }); + + const res = await fetch(url, { credentials: "include" }); + if (!res.ok || tabs.length === 0) { + } + const body = await res.text(); + // const parser = new DOMParser(); + // const doc = parser.parseFromString(body, "text/html"); + console.log("[fetchPage]", body); + + // DOMParserを使えないので文字列操作でtitleを取り出す + let externalLink = url; + let title = ""; + + let substr = body.split("")[0]; + if (substr) { + substr = substr.split("")[1]; + } + if (substr) { + title = substr.trim(); + } + if (title) { + externalLink = `[${url} ${title}]`; + } + + // if (isChrome()) { + // window.app.tabs.getSelected(null, (tab) => { + // window.app.tabs.sendMessage(tab.id, { + // command: "re:get-clipboard-page", + // externalLink, + // }); + // }); + // } else { + // // Firefox extension + // const tab = await window.app.tabs.query({ + // currentWindow: true, + // active: true, + // }); + // window.app.tabs.sendMessage(tab[0].id, { + // command: "re:get-clipboard-page", + // externalLink, + // }); + // } +}; diff --git a/src/scrapbox-io/paste-webpage-url.js b/src/scrapbox-io/paste-webpage-url.js index 16dd9b9..72a4af9 100644 --- a/src/scrapbox-io/paste-webpage-url.js +++ b/src/scrapbox-io/paste-webpage-url.js @@ -9,19 +9,20 @@ const keys = { v: 86, }; -const execPasteChrome = () => { - // background scriptに処理を依頼する - window.app.runtime.sendMessage( - { - command: "get-clipboard-page", - }, - (text) => { - if (!text) return; - insertTextToScrapboxCursor(text); - } - ); -}; +// const execPasteChrome = () => { +// // background scriptに処理を依頼する +// window.app.runtime.sendMessage( +// { +// command: "get-clipboard-page", +// }, +// (text) => { +// if (!text) return; +// insertTextToScrapboxCursor(text); +// } +// ); +// }; +// Clipboardに保持されたURLのページタイトルを返却する const execPasteFirefox = async () => { // background scriptに処理を依頼できない // 拡張機能用のtextareaを生成してbody末尾に挿入 @@ -50,7 +51,9 @@ const execPasteFirefox = async () => { rawText, }, (text) => { - if (!text) return; + if (!text) { + return; + } insertTextToScrapboxCursor(text); } ); From c4adf5c2a4a98b413dfc96c763c3c047a46f94b4 Mon Sep 17 00:00:00 2001 From: daiiz <da.iz.mg@gmail.com> Date: Mon, 1 Aug 2022 03:53:41 +0900 Subject: [PATCH 12/14] fix --- client/serviceworker.js | 42 +++++++++++---- src/scrapbox-io/paste-webpage-url.js | 78 +++++++++++++++++----------- 2 files changed, 80 insertions(+), 40 deletions(-) diff --git a/client/serviceworker.js b/client/serviceworker.js index 05f7813..7efe49f 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -6,7 +6,11 @@ const isChrome = () => { const app = isChrome() ? chrome : browser; -app.runtime.onMessage.addListener(function (request, sender, sendResponse) { +app.runtime.onMessage.addListener(async function ( + request, + sender, + sendResponse +) { const cmd = request.command; // 外部サイトで発動する機能を有効にする @@ -65,11 +69,11 @@ app.runtime.onMessage.addListener(function (request, sender, sendResponse) { if (cmd === "fetch-page-title") { const text = request.rawText; console.log("#", "fetch-page-title", text); - resopondWebpageTitleOrRawText(text, sendResponse); + await resopondWebpageTitleOrRawText(text, sendResponse); } }); -const resopondWebpageTitleOrRawText = (text, sendResponse) => { +const resopondWebpageTitleOrRawText = async (text, sendResponse) => { if (text.match(/\n/)) { return sendResponse(text); } @@ -86,22 +90,30 @@ const resopondWebpageTitleOrRawText = (text, sendResponse) => { return sendResponse(text); } if (text.match(/^https?:\/\//)) { - fetchPage(text); + const tabs = await app.tabs.query({ currentWindow: true, active: true }); + try { + await fetchPage(text, tabs); + } catch (err) { + console.error(err); + // textarea#text-inputをブロックしており、解除する必要があるので必ず応答を返す + app.tabs.sendMessage(tabs[0].id, { + command: "re:get-clipboard-page", + externalLink: text, + }); + } return; } return sendResponse(text); }; -const fetchPage = async (url) => { - const tabs = await app.tabs.query({ currentWindow: true, active: true }); - +const fetchPage = async (url, tabs) => { const res = await fetch(url, { credentials: "include" }); - if (!res.ok || tabs.length === 0) { + if (!res.ok) { + throw new Error("Failed to fetch page."); } const body = await res.text(); // const parser = new DOMParser(); // const doc = parser.parseFromString(body, "text/html"); - console.log("[fetchPage]", body); // DOMParserを使えないので文字列操作でtitleを取り出す let externalLink = url; @@ -112,12 +124,22 @@ const fetchPage = async (url) => { substr = substr.split("<title>")[1]; } if (substr) { - title = substr.trim(); + title = substr + .trim() + .split("\n") + .filter((x) => !!x.trim()) + .join(""); + console.log("[fetchPage]", title); } if (title) { externalLink = `[${url} ${title}]`; } + app.tabs.sendMessage(tabs[0].id, { + command: "re:get-clipboard-page", + externalLink, + }); + // if (isChrome()) { // window.app.tabs.getSelected(null, (tab) => { // window.app.tabs.sendMessage(tab.id, { diff --git a/src/scrapbox-io/paste-webpage-url.js b/src/scrapbox-io/paste-webpage-url.js index 72a4af9..76393a6 100644 --- a/src/scrapbox-io/paste-webpage-url.js +++ b/src/scrapbox-io/paste-webpage-url.js @@ -9,24 +9,41 @@ const keys = { v: 86, }; -// const execPasteChrome = () => { -// // background scriptに処理を依頼する -// window.app.runtime.sendMessage( -// { -// command: "get-clipboard-page", -// }, -// (text) => { -// if (!text) return; -// insertTextToScrapboxCursor(text); -// } -// ); -// }; +const execPasteChrome = () => { + const iframe = document.createElement("iframe"); + iframe.src = "./"; //chrome.runtime.getURL("sandbox.html"); + // document.body.appendChild(iframe); + iframe.onload = () => { + const msg = { command: "hello" }; + iframe.contentWindow.postMessage(msg, "*"); + }; + iframe.onerror = () => { + console.log("error!!!!!!!"); + }; + iframe.onMessage = (event) => { + console.log("event..........", event); + }; + // background scriptに処理を依頼する + // window.app.runtime.sendMessage( + // { + // command: "get-clipboard-page", + // }, + // (text) => { + // if (!text) return; + // // insertTextToScrapboxCursor(text); + // } + // ); +}; // Clipboardに保持されたURLのページタイトルを返却する const execPasteFirefox = async () => { // background scriptに処理を依頼できない // 拡張機能用のtextareaを生成してbody末尾に挿入 - let textarea = document.querySelector("#daiiz-ctrlv"); + // const a = await navigator.clipboard.readText(); + const textInput = document.querySelector("#text-input"); + textInput.disabled = true; + + let textarea = document.querySelector("textarea#daiiz-ctrlv"); if (!textarea) { textarea = document.createElement("textarea"); textarea.setAttribute("id", "daiiz-ctrlv"); @@ -37,6 +54,17 @@ const execPasteFirefox = async () => { let rawText; const onPaste = (event) => { rawText = event.clipboardData.getData("text/plain"); + // fetch APIの実行してtextを解決する処理はbackground scriptに依頼する + const payload = { + command: "fetch-page-title", + rawText, + }; + window.app.runtime.sendMessage(payload, (text) => { + if (!text) { + return; + } + insertTextToScrapboxCursor(text); + }); }; textarea.value = ""; textarea.focus(); @@ -44,24 +72,12 @@ const execPasteFirefox = async () => { document.execCommand("paste"); document.removeEventListener("paste", onPaste, false); textarea.remove(); - // fetch APIの実行してtextを解決する処理はbackground scriptに依頼する - window.app.runtime.sendMessage( - { - command: "fetch-page-title", - rawText, - }, - (text) => { - if (!text) { - return; - } - insertTextToScrapboxCursor(text); - } - ); }; const insertTextToScrapboxCursor = (text) => { // Scrapboxで入力を待ち受けているtextarea要素 const textInput = document.querySelector("#text-input"); + textInput.disabled = false; if (isChrome()) { textInput.focus(); document.execCommand("insertText", false, text); @@ -83,13 +99,17 @@ exports.enable = () => { $(window).on("keydown", (event) => { const key = installed("daiiz-paste-url-title"); - if (!key) return; + if (!key) { + return; + } const { keyCode } = event; if (keyCode === keys[key]) c = 1; }); $(window).on("keydown", (event) => { - if (!installed("daiiz-paste-url-title")) return; + if (!installed("daiiz-paste-url-title")) { + return; + } const { keyCode } = event; if (keyCode !== keys.v || c !== 1) { return; @@ -98,7 +118,6 @@ exports.enable = () => { event.stopPropagation(); if (isChrome()) { - // execPasteChrome(); execPasteFirefox(); } else if (isFirefox()) { execPasteFirefox(); @@ -111,7 +130,6 @@ exports.enable = () => { window.app.runtime.onMessage.addListener((request, sender, sendResponse) => { const { command, externalLink } = request; - if (command === "re:get-clipboard-page") { insertTextToScrapboxCursor(externalLink); } From 285a29d8e82d3611b69a9471657dc39a1f7d9d1c Mon Sep 17 00:00:00 2001 From: daiiz <da.iz.mg@gmail.com> Date: Mon, 1 Aug 2022 03:56:39 +0900 Subject: [PATCH 13/14] =?UTF-8?q?=E3=81=99=E3=81=90=E3=81=AB=E3=83=96?= =?UTF-8?q?=E3=83=AD=E3=83=83=E3=82=AF=E8=A7=A3=E9=99=A4=E3=81=97=E3=81=A6?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=81=AA=E3=81=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/scrapbox-io/paste-webpage-url.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/scrapbox-io/paste-webpage-url.js b/src/scrapbox-io/paste-webpage-url.js index 76393a6..5570e46 100644 --- a/src/scrapbox-io/paste-webpage-url.js +++ b/src/scrapbox-io/paste-webpage-url.js @@ -41,7 +41,6 @@ const execPasteFirefox = async () => { // 拡張機能用のtextareaを生成してbody末尾に挿入 // const a = await navigator.clipboard.readText(); const textInput = document.querySelector("#text-input"); - textInput.disabled = true; let textarea = document.querySelector("textarea#daiiz-ctrlv"); if (!textarea) { @@ -69,7 +68,9 @@ const execPasteFirefox = async () => { textarea.value = ""; textarea.focus(); document.addEventListener("paste", onPaste, false); + textInput.disabled = true; document.execCommand("paste"); + textInput.disabled = false; document.removeEventListener("paste", onPaste, false); textarea.remove(); }; From 95a33a95e952e2eb40823a29a1540763135a8318 Mon Sep 17 00:00:00 2001 From: daiiz <da.iz.mg@gmail.com> Date: Mon, 1 Aug 2022 04:40:20 +0900 Subject: [PATCH 14/14] =?UTF-8?q?gyazo-com/text-bubble=E3=82=92=E7=9B=B4?= =?UTF-8?q?=E3=81=97=E3=81=A6=E3=81=84=E3=81=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/serviceworker.js | 64 +-- src/gyazo-com/manage.js | 63 ++- src/gyazo-com/text-bubble.js | 125 +++--- src/scrapbox-io/text-bubble.b.js | 682 +++++++++++++++++-------------- 4 files changed, 516 insertions(+), 418 deletions(-) diff --git a/client/serviceworker.js b/client/serviceworker.js index 7efe49f..ee496f4 100644 --- a/client/serviceworker.js +++ b/client/serviceworker.js @@ -6,6 +6,18 @@ const isChrome = () => { const app = isChrome() ? chrome : browser; +const getStorageValues = (keys = []) => { + return new Promise((resolve, reject) => { + const values = Object.create(null); + app.storage.local.get(keys, (res) => { + for (const key of Object.keys(res)) { + values[key] = res[key]; + } + resolve(values); + }); + }); +}; + app.runtime.onMessage.addListener(async function ( request, sender, @@ -41,15 +53,30 @@ app.runtime.onMessage.addListener(async function ( // 設定された値を返す if (cmd === "get-project-name") { console.log("[get-project-name]"); + const tabs = await app.tabs.query({ currentWindow: true, active: true }); const funcNames = request.func_names; - const projectNames = {}; - for (let i = 0; i < funcNames.length; i++) { - const funcName = funcNames[i]; - if (localStorage[funcName]) { - projectNames[funcName] = localStorage[funcName]; - } - } - sendResponse(projectNames); + // const projectNames = Object.create(null); + // for (let i = 0; i < funcNames.length; i++) { + // const funcName = funcNames[i]; + // if (localStorage[funcName]) { + // projectNames[funcName] = localStorage[funcName]; + // } + // } + // const projectNames = new Promise((resolve, reject) => { + // const pNames = Object.create(null); + // app.storage.local.get(funcNames, (res) => { + // for (const funcName of Object.keys(res)) { + // pNames[funcName] = res[funcName]; + // } + // resolve(pNames); + // }); + // }); + const projectNames = await getStorageValues(funcNames); + console.log("...1.", projectNames); + app.tabs.sendMessage(tabs[0].id, { + command: "re:get-project-name", + projectNames, + }); return; } @@ -112,8 +139,6 @@ const fetchPage = async (url, tabs) => { throw new Error("Failed to fetch page."); } const body = await res.text(); - // const parser = new DOMParser(); - // const doc = parser.parseFromString(body, "text/html"); // DOMParserを使えないので文字列操作でtitleを取り出す let externalLink = url; @@ -139,23 +164,4 @@ const fetchPage = async (url, tabs) => { command: "re:get-clipboard-page", externalLink, }); - - // if (isChrome()) { - // window.app.tabs.getSelected(null, (tab) => { - // window.app.tabs.sendMessage(tab.id, { - // command: "re:get-clipboard-page", - // externalLink, - // }); - // }); - // } else { - // // Firefox extension - // const tab = await window.app.tabs.query({ - // currentWindow: true, - // active: true, - // }); - // window.app.tabs.sendMessage(tab[0].id, { - // command: "re:get-clipboard-page", - // externalLink, - // }); - // } }; diff --git a/src/gyazo-com/manage.js b/src/gyazo-com/manage.js index e8c21af..fc0a748 100644 --- a/src/gyazo-com/manage.js +++ b/src/gyazo-com/manage.js @@ -1,23 +1,52 @@ // Gyazo -let ROOT_PROJECT_NAME = null -const DAIIZ_GYAZO_TEXT_BUBBLE = 'daiiz-gyazo-text-bubble' +let ROOT_PROJECT_NAME = null; +const DAIIZ_GYAZO_TEXT_BUBBLE = "daiiz-gyazo-text-bubble"; exports.detectProject = function () { - return ROOT_PROJECT_NAME -} + return ROOT_PROJECT_NAME; +}; + +// exports.install2 = () => { +// return new Promise((resolve) => { +// window.app.runtime.sendMessage( +// { +// command: "get-project-name", +// func_names: ["daiiz-gyazo-text-bubble"], +// }, +// function (projectNames) { +// console.info("ScrapScripts:", projectNames); +// if (projectNames[DAIIZ_GYAZO_TEXT_BUBBLE]) { +// ROOT_PROJECT_NAME = projectNames[DAIIZ_GYAZO_TEXT_BUBBLE]; +// // daiizGyazoTextBubbleMain($appRoot, ROOT_PROJECT_NAME) +// resolve(ROOT_PROJECT_NAME); +// } +// } +// ); +// }); +// }; exports.install = () => { - return new Promise(resolve => { - window.app.runtime.sendMessage({ - command: 'get-project-name', - func_names: ['daiiz-gyazo-text-bubble'] - }, function (projectNames) { - console.info('ScrapScripts', projectNames) - if (projectNames[DAIIZ_GYAZO_TEXT_BUBBLE]) { - ROOT_PROJECT_NAME = projectNames[DAIIZ_GYAZO_TEXT_BUBBLE] - // daiizGyazoTextBubbleMain($appRoot, ROOT_PROJECT_NAME) - resolve(ROOT_PROJECT_NAME) + return new Promise((resolve, reject) => { + const payload = { + command: "get-project-name", + func_names: ["daiiz-gyazo-text-bubble"], + }; + + window.app.runtime.sendMessage(payload, () => {}); + + window.app.runtime.onMessage.addListener( + (request, sender, sendResponse) => { + const { command, projectNames } = request; + if (command === "re:get-project-name") { + console.info("ScrapScripts:", projectNames); + if (projectNames[DAIIZ_GYAZO_TEXT_BUBBLE]) { + ROOT_PROJECT_NAME = projectNames[DAIIZ_GYAZO_TEXT_BUBBLE]; + resolve(ROOT_PROJECT_NAME); + } else { + resolve(""); + } + } } - }) - }) -} + ); + }); +}; diff --git a/src/gyazo-com/text-bubble.js b/src/gyazo-com/text-bubble.js index e88ac77..eab8a4b 100644 --- a/src/gyazo-com/text-bubble.js +++ b/src/gyazo-com/text-bubble.js @@ -1,85 +1,94 @@ // Gyazo -var $ = require('jquery') -var textBubble = require('../scrapbox-io/text-bubble.b.js') +var $ = require("jquery"); +var textBubble = require("../scrapbox-io/text-bubble.b.js"); // var daiizGyazoManage = require('./manage') var daiizGyazoDescLink = function ($appRoot, projectName) { // Gyazoの写真の説明文の [] をリンク化する - $appRoot.on('mouseover', '.image-desc-display', function (e) { - var $t = $(e.target).closest('.image-desc-display') - var desc = $t[0].innerHTML - var keywords = desc.match(/\[[^[\]]+\]/gi) - if (!keywords) return + $appRoot.on("mouseover", ".image-desc-display", function (e) { + var $t = $(e.target).closest(".image-desc-display"); + var desc = $t[0].innerHTML; + var keywords = desc.match(/\[[^[\]]+\]/gi); + if (!keywords) return; for (var i = 0; i < keywords.length; i++) { - var keyword = keywords[i].replace('[', '').replace(']', '') - var projectPage = `/${projectName}/${keyword}` - desc = desc.replace(keywords[i], `<a class="page-link" - href="${textBubble.getScrapboxUrl(projectPage)}">${keyword}</a>`) + var keyword = keywords[i].replace("[", "").replace("]", ""); + var projectPage = `/${projectName}/${keyword}`; + desc = desc.replace( + keywords[i], + `<a class="page-link" + href="${textBubble.getScrapboxUrl(projectPage)}">${keyword}</a>` + ); } - $t.html(desc) - }) -} + $t.html(desc); + }); +}; -var daiizGyazoTextBubbleInit = function ($appRoot, targetSelector, projectName) { - var timer = null - $appRoot.on('mouseenter', targetSelector, function (e) { - var $a = $(e.target).closest(targetSelector) - $a.attr('title', '') - var $parentBubble = $(e.target).closest('div.daiiz-text-bubble') +var daiizGyazoTextBubbleInit = function ( + $appRoot, + targetSelector, + projectName +) { + var timer = null; + $appRoot.on("mouseenter", targetSelector, function (e) { + var $a = $(e.target).closest(targetSelector); + console.log("....", $a); + $a.attr("title", ""); + var $parentBubble = $(e.target).closest("div.daiiz-text-bubble"); - var $bubble = textBubble.$getTextBubble() - var rect = $a[0].getBoundingClientRect() + var $bubble = textBubble.$getTextBubble(); + var rect = $a[0].getBoundingClientRect(); $bubble.css({ - 'max-width': $('.container-editbox')[0].offsetWidth - $a[0].offsetLeft, - 'left': rect.left + window.pageXOffset, - 'top': rect.top + window.pageYOffset + $a[0].offsetHeight + 3, - 'border-color': '#5f616a' - }) - var pos = `${$bubble.css('top')}_${$bubble.css('left')}` - $bubble.attr('data-pos', pos) + "max-width": $(".container-edit-box")[0].offsetWidth - $a[0].offsetLeft, + left: rect.left + window.pageXOffset, + top: rect.top + window.pageYOffset + $a[0].offsetHeight + 3, + "border-color": "#5f616a", + }); + var pos = `${$bubble.css("top")}_${$bubble.css("left")}`; + $bubble.attr("data-pos", pos); // すでに表示されているならば,何もしない if ($(`.daiiz-text-bubble[data-pos="${pos}"]`).length > 0) { - return + return; } - if ($a.attr('rel') && $a.attr('rel') === 'route') { - $(`.daiiz-text-bubble:not([data-pos="${pos}"])`).remove() + if ($a.attr("rel") && $a.attr("rel") === "route") { + $(`.daiiz-text-bubble:not([data-pos="${pos}"])`).remove(); } - var tag = $a[0].innerText + var tag = $a[0].innerText; timer = window.setTimeout(function () { - if ($parentBubble.length > 0) projectName = $parentBubble.attr('data-project') - textBubble.$getRefTextBody(tag.trim(), $appRoot, $bubble, projectName) - }, 650) - }) + if ($parentBubble.length > 0) + projectName = $parentBubble.attr("data-project"); + textBubble.$getRefTextBody(tag.trim(), $appRoot, $bubble, projectName); + }, 650); + }); - $appRoot.on('mouseleave', targetSelector, function (e) { - window.clearTimeout(timer) - }) + $appRoot.on("mouseleave", targetSelector, function (e) { + window.clearTimeout(timer); + }); - $appRoot.on('mouseleave', '.daiiz-card', function (e) { + $appRoot.on("mouseleave", ".daiiz-card", function (e) { // var $bubble = $('.daiiz-card') - window.clearTimeout(timer) - }) + window.clearTimeout(timer); + }); - $appRoot.on('click', function (e) { - window.clearTimeout(timer) - var $bubble = $('.daiiz-card') - var $t = $(e.target).closest('.daiiz-card') - if ($(e.target)[0].tagName.toLowerCase() === 'a') { - $bubble.remove() + $appRoot.on("click", function (e) { + window.clearTimeout(timer); + var $bubble = $(".daiiz-card"); + var $t = $(e.target).closest(".daiiz-card"); + if ($(e.target)[0].tagName.toLowerCase() === "a") { + $bubble.remove(); } else if ($t.length > 0) { - $t.remove() + $t.remove(); } else { - $bubble.remove() + $bubble.remove(); } - }) -} + }); +}; exports.enable = (projectName) => { - var $appRoot = $('body') - daiizGyazoTextBubbleInit($appRoot, 'a.hashtag', projectName) - daiizGyazoTextBubbleInit($appRoot, 'a.page-link', projectName) - daiizGyazoDescLink($appRoot, projectName) -} + var $appRoot = $("body"); + daiizGyazoTextBubbleInit($appRoot, ".image-desc-display > a", projectName); + // daiizGyazoTextBubbleInit($appRoot, "a.page-link", projectName); + daiizGyazoDescLink($appRoot, projectName); +}; diff --git a/src/scrapbox-io/text-bubble.b.js b/src/scrapbox-io/text-bubble.b.js index d0eb82b..f649a28 100644 --- a/src/scrapbox-io/text-bubble.b.js +++ b/src/scrapbox-io/text-bubble.b.js @@ -1,484 +1,538 @@ -const $ = require('jquery') -const daiizScrapboxManage = require('./manage') -const {installed, detectProject} = daiizScrapboxManage +const $ = require("jquery"); +const daiizScrapboxManage = require("./manage"); +const { installed, detectProject } = daiizScrapboxManage; -var BRACKET_OPEN = '[' -var DOUBLE_BRACKET_OPEN = '[[' -var BRACKET_CLOSE = ']' -var DOUBLE_BRACKET_CLOSE = ']]' -var INLINE_CODE = '`' -var openInlineCode = false -var openCodeBlock = false +var BRACKET_OPEN = "["; +var DOUBLE_BRACKET_OPEN = "[["; +var BRACKET_CLOSE = "]"; +var DOUBLE_BRACKET_CLOSE = "]]"; +var INLINE_CODE = "`"; +var openInlineCode = false; +var openCodeBlock = false; -var PROJECT_NAME = null -var EMPTY_LINKS = [] +var PROJECT_NAME = null; +var EMPTY_LINKS = []; exports.$getTextBubble = function () { - var $textBubble = $(`<div class="daiiz-text-bubble related-page-list daiiz-card daiiz-card-root"></div>`) - return $textBubble -} + var $textBubble = $( + `<div class="daiiz-text-bubble related-page-list daiiz-card daiiz-card-root"></div>` + ); + return $textBubble; +}; var decorate = function (str, strOpenMark, depth) { - var html = '' - var tagOpen = [] - var tagClose = [] + var html = ""; + var tagOpen = []; + var tagClose = []; if (strOpenMark === BRACKET_OPEN) { // リンク,装飾 - var body = str.replace(/^\[/, '').replace(/\]$/, '') - var words = body.split(' ') + var body = str.replace(/^\[/, "").replace(/\]$/, ""); + var words = body.split(" "); if (words.length >= 2) { - var pair = makePair(words) - var p0 = pair[0] - var p1 = pair[1] - if (p0.startsWith('http')) { + var pair = makePair(words); + var p0 = pair[0]; + var p1 = pair[1]; + if (p0.startsWith("http")) { // リンク(別名記法) - body = p1 - var href = p0 - tagOpen.push(`<a href="${encodeHref(href, true)}" class="daiiz-ref-link" target="_blank">`) - tagClose.push('</a>') - var img = makeImageTag(body) + body = p1; + var href = p0; + tagOpen.push( + `<a href="${encodeHref( + href, + true + )}" class="daiiz-ref-link" target="_blank">` + ); + tagClose.push("</a>"); + var img = makeImageTag(body); if (img[1]) { - body = img[0] + body = img[0]; } else { - body = spans(p1) + body = spans(p1); } } else { - var f = true - body = p1 + var f = true; + body = p1; // 太字, 斜体, 打ち消し - var o = !p0.match(/[^\-\*\/\_]/gi) - if (o && p0.indexOf('*') >= 0) { - tagOpen.push('<b>') - tagClose.push('</b>') - f = false + var o = !p0.match(/[^\-\*\/\_]/gi); + if (o && p0.indexOf("*") >= 0) { + tagOpen.push("<b>"); + tagClose.push("</b>"); + f = false; } - if (o && p0.indexOf('/') >= 0) { - tagOpen.push('<i>') - tagClose.push('</i>') - f = false + if (o && p0.indexOf("/") >= 0) { + tagOpen.push("<i>"); + tagClose.push("</i>"); + f = false; } - if (o && p0.indexOf('-') >= 0) { - tagOpen.push('<s>') - tagClose.push('</s>') - f = false + if (o && p0.indexOf("-") >= 0) { + tagOpen.push("<s>"); + tagClose.push("</s>"); + f = false; } - if (o && p0.indexOf('_') >= 0) { - tagOpen.push('<span class="daiz-underline">') - tagClose.push('</span>') - f = false + if (o && p0.indexOf("_") >= 0) { + tagOpen.push('<span class="daiz-underline">'); + tagClose.push("</span>"); + f = false; } if (f) { // 半角空白を含むタイトルのページ - body = words.join(' ') - var href = (body[0] === '/') ? body : `/${PROJECT_NAME}/${body}` - var target = (PROJECT_NAME !== detectProject()) ? '_blank' : '_self' - var classEmptyLink = '' - if (EMPTY_LINKS.indexOf(body) !== -1) classEmptyLink = 'empty-page-link' - body = spans(body) + body = words.join(" "); + var href = body[0] === "/" ? body : `/${PROJECT_NAME}/${body}`; + var target = PROJECT_NAME !== detectProject() ? "_blank" : "_self"; + var classEmptyLink = ""; + if (EMPTY_LINKS.indexOf(body) !== -1) + classEmptyLink = "empty-page-link"; + body = spans(body); tagOpen.push(`<a href="${encodeHref(getScrapboxUrl(href), false)}" - class="page-link ${classEmptyLink}" target="${target}">`) - tagClose.push('</a>') + class="page-link ${classEmptyLink}" target="${target}">`); + tagClose.push("</a>"); } } - var img = makeImageTag(body) - if (img[1]) body = img[0] + var img = makeImageTag(body); + if (img[1]) body = img[0]; } else { // [ ] 内に空白を含まない if (body.length === 0) { - body = '[]' + body = "[]"; } else { // リンク, 画像 - var pageLink = makePageLink(body, tagOpen, tagClose) - tagOpen = pageLink.tagOpen - tagClose = pageLink.tagClose - body = pageLink.body + var pageLink = makePageLink(body, tagOpen, tagClose); + tagOpen = pageLink.tagOpen; + tagClose = pageLink.tagClose; + body = pageLink.body; } } } else if (strOpenMark === DOUBLE_BRACKET_OPEN) { - var body = str.replace(/^\[\[/, '').replace(/\]\]$/, '') - tagOpen.push('<b>') - tagClose.push('</b>') - var img = makeImageTag(body) - if (img[1]) body = img[0] + var body = str.replace(/^\[\[/, "").replace(/\]\]$/, ""); + tagOpen.push("<b>"); + tagClose.push("</b>"); + var img = makeImageTag(body); + if (img[1]) body = img[0]; } else if (strOpenMark === INLINE_CODE) { - var code = str.replace(/^\`/, '').replace(/\`$/, '') - body = `<span class="daiiz-backquote">${spans(code)}</span>` + var code = str.replace(/^\`/, "").replace(/\`$/, ""); + body = `<span class="daiiz-backquote">${spans(code)}</span>`; } - return `${tagOpen.join('')}${body}${tagClose.reverse().join('')}` -} + return `${tagOpen.join("")}${body}${tagClose.reverse().join("")}`; +}; var spans = function (txt) { - var body = '' + var body = ""; for (var k = 0; k < txt.length; k++) { - body += `<span>${txt[k]}</span>` + body += `<span>${txt[k]}</span>`; } - return body -} + return body; +}; -var getScrapboxUrl = url => { - return 'https://scrapbox.io' + url -} -exports.getScrapboxUrl = getScrapboxUrl +var getScrapboxUrl = (url) => { + return "https://scrapbox.io" + url; +}; +exports.getScrapboxUrl = getScrapboxUrl; var makePageLink = (body, tagOpen, tagClose) => { - var link = {tagOpen: [], tagClose: [], body: ''} - - var href = getScrapboxUrl(`/${PROJECT_NAME}/${body}`) - var startsWithHttp = false - if (body[0] === '/') { - href = getScrapboxUrl(body) - } else if (body.startsWith('http')) { - href = body - startsWithHttp = true + var link = { tagOpen: [], tagClose: [], body: "" }; + + var href = getScrapboxUrl(`/${PROJECT_NAME}/${body}`); + var startsWithHttp = false; + if (body[0] === "/") { + href = getScrapboxUrl(body); + } else if (body.startsWith("http")) { + href = body; + startsWithHttp = true; } - var className = 'page-link' - var target = (PROJECT_NAME !== detectProject()) ? '_blank' : '_self' - if (body.startsWith('http')) { - className = 'daiiz-ref-link' - target = '_blank' + var className = "page-link"; + var target = PROJECT_NAME !== detectProject() ? "_blank" : "_self"; + if (body.startsWith("http")) { + className = "daiiz-ref-link"; + target = "_blank"; } - var img = makeImageTag(body) + var img = makeImageTag(body); if (img[1]) { - link.tagOpen = [] - link.tagClose = [] - link.body = img[0] + link.tagOpen = []; + link.tagClose = []; + link.body = img[0]; } else { - if (EMPTY_LINKS.indexOf(body) !== -1) className += ' empty-page-link' - link.body = spans(body) - link.tagOpen.push(`<a href="${encodeHref(href, startsWithHttp)}" class="${className}" target="${target}">`) - link.tagClose.push('</a>') + if (EMPTY_LINKS.indexOf(body) !== -1) className += " empty-page-link"; + link.body = spans(body); + link.tagOpen.push( + `<a href="${encodeHref( + href, + startsWithHttp + )}" class="${className}" target="${target}">` + ); + link.tagClose.push("</a>"); } - return link -} + return link; +}; var makePair = function (words) { - var w0 = words[0] - var wL = words[words.length - 1] - var pair = [] - if (wL.startsWith('http')) { - pair.push(wL) - pair.push(words.slice(0, words.length - 1).join(' ')) + var w0 = words[0]; + var wL = words[words.length - 1]; + var pair = []; + if (wL.startsWith("http")) { + pair.push(wL); + pair.push(words.slice(0, words.length - 1).join(" ")); } else { - pair.push(w0) - pair.push(words.slice(1, words.length).join(' ')) + pair.push(w0); + pair.push(words.slice(1, words.length).join(" ")); } - if (pair[0].startsWith('http') && pair[1].startsWith('http')) { - var a = (pair[0].endsWith('.jpg') || pair[0].endsWith('.png') || pair[0].endsWith('.gif')) - var b = (pair[0].match(/^https{0,1}:\/\/gyazo.com\/.{24,32}$/) !== null) + if (pair[0].startsWith("http") && pair[1].startsWith("http")) { + var a = + pair[0].endsWith(".jpg") || + pair[0].endsWith(".png") || + pair[0].endsWith(".gif"); + var b = pair[0].match(/^https{0,1}:\/\/gyazo.com\/.{24,32}$/) !== null; if (a || b) { - pair.reverse() + pair.reverse(); } } - return pair -} + return pair; +}; var encodeHref = function (url, startsWithHttp) { - var tt = url.match(/scrapbox\.io\/([^\/]+)\/(.+)/) + var tt = url.match(/scrapbox\.io\/([^\/]+)\/(.+)/); if (startsWithHttp || tt === null) { - url = url.replace(/</gi, '%3C').replace(/>/gi, '%3E').replace(/;/gi, '%3B') - return url + url = url.replace(/</gi, "%3C").replace(/>/gi, "%3E").replace(/;/gi, "%3B"); + return url; } if (tt !== null) { - var pageName = tt[2] - var pageRowNum = pageName.match(/#.{24,32}$/) + var pageName = tt[2]; + var pageRowNum = pageName.match(/#.{24,32}$/); if (pageRowNum) { // 行リンク - var n = pageRowNum[0] - pageName = encodeURIComponent(pageName.split(n)[0]) + n + var n = pageRowNum[0]; + pageName = encodeURIComponent(pageName.split(n)[0]) + n; } else { - pageName = encodeURIComponent(pageName) + pageName = encodeURIComponent(pageName); } - return url.replace(tt[2], pageName) + return url.replace(tt[2], pageName); } -} +}; // 画像になる可能性があるものに対処 var makeImageTag = function (keyword) { - keyword = keyword.trim() - var img = '' - var isImg = true + keyword = keyword.trim(); + var img = ""; + var isImg = true; if (keyword.match(/\.icon\**\d*$/gi)) { - var iconName = keyword.split('.icon')[0] - if (iconName.charAt(0) !== '/') { - iconName = '/' + PROJECT_NAME + '/' + iconName + var iconName = keyword.split(".icon")[0]; + if (iconName.charAt(0) !== "/") { + iconName = "/" + PROJECT_NAME + "/" + iconName; } - var toks = keyword.split('*') - var times = 1 - if (toks.length === 2) times = +toks[1] + var toks = keyword.split("*"); + var times = 1; + if (toks.length === 2) times = +toks[1]; for (var i = 0; i < times; i++) { - img += `<img class="daiiz-tiny-icon" src="https://scrapbox.io/api/pages${iconName}/icon">` + img += `<img class="daiiz-tiny-icon" src="https://scrapbox.io/api/pages${iconName}/icon">`; } - } else if (keyword.endsWith('.jpg') || keyword.endsWith('.png') || keyword.endsWith('.gif')) { - img = `<img class="daiiz-small-img" src="${keyword}">` + } else if ( + keyword.endsWith(".jpg") || + keyword.endsWith(".png") || + keyword.endsWith(".gif") + ) { + img = `<img class="daiiz-small-img" src="${keyword}">`; } else if (keyword.match(/^https{0,1}:\/\/gyazo.com\/.{24,32}$/)) { - img = `<img class="daiiz-small-img" src="${keyword}/raw">` + img = `<img class="daiiz-small-img" src="${keyword}/raw">`; } else { - img = keyword - isImg = false + img = keyword; + isImg = false; } - return [img, isImg] -} + return [img, isImg]; +}; /** Scrapboxの行単位での記法解析 */ -var dicts = [] +var dicts = []; var parse = function (fullStr, startIdx, depth, seekEnd) { - fullStr = fullStr.trim() - var l = fullStr.length - var startIdxkeep = startIdx + fullStr = fullStr.trim(); + var l = fullStr.length; + var startIdxkeep = startIdx; while (startIdx < l) { - var subStr = fullStr.substring(startIdx, l) + var subStr = fullStr.substring(startIdx, l); if (subStr.startsWith(DOUBLE_BRACKET_OPEN) && !openInlineCode) { - var token = parse(fullStr, startIdx + DOUBLE_BRACKET_OPEN.length, depth + 1, DOUBLE_BRACKET_CLOSE) - var str = DOUBLE_BRACKET_OPEN + fullStr.substring(token[0], token[1]) + DOUBLE_BRACKET_CLOSE - var res = decorate(str, DOUBLE_BRACKET_OPEN, depth) - var trans = {} - trans[str] = res - dicts.push(trans) - startIdx = token[1] + var token = parse( + fullStr, + startIdx + DOUBLE_BRACKET_OPEN.length, + depth + 1, + DOUBLE_BRACKET_CLOSE + ); + var str = + DOUBLE_BRACKET_OPEN + + fullStr.substring(token[0], token[1]) + + DOUBLE_BRACKET_CLOSE; + var res = decorate(str, DOUBLE_BRACKET_OPEN, depth); + var trans = {}; + trans[str] = res; + dicts.push(trans); + startIdx = token[1]; } else if (subStr.startsWith(BRACKET_OPEN) && !openInlineCode) { - var token = parse(fullStr, startIdx + BRACKET_OPEN.length, depth + 1, BRACKET_CLOSE) - var str = BRACKET_OPEN + fullStr.substring(token[0], token[1]) + BRACKET_CLOSE - var res = decorate(str, BRACKET_OPEN, depth) - var trans = {} - trans[str] = res - dicts.push(trans) - startIdx = token[1] + var token = parse( + fullStr, + startIdx + BRACKET_OPEN.length, + depth + 1, + BRACKET_CLOSE + ); + var str = + BRACKET_OPEN + fullStr.substring(token[0], token[1]) + BRACKET_CLOSE; + var res = decorate(str, BRACKET_OPEN, depth); + var trans = {}; + trans[str] = res; + dicts.push(trans); + startIdx = token[1]; } else if (subStr.startsWith(INLINE_CODE) && !openInlineCode) { - openInlineCode = true + openInlineCode = true; // このマークは入れ子構造をとり得ないことに注意 - var token = parse(fullStr, startIdx + INLINE_CODE.length, depth + 1, INLINE_CODE) - var str = INLINE_CODE + fullStr.substring(token[0], token[1]) + INLINE_CODE - var res = decorate(str, INLINE_CODE, depth) - var trans = {} - trans[str] = res - dicts.push(trans) - startIdx = token[1] + var token = parse( + fullStr, + startIdx + INLINE_CODE.length, + depth + 1, + INLINE_CODE + ); + var str = + INLINE_CODE + fullStr.substring(token[0], token[1]) + INLINE_CODE; + var res = decorate(str, INLINE_CODE, depth); + var trans = {}; + trans[str] = res; + dicts.push(trans); + startIdx = token[1]; } // 探していた閉じマークが見つかった if (subStr.startsWith(seekEnd)) { - if (seekEnd === INLINE_CODE) openInlineCode = false - return [startIdxkeep, startIdx] + if (seekEnd === INLINE_CODE) openInlineCode = false; + return [startIdxkeep, startIdx]; } - startIdx++ + startIdx++; } // 置換する順番に格納されている // HTML文字列を作成する - dicts.push(fullStr) - dicts.reverse() - var html = fullStr + dicts.push(fullStr); + dicts.reverse(); + var html = fullStr; for (var i = 1; i < dicts.length; i++) { - var key = Object.keys(dicts[i])[0] - html = html.replace(key, dicts[i][key]) + var key = Object.keys(dicts[i])[0]; + html = html.replace(key, dicts[i][key]); } - return html -} + return html; +}; /* ======================== */ /* Main: 行単位の記法解析 */ /* ======================== */ var parseRow = function (row) { - if (row.length === 0) return null - var t0 = row.charAt(0) - row = row.trim() + if (row.length === 0) return null; + var t0 = row.charAt(0); + row = row.trim(); // コードブロックを無視する処理 - if (row.startsWith('code:')) { - openCodeBlock = true - return null + if (row.startsWith("code:")) { + openCodeBlock = true; + return null; } if (openCodeBlock) { - if (t0 == ' ' || t0 == '\t') { - return null + if (t0 == " " || t0 == "\t") { + return null; } else { - openCodeBlock = false + openCodeBlock = false; } } // シェル記法の対応 - if (row.charAt(0) === '$') return makeShellStr(row) + if (row.charAt(0) === "$") return makeShellStr(row); // 括弧を用いる記法の解析 - dicts = [] - var res = parse(row, 0, 0, null) + dicts = []; + var res = parse(row, 0, 0, null); // プレーンテキストに埋め込まれたリンクに対応する - res = makePlainLinks(res) + res = makePlainLinks(res); // ハッシュタグをリンク化する - res = makeHashTagLinks(res) + res = makeHashTagLinks(res); // scriptタグを無効化 - var html = '' + var html = ""; for (var j = 0; j < res.length; j++) { - var c = res.charAt(j) - if (c === '<' && res.substring(j + 1, res.length).startsWith('script')) html += spans('<') - else if (c === '<' && res.substring(j + 1, res.length).startsWith('/script')) html += spans('<') - else if (c === ';') html += spans(';') - else html += c + var c = res.charAt(j); + if (c === "<" && res.substring(j + 1, res.length).startsWith("script")) + html += spans("<"); + else if ( + c === "<" && + res.substring(j + 1, res.length).startsWith("/script") + ) + html += spans("<"); + else if (c === ";") html += spans(";"); + else html += c; } - return html -} + return html; +}; var makeHashTagLinks = function (row) { - row = ' ' + row + ' ' - var hashTags = row.match(/(^| )\#[^ ]+/gi) + row = " " + row + " "; + var hashTags = row.match(/(^| )\#[^ ]+/gi); if (hashTags) { for (var i = 0; i < hashTags.length; i++) { - var hashTag = hashTags[i].trim() - var keyword = encodeURIComponent(hashTag.substring(1, hashTag.length)) - var target = (PROJECT_NAME !== detectProject()) ? '_blank' : '_self' + var hashTag = hashTags[i].trim(); + var keyword = encodeURIComponent(hashTag.substring(1, hashTag.length)); + var target = PROJECT_NAME !== detectProject() ? "_blank" : "_self"; var a = ` <a href="/${PROJECT_NAME}/${keyword}" class="page-link" - target="${target}">${spans(hashTag)}</a> ` - row = row.replace(` ${hashTag} `, a) + target="${target}">${spans(hashTag)}</a> `; + row = row.replace(` ${hashTag} `, a); } } - return row.substring(1, row.length - 1) -} + return row.substring(1, row.length - 1); +}; var makePlainLinks = function (row) { - row = ' ' + row + ' ' - var words = row.split(' ') - var res = [] + row = " " + row + " "; + var words = row.split(" "); + var res = []; for (var k = 0; k < words.length; k++) { - var word = words[k].trim() - if (word.startsWith('http')) { - var a = ` <a href=${encodeHref(word, true)} class="daiiz-ref-link" target="_blank">${word}</a> ` - row = row.replace(` ${word} `, a) + var word = words[k].trim(); + if (word.startsWith("http")) { + var a = ` <a href=${encodeHref( + word, + true + )} class="daiiz-ref-link" target="_blank">${word}</a> `; + row = row.replace(` ${word} `, a); } } - return row.substring(1, row.length - 1) -} + return row.substring(1, row.length - 1); +}; var makeShellStr = function (row) { - return `<span class="daiiz-backquote">${spans(row)}</span>` -} + return `<span class="daiiz-backquote">${spans(row)}</span>`; +}; /* ================ */ /* 表示コントール */ /* ================ */ var previewPageText = function ($root, $bubble, title, rowHash) { - var externalProject = false - var extraClassName = '' - if (PROJECT_NAME !== detectProject()) externalProject = true + var externalProject = false; + var extraClassName = ""; + if (PROJECT_NAME !== detectProject()) externalProject = true; + // TODO: src/gyazo-com/text-bubble.js 機能でCORS突破できない $.ajax({ - type: 'GET', - contentType: 'application/json', - url: `https://scrapbox.io/api/pages/${PROJECT_NAME}/${title}` - }).done(data => { - EMPTY_LINKS = data.emptyLinks || [] - if (externalProject) $bubble.addClass('daiiz-external-project') - $bubble.attr('data-project', PROJECT_NAME) - $root.append($bubble) - - var lines = data.lines - var contents = [] + type: "GET", + contentType: "application/json", + url: `https://scrapbox.io/api/pages/${PROJECT_NAME}/${title}`, + }).done((data) => { + EMPTY_LINKS = data.emptyLinks || []; + if (externalProject) $bubble.addClass("daiiz-external-project"); + $bubble.attr("data-project", PROJECT_NAME); + $root.append($bubble); + + var lines = data.lines; + var contents = []; for (var l = 1; l < lines.length; l++) { - var line = lines[l] + var line = lines[l]; if (rowHash) { if (line.id === rowHash) { - extraClassName = 'daiiz-line-permalink' - var row = parseRow(line.text) - if (row) contents.push(row) - break + extraClassName = "daiiz-line-permalink"; + var row = parseRow(line.text); + if (row) contents.push(row); + break; } } else { - var row = parseRow(line.text) - if (row) contents.push(row) + var row = parseRow(line.text); + if (row) contents.push(row); } } if (contents.length > 0) { - $bubble.html(`<div class="daiiz-bubble-text ${extraClassName}">${contents.join('<br>')}</div>`) - $bubble.show() + $bubble.html( + `<div class="daiiz-bubble-text ${extraClassName}">${contents.join( + "<br>" + )}</div>` + ); + $bubble.show(); } - }) -} + }); +}; exports.$getRefTextBody = function (title, $root, $bubble, projectName) { - title = title.replace(/^\#/, '') - var t = title.match(/\#.{24,32}$/) - var lineHash = null + title = title.replace(/^\#/, ""); + var t = title.match(/\#.{24,32}$/); + var lineHash = null; if (t !== null) { - title = title.replace(/\#.{24,32}$/, '') - lineHash = t[0].replace('#', '') + title = title.replace(/\#.{24,32}$/, ""); + lineHash = t[0].replace("#", ""); } - if (title.startsWith('/')) { - console.log('...') - return + if (title.startsWith("/")) { + console.log("..."); + return; // 外部プロジェクト名とページ名を抽出 - var tt = title.match(/\/([^\/]+)\/(.+)/) - if (!tt) return - var projectName = tt[1] - var title = tt[2] + var tt = title.match(/\/([^\/]+)\/(.+)/); + if (!tt) return; + var projectName = tt[1]; + var title = tt[2]; } - title = encodeURIComponent(title) - PROJECT_NAME = projectName + title = encodeURIComponent(title); + PROJECT_NAME = projectName; - previewPageText($root, $bubble, title, lineHash) -} + previewPageText($root, $bubble, title, lineHash); +}; exports.enable = function () { - const $appRoot = $('#app-container') - const self = this - let timer = null + const $appRoot = $("#app-container"); + const self = this; + let timer = null; - $appRoot.on('mouseenter', 'a.page-link', function (e) { - var pos = installed('daiiz-text-bubble') - if (pos === false) return + $appRoot.on("mouseenter", "a.page-link", function (e) { + var pos = installed("daiiz-text-bubble"); + if (pos === false) return; - var $a = $(e.target).closest('a.page-link') - var $parentBubble = $(e.target).closest('div.daiiz-text-bubble') - var $root = $appRoot.find('.page') + var $a = $(e.target).closest("a.page-link"); + var $parentBubble = $(e.target).closest("div.daiiz-text-bubble"); + var $root = $appRoot.find(".page"); - if ($a.hasClass('empty-page-link')) return - var $bubble = self.$getTextBubble() - var rect = $a[0].getBoundingClientRect() + if ($a.hasClass("empty-page-link")) return; + var $bubble = self.$getTextBubble(); + var rect = $a[0].getBoundingClientRect(); $bubble.css({ - 'max-width': $('.editor')[0].offsetWidth - $a[0].offsetLeft, - 'left': rect.left + window.pageXOffset, - 'top': 18 + rect.top + window.pageYOffset + $a[0].offsetHeight + 3 - 24, - 'border-color': $('body').css('background-color') - }) - var pos = `${$bubble.css('top')}_${$bubble.css('left')}` - $bubble.attr('data-pos', pos) + "max-width": $(".editor")[0].offsetWidth - $a[0].offsetLeft, + left: rect.left + window.pageXOffset, + top: 18 + rect.top + window.pageYOffset + $a[0].offsetHeight + 3 - 24, + "border-color": $("body").css("background-color"), + }); + var pos = `${$bubble.css("top")}_${$bubble.css("left")}`; + $bubble.attr("data-pos", pos); // すでに表示されているならば,何もしない - if ($(`.daiiz-text-bubble[data-pos="${pos}"]`).length > 0) return - if ($a.attr('rel') && $a.attr('rel') == 'route') { - $(`.daiiz-text-bubble:not([data-pos="${pos}"])`).remove() + if ($(`.daiiz-text-bubble[data-pos="${pos}"]`).length > 0) return; + if ($a.attr("rel") && $a.attr("rel") == "route") { + $(`.daiiz-text-bubble:not([data-pos="${pos}"])`).remove(); } - var keyword = $a[0].innerText + var keyword = $a[0].innerText; timer = setTimeout(function () { - let projectName = detectProject() - if ($parentBubble.length > 0) projectName = $parentBubble.attr('data-project') - self.$getRefTextBody(keyword.trim(), $root, $bubble, projectName) - }, 650) - }) - - $appRoot.on('mouseleave', 'a.page-link', function (e) { - clearTimeout(timer) - }) - - $appRoot.on('mouseleave', '.daiiz-card', function (e) { - clearTimeout(timer) - }) - - $appRoot.on('click', function (e) { - clearTimeout(timer) - var $bubble = $('.daiiz-card') - var $t = $(e.target).closest('.daiiz-card') - if ($(e.target)[0].tagName.toLowerCase() === 'a') { - $bubble.remove() + let projectName = detectProject(); + if ($parentBubble.length > 0) + projectName = $parentBubble.attr("data-project"); + self.$getRefTextBody(keyword.trim(), $root, $bubble, projectName); + }, 650); + }); + + $appRoot.on("mouseleave", "a.page-link", function (e) { + clearTimeout(timer); + }); + + $appRoot.on("mouseleave", ".daiiz-card", function (e) { + clearTimeout(timer); + }); + + $appRoot.on("click", function (e) { + clearTimeout(timer); + var $bubble = $(".daiiz-card"); + var $t = $(e.target).closest(".daiiz-card"); + if ($(e.target)[0].tagName.toLowerCase() === "a") { + $bubble.remove(); } else if ($t.length > 0) { - $t.remove() + $t.remove(); } else { - $bubble.remove() + $bubble.remove(); } - }) -} + }); +};