diff --git a/Makefile b/Makefile index 26533524..5bb3519b 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ help: compile: ## Build the application mix do deps.get, compile - mix do loadpaths, absinthe.schema.json priv/graphql/schema.json + mix generate_schema cd assets && \ npm install && \ npm run graphql && \ @@ -32,7 +32,7 @@ image: ## Mimic CodeBuild build release: ## Build a release of the application with MIX_ENV=prod MIX_ENV=prod mix do deps.get, compile - MIX_ENV=prod mix do loadpaths, absinthe.schema.json priv/graphql/schema.json + mix generate_schema cd assets && \ NODE_ENV=production npm install && \ NODE_ENV=production npm run graphql && \ @@ -42,8 +42,7 @@ release: ## Build a release of the application with MIX_ENV=prod @cp _build/prod/rel/$(IMAGE_NAME)/releases/$(VERSION)/$(IMAGE_NAME).tar.gz $(IMAGE_NAME).tar.gz bootstrap: ## Setup the app dev - $(MAKE) clean scripts/bootstrap -server: ## Run the app locally for dev +serve: ## Run the app locally for dev scripts/server diff --git a/assets/elm-package.json b/assets/elm-package.json deleted file mode 100644 index b42d7ece..00000000 --- a/assets/elm-package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "version": "1.0.0", - "summary": "helpful summary of your project, less than 80 characters", - "repository": "https://github.com/user/project.git", - "license": "BSD3", - "source-directories": [ - "src", - "elm-stuff/generated/dillonkearns/graphqelm" - ], - "exposed-modules": [], - "native-modules": true, - "dependencies": { - "NoRedInk/elm-decode-pipeline": "3.0.0 <= v <= 3.0.0", - "Skinney/murmur3": "2.0.6 <= v < 3.0.0", - "dillonkearns/graphqelm": "11.1.0 <= v < 12.0.0", - "elm-lang/core": "5.1.1 <= v <= 5.1.1", - "elm-lang/html": "2.0.0 <= v <= 2.0.0", - "elm-lang/http": "1.0.0 <= v <= 1.0.0", - "elm-lang/keyboard": "1.0.1 <= v <= 1.0.1", - "elm-lang/navigation": "2.0.1 <= v <= 2.0.1", - "elm-lang/svg": "2.0.0 <= v <= 2.0.0", - "elm-lang/websocket": "1.0.2 <= v < 2.0.0", - "elm-tools/parser": "2.0.1 <= v < 3.0.0", - "folkertdev/elm-deque": "2.0.0 <= v < 3.0.0", - "jinjor/elm-debounce": "2.1.2 <= v < 3.0.0", - "krisajenkins/remotedata": "4.3.1 <= v <= 4.3.1", - "lukewestby/elm-http-builder": "5.2.0 <= v <= 5.2.0", - "lukewestby/http-extra": "2.0.0 <= v <= 2.0.0", - "rtfeldman/elm-css": "13.1.1 <= v <= 13.1.1" - }, - "elm-version": "0.18.0 <= v < 0.19.0" -} diff --git a/assets/elm.json b/assets/elm.json new file mode 100644 index 00000000..069324df --- /dev/null +++ b/assets/elm.json @@ -0,0 +1,39 @@ +{ + "type": "application", + "source-directories": [ + "src", + "vendor", + "elm-stuff/generated/dillonkearns/graphql" + ], + "elm-version": "0.19.0", + "dependencies": { + "direct": { + "Skinney/murmur3": "2.0.8", + "elm/browser": "1.0.1", + "elm/core": "1.0.0", + "elm/html": "1.0.0", + "elm/http": "1.0.0", + "elm/json": "1.1.2", + "elm/parser": "1.1.0", + "elm/regex": "1.0.0", + "elm/svg": "1.0.1", + "elm/time": "1.0.0", + "elm/url": "1.0.0", + "elm-community/list-extra": "8.1.0", + "folkertdev/elm-deque": "3.0.0", + "jinjor/elm-debounce": "3.0.0", + "lukewestby/elm-http-builder": "6.0.0", + "lukewestby/elm-string-interpolate": "1.0.3", + "lukewestby/http-extra": "2.0.1", + "rtfeldman/elm-css": "16.0.0" + }, + "indirect": { + "elm/virtual-dom": "1.0.2", + "rtfeldman/elm-hex": "1.0.0" + } + }, + "test-dependencies": { + "direct": {}, + "indirect": {} + } +} diff --git a/assets/package-lock.json b/assets/package-lock.json index 06698852..39e391f4 100644 --- a/assets/package-lock.json +++ b/assets/package-lock.json @@ -4,10 +4,31 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@absinthe/socket": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@absinthe/socket/-/socket-0.2.0.tgz", + "integrity": "sha1-xySQu9HO3UjIJrrs4atij3iAEc4=", + "requires": { + "@babel/runtime": "7.2.0", + "@jumpn/utils-array": "0.3.4", + "@jumpn/utils-composite": "0.7.0", + "@jumpn/utils-graphql": "0.6.0", + "core-js": "2.6.0", + "phoenix": "1.4.0", + "zen-observable": "0.8.11" + }, + "dependencies": { + "phoenix": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/phoenix/-/phoenix-1.4.0.tgz", + "integrity": "sha1-nOyNvYy8WezSFHvAnKjOtWuGDXU=" + } + } + }, "@babel/code-frame": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.46.tgz", - "integrity": "sha512-7BKRkmYaPZm3Yff5HGZJKCz7RqZ5jUjknsXT6Gz5YKG23J3uq9hAj0epncCB0rlqmnZ8Q+UUpQB2tCR5mT37vw==", + "integrity": "sha1-4NACEAgF2qsUYcD8syoH4wTzpPQ=", "requires": { "@babel/highlight": "7.0.0-beta.46" } @@ -15,7 +36,7 @@ "@babel/core": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.0.0-beta.46.tgz", - "integrity": "sha512-lCDbBSAhNAt+nL98xbgWmuhgrIxKvbvFHf73zlNCuXCHJkdlo7qzTofYK0ZWb+OVce8fQ17fC7DwTIhAwowzMw==", + "integrity": "sha1-2+IYm83vmiyEvssexiSHjTGpVok=", "requires": { "@babel/code-frame": "7.0.0-beta.46", "@babel/generator": "7.0.0-beta.46", @@ -37,7 +58,7 @@ "@babel/generator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.46.tgz", - "integrity": "sha512-5VfaEVkPG0gpNSTcf70jvV+MjbMoNn4g2iluwM7MhciedkolEtmG7PcdoUj5W1EmMfngz5cF65V7UMZXJO6y8Q==", + "integrity": "sha1-b1cVm8wov4w+1rVJeJNVzr+j+qc=", "requires": { "@babel/types": "7.0.0-beta.46", "jsesc": "^2.5.1", @@ -49,7 +70,7 @@ "@babel/helper-annotate-as-pure": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.46.tgz", - "integrity": "sha512-ej5W347ghJF1p2TM3VcEyds1+o1uy1apaQcHrYFJPus2xCgn5KkHPkBGf+6euLfFaQDtB+eWPVKjiZx/hpYXvA==", + "integrity": "sha1-TNdtXJNAnqAdMb5mOVo7mKNyeS4=", "requires": { "@babel/types": "7.0.0-beta.46" } @@ -57,7 +78,7 @@ "@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.46.tgz", - "integrity": "sha512-ZCQ62KqFC5R3NPe5ug9pVqIHYJNup8UdEbE4IXw+s7zr4D/7AsKSt3pXA+FbML5AnQXeCSOuUWioggGmKuDV5g==", + "integrity": "sha1-tsjeSGk7Zr+QI56ZhWvkwiV+Q7o=", "requires": { "@babel/helper-explode-assignable-expression": "7.0.0-beta.46", "@babel/types": "7.0.0-beta.46" @@ -66,7 +87,7 @@ "@babel/helper-call-delegate": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.46.tgz", - "integrity": "sha512-7nhBu/MBlpvZLQsmw/C7VxN14wph+yp+1yxzPEd2oTsHg3oA73tHyguQ6wbtkw+9f1AZtP7ZJCLQ+nGLprF4Fw==", + "integrity": "sha1-qei0bOzkdyYwjwFc6XkpPvPTarc=", "requires": { "@babel/helper-hoist-variables": "7.0.0-beta.46", "@babel/traverse": "7.0.0-beta.46", @@ -76,7 +97,7 @@ "@babel/helper-define-map": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.46.tgz", - "integrity": "sha512-rhi59ZVj+bhrgxqLi9VQmQOadcK9rLCArY8zqyjPNjDIsCurCwtQztRWhlz6CwBEhE9FO/KbSa9OFQm7Kobk+w==", + "integrity": "sha1-mUIZdR70i/HsMmBLQ5NfKyTWF/o=", "requires": { "@babel/helper-function-name": "7.0.0-beta.46", "@babel/types": "7.0.0-beta.46", @@ -86,7 +107,7 @@ "@babel/helper-explode-assignable-expression": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.46.tgz", - "integrity": "sha512-SW1OUmx2fC2SqL7+vF1N72FITbPuEWGdr/Gm7I3Vqs8p8T1dfGwB9YFsD+tTpfagKXVMiCCuQ06+G0FB8uxg6Q==", + "integrity": "sha1-ajSnUzdhuXzk979vxYbc+yBP+hE=", "requires": { "@babel/traverse": "7.0.0-beta.46", "@babel/types": "7.0.0-beta.46" @@ -95,7 +116,7 @@ "@babel/helper-function-name": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.46.tgz", - "integrity": "sha512-zm4Kc5XB2njGs8PkmjV1zE/g1hBuphbh+VcDyFLaQsxkxSFSUtCbKwFL8AQpL/qPIcGbvX1MBt50a/3ZZH2CQA==", + "integrity": "sha1-0MTu0uIg4YD5GwLgCNzEWUr+HTk=", "requires": { "@babel/helper-get-function-arity": "7.0.0-beta.46", "@babel/template": "7.0.0-beta.46", @@ -105,7 +126,7 @@ "@babel/helper-get-function-arity": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.46.tgz", - "integrity": "sha512-dPrTb7QHVx44xJLjUl3LGAc13iS7hdXdO0fiOxdRN1suIS91yGGgeuwiQBlrw5SxbFchYtwenhlKbqHdVfGyVA==", + "integrity": "sha1-cWG/5Em0GD2+JdH+VXkzi3Qp5fI=", "requires": { "@babel/types": "7.0.0-beta.46" } @@ -113,7 +134,7 @@ "@babel/helper-hoist-variables": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.46.tgz", - "integrity": "sha512-9xDHLfaVA445mcHU2OEPwEddiyS0Zxao2WObFR2L/SK5MNOPj2VqVCvivYrO2OpzhnLLCTbOfXRmrwrc9WYN6Q==", + "integrity": "sha1-LWViFb6j8ET/HuOR/FHVX85G3fU=", "requires": { "@babel/types": "7.0.0-beta.46" } @@ -121,7 +142,7 @@ "@babel/helper-member-expression-to-functions": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-Xb5iVUHXY8yz4pgGBvtuS1kxZH1oUYcxTcbIW8NFRvgpeH3Zcv4me02bbixsk7nhn8ttE79Lr1g4vrem4k5Z3Q==", + "integrity": "sha1-c2NEwdaPssS3XL5iNw62EMBXhCc=", "requires": { "@babel/types": "7.0.0-beta.46" } @@ -129,7 +150,7 @@ "@babel/helper-module-imports": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.46.tgz", - "integrity": "sha512-xjgpwrqHiKCZgAcqsNIpZ9kOCC5Ty/VYN1H07v21HbAf/dl0/HeUA0taz3EFv6/7lRgS3qThawTSG0POJQX9vQ==", + "integrity": "sha1-i9Lh/Prog9KBSaNQ4xzmBqok7aY=", "requires": { "@babel/types": "7.0.0-beta.46", "lodash": "^4.2.0" @@ -138,7 +159,7 @@ "@babel/helper-module-transforms": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.46.tgz", - "integrity": "sha512-IckoWSub3PHNvkWcUEWfKBe8pFUdMhsZMFDcaovcLb+gfxL/zZhQYwedKKKwbzVGIk9k44yjeMQ/OJd4yt4FGQ==", + "integrity": "sha1-kK2YHzoAINmo5SYpZVWl3X6Hz14=", "requires": { "@babel/helper-module-imports": "7.0.0-beta.46", "@babel/helper-simple-access": "7.0.0-beta.46", @@ -151,7 +172,7 @@ "@babel/helper-optimise-call-expression": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.46.tgz", - "integrity": "sha512-PVd7/PGxi82pEKyuDcEpMmlenMLhJCII3lIK4MhXGWrT/6cNMpY6ob5rWOarpXgZjy+JNI5uLPOce28bqq0Wtw==", + "integrity": "sha1-UPBgtOSvAcc7QJhvpZOueVhCLok=", "requires": { "@babel/types": "7.0.0-beta.46" } @@ -159,12 +180,12 @@ "@babel/helper-plugin-utils": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.46.tgz", - "integrity": "sha512-eRTFH+/1rqDfzx+Z//CYk4TNwhfPQpM/TCs4CmHu2DwCPrqFnKUZLI1KgStfLf//c8FdOqx/U9EPec7s8CbUIA==" + "integrity": "sha1-9jCtvZ1kXQui5D9JVbStYfRMzfQ=" }, "@babel/helper-regex": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-sPDHBt8Y4i6y9rwtxWMvcprlVHAZOOQK5xpS2Nw2q9QEDHRHwVbEpE6EejoUStSclnfJpPK/7ijFgypwc6rXlA==", + "integrity": "sha1-3zZ1zscA4GLYIyJcUoMOAS8yMI8=", "requires": { "lodash": "^4.2.0" } @@ -172,7 +193,7 @@ "@babel/helper-remap-async-to-generator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.46.tgz", - "integrity": "sha512-YrqQ98z8AMZx8f2PGJ4YV1MkXtj+qbwbFV7MOLTiavGSFY7UrN4uQfhKEJ/4GUf4QZdTr5NEmRt0AJrWno8y8w==", + "integrity": "sha1-J11FXbztTIB1Q/ABMCpAMDo/CRQ=", "requires": { "@babel/helper-annotate-as-pure": "7.0.0-beta.46", "@babel/helper-wrap-function": "7.0.0-beta.46", @@ -184,7 +205,7 @@ "@babel/helper-replace-supers": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.46.tgz", - "integrity": "sha512-FSpK3QKzb58oMEccanHzg1djsYHhGARl08i8BQGBoOyHS6Df+4/8bsQiTnc59Dz5sJoZdb67nKKFjgMsMYi6Kg==", + "integrity": "sha1-khwPJdh1AmqPsS/tobcjI1leoVY=", "requires": { "@babel/helper-member-expression-to-functions": "7.0.0-beta.46", "@babel/helper-optimise-call-expression": "7.0.0-beta.46", @@ -195,7 +216,7 @@ "@babel/helper-simple-access": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.46.tgz", - "integrity": "sha512-1OEjV/Qnl4u8Dg+jQIYf1TgnfdrYIrdrF7yZwp9mSgsVX2PCyLe7JNTqZ/5v/5RzlF6S+GTe9agkj+EFFTcZUw==", + "integrity": "sha1-jrDt+XjIWRXRG2p6qFkUNOFYFw0=", "requires": { "@babel/template": "7.0.0-beta.46", "@babel/types": "7.0.0-beta.46", @@ -205,7 +226,7 @@ "@babel/helper-split-export-declaration": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.46.tgz", - "integrity": "sha512-UT7acgV7wsnBPwnqslqcnUFvsPBP4TtVaYM82xPGA7+evAa8q8HXOmFk08qsMK/pX/yy4+51gJJwyw2zofnacA==", + "integrity": "sha1-aQOJPHK7Kj1U7SC1/yqooo6NLqE=", "requires": { "@babel/types": "7.0.0-beta.46" } @@ -213,7 +234,7 @@ "@babel/helper-wrap-function": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.46.tgz", - "integrity": "sha512-W87M4bP6veTKK66OjzV/rU47tjsWmKj9J0J5BDmxq5BIJB1M13ouQ2FAURa4jGHwjPFWN3D5njBrsrifSOHzbQ==", + "integrity": "sha1-0PuDZRbYo4q4DfG0NOS3YBW+kDU=", "requires": { "@babel/helper-function-name": "7.0.0-beta.46", "@babel/template": "7.0.0-beta.46", @@ -224,7 +245,7 @@ "@babel/helpers": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.0.0-beta.46.tgz", - "integrity": "sha512-mbpH9pM3pJzo/tBr75U+zva3pqpyivogt1aofgEoD7bWFAYSuqOudRuz+m4XP6VPxxLoxcA4SFPGkuLRt9+7nQ==", + "integrity": "sha1-tfmI39d/T3E3ks94GLaHBQc27lI=", "requires": { "@babel/template": "7.0.0-beta.46", "@babel/traverse": "7.0.0-beta.46", @@ -234,7 +255,7 @@ "@babel/highlight": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.46.tgz", - "integrity": "sha512-r4snW6Q8ICL3Y8hGzYJRvyG/+sc+kvkewXNedG9tQjoHmUFMwMSv/o45GWQUQswevGnWghiGkpRPivFfOuMsOA==", + "integrity": "sha1-xVPFHmX1cr3t1u/2b8C7VjAWZF4=", "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -244,7 +265,7 @@ "@babel/plugin-proposal-async-generator-functions": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-htHMsLBYkM89CplqHTbbemVvzTXXyXkpihetJZUTPpSayfxEd6oIH5uSM91efcf5Rog+1SC0Oq32q9yF/4W3ig==", + "integrity": "sha1-OVMw0dXX+3bDO3vZl1Ct6vw3xow=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-remap-async-to-generator": "7.0.0-beta.46", @@ -254,7 +275,7 @@ "@babel/plugin-proposal-class-properties": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-kWp3bKibdSeSEvEQWcEcs345KPQYT39uM2edFS78NH3Gu6O9mBcnXh5E2BJ1sbE+jJ6jYPOZz4BK/LR7BiF0jA==", + "integrity": "sha1-HFBfjfOjEr60HIjXQgnVttU3+j0=", "requires": { "@babel/helper-function-name": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46", @@ -265,7 +286,7 @@ "@babel/plugin-proposal-decorators": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.0.0-beta.46.tgz", - "integrity": "sha512-2z+ayU1saRWfvHGE9uU+275EGSDQlGf37U2Vs2F9BjN0eUC+JAC96ncq2FuwLLRR8d6rfckzBJNqDNuW8Azaeg==", + "integrity": "sha1-SMifxI3EYdsD8SYGdcc/mK/u3cw=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-syntax-decorators": "7.0.0-beta.46" @@ -274,7 +295,7 @@ "@babel/plugin-proposal-export-namespace-from": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.0.0-beta.46.tgz", - "integrity": "sha512-9B7d8NfGZ3F1aKQgINmpc1SAphVgGvKEyw1ppetMpThT6EFWAdW6p1/K6QT7kI+hOo6iKUmUo8sOwD30nWVr9w==", + "integrity": "sha1-gfpxf6o5DbaUwrLyQYMKMdAfUXA=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-syntax-export-namespace-from": "7.0.0-beta.46" @@ -283,7 +304,7 @@ "@babel/plugin-proposal-function-sent": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-function-sent/-/plugin-proposal-function-sent-7.0.0-beta.46.tgz", - "integrity": "sha512-mRkAbYO+uW70bXstzChyf3Tj+39CO4X/+FoPVG7Tb2CmvX5/m4+WPi/5DhW27Gc4zGk6hd90bV6n485JwQYsRw==", + "integrity": "sha1-hsb78gSjOMMsitIjykN8VlKEXzk=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-wrap-function": "7.0.0-beta.46", @@ -293,7 +314,7 @@ "@babel/plugin-proposal-numeric-separator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.0.0-beta.46.tgz", - "integrity": "sha512-GlT+pFmvWeyiVc05anxwPtewl7P7eBK7x6z9HEBVyzD/vPtsHexN1qwwZmwHBiTkS/1/QXCFr5aPyCgcyUzn9Q==", + "integrity": "sha1-o0uScwc8p4ZGpVOvE3bZLxUZEBY=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-syntax-numeric-separator": "7.0.0-beta.46" @@ -302,7 +323,7 @@ "@babel/plugin-proposal-object-rest-spread": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.46.tgz", - "integrity": "sha512-viGuWOgFT/Tbnn3sYi3g9iJcC3ql7bSjxDs+d+GFgyf3eV2qNIKO/6I+PJAD35fGqDGGBrQhlA6HvW0FzQVtoA==", + "integrity": "sha1-+zl5SIpSwSRs3O1KQ4rOD0esmFs=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-syntax-object-rest-spread": "7.0.0-beta.46" @@ -311,7 +332,7 @@ "@babel/plugin-proposal-optional-catch-binding": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.46.tgz", - "integrity": "sha512-ZorB1i84PiVCFmrxglRaDDepmIknWgt8k5jA+IHmPd0/8UN5iMz2RLdIgIhyl92091DgsNxnVI50KLvGNK3++Q==", + "integrity": "sha1-/aUN6qsyclAKihxwiNfVUUj1QEg=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-syntax-optional-catch-binding": "7.0.0-beta.46" @@ -320,7 +341,7 @@ "@babel/plugin-proposal-throw-expressions": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-throw-expressions/-/plugin-proposal-throw-expressions-7.0.0-beta.46.tgz", - "integrity": "sha512-l+YsUx/q/Cigmpy78KD7hLdymt0/jDtHpES2tDX0Af7wMq4Gdi6Ar59Hou/QyP1iG4vV4LvzNa5ieOKTQwm/7w==", + "integrity": "sha1-6yWccwQwUKUeQLU+dDQnY6qbd7Q=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-syntax-throw-expressions": "7.0.0-beta.46" @@ -329,7 +350,7 @@ "@babel/plugin-proposal-unicode-property-regex": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-H1F53Sc7mvVxAGzs1nH7IVs4Gh6tYx9azyaMzv92RUvLYQsRm6pKaX1dQtOHJMLMgY61i65y29fQ40mvwIhfFA==", + "integrity": "sha1-tCKmAglNf+7qSnuB5+MtFoczcSM=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-regex": "7.0.0-beta.46", @@ -339,7 +360,7 @@ "@babel/plugin-syntax-async-generators": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.46.tgz", - "integrity": "sha512-igLQzZYcSrY/W3eACq6Nrf9u9mfw7m5G6+JeTZlyI7w0z+upGvWvrpTaAP1Gni6MckQkx5q+pspgpV+/5ioPXg==", + "integrity": "sha1-s1FJ4CdIki2OOVBrCsABonv0Se0=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -347,7 +368,7 @@ "@babel/plugin-syntax-class-properties": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-NwtgTQ+I8B2eo5h1mZF64nloLaGQuPM4M/c/swvyvqHoWLissHhm94rOE2Ghte8WMgQ/Nw3bqJd59kpbckqmdQ==", + "integrity": "sha1-2tTfbDG2W6NZ/sOwL7hBOJbnXvw=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -355,7 +376,7 @@ "@babel/plugin-syntax-decorators": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.0.0-beta.46.tgz", - "integrity": "sha512-yfgDxx6Vlm/gVGqHtW/rAL5gl8DuNtUqGYAdPaHl5B4GwmqhR/TNmL0mGuovky8Pruh5qTWLxK/NeCzs+p7LpA==", + "integrity": "sha1-5gkD043FquqwfrOq+FggVVcDAP4=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -363,7 +384,7 @@ "@babel/plugin-syntax-dynamic-import": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.0.0-beta.46.tgz", - "integrity": "sha512-D4ek6tZa80NgaTSprPOVxj8vxjChh6UCWgCT/ZvCwAa6CBe3iqUCuOwZQLjU41aDdeuR7C02wxl3rcb25wCRLA==", + "integrity": "sha1-ZRRZxBnV7AYJpRg3CkF7i0fFJYM=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -371,7 +392,7 @@ "@babel/plugin-syntax-export-namespace-from": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.0.0-beta.46.tgz", - "integrity": "sha512-g2opDn12R9HhFHq/S6J8qixDNb29WNXNC+kj6Gpk4n3ZX1OCk7qBiyiFplnHUvrPrRA18IcKyPoC2SirLs15vg==", + "integrity": "sha1-q6T8s0oK/sT1s8Um/2k3CLcqL9A=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -379,7 +400,7 @@ "@babel/plugin-syntax-function-sent": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-function-sent/-/plugin-syntax-function-sent-7.0.0-beta.46.tgz", - "integrity": "sha512-8XBmvwHwskrIslqqbuwlqcMxWjZlW4E643nM7V5YLECB9EB6ouaifQPK7mUg0R08YzeQpHj+wtR1bwtt845LEg==", + "integrity": "sha1-RA269uC81g4LR81t+gLn0Juu+wQ=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -387,7 +408,7 @@ "@babel/plugin-syntax-import-meta": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.0.0-beta.46.tgz", - "integrity": "sha512-/vOa4lDBN8CpJr9MwdavcZKwqX7ueul5KwSWrxhY6rwkpq0z50vlNoWWShzDMOmQ0VWV8B6T/mV3GEOofUzh/g==", + "integrity": "sha1-uG8865SxdEVVs8knG+Ucoxsa7fM=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -395,7 +416,7 @@ "@babel/plugin-syntax-numeric-separator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.0.0-beta.46.tgz", - "integrity": "sha512-xLcA7vqeCFDQbpbo0rrJvrTMjnjx2i9WwOkSbw+zXy9M/bmVwGAgLGROVxeuWq1Ou8Ku827DuhCzXgyf5dWvoQ==", + "integrity": "sha1-VMggvzIZI3jbeKaFhuDWm89fKUM=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -403,7 +424,7 @@ "@babel/plugin-syntax-object-rest-spread": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.46.tgz", - "integrity": "sha512-MMv6WG69jmcSLXdUeHvoev5RkuP/QuJZwCB4jXp2gtss//avs4Sns+t0VpGKTf9umhvRq44HFO6PVjVG85F+/Q==", + "integrity": "sha1-A9RmN/VJdXstaHe2RJkBaYBZ19g=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -411,7 +432,7 @@ "@babel/plugin-syntax-optional-catch-binding": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.46.tgz", - "integrity": "sha512-BRutzJrTLEPUidyRP1n4O2ySAww0wuJw2gIoT4iJ8Pm6qx4fqm/DM0+++TB8nR3/Tp456pHRm0bVOqpkMJdJbg==", + "integrity": "sha1-cBulAMwVTdh8TRakH6hY6f/G24k=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -419,7 +440,7 @@ "@babel/plugin-syntax-throw-expressions": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-throw-expressions/-/plugin-syntax-throw-expressions-7.0.0-beta.46.tgz", - "integrity": "sha512-JLRBrAfQNxFZrv1K1X9SHwgj+NGDnlaFusKzdxt8E5eraIkujUNu7dVrOJ0Y7silPG3s+47fYxTzxSlRstW9fg==", + "integrity": "sha1-8LdZwxIt7ZJriExsMOMhktoEg4g=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -427,7 +448,7 @@ "@babel/plugin-transform-arrow-functions": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-GgeFCCMHXWRkPDXWKin76qiZh+DAYdQShmk8SmzDj6IAgPHyNqkxHN/8gsmNe5/7IWFFOKUuM9TNU7fgY7z7Gg==", + "integrity": "sha1-Ew55sdRQh2fEfl/ruAn43KgMBfU=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -435,7 +456,7 @@ "@babel/plugin-transform-async-to-generator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.46.tgz", - "integrity": "sha512-obykYLqAd3tujTjHYE+dln5+nDhm+R5FmUcxXFr/Mx6LK1NgrTQ9TdPPOcMCD08r8SDljFpMopuz9upN/xJlbw==", + "integrity": "sha1-Kf1ZZ/UFbKgPOpfbTS/6OKDcLc4=", "requires": { "@babel/helper-module-imports": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46", @@ -445,7 +466,7 @@ "@babel/plugin-transform-block-scoped-functions": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.46.tgz", - "integrity": "sha512-0paq0AtTp3TXbXdzWwsL8ddacmo/g/14IgIZgs5BzUTrfROKQThYVccEBPqRnprTgvM0JXyDVfNSgLB4akCTjg==", + "integrity": "sha1-CSWlSZMfYbRYgGGLC0LaR5C3wLM=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -453,7 +474,7 @@ "@babel/plugin-transform-block-scoping": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.46.tgz", - "integrity": "sha512-7OwS0ObI6nLacEKP1HCdnoIQnHBqOV6IgtKGiPO+Nj03OnZ1Yo2aeK9sfOtwL43aNztnKqFVt2L5PfZg4VGidA==", + "integrity": "sha1-2kLdF/vtZ1xyIzmI262azlq55Kc=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "lodash": "^4.2.0" @@ -462,7 +483,7 @@ "@babel/plugin-transform-classes": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.46.tgz", - "integrity": "sha512-EDp/qQAURfrX6hNM+VrLSSA+cGiwDeZL0ZTTt6a7PNSFABCw4qwKJHx3Q7me1oV7q3U/GJwPS4Aym2QTDmNGvg==", + "integrity": "sha1-AMhW/tou51bEzG74yX0X0HCs6/c=", "requires": { "@babel/helper-annotate-as-pure": "7.0.0-beta.46", "@babel/helper-define-map": "7.0.0-beta.46", @@ -477,7 +498,7 @@ "@babel/plugin-transform-computed-properties": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-0ne9TL53fXH+cBI591R1JSpPhu0d2Wd9dbD8jLCJFV4tlMfqQ+Rcm65RhWWqjEBZfGv2+FuOnwB4HJRHakdW+Q==", + "integrity": "sha1-yh7OJ2FfcyQ0VxP7apPdKIeI6JE=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -485,7 +506,7 @@ "@babel/plugin-transform-destructuring": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.46.tgz", - "integrity": "sha512-l9x0+T29Njwp6smLbTIU2HG2s4ROd9DAIQcfciEfpjAqscXEst0M4X9+UvjQsuaOgPFmQTdAn9xOwNFXnRP7Tg==", + "integrity": "sha1-bmoJfaMQY/VF94GK/kjvCRZc5f8=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -493,7 +514,7 @@ "@babel/plugin-transform-dotall-regex": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-5bO0XvTP+2LFDQ9qT/WaXfyieLtqz1yGsfOuq86VXmwX9tDnBnNS6pCHEGFQ866c1HmlNBWtaXttTTnvWkFBkw==", + "integrity": "sha1-5bvXjBqURV5tXdHHfzI1e4Q1XgY=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-regex": "7.0.0-beta.46", @@ -503,7 +524,7 @@ "@babel/plugin-transform-duplicate-keys": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.46.tgz", - "integrity": "sha512-mP2+3QQ+ArIMX98zVYSC9XBzV7A/Pxbz+2hPcEAGVeakFYm5AeTkcVHRQzzA21v4ecl0L5LE1XWX9yeK643CWw==", + "integrity": "sha1-fpTkIJmwmXQmF4OCN7DW4amyaQ8=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -511,7 +532,7 @@ "@babel/plugin-transform-exponentiation-operator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.46.tgz", - "integrity": "sha512-acomgoNW/fwWSmBlhH22C9Eyl1Y/vADBSqzyIRWJGpm4frLhd49QQgKXbRGRHUDxyifXuZDF9+3pRhEmi7/HXA==", + "integrity": "sha1-la4uA0VuQX0vXqzm0FqPzLevG8w=", "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46" @@ -520,7 +541,7 @@ "@babel/plugin-transform-for-of": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.46.tgz", - "integrity": "sha512-a1gpwuO26szyz5K2FrRrI5nUDgvkaJfZ7GeDtFAH8XyrK/pNdtpW/7DFCf1PdQc6SbEMM/1QXsH7Y2YRkWoTeA==", + "integrity": "sha1-zmQ0hzhMltG9H1ehErLMumw02lw=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -528,7 +549,7 @@ "@babel/plugin-transform-function-name": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.46.tgz", - "integrity": "sha512-XyxSW1jm7WKOoPYHUJA0mbOkDFdlHzGR4DzlWAEwXrzEI5ep0ZP1AttAbVkxsF63XG8p2t9VtKlgbyBq4Tyr7A==", + "integrity": "sha1-JHn1GI3pqx+ZOWvOg7O505vBO9s=", "requires": { "@babel/helper-function-name": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46" @@ -537,7 +558,7 @@ "@babel/plugin-transform-literals": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.46.tgz", - "integrity": "sha512-Uuo7pRsBkrLrDg6XpOAMfwhKw56SB5qVBniUVM04uf8wf92S2Z5tSPNNfn1iTgphuckAO9vg86l2XJ0Y/QD4YQ==", + "integrity": "sha1-hPW8/pFLn9Q4XA3fRp+e1APuaL0=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -545,7 +566,7 @@ "@babel/plugin-transform-modules-amd": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.46.tgz", - "integrity": "sha512-GNp7F3EqJlQIMY9sfoDS03P7EHa/+Bdy6PUugTIo1TjZQUnCy3JbeL2YGI4tU8XOHJGHiBKRjFMpeOsjOSmMtw==", + "integrity": "sha1-Aa60iHx99wWc7+SiBu798ZDHn0g=", "requires": { "@babel/helper-module-transforms": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46" @@ -554,7 +575,7 @@ "@babel/plugin-transform-modules-commonjs": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.46.tgz", - "integrity": "sha512-3wLCWVkEhhQiVqqml4y9G6GJT6WA/mkxQ6TRy+4I46z00WWbEDENJcRTS14oNKzeRIo4yJylbVB1wUCW7HuJ9A==", + "integrity": "sha1-nctC4SgrKBwaIHX5i0qFBTOs/Zw=", "requires": { "@babel/helper-module-transforms": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46", @@ -564,7 +585,7 @@ "@babel/plugin-transform-modules-systemjs": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.46.tgz", - "integrity": "sha512-dCIuCGaE4UyM6cYC/a2veO0vKT/iSjBZ6ux4v/LePXA/N6v9648nwE6CRmCK1/LtRw+eU0sCo+c0TPeALCszYA==", + "integrity": "sha1-MT4T6O3MqubGReN5igQ1Ic9z3wQ=", "requires": { "@babel/helper-hoist-variables": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46" @@ -573,7 +594,7 @@ "@babel/plugin-transform-modules-umd": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.46.tgz", - "integrity": "sha512-t54bMSIY5xtb8uK8aM61xZmpjQ7FJ0M/8EiCFDdx7rHff5O9eJUNEGqGaly8ZTbdp80RqbzMkyiD1V+TXYQW/Q==", + "integrity": "sha1-rQ70iKEj9HmCXB/+dcW7qZVKRJw=", "requires": { "@babel/helper-module-transforms": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46" @@ -582,7 +603,7 @@ "@babel/plugin-transform-new-target": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.46.tgz", - "integrity": "sha512-VSuIdVFUhlqADj/ymm7NG4BVjGD0sBWWN5sONTLAYzKScGZA58Ys8jSkl1dxeqWnMOEjzo8lTRWxRVvz8HIaMg==", + "integrity": "sha1-4yGcFaIXWimvozubL0wY3BrjyMw=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -590,7 +611,7 @@ "@babel/plugin-transform-object-super": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.46.tgz", - "integrity": "sha512-T+TV4rRuTubvjqEwBF5xib3vnfJgjQ62qJqHprTaJDBtF0ofpbv/A6x86EEr51iPymHc84eM+F1zyFEtJvKYwQ==", + "integrity": "sha1-tTdv6T9eFUt2VGjxpYpxdxf5WCc=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-replace-supers": "7.0.0-beta.46" @@ -599,7 +620,7 @@ "@babel/plugin-transform-parameters": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.46.tgz", - "integrity": "sha512-RnkdYrayTlQ0VFoyIjvY/cCp/1lJJkYE2lFcRNg6+Skd3g41PnocsHhQ5NUQjMNogL+RnNan3S/2S/i7S4zm+Q==", + "integrity": "sha1-M7vS471JnZkBYDTcr4xrcsKmnsM=", "requires": { "@babel/helper-call-delegate": "7.0.0-beta.46", "@babel/helper-get-function-arity": "7.0.0-beta.46", @@ -609,7 +630,7 @@ "@babel/plugin-transform-regenerator": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.46.tgz", - "integrity": "sha512-P6d8ckSjKlbr/1SL1NBO6ieFxSebTiRWd2R8/styUIizJWQlEB0ITQ7l8vv3jXGjJ0mh7lxBTegXejRkTGKKgw==", + "integrity": "sha1-h1zrWzfsDomMI7YK92BxXZ1GK08=", "requires": { "regenerator-transform": "^0.12.3" } @@ -617,7 +638,7 @@ "@babel/plugin-transform-shorthand-properties": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.46.tgz", - "integrity": "sha512-1QkKFWPsjrvMppycLwjPBXF+usSnGvbTxGe0Q+eIzcZyhabwGCsCgkmDIKMisPSAi6F7bM5H1S8VbE85IW3oRg==", + "integrity": "sha1-qiFRKw/ve5FvxcvIffcXRlwlUVw=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -625,7 +646,7 @@ "@babel/plugin-transform-spread": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.46.tgz", - "integrity": "sha512-R0GvFdJnFrgTlmZfFtCXk81uvq5S3FuY38FnRsxDt6Yx/sE8jCmmrRe7XHZOnXXGP3ZWY9icILUmzWHOf91jbA==", + "integrity": "sha1-SOq7IZ8eDBbpsKYWYHKunUx805c=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -633,7 +654,7 @@ "@babel/plugin-transform-sticky-regex": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-goMgOLODjG1cgFHlKACh/NT/wrnmuRi2CpXsjOan10eZce0fk9kahYz/04cqhppmwtV/vQWwH2ikAHODSD8r5w==", + "integrity": "sha1-yWxB8xJy7BzcR92RoixtdcTbcNI=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-regex": "7.0.0-beta.46" @@ -642,7 +663,7 @@ "@babel/plugin-transform-template-literals": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.46.tgz", - "integrity": "sha512-2iGMsHWVAQq9X6p3VNjktJCH6ZXHQHi3NTPLKh5d4bEW8+M3H7LXLNqk1yUm/Uwt0tzh1FUfb/EU2sEPbrBrVA==", + "integrity": "sha1-6LzHmN7OKYB4k+juJ8zzF29ljGI=", "requires": { "@babel/helper-annotate-as-pure": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46" @@ -651,7 +672,7 @@ "@babel/plugin-transform-typeof-symbol": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.46.tgz", - "integrity": "sha512-l+CfLR2c5KzZ/uZlkflNe7nK2hiEahc/FeiUCTd5Krj4aCKDdLLSdb4Lowf5hdZbqIPQc9TdL9SZt80YhUlmFw==", + "integrity": "sha1-ZDUpGEy7BxmSN8lFN8ieqach+go=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46" } @@ -659,7 +680,7 @@ "@babel/plugin-transform-unicode-regex": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.46.tgz", - "integrity": "sha512-XWQ7uJ0HL/xdMesKzt1uq5CmZPBqDiEno+FBeYuOJu1IWjpr3yXfEzH/nW17KESXGRv68mLTr+fIeSwcC+qVFg==", + "integrity": "sha1-EObtzI6w23H/Lw4/yH7YgzfST7k=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/helper-regex": "7.0.0-beta.46", @@ -669,7 +690,7 @@ "@babel/preset-env": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.0.0-beta.46.tgz", - "integrity": "sha512-zC+QsTmteh2c1CtjeskvUKsqvRpgwBZxOxTk6p+F3gL6uJszP4OWzffgPrsV2wo9vccppTaCzYMFeiJscnne6g==", + "integrity": "sha1-rhtzHvccK7UMR+DNpLY1nqLGHwk=", "requires": { "@babel/helper-module-imports": "7.0.0-beta.46", "@babel/helper-plugin-utils": "7.0.0-beta.46", @@ -715,7 +736,7 @@ "@babel/preset-stage-2": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/preset-stage-2/-/preset-stage-2-7.0.0-beta.46.tgz", - "integrity": "sha512-Lebdh+/WyFdT+G9LaSUpcXb3ZhvQfSxd/UqjQw4iaHS1j8nKWblTZBTp6ZGHjtfvbO64ERu8EtkYJ+WelzUK7Q==", + "integrity": "sha1-Mm5OujBJGB+f97DFD6hPGgRZVrE=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-proposal-decorators": "7.0.0-beta.46", @@ -729,7 +750,7 @@ "@babel/preset-stage-3": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/preset-stage-3/-/preset-stage-3-7.0.0-beta.46.tgz", - "integrity": "sha512-YE5ZHOIycLjdmuzvyunyj7ZmCYfUjpDbMU+FQ2OIgWkneGUtoa2CIQTZxQp4gVUxsnXkfFTqCqmuYLJQHyY78Q==", + "integrity": "sha1-9kyzlQoAAh5O2diMGQ0wxHNsVKk=", "requires": { "@babel/helper-plugin-utils": "7.0.0-beta.46", "@babel/plugin-proposal-async-generator-functions": "7.0.0-beta.46", @@ -741,10 +762,18 @@ "@babel/plugin-syntax-import-meta": "7.0.0-beta.46" } }, + "@babel/runtime": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.2.0.tgz", + "integrity": "sha1-sD5C7t31iY4AZG5MhA+ge6jcrX8=", + "requires": { + "regenerator-runtime": "^0.12.0" + } + }, "@babel/template": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.46.tgz", - "integrity": "sha512-3/qi4m0l6G/vZbEwtqfzJk73mYtuE7nvAO1zT3/ZrTAHy4sHf2vaF9Eh1w+Tau263Yrkh0bjVQPb9zw6G+GeMQ==", + "integrity": "sha1-iyOYJBHVtdv6R5Q3v+QUrbFBG7k=", "requires": { "@babel/code-frame": "7.0.0-beta.46", "@babel/types": "7.0.0-beta.46", @@ -755,7 +784,7 @@ "@babel/traverse": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.46.tgz", - "integrity": "sha512-IU7MTGbcjpfhf5tyCu3sDB7sWYainZQcT+CqOBdVZXZfq5MMr130R7aiZBI2g5dJYUaW1PS81DVNpd0/Sq/Gzg==", + "integrity": "sha1-KaDAOVs2QvApfm+OR1veifk0N1U=", "requires": { "@babel/code-frame": "7.0.0-beta.46", "@babel/generator": "7.0.0-beta.46", @@ -772,17 +801,232 @@ "@babel/types": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.46.tgz", - "integrity": "sha512-uA5aruF2KKsJxToWdDpftsrPOIQtoGrGno2hiaeO9JRvfT9xZdK11nPoC+/RF9emNzmNbWn4HCRdCY+McT5Nbw==", + "integrity": "sha1-64Q5mmma+fyyREQMznjhrL60Dgw=", "requires": { "esutils": "^2.0.2", "lodash": "^4.2.0", "to-fast-properties": "^2.0.0" } }, + "@dillonkearns/elm-graphql": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@dillonkearns/elm-graphql/-/elm-graphql-1.0.8.tgz", + "integrity": "sha1-8O806C5c6BYCDhCsBCb8H8n4Z0M=", + "requires": { + "encoding": "^0.1.12", + "glob": "^7.1.2", + "graphql-request": "^1.4.0", + "minimist": "^1.2.0", + "request": "^2.83.0" + } + }, + "@jumpn/utils-array": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jumpn/utils-array/-/utils-array-0.3.4.tgz", + "integrity": "sha1-+0MQEgEI9lnatUB175OrxWE33l4=", + "requires": { + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "flow-static-land": "0.2.7" + } + }, + "@jumpn/utils-composite": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@jumpn/utils-composite/-/utils-composite-0.7.0.tgz", + "integrity": "sha1-GXnbAN2UZevDOCatqxfx3Ujm/Qw=", + "requires": { + "@jumpn/utils-array": "0.3.4", + "babel-polyfill": "6.26.0", + "babel-runtime": "6.26.0", + "fast-deep-equal": "1.0.0", + "flow-static-land": "0.2.8" + }, + "dependencies": { + "flow-static-land": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/flow-static-land/-/flow-static-land-0.2.8.tgz", + "integrity": "sha1-SWF+UxOWkouubrXYujLnBxY35bk=" + } + } + }, + "@jumpn/utils-graphql": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@jumpn/utils-graphql/-/utils-graphql-0.6.0.tgz", + "integrity": "sha1-mv04TBTj9Mr2j6Pr6zJwIYsY6TE=", + "requires": { + "@babel/runtime": "7.2.0", + "core-js": "2.6.0", + "graphql": "14.0.2" + } + }, + "@webassemblyjs/ast": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.7.11.tgz", + "integrity": "sha1-uYhYLK+7Kwlei1VlJvMMkNBXys4=", + "requires": { + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.7.11.tgz", + "integrity": "sha1-pp8K9lAuuaPARVVbGmEp09Py4xM=" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.7.11.tgz", + "integrity": "sha1-x7a7gQX4QDlRGis5zklPGTgYoyo=" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.7.11.tgz", + "integrity": "sha1-MSLUjcxslFbtmC3r4WyPNxAd85s=" + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.7.11.tgz", + "integrity": "sha1-z48QbnRmYqDaKb3vY1/NPRJINks=", + "requires": { + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.7.11.tgz", + "integrity": "sha1-3ziIKmJAgNA/dQP5Pj8XrFrAEYE=" + }, + "@webassemblyjs/helper-module-context": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.7.11.tgz", + "integrity": "sha1-2HTXIuUeYqwgJHaTXWScgC+g4gk=" + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.7.11.tgz", + "integrity": "sha1-3ZoegX8cLrEFtM8QEwk8ufPJywY=" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.7.11.tgz", + "integrity": "sha1-nJrEHs+fvP/8lvbSZ14t4zgR5oo=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.7.11.tgz", + "integrity": "sha1-yVg562N1ejGICq7HtlEtQZGsZAs=", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.7.11.tgz", + "integrity": "sha1-1yZ6HunEWU/T9+NymIGOxlaH22M=", + "requires": { + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/utf8": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.7.11.tgz", + "integrity": "sha1-Btchjqn9yUpnk6qSIIFg2z0m7oI=" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.7.11.tgz", + "integrity": "sha1-jHTKR01PlR0B266b1wgU7iKoIAU=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/helper-wasm-section": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-opt": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "@webassemblyjs/wast-printer": "1.7.11" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.7.11.tgz", + "integrity": "sha1-m7upQvIjdWhqb7dZr816ycRdoag=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.7.11.tgz", + "integrity": "sha1-szHo5874+OLwB9QsOjagWAp9bKc=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-buffer": "1.7.11", + "@webassemblyjs/wasm-gen": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.7.11.tgz", + "integrity": "sha1-bj0g+mo1GfawhO+Tka1YIR77Cho=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-wasm-bytecode": "1.7.11", + "@webassemblyjs/ieee754": "1.7.11", + "@webassemblyjs/leb128": "1.7.11", + "@webassemblyjs/utf8": "1.7.11" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.7.11.tgz", + "integrity": "sha1-Jb0RdWLKjAAnIP+BFu+QctnKhpw=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/floating-point-hex-parser": "1.7.11", + "@webassemblyjs/helper-api-error": "1.7.11", + "@webassemblyjs/helper-code-frame": "1.7.11", + "@webassemblyjs/helper-fsm": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.7.11", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.7.11.tgz", + "integrity": "sha1-xCRbbeJCy1CizJUBdP2/ZceNeBM=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/wast-parser": "1.7.11", + "@xtuc/long": "4.2.1" + } + }, "@webcomponents/custom-elements": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.1.0.tgz", - "integrity": "sha512-M872VYia7mXvtgsxKTTNBNPDYNLEvM3DDd0reyNusd/5weWH0XouKYYgp68b6gvWdMPHcMomg3SzUZaOo/bv9w==" + "integrity": "sha1-vNXDYFpIjrvd92LzUJRK/IC8Ftw=" + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=" + }, + "@xtuc/long": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.1.tgz", + "integrity": "sha1-XIXWYvdvodNFdXZsXc1mFavNMNg=" }, "accepts": { "version": "1.3.5", @@ -794,50 +1038,42 @@ } }, "acorn": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz", - "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==" + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.0.6.tgz", + "integrity": "sha1-zXUYFnDVuZvbGxyZOUHTojmrH1Y=" }, "acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", + "integrity": "sha1-SCIQFAWCo2uDw+NC4c/ryqkkCUg=" + }, + "ajv": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.7.0.tgz", + "integrity": "sha1-4857s3LWV3uxg58d/fy/WtKUjZY=", "requires": { - "acorn": "^4.0.3" + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "dependencies": { - "acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" } } }, - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha1-81mGrOuRr63sQQL72FAUlQzvpk0=" }, "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=" - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.3.0.tgz", + "integrity": "sha1-y2SZ2puDF3r4vBcysvChoaOqz4w=" }, "alphanum-sort": { "version": "1.0.2", @@ -850,6 +1086,11 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "optional": true }, + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha1-V9NbhoboUeLMBMQD8cACA5dqGBM=" + }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -863,7 +1104,7 @@ "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "requires": { "color-convert": "^1.9.0" } @@ -871,7 +1112,7 @@ "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "integrity": "sha1-vLJLTzeTTZqnrBe0ra+J58du8us=", "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" @@ -890,7 +1131,7 @@ "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -917,7 +1158,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -991,7 +1232,7 @@ "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -1001,14 +1242,14 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" } } }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", @@ -1062,7 +1303,7 @@ "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "requires": { "kind-of": "^6.0.0" } @@ -1070,7 +1311,7 @@ "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "requires": { "kind-of": "^6.0.0" } @@ -1078,7 +1319,7 @@ "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1111,12 +1352,12 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", @@ -1132,18 +1373,23 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "aproba": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=" }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "requires": { "sprintf-js": "~1.0.2" } @@ -1159,40 +1405,17 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=" }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" }, - "array-filter": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", - "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=", - "dev": true - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - }, "array-flatten": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", - "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=" - }, - "array-map": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", - "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=", - "dev": true - }, - "array-reduce": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", - "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", - "dev": true + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=" }, "array-union": { "version": "1.0.2", @@ -1212,25 +1435,18 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, "asn1": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", - "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=", + "requires": { + "safer-buffer": "~2.1.0" + } }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "integrity": "sha1-ucK/WAXx5kqt7tbfOiv6+1pz9aA=", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -1243,12 +1459,27 @@ "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "requires": { "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } } }, "assert-plus": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", - "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -1256,12 +1487,9 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" }, "async": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", - "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", - "requires": { - "lodash": "^4.14.0" - } + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" }, "async-each": { "version": "1.0.1", @@ -1274,9 +1502,9 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "atob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.1.tgz", - "integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=" }, "autoprefixer": { "version": "6.7.7", @@ -1303,14 +1531,14 @@ } }, "aws-sign2": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", - "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=" + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.7.0.tgz", - "integrity": "sha512-32NDda82rhwD9/JBCCkB+MRYDp0oSvlo2IL6rQWA10PQi7tDUM3eqMSltXmY+Oyl/7N3P3qNtAlv7X0d9bI28w==" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=" }, "babel-code-frame": { "version": "6.26.0", @@ -1349,7 +1577,7 @@ "babel-loader": { "version": "8.0.0-beta.4", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.0-beta.4.tgz", - "integrity": "sha512-fQMCj8jRpF/2CPuVnpFrOb8+8pRuquKqoC+tspy5RWBmL37/2qc104sLLLqpwWltrFzpYb30utPpKc3H6P3ETQ==", + "integrity": "sha1-w/qwBpbDhccMBNvkhjkfDrmW80U=", "requires": { "find-cache-dir": "^1.0.0", "loader-utils": "^1.0.2", @@ -1357,25 +1585,53 @@ "util.promisify": "^1.0.0" } }, - "babel-plugin-elm-pre-minify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/babel-plugin-elm-pre-minify/-/babel-plugin-elm-pre-minify-0.1.2.tgz", - "integrity": "sha1-Cgfd6OBrWaeQGz99d4NxfEsnmOs=" + "babel-polyfill": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz", + "integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=", + "requires": { + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "regenerator-runtime": "^0.10.5" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=" + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha1-vgWtf5v30i4Fb5cmzuUBf78Z4uk=" + } + } }, "babylon": { "version": "7.0.0-beta.46", "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.46.tgz", - "integrity": "sha512-WFJlg2WatdkXRFMpk7BN/Uzzkjkcjk+WaqnrSCpay+RYl4ypW9ZetZyT9kNt22IH/BQNst3M6PaaBn9IXsUNrg==" + "integrity": "sha1-tt2rqBu7EwMTkydX/5wZXVJwiLY=" }, "balanced-match": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", - "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=", "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", @@ -1397,7 +1653,7 @@ "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "requires": { "kind-of": "^6.0.0" } @@ -1405,7 +1661,7 @@ "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "requires": { "kind-of": "^6.0.0" } @@ -1413,7 +1669,7 @@ "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -1428,14 +1684,14 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" } } }, "base64-js": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + "integrity": "sha1-yrHmEY8FEJXli1KBrqjBzSK/wOM=" }, "batch": { "version": "0.6.1", @@ -1443,18 +1699,17 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, "bcrypt-pbkdf": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", - "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", - "optional": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { "tweetnacl": "^0.14.3" } }, "big.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", - "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==" + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=" }, "binary": { "version": "0.3.0", @@ -1466,170 +1721,20 @@ } }, "binary-extensions": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", - "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=" + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha1-wteA9T1Fu6gxeokC1M7q86Y4WxQ=" }, "binwrap": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/binwrap/-/binwrap-0.1.4.tgz", - "integrity": "sha1-yh94cDAiElGPoksHcm+cUKFcdVk=", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/binwrap/-/binwrap-0.2.0.tgz", + "integrity": "sha1-Vy0PSMTnZ9ctYi8LgF7Xzh2xb5o=", "requires": { - "request": "^2.81.0", + "mustache": "^2.3.0", + "request": "^2.87.0", "request-promise": "^4.2.0", "tar": "^2.2.1", - "unzip": "^0.1.11" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.x.x" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.x.x" - } - } - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.x.x" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" - } - } - }, - "bl": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz", - "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=", - "requires": { - "readable-stream": "~2.0.5" + "unzip-stream": "^0.3.0" } }, "block-stream": { @@ -1641,44 +1746,52 @@ } }, "bluebird": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz", - "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==" + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha1-fQHG+WFsmlGrD4xUmnnf5uwz76c=" }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=" }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "~1.1.1", - "http-errors": "~1.6.2", - "iconv-lite": "0.4.19", + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", "on-finished": "~2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "~1.6.15" + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -1695,28 +1808,13 @@ "multicast-dns-service-types": "^1.1.0" } }, - "boom": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", - "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", - "requires": { - "hoek": "2.x.x" - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" - }, - "dependencies": { - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - } } }, "braces": { @@ -1737,7 +1835,7 @@ "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "integrity": "sha1-Mmc0ZC9APavDADIJhTu3CtQo70g=", "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -1750,7 +1848,7 @@ "browserify-cipher": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "integrity": "sha1-jWR0wbhwv9q807z8wZNKEOlPFfA=", "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -1758,13 +1856,14 @@ } }, "browserify-des": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", - "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha1-OvTx9Zg5QDVy8cZiBDdfen9wPpw=", "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "browserify-rsa": { @@ -1793,18 +1892,18 @@ "browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=", "requires": { "pako": "~1.0.5" } }, "browserslist": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.6.tgz", - "integrity": "sha512-XCsMSg9V4S1VRdcp265dJ+8kBRjfuFXcavbisY7G6T9QI0H1Z24PP53vvs0WDYWqm38Mco1ILDtafcS8ZR4xiw==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha1-sABTYdZHHw9ZUnl6dvyYXx+Xj8Y=", "requires": { - "caniuse-lite": "^1.0.30000830", - "electron-to-chromium": "^1.3.42" + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" } }, "buffer": { @@ -1818,14 +1917,14 @@ } }, "buffer-from": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.0.0.tgz", - "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha1-MnE7wCj3XAL9txDXx7zsHyxgcO8=" }, "buffer-indexof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==" + "integrity": "sha1-Uvq8xqYG0aADAoAmSO9o9jnaJow=" }, "buffer-xor": { "version": "1.0.3", @@ -1855,7 +1954,7 @@ "cacache": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", - "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "integrity": "sha1-ZFI2eZnv+dQYiu/ZoU6dfGomNGA=", "requires": { "bluebird": "^3.5.1", "chownr": "^1.0.1", @@ -1870,19 +1969,12 @@ "ssri": "^5.2.4", "unique-filename": "^1.1.0", "y18n": "^4.0.0" - }, - "dependencies": { - "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" - } } }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=", "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", @@ -1907,22 +1999,6 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - } - } - }, "caniuse-api": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", @@ -1946,28 +2022,19 @@ } }, "caniuse-db": { - "version": "1.0.30000836", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000836.tgz", - "integrity": "sha1-eItsj28CmRdDsYzbvVT5bQW0uVo=" + "version": "1.0.30000933", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000933.tgz", + "integrity": "sha1-SvqEVsloFz6/yvbWevzPeKa/Umc=" }, "caniuse-lite": { - "version": "1.0.30000836", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000836.tgz", - "integrity": "sha512-DlVR8sVTKDgd7t95U0shX3g7MeJ/DOjKOhUcaiXqnVmnO5sG4Tn2rLVOkVfPUJgnQNxnGe8/4GK0dGSI+AagQw==" + "version": "1.0.30000933", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000933.tgz", + "integrity": "sha1-WHH/VLMXdnWuHConWyquer8rkiI=" }, "caseless": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=" - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chainsaw": { "version": "0.1.0", @@ -1978,9 +2045,9 @@ } }, "chalk": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", - "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=", "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -1988,22 +2055,23 @@ } }, "chokidar": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", - "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha1-NW/04rDo5D4yLRijckYLvPOszSY=", "requires": { "anymatch": "^2.0.0", "async-each": "^1.0.0", "braces": "^2.3.0", - "fsevents": "^1.1.2", + "fsevents": "^1.2.2", "glob-parent": "^3.1.0", "inherits": "^2.0.1", "is-binary-path": "^1.0.0", "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", "normalize-path": "^2.1.1", "path-is-absolute": "^1.0.0", "readdirp": "^2.0.0", - "upath": "^1.0.0" + "upath": "^1.0.5" }, "dependencies": { "array-unique": { @@ -2014,7 +2082,7 @@ "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", @@ -2094,97 +2162,23 @@ } } }, - "chokidar-cli": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-1.2.0.tgz", - "integrity": "sha1-jn9YRCJzGCAYvhho5Twir2WiGUg=", - "dev": true, - "requires": { - "anymatch": "^1.1.0", - "bluebird": "^2.9.24", - "chokidar": "^1.0.1", - "lodash": "^3.7.0", - "shell-quote": "^1.4.3", - "yargs": "^3.7.2" - }, - "dependencies": { - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", - "dev": true, - "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" - } - }, - "bluebird": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.11.0.tgz", - "integrity": "sha1-U0uQM8AiyVecVro7Plpcqvu2UOE=", - "dev": true - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", - "dev": true, - "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" - } - }, - "lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", - "dev": true - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", - "dev": true - }, - "yargs": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "dev": true, - "requires": { - "camelcase": "^2.0.1", - "cliui": "^3.0.3", - "decamelize": "^1.1.1", - "os-locale": "^1.4.0", - "string-width": "^1.0.1", - "window-size": "^0.1.4", - "y18n": "^3.2.0" - } - } - } - }, "chownr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.0.1.tgz", - "integrity": "sha1-4qdQQqlVGQi+vSW4Uj1fl2nXkYE=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha1-VHJri4//TfBTxCGH6AH7RBLfFJQ=" + }, + "chrome-trace-event": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.0.tgz", + "integrity": "sha1-Rakb0sIMlBHwljtarrmhuV4JzEg=", + "requires": { + "tslib": "^1.9.0" + } }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -2193,7 +2187,7 @@ "clap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", - "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "integrity": "sha1-TzZ0WzIAhJJVf0ZBLWbVDLmbzlE=", "requires": { "chalk": "^1.1.3" }, @@ -2225,7 +2219,7 @@ "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=", "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", @@ -2284,7 +2278,7 @@ "codemirror": { "version": "5.27.4", "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.27.4.tgz", - "integrity": "sha512-oOpSTMT3gj27u8NSkkrciuIpCqID3dvb8UGpS7eEm/F1x1DVinp6+ROLR+B8hXdxqVFpCl2NrR2BQe7zd3uH7g==" + "integrity": "sha1-DoF8g5v+qZWd0WzUiuFKzA5Dw7Y=" }, "collection-visit": { "version": "1.0.0", @@ -2306,11 +2300,11 @@ } }, "color-convert": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", "requires": { - "color-name": "^1.1.1" + "color-name": "1.1.3" } }, "color-name": { @@ -2342,17 +2336,17 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" }, "combined-stream": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha1-LR0kMXr7ir6V1tLAsHtXgTU52Cg=", "requires": { "delayed-stream": "~1.0.0" } }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=" }, "commondir": { "version": "1.0.1", @@ -2365,39 +2359,39 @@ "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" }, "compressible": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.13.tgz", - "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=", + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha1-hXqasKfloH2Ng37UP+Le//ZP4hI=", "requires": { - "mime-db": ">= 1.33.0 < 2" + "mime-db": ">= 1.36.0 < 2" } }, "compression": { - "version": "1.7.2", - "resolved": "http://registry.npmjs.org/compression/-/compression-1.7.2.tgz", - "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha1-J+DhdqryYPfywoE8PkQK258Zk9s=", "requires": { - "accepts": "~1.3.4", + "accepts": "~1.3.5", "bytes": "3.0.0", - "compressible": "~2.0.13", + "compressible": "~2.0.14", "debug": "2.6.9", "on-headers": "~1.0.1", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "vary": "~1.1.2" }, "dependencies": { "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -2421,47 +2415,18 @@ "concat-stream": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=", "requires": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^2.2.2", "typedarray": "^0.0.6" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "connect-history-api-fallback": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", - "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha1-izIIk1kwjRERFdgcrT/Oq4iPl7w=" }, "console-browserify": { "version": "1.1.0", @@ -2484,12 +2449,15 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=" }, "convert-source-map": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.1.tgz", - "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU=" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha1-UbU3qMQ+DwTewZk7/83VBOdYrCA=", + "requires": { + "safe-buffer": "~5.1.1" + } }, "cookie": { "version": "0.3.1", @@ -2504,7 +2472,7 @@ "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "integrity": "sha1-kilzmMrjSTf8r9bsgTnBgFHwteA=", "requires": { "aproba": "^1.1.1", "fs-write-stream-atomic": "^1.0.8", @@ -2522,7 +2490,7 @@ "copy-webpack-plugin": { "version": "4.5.1", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.1.tgz", - "integrity": "sha512-OlTo6DYg0XfTKOF8eLf79wcHm4Ut10xU2cRBRPMW/NA5F9VMjZGTfRHWDIYC3s+1kObGYrBLshXWU1K0hILkNQ==", + "integrity": "sha1-/E9o9K3YN8xeE9ERsgcVeTIl0pw=", "requires": { "cacache": "^10.0.4", "find-cache-dir": "^1.0.0", @@ -2534,19 +2502,6 @@ "serialize-javascript": "^1.4.0" }, "dependencies": { - "globby": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", - "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2563,9 +2518,9 @@ } }, "core-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", - "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.0.tgz", + "integrity": "sha1-HjB5Pp7leCswfjf/oi2g6s3dhNQ=" }, "core-util-is": { "version": "1.0.2", @@ -2575,7 +2530,7 @@ "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "integrity": "sha1-yREbbzMEXEaX8UR4f5JUzcd8Rf8=", "requires": { "bn.js": "^4.1.0", "elliptic": "^6.0.0" @@ -2584,7 +2539,7 @@ "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "integrity": "sha1-iJB4rxGmN1a8+1m9IhmWvjqe8ZY=", "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -2596,7 +2551,7 @@ "create-hmac": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "integrity": "sha1-aRcMeLOrlXFHsriwRXLkfq0iQ/8=", "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -2607,12 +2562,12 @@ } }, "cross-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.0.0.tgz", - "integrity": "sha512-gnx0GnDyW73iDq6DpqceL8i4GGn55PPKDzNwZkopJ3mKPcfJ0BUIXBsnYfJBVw+jFDB+hzIp2ELNRdqoxN6M3w==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.2.tgz", + "integrity": "sha1-pH/09/xxLauo9qaVoRyUhEDUVyM=", "requires": { - "node-fetch": "2.0.0", - "whatwg-fetch": "2.0.3" + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" } }, "cross-spawn": { @@ -2624,18 +2579,10 @@ "which": "^1.2.9" } }, - "cryptiles": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", - "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", - "requires": { - "boom": "2.x.x" - } - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=", "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -2674,12 +2621,19 @@ "postcss-modules-values": "^1.1.0", "postcss-value-parser": "^3.3.0", "source-list-map": "^0.1.7" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" + } } }, "css-selector-tokenizer": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", - "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", + "integrity": "sha1-oXcnGovKUBkXL0+JH8bu2cv2jV0=", "requires": { "cssesc": "^0.1.0", "fastparse": "^1.1.1", @@ -2769,40 +2723,17 @@ "source-map": "^0.5.3" } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "requires": { - "array-find-index": "^1.0.1" - } - }, "cyclist": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" }, - "d": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", - "integrity": "sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=", - "requires": { - "es5-ext": "^0.10.9" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "date-now": { @@ -2811,11 +2742,11 @@ "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -2833,10 +2764,52 @@ "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha1-t+8znl4CSwRUZ69APVA0jbRkLQ8=", + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha1-/0Vqj1P5D47MxxqW0Rvfx/CCy1A=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + } + } + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", "requires": { "object-keys": "^1.0.12" } @@ -2844,7 +2817,7 @@ "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=", "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" @@ -2853,7 +2826,7 @@ "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "requires": { "kind-of": "^6.0.0" } @@ -2861,7 +2834,7 @@ "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "requires": { "kind-of": "^6.0.0" } @@ -2869,7 +2842,7 @@ "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -2884,7 +2857,7 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" } } }, @@ -2904,6 +2877,27 @@ "p-map": "^1.1.1", "pify": "^3.0.0", "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + } + } + } } }, "delayed-stream": { @@ -2930,15 +2924,20 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + }, "detect-node": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", - "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha1-AU7o+PZpxcWAI9pkuBecCDooxGw=" }, "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "integrity": "sha1-QOjumPVaIUlgcUaSHGPhrl89KHU=", "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -2946,22 +2945,11 @@ } }, "dir-glob": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", - "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha1-+gnwaUFTyJGLGLoN6vrpR2n8UMQ=", "requires": { - "arrify": "^1.0.1", "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "requires": { - "pify": "^3.0.0" - } - } } }, "dns-equal": { @@ -2972,7 +2960,7 @@ "dns-packet": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", - "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "integrity": "sha1-EqpCaYEHW+UAuRDu3NC0fdfe2lo=", "requires": { "ip": "^1.1.0", "safe-buffer": "^5.0.1" @@ -2989,12 +2977,12 @@ "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" + "integrity": "sha1-PTH1AZGmdJ3RN1p/Ui6CPULlTto=" }, "duplexify": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", - "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha1-saeinEq/1jlYXvrszoDWZrHjQSU=", "requires": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -3003,12 +2991,12 @@ } }, "ecc-jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", - "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", - "optional": true, + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "jsbn": "~0.1.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, "ee-first": { @@ -3017,14 +3005,14 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.45", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.45.tgz", - "integrity": "sha1-RYrBscXHYM6IEaFtK/vZfsMLr7g=" + "version": "1.3.111", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.111.tgz", + "integrity": "sha1-m94RyVNCXBdW+Fxm5h3it0ztddA=" }, "elliptic": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", - "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha1-wtC3d2kRuGcixjLDwGxg8vgZk5o=", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -3036,33 +3024,52 @@ } }, "elm": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/elm/-/elm-0.18.0.tgz", - "integrity": "sha1-kZuDCc2Tnf4v+dJS2WG2yJUJuXA=", + "version": "0.19.0-bugfix6", + "resolved": "https://registry.npmjs.org/elm/-/elm-0.19.0-bugfix6.tgz", + "integrity": "sha512-nD/oK/nG26ULh94GREsILA9aQa3Gon+KKBmS0Z0MstywLWwrhuWKba8gfiIWLdnpQWHFIf+UsThk6Z71UWi6TQ==", "requires": { - "mkdirp": "0.5.1", - "promise": "7.1.1", - "request": "2.74.0", - "tar": "2.2.1" + "binwrap": "0.2.0" } }, "elm-format": { - "version": "0.7.0-exp", - "resolved": "https://registry.npmjs.org/elm-format/-/elm-format-0.7.0-exp.tgz", - "integrity": "sha1-dbnZ8/C2cZW0ToBPzlpr4PRa9Ag=", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/elm-format/-/elm-format-0.8.1.tgz", + "integrity": "sha1-N3lvwGuEYKbXagVKEhbYbYSBFV4=", "requires": { - "binwrap": "^0.1.4" + "binwrap": "^0.2.0" } }, "elm-webpack-loader": { - "version": "git+https://github.com/lukewestby/elm-webpack-loader.git#238f7231ab46fc8a3b09da54a1f8c64add10a66f", - "from": "git+https://github.com/lukewestby/elm-webpack-loader.git", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/elm-webpack-loader/-/elm-webpack-loader-5.0.0.tgz", + "integrity": "sha1-vL0zNPIy9hQSOQ96k3MmQGjPeqI=", "requires": { - "elm": "^0.18.0", + "elm": "^0.19.0", "glob": "^7.1.1", "loader-utils": "^1.0.2", - "node-elm-compiler": "^4.2.1", + "node-elm-compiler": "^5.0.0", "yargs": "^6.5.0" + }, + "dependencies": { + "binwrap": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/binwrap/-/binwrap-0.1.4.tgz", + "integrity": "sha1-yh94cDAiElGPoksHcm+cUKFcdVk=", + "requires": { + "request": "^2.81.0", + "request-promise": "^4.2.0", + "tar": "^2.2.1", + "unzip": "^0.1.11" + } + }, + "elm": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/elm/-/elm-0.19.0.tgz", + "integrity": "sha512-CYgewByRByMOilPk5/yrW1mtflaS/vp+026gwb0EEX6aqUl+TGYoTSTW+uf44XB/FOKgUauV3TDH3Bl0IHZ8Ag==", + "requires": { + "binwrap": "0.1.4" + } + } } }, "emojis-list": { @@ -3075,94 +3082,69 @@ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, + "encoding": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", + "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", + "requires": { + "iconv-lite": "~0.4.13" + } + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "integrity": "sha1-7SljTRm6ukY7bOa4CjchPqtx7EM=", "requires": { "once": "^1.4.0" } }, "enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha1-Qcfgv9/nSsH/4eV61qXGyfN0Kn8=", "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" + "tapable": "^1.0.0" } }, "errno": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", - "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=", "requires": { "prr": "~1.0.1" } }, "error-ex": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", - "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", - "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", + "integrity": "sha1-rIYUX91QmdjdSVWMy6Lq+biOJOk=", "requires": { - "es-to-primitive": "^1.1.1", + "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", - "has": "^1.0.1", - "is-callable": "^1.1.3", - "is-regex": "^1.0.4" + "has": "^1.0.3", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-keys": "^1.0.12" } }, "es-to-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", - "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha1-7fckeAM0VujdqO8J4ArZZQcH83c=", "requires": { - "is-callable": "^1.1.1", + "is-callable": "^1.1.4", "is-date-object": "^1.0.1", - "is-symbol": "^1.0.1" - } - }, - "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "1" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "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=", - "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" + "is-symbol": "^1.0.2" } }, "es6-promise": { @@ -3170,38 +3152,6 @@ "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=" }, - "es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "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=", - "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=", - "requires": { - "d": "1", - "es5-ext": "^0.10.14", - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3212,13 +3162,11 @@ "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=", + "eslint-scope": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.0.tgz", + "integrity": "sha1-UL8wcekzi83EMzF5Sgy1M/ATYXI=", "requires": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", "esrecurse": "^4.1.0", "estraverse": "^4.1.1" } @@ -3231,7 +3179,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "requires": { "estraverse": "^4.1.0" } @@ -3251,42 +3199,61 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "requires": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, "eventemitter3": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=" }, "events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "integrity": "sha1-mgoN+vYok9krh1uPJpjKQRSXPog=" }, "eventsource": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", - "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha1-j7xyyT/NNAiAkLwKTmT0tc7m2NA=", "requires": { - "original": ">=0.0.5" + "original": "^1.0.0" } }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha1-xiNqW7TfbW8V6I5/AXeYIWdJ3dg=", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -3303,14 +3270,22 @@ "fill-range": "^2.1.0" } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "express": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", - "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha1-/d72GSYQniTFFeqX/S8b2/Yt8S4=", "requires": { "accepts": "~1.3.5", "array-flatten": "1.1.1", - "body-parser": "1.18.2", + "body-parser": "1.18.3", "content-disposition": "0.5.2", "content-type": "~1.0.4", "cookie": "0.3.1", @@ -3327,10 +3302,10 @@ "on-finished": "~2.3.0", "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.3", - "qs": "6.5.1", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", "range-parser": "~1.2.0", - "safe-buffer": "5.1.1", + "safe-buffer": "5.1.2", "send": "0.16.2", "serve-static": "1.13.2", "setprototypeof": "1.1.0", @@ -3348,32 +3323,27 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" - }, - "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" } } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=" }, "extend-shallow": { "version": "3.0.2", @@ -3387,7 +3357,7 @@ "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "requires": { "is-plain-object": "^2.0.4" } @@ -3408,9 +3378,9 @@ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=" }, "fast-json-stable-stringify": { "version": "2.0.0", @@ -3418,9 +3388,9 @@ "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" }, "fastparse": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", - "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha1-kXKMWllC7O2FMSg8eUQe5BIsNak=" }, "faye-websocket": { "version": "0.10.0", @@ -3430,6 +3400,11 @@ "websocket-driver": ">=0.5.1" } }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha1-hiRwESkBxyeg5JWoB0S9W6odZ5A=" + }, "file-loader": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.8.5.tgz", @@ -3439,6 +3414,12 @@ "loader-utils": "~0.2.5" }, "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=", + "optional": true + }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", @@ -3461,7 +3442,7 @@ "fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=", "requires": { "is-number": "^2.1.0", "isobject": "^2.0.0", @@ -3473,7 +3454,7 @@ "finalhandler": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "integrity": "sha1-7r9O2EAHnIP0JJA4ydcDAIMBsQU=", "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -3487,10 +3468,15 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -3505,18 +3491,18 @@ } }, "find-elm-dependencies": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-1.0.2.tgz", - "integrity": "sha512-gnvu2zAKFEHd76zV/JkRvof7HNyM2X8yW5vflCfWbXeo9hmXMndz/SrEsTQFSXXgNqf0AdjhQSRPnG8JYR92oQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-elm-dependencies/-/find-elm-dependencies-2.0.0.tgz", + "integrity": "sha1-Q1qgWmVEoOz1TF0ayFzByhBE5OQ=", "requires": { "firstline": "1.2.0", - "lodash": "4.14.2" + "lodash": "4.17.10" }, "dependencies": { "lodash": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "integrity": "sha1-u8zOY3OkAPv9CoxnykL20e9BZDI=" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha1-G3eTz3JZ6jj7NmHU04syYK+K5Oc=" } } }, @@ -3528,552 +3514,857 @@ "locate-path": "^2.0.0" } }, - "firstline": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz", - "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=" - }, - "flatten": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", - "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" - }, - "flush-write-stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", - "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.4" - } - }, - "follow-redirects": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", - "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", - "requires": { - "debug": "^3.1.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - }, - "for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "findup-sync": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", + "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", "requires": { - "for-in": "^1.0.1" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", - "integrity": "sha1-rjFduaSQf6BlUCMEpm13M0de43w=", - "requires": { - "async": "^2.0.1", - "combined-stream": "^1.0.5", - "mime-types": "^2.1.11" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "fs-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "fsevents": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.3.tgz", - "integrity": "sha512-X+57O5YkDTiEQGiw8i7wYc2nQgweIekqkepI8Q3y4wVlurgBt2SuwxTeYUYMZIGpLZH3r/TsMjczCMXE5ZOt7Q==", - "optional": true, - "requires": { - "nan": "^2.9.2", - "node-pre-gyp": "^0.9.0" + "detect-file": "^1.0.0", + "is-glob": "^3.1.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" }, "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "balanced-match": { - "version": "1.0.0", - "bundled": true + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "chownr": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, "debug": { "version": "2.6.9", - "bundled": true, - "optional": true, + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "requires": { - "minipass": "^2.2.1" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } } }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "glob": { - "version": "7.1.2", - "bundled": true, - "optional": true, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.21", - "bundled": true, - "optional": true, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "requires": { - "safer-buffer": "^2.1.0" + "kind-of": "^6.0.0" } }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "requires": { - "minimatch": "^3.0.4" + "kind-of": "^6.0.0" } }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "requires": { - "once": "^1.3.0", - "wrappy": "1" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "requires": { - "number-is-nan": "^1.0.0" + "is-extglob": "^2.1.0" } }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "brace-expansion": "^1.1.7" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } } }, - "minimist": { - "version": "0.0.8", - "bundled": true - }, - "minipass": { - "version": "2.2.4", - "bundled": true, - "requires": { - "safe-buffer": "^5.1.1", - "yallist": "^3.0.0" - } + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", "requires": { - "minimist": "0.0.8" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } }, "ms": { "version": "2.0.0", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.2.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^2.1.2", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.9.1", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.0", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.1.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "firstline": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/firstline/-/firstline-1.2.0.tgz", + "integrity": "sha1-yfSIbn9/vwr8EtcZQdzgaxkq6gU=" + }, + "flatten": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=" + }, + "flow-static-land": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/flow-static-land/-/flow-static-land-0.2.7.tgz", + "integrity": "sha1-k3+dyyeAiJpgkVXl0aVamTvC/7M=" + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha1-xdWG7zivYJdlC0m8QbVfq7GfNb0=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.6.1.tgz", + "integrity": "sha1-UUlzxEtXVzaLrYvd/lL4HwFclMs=", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=", "requires": { - "abbrev": "1", - "osenv": "^0.1.4" + "ms": "2.0.0" } }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.1.10", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha1-3M5SwF9kTymManq5Nr1yTO/786Y=", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha1-TxicRKoSO4lfcigE9V6iPq3DSOk=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.7.tgz", + "integrity": "sha512-Pxm6sI2MeBD7RdD12RYsqaP0nMiwx8eZBXCa6z2L+mRHm2DYrOYwihmhjpkdjUHwQhslWQjRpEgNq4XvBmaAuw==", + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "optional": true }, - "npmlog": { - "version": "4.1.2", + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", "bundled": true, "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" } }, - "number-is-nan": { - "version": "1.0.1", + "balanced-match": { + "version": "1.0.0", "bundled": true }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", + "brace-expansion": { + "version": "1.1.11", "bundled": true, "requires": { - "wrappy": "1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "os-homedir": { - "version": "1.0.2", + "chownr": { + "version": "1.1.1", "bundled": true, "optional": true }, - "os-tmpdir": { + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { "version": "1.0.2", "bundled": true, "optional": true }, - "osenv": { - "version": "0.1.5", + "debug": { + "version": "2.6.9", "bundled": true, "optional": true, "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" + "ms": "2.0.0" } }, - "path-is-absolute": { - "version": "1.0.1", + "deep-extend": { + "version": "0.6.0", "bundled": true, "optional": true }, - "process-nextick-args": { - "version": "2.0.0", + "delegates": { + "version": "1.0.0", "bundled": true, "optional": true }, - "rc": { - "version": "1.2.6", + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", "bundled": true, "optional": true, "requires": { - "deep-extend": "~0.4.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } + "minipass": "^2.2.1" } }, - "readable-stream": { - "version": "2.3.6", + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", "bundled": true, "optional": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" } }, - "rimraf": { - "version": "2.6.2", + "glob": { + "version": "7.1.3", "bundled": true, "optional": true, "requires": { - "glob": "^7.0.5" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, - "safe-buffer": { - "version": "5.1.1", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.5.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", + "has-unicode": { + "version": "2.0.1", "bundled": true, "optional": true }, - "string-width": { - "version": "1.0.2", + "iconv-lite": { + "version": "0.4.24", "bundled": true, + "optional": true, "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "safer-buffer": ">= 2.1.2 < 3" } }, - "string_decoder": { - "version": "1.1.1", + "ignore-walk": { + "version": "3.0.1", "bundled": true, "optional": true, "requires": { - "safe-buffer": "~5.1.0" + "minimatch": "^3.0.4" } }, - "strip-ansi": { - "version": "3.0.1", + "inflight": { + "version": "1.0.6", "bundled": true, + "optional": true, "requires": { - "ansi-regex": "^2.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "strip-json-comments": { - "version": "2.0.1", + "inherits": { + "version": "2.0.3", + "bundled": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "needle": { + "version": "2.2.4", + "bundled": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.3", + "bundled": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.5", + "bundled": true, + "optional": true + }, + "npm-packlist": { + "version": "1.2.0", + "bundled": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "optional": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", "bundled": true, "optional": true }, "tar": { - "version": "4.4.1", + "version": "4.4.8", "bundled": true, "optional": true, "requires": { - "chownr": "^1.0.1", + "chownr": "^1.1.1", "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", + "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, @@ -4083,11 +4374,11 @@ "optional": true }, "wide-align": { - "version": "1.1.2", + "version": "1.1.3", "bundled": true, "optional": true, "requires": { - "string-width": "^1.0.2" + "string-width": "^1.0.2 || 2" } }, "wrappy": { @@ -4095,7 +4386,7 @@ "bundled": true }, "yallist": { - "version": "3.0.2", + "version": "3.0.3", "bundled": true } } @@ -4114,31 +4405,32 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" }, - "generate-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz", - "integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=" + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha1-+Xj6TJDR3+f/LWvtoqUV5xO9z0o=" }, - "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=", + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha1-wbJVV189wh1Zv8ec09K0axw6VLU=", "requires": { - "is-property": "^1.0.0" + "pump": "^3.0.0" + }, + "dependencies": { + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } } }, - "get-caller-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", - "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -4150,19 +4442,12 @@ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { "assert-plus": "^1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4189,207 +4474,76 @@ "is-glob": "^2.0.0" } }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-modules-path": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/global-modules-path/-/global-modules-path-2.3.1.tgz", + "integrity": "sha1-5UH0yAChqFFKmQR3smesZ1JbmTE=" + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, "globals": { - "version": "11.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.5.0.tgz", - "integrity": "sha512-hYyf+kI8dm3nORsiiXUQigOU62hDLfJ9G01uyGMxhc6BKsircrUhC4uJPQPUSuq2GrTmiiEt7ewxlMdBewfmKQ==" + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", + "integrity": "sha1-Hgl3bf/aXgGBazu0B3yLWcJOqlA=" }, "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", "requires": { "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" } }, "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha1-/7cD4QZuig7qpMi4C6klPu77+wA=" }, - "graphqelm": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/graphqelm/-/graphqelm-3.1.11.tgz", - "integrity": "sha512-9z+BEGQM/XExYzjoMaxPgg1rCXICX0Pz6BcReihYln4ET4UXtge6vlsd75DLS1jzuFL3vh/tG7O2IMB7KnSqDA==", + "graphql": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-14.0.2.tgz", + "integrity": "sha1-fd7TN6TD/S0HVpIyM4QDSzV/VlA=", "requires": { - "elm-format": "^0.7.0-exp", - "glob": "^7.1.2", - "graphql-request": "^1.4.0", - "minimist": "^1.2.0", - "request": "^2.83.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "requires": { - "hoek": "4.x.x" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "requires": { - "hoek": "4.x.x" - } - } - } - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - } - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "request": { - "version": "2.85.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.85.0.tgz", - "integrity": "sha512-8H7Ehijd4js+s6wuVPLjwORxD4zeuyjYugprdOXlPSqaApmL/QOy+EB/beICHVCHkGMKNh5rvihb5ov+IDw4mg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "hawk": "~6.0.2", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "stringstream": "~0.0.5", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "requires": { - "hoek": "4.x.x" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" - } + "iterall": "^1.2.2" } }, "graphql-request": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.6.0.tgz", - "integrity": "sha512-qqAPLZuaGlwZDsMQ2FfgEyZMcXFMsPPDl6bQQlmwP/xCnk1TqxkE1S644LsHTXAHYPvmRWsIimfdcnys5+o+fQ==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-1.8.2.tgz", + "integrity": "sha1-OY0QrhXFhWdnQb3j/AHVypSPj74=", "requires": { - "cross-fetch": "2.0.0" + "cross-fetch": "2.2.2" } }, "handle-thing": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", - "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", + "integrity": "sha1-DgOWlf9QyT/CiFV9aW88HcZ3Z1Q=" }, "har-schema": { "version": "2.0.0", @@ -4397,46 +4551,20 @@ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz", - "integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=", "requires": { - "chalk": "^1.1.1", - "commander": "^2.9.0", - "is-my-json-valid": "^2.12.4", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - } + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", - "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "requires": { - "function-bind": "^1.0.2" + "function-bind": "^1.1.1" } }, "has-ansi": { @@ -4452,6 +4580,11 @@ "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=" + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -4516,23 +4649,12 @@ } }, "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha1-C6vKU46NTuSg+JiNaIZlN6ADz0I=", "requires": { "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "hawk": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", - "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", - "requires": { - "boom": "2.x.x", - "cryptiles": "2.x.x", - "hoek": "2.x.x", - "sntp": "1.x.x" + "minimalistic-assert": "^1.0.1" } }, "hmac-drbg": { @@ -4545,15 +4667,18 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "hoek": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", - "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=" + "homedir-polyfill": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", + "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", + "requires": { + "parse-passwd": "^1.0.0" + } }, "hosted-git-info": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", - "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==" + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha1-l/I2l3vW4SVAiTD/bePuxigewEc=" }, "hpack.js": { "version": "2.1.6", @@ -4567,9 +4692,9 @@ } }, "html-comment-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", - "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha1-l9RoiutcgYhqNk+qDK0d2hTUM6c=" }, "html-entities": { "version": "1.2.1", @@ -4593,14 +4718,14 @@ } }, "http-parser-js": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", - "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.0.tgz", + "integrity": "sha1-1l7b7ehDSdDcMDIIFaFdOcw8u9g=" }, "http-proxy": { "version": "1.17.0", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", - "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=", "requires": { "eventemitter3": "^3.0.0", "follow-redirects": "^1.0.0", @@ -4608,126 +4733,439 @@ } }, "http-proxy-middleware": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", - "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha1-CYfmu1pWBuWmkWjY+WeofxXdiqs=", "requires": { "http-proxy": "^1.16.2", - "is-glob": "^3.1.0", - "lodash": "^4.17.2", - "micromatch": "^2.3.11" + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" }, "dependencies": { - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", "requires": { - "is-extglob": "^2.1.0" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } } - } - } - }, - "http-signature": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", - "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", - "requires": { - "assert-plus": "^0.2.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "icss-replace-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", - "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" - }, - "icss-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", - "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", - "requires": { - "postcss": "^6.0.1" - }, - "dependencies": { - "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { - "chalk": "^2.4.1", - "source-map": "^0.6.1", - "supports-color": "^5.4.0" + "ms": "2.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - } - } - }, - "ieee754": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", - "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==" - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" - }, - "ignore": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.8.tgz", - "integrity": "sha512-pUh+xUQQhQzevjRHHFqqcTy0/dP/kS9I8HSrUydhihjuD09W6ldVWFtIrwhXdUJHis3i2rZNqEHpZH/cbinFbg==" - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "requires": { - "repeating": "^2.0.0" - } - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - }, - "inflight": { - "version": "1.0.6", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=" + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + } + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha1-UL8k5bnIu5ivSWTJQc2wkY2ntgs=" + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=" + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha1-Cpf7h2mG6AgcYxFg+PnziRV/AEM=" + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha1-VQcL44pZk88Y72236WH1vuXFoJ0=", + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=" + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, + "inflight": { + "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "requires": { @@ -4740,23 +5178,29 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" + }, "internal-ip": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz", - "integrity": "sha1-rp+/k7mEh4eF1QqN4bNWlWBYz1w=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha1-31yZh24dLrLqLXT1IOP2aaAOzic=", "requires": { - "meow": "^3.3.0" + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" } }, "interpret": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", - "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha1-1QYaYiS+WOgIOYX1AU2EQ1lXYpY=" }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=", "requires": { "loose-envify": "^1.0.0" } @@ -4771,10 +5215,15 @@ "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, "ipaddr.js": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.6.0.tgz", - "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" }, "is-absolute-url": { "version": "2.1.0", @@ -4805,7 +5254,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" }, "is-builtin-module": { "version": "1.0.0", @@ -4818,7 +5267,7 @@ "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "integrity": "sha1-HhrfIZ4e62hNaR+dagX/DTCiTXU=" }, "is-data-descriptor": { "version": "0.1.4", @@ -4836,7 +5285,7 @@ "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", @@ -4846,7 +5295,7 @@ "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" } } }, @@ -4873,14 +5322,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "requires": { - "number-is-nan": "^1.0.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", @@ -4897,23 +5338,6 @@ "is-extglob": "^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==" - }, - "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==", - "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-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -4922,21 +5346,6 @@ "kind-of": "^3.0.2" } }, - "is-odd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", - "integrity": "sha512-OTiixgpZAT1M4NHgS5IguFp/Vz2VI3U7Goh4/HA1adtwyLtSBrxYlcSYkhpAE07s4fKEcjrFxyvtQBND4vFQyQ==", - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -4945,7 +5354,7 @@ "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==", + "integrity": "sha1-WsSLNF72dTOb1sekipEhELJBz1I=", "requires": { "is-path-inside": "^1.0.0" } @@ -4966,7 +5375,7 @@ "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", "requires": { "isobject": "^3.0.1" }, @@ -4988,11 +5397,6 @@ "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, - "is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" - }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", @@ -5001,6 +5405,11 @@ "has": "^1.0.1" } }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, "is-svg": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", @@ -5010,9 +5419,12 @@ } }, "is-symbol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", - "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha1-oFX2rlcZLK7jKeeoYBGLSXqVDzg=", + "requires": { + "has-symbols": "^1.0.0" + } }, "is-typedarray": { "version": "1.0.0", @@ -5027,7 +5439,12 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "integrity": "sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" }, "isarray": { "version": "1.0.0", @@ -5052,10 +5469,15 @@ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "iterall": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.2.2.tgz", + "integrity": "sha1-ktcN64Ao4MOf8xZP2/TYsIgTDNc=" + }, "js-base64": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", - "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha1-Hvo57yxfeYC7F4St5KivLeMpESE=" }, "js-tokens": { "version": "3.0.2", @@ -5074,18 +5496,17 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsesc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", - "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=" + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=" }, - "json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=" }, "json-schema": { "version": "0.2.3", @@ -5093,9 +5514,9 @@ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=" }, "json-stringify-safe": { "version": "5.0.1", @@ -5113,24 +5534,13 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=" }, "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", "requires": { "graceful-fs": "^4.1.6" } }, - "jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true - }, - "jsonpointer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", - "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=" - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -5140,27 +5550,55 @@ "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "jszip": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", - "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "integrity": "sha1-48KmxtcGrG5gMxQDbUPNQL7v3zc=", "requires": { "core-js": "~2.3.0", "es6-promise": "~3.0.2", "lie": "~3.1.0", "pako": "~1.0.2", "readable-stream": "~2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } } }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha1-TIzkQRh6Bhx0dPuHygjipjgZSJI=" + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -5169,19 +5607,6 @@ "is-buffer": "^1.1.5" } }, - "klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "requires": { - "graceful-fs": "^4.1.9" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" - }, "lcid": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", @@ -5198,6 +5623,11 @@ "immediate": "~3.0.5" } }, + "lightercollective": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lightercollective/-/lightercollective-0.1.0.tgz", + "integrity": "sha1-cN8QLFMNy40Myr/mF1qNANX2EwA=" + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -5218,18 +5648,28 @@ } }, "loader-runner": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", - "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha1-7UcGa/5TTX6ExMe5mYwqdWB9k1c=" }, "loader-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", - "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha1-H/XcaRHJ8KBiUxpMBLYJQGEIwsc=", "requires": { - "big.js": "^3.1.3", + "big.js": "^5.2.2", "emojis-list": "^2.0.0", - "json5": "^0.5.0" + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=", + "requires": { + "minimist": "^1.2.0" + } + } } }, "locate-path": { @@ -5242,15 +5682,20 @@ } }, "lodash": { - "version": "4.17.10", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", - "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha1-s56mIp72B+zYniyN8SU2iRysm40=" }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -5261,60 +5706,49 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=" }, "loose-envify": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", - "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "requires": { - "js-tokens": "^3.0.0" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=", "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" } }, "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha1-i75Q6oW+1ZvJ4z3KuCNe6bz0Q80=", "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" } }, - "macaddress": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", - "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" - }, "make-dir": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", - "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=", "requires": { "pify": "^3.0.0" } }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha1-fVg6cwZDTAVf5HSw9FB45uG0uSo=", + "requires": { + "p-defer": "^1.0.0" + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -5323,11 +5757,6 @@ "object-visit": "^1.0.0" } }, - "marked": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.17.tgz", - "integrity": "sha512-+AKbNsjZl6jFfLPwHhWmGTqE009wTKn3RTmn9K8oUKHrX/abPJjtcRtXpYB/FFrwPJRUA86LX/de3T0knkPCmQ==" - }, "match-stream": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/match-stream/-/match-stream-0.0.2.tgz", @@ -5352,6 +5781,11 @@ "isarray": "0.0.1", "string_decoder": "~0.10.x" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, @@ -5361,17 +5795,18 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=" }, "math-random": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha1-XdaUPJOFSCZwFtTjTwV1gwgMUUw=" }, "md5.js": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", - "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha1-tdB7jjIW4+J81yjXL3DR5qNCAF8=", "requires": { "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "media-typer": { @@ -5379,6 +5814,16 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "mem": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.1.0.tgz", + "integrity": "sha1-rrm+LSH0fnivKeSsWXjor6LKW4o=", + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -5388,30 +5833,6 @@ "readable-stream": "^2.0.1" } }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -5445,7 +5866,7 @@ "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -5454,25 +5875,30 @@ "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=" }, "mime-db": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", - "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha1-C2oM5v2+lXbiXx8tL96IMNwK0Ng=" }, "mime-types": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", - "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha1-KJlaoey3cHQv5q5+WPkYHHRLP5Y=", "requires": { - "mime-db": "~1.33.0" + "mime-db": "~1.37.0" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=" + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=" }, "minimalistic-crypto-utils": { "version": "1.0.1", @@ -5482,20 +5908,20 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mississippi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", - "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "integrity": "sha1-NEKlCPr8KFAEhv7qmUCWduTuWm8=", "requires": { "concat-stream": "^1.5.0", "duplexify": "^3.4.2", @@ -5512,7 +5938,7 @@ "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", - "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "integrity": "sha1-pJ5yaNzhoNlpjkUybFYm3zVD0P4=", "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" @@ -5521,7 +5947,7 @@ "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=", "requires": { "is-plain-object": "^2.0.4" } @@ -5534,6 +5960,13 @@ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + } } }, "move-concurrently": { @@ -5550,14 +5983,14 @@ } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=" }, "multicast-dns": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "integrity": "sha1-oOx72QVcQoL3kMPIL04o2zsxsik=", "requires": { "dns-packet": "^1.3.1", "thunky": "^1.0.2" @@ -5568,23 +6001,27 @@ "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" }, + "mustache": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/mustache/-/mustache-2.3.2.tgz", + "integrity": "sha1-ptTZw/kdEzWauImoEpVPkjCj0MU=" + }, "nan": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", - "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.12.1.tgz", + "integrity": "sha512-JY7V6lRkStKcKTvHO5NVSQRv+RV+FIL5pvDoLiAtSL9pKlC5x9PKQcZDsq7m4FO4d57mkhC6Z+QhAh3Jdk5JFw==", "optional": true }, "nanomatch": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.9.tgz", - "integrity": "sha512-n8R9bS8yQ6eSXaV6jHUpKzD8gLsin02w1HSFiegwrs9E098Ylhw5jdyKPaYqvHknHaSCKTPp7C8dGCQ0q9koXA==", + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=", "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "fragment-cache": "^0.2.1", - "is-odd": "^2.0.0", "is-windows": "^1.0.2", "kind-of": "^6.0.2", "object.pick": "^1.3.0", @@ -5606,14 +6043,14 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" } } }, "natives": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.3.tgz", - "integrity": "sha512-BZGSYV4YOLxzoTK73l0/s/0sH9l8SHs2ocReMH1f8JYSh5FUWu4ZrKCpJdRkWXV6HFR/pZDz7bwWOVAY07q77g==" + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha1-pgO0pJirdxc2ErnqGs3sTZgPALs=" }, "negotiator": { "version": "0.6.1", @@ -5621,116 +6058,89 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, "neo-async": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.1.tgz", - "integrity": "sha512-3KL3fvuRkZ7s4IFOMfztb7zJp3QaVWnBeGoJlgB38XnCRPj/0tLzzLG5IB8NYOHbJ8g8UGrgZv44GLDk6CxTxA==" + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha1-udFeTXHGdikIZUtRg+04t1M0CDU=" }, "newless": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/newless/-/newless-0.3.0.tgz", "integrity": "sha1-t4IqdY/5xRWkNqazqXrdQBbM1LI=" }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=" }, "node-elm-compiler": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-4.5.0.tgz", - "integrity": "sha512-XlyiHxqBizqEHaYj4UaO5/qmxeh1Ir/M02RLKsIgHBR7Z8snwoXfdpVntlfF64mcAGkuA1KY0CJsqk0IpAfyLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/node-elm-compiler/-/node-elm-compiler-5.0.1.tgz", + "integrity": "sha1-1iCU7nLWqtYW66pxOXts+skDgfY=", "requires": { "cross-spawn": "4.0.0", - "find-elm-dependencies": "1.0.2", - "lodash": "4.14.2", + "find-elm-dependencies": "2.0.0", + "lodash": "4.17.10", "temp": "^0.8.3" }, "dependencies": { "lodash": { - "version": "4.14.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.14.2.tgz", - "integrity": "sha1-u8zOY3OkAPv9CoxnykL20e9BZDI=" + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha1-G3eTz3JZ6jj7NmHU04syYK+K5Oc=" } } }, "node-fetch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.0.0.tgz", - "integrity": "sha1-mCu6Q+zU8pIqKcwYamu7C7c/y6Y=" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" }, "node-forge": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", - "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==" + "integrity": "sha1-bBUsNFzhHFL0ZcKr2VfoY5zWdN8=" }, "node-libs-browser": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", - "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.0.tgz", + "integrity": "sha1-xy9g2dRt4IqUDe27JfP/ovm7qnc=", "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", "buffer": "^4.3.0", "console-browserify": "^1.1.0", "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^1.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.0", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.10.3", - "vm-browserify": "0.0.4" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" } } }, - "node-uuid": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.8.tgz", - "integrity": "sha1-sEDrCSOWivq/jTL7HxfxFn/auQc=" - }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.2.tgz", + "integrity": "sha1-ayq9hXdOUfeTbxOV5FrLkF3ISbI=", "requires": { "hosted-git-info": "^2.1.4", "is-builtin-module": "^1.0.0", @@ -5762,6 +6172,14 @@ "sort-keys": "^1.0.0" } }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, "num2fraction": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", @@ -5773,9 +6191,9 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=" + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=" }, "object-assign": { "version": "4.1.1", @@ -5805,7 +6223,7 @@ "object-keys": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + "integrity": "sha1-CcU4VTd1dTEMymL1W7M0q/97PtI=" }, "object-visit": { "version": "1.0.1", @@ -5858,7 +6276,7 @@ "obuf": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + "integrity": "sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=" }, "on-finished": { "version": "2.3.0", @@ -5887,31 +6305,19 @@ "integrity": "sha1-M+7tN1ba+ejr+SvMgzfKmd5iR2Y=" }, "opn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", - "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha1-y1Reeqt4VivrEao7+rxwQuF2EDU=", "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "is-wsl": "^1.1.0" } }, "original": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", - "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha1-5EKmHP/hxf0gpl8yYcJmY7MD8l8=", "requires": { - "url-parse": "1.0.x" - }, - "dependencies": { - "url-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", - "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", - "requires": { - "querystringify": "0.0.x", - "requires-port": "1.0.x" - } - } + "url-parse": "^1.4.3" } }, "os-browserify": { @@ -5937,10 +6343,25 @@ "resolved": "https://registry.npmjs.org/over/-/over-0.0.5.tgz", "integrity": "sha1-8phS5w/X4l82DgE6jsRMgq7bVwg=" }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-is-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.0.0.tgz", + "integrity": "sha1-dVTj1XIQmofh8/U/an2F0bGU9MU=" + }, "p-limit": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.2.0.tgz", - "integrity": "sha512-Y/OtIaXtUPr4/YpMv1pCL5L5ed0rumAaAeBSj12F+bSlMdys7i8oQF/GUJmfpTS/QoaRrS/k6pma29haJpsMng==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", "requires": { "p-try": "^1.0.0" } @@ -5956,7 +6377,7 @@ "p-map": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", - "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==" + "integrity": "sha1-5OlPMR6rvIYzoeeZCBZfyiYkG2s=" }, "p-try": { "version": "1.0.0", @@ -5964,9 +6385,9 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, "pako": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", - "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.8.tgz", + "integrity": "sha1-aESJCqucY1r4aK1f7MYuisu6PqQ=" }, "parallel-transform": { "version": "1.1.0", @@ -5976,47 +6397,19 @@ "cyclist": "~0.2.2", "inherits": "^2.0.3", "readable-stream": "^2.1.5" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "parse-asn1": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", - "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.3.tgz", + "integrity": "sha1-FgDGzAcnNl1ouX86p4k55zWnUgQ=", "requires": { "asn1.js": "^4.0.0", "browserify-aes": "^1.0.0", "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3" + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-glob": { @@ -6038,6 +6431,11 @@ "error-ex": "^1.2.0" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" + }, "parseurl": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", @@ -6073,10 +6471,15 @@ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" + }, "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" }, "path-to-regexp": { "version": "1.7.0", @@ -6094,26 +6497,17 @@ } }, "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - } + "pify": "^3.0.0" } }, "pbkdf2": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", - "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha1-l2wgZTBhexTrsyEUI597CTNuk6Y=", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -6130,7 +6524,7 @@ "phoenix": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/phoenix/-/phoenix-1.3.0.tgz", - "integrity": "sha512-g1I6kJKTQx7wGsJCc2b1RfXeHUfITTV5kdqJPFoqmrGDfFEKQIrQkkBtv8QeJ0s1iN9+vvryrQLv+4SfmH/wqg==" + "integrity": "sha1-HfLCf5hu4pXjfJmD7CjrrB1/Sj4=" }, "pify": { "version": "3.0.0", @@ -6159,9 +6553,9 @@ } }, "portfinder": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", - "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "version": "1.0.20", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.20.tgz", + "integrity": "sha1-vqaGMuVLLhOrewxHdem0G/Jw5Eo=", "requires": { "async": "^1.5.2", "debug": "^2.2.0", @@ -6176,10 +6570,15 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -6191,7 +6590,7 @@ "postcss": { "version": "5.2.18", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", - "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "integrity": "sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=", "requires": { "chalk": "^1.1.3", "js-base64": "^2.1.9", @@ -6309,12 +6708,11 @@ } }, "postcss-filter-plugins": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", - "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha1-giRf34IzcEFkXkdxFNjlk6oYuOw=", "requires": { - "postcss": "^5.0.4", - "uniqid": "^4.0.0" + "postcss": "^5.0.4" } }, "postcss-merge-idents": { @@ -6405,17 +6803,17 @@ } }, "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.1.tgz", + "integrity": "sha1-3IfjQUjsfqtfeR981YSYMzdbdBo=", "requires": { "postcss": "^6.0.1" }, "dependencies": { "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", "requires": { "chalk": "^2.4.1", "source-map": "^0.6.1", @@ -6425,7 +6823,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" } } }, @@ -6439,9 +6837,9 @@ }, "dependencies": { "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", "requires": { "chalk": "^2.4.1", "source-map": "^0.6.1", @@ -6451,7 +6849,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" } } }, @@ -6465,9 +6863,9 @@ }, "dependencies": { "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", "requires": { "chalk": "^2.4.1", "source-map": "^0.6.1", @@ -6477,7 +6875,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" } } }, @@ -6491,9 +6889,9 @@ }, "dependencies": { "postcss": { - "version": "6.0.22", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.22.tgz", - "integrity": "sha512-Toc9lLoUASwGqxBSJGTVcOQiDqjK+Z2XlWBg+IgYwQMY9vA2f7iMpXVc1GpPcfTSyM5lkxNo0oDwDRO+wm7XHA==", + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha1-YcgswyisYOZ3ZF+XkFTrmLwOMyQ=", "requires": { "chalk": "^2.4.1", "source-map": "^0.6.1", @@ -6503,7 +6901,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" } } }, @@ -6594,9 +6992,9 @@ } }, "postcss-value-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", - "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=" + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha1-n/giVH4okyE88cMO+lGsX9G6goE=" }, "postcss-zindex": { "version": "2.2.0", @@ -6621,7 +7019,7 @@ "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" + "integrity": "sha1-I4Hts2ifelPWUxkAYPz4ItLzaP8=" }, "process": { "version": "0.11.10", @@ -6629,17 +7027,9 @@ "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" - }, - "promise": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.1.1.tgz", - "integrity": "sha1-SJZUxpJha4qlWwck+oCbt9tJxb8=", - "requires": { - "asap": "~2.0.3" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=" }, "promise-inflight": { "version": "1.0.1", @@ -6647,12 +7037,12 @@ "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" }, "proxy-addr": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.3.tgz", - "integrity": "sha512-jQTChiCJteusULxjBp8+jftSQE5Obdl3k4cnmLA6WXtK6XFuWRnvVL7aCiBqaLPM8c4ph0S4tKna8XvmIwEnXQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha1-7PxzO/Iv+Mb0B/onUye5q2fki5M=", "requires": { "forwarded": "~0.1.2", - "ipaddr.js": "1.6.0" + "ipaddr.js": "1.8.0" } }, "prr": { @@ -6665,16 +7055,22 @@ "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha1-6aqG0BAbWxBcvpOsa3hM1UcnYYQ=" + }, "public-encrypt": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", - "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha1-T8ydd6B+SLp1J+fL4N4z0HATMeA=", "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1" + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "pullstream": { @@ -6693,226 +7089,489 @@ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha1-Ejma3W5M91Jtlzy8i1zi4pCLOQk=", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha1-NlE74karJ1cLGjdKXOJ4v9dDcM4=", + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=" + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=" + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, + "querystringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz", + "integrity": "sha1-fe2N+/eHncxg0KZErGdUsoOtF+8=" + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=", + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha1-0wLFIpSFiISKjTAMkytEwkIx2oA=", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha1-ySGW/IarQr6YPxvzF3giSTHWFFg=", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha1-GzJOzmtXBuFThVvBFIxlu39uoMM=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", + "unpipe": "1.0.0" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha1-KXhx9jvlB63Pv8pxXQzQ7thOmmM=", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "requires": { + "graceful-fs": "^4.1.2", + "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=" + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^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=", + "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=", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" + "pinkie-promise": "^2.0.0" } } } }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.0.tgz", - "integrity": "sha512-UWi0klDoq8xtVzlMRgENV9F7iCTZExaJQSQL187UXsxpk9NnrKGqTqqUNYAKGOzucSOxs2+jUnRNI+rLviPhJg==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" - }, - "qs": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", - "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=" - }, - "query-string": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", - "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=", "requires": { - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - }, - "querystringify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", - "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=" - }, - "randomatic": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", - "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=", "requires": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" }, "dependencies": { - "is-number": { + "arr-diff": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } - }, - "randombytes": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", - "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", - "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" - }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", - "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" - }, - "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "kind-of": "^6.0.0" } }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - } - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^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=", + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { - "pinkie-promise": "^2.0.0" + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, - "readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "readdirp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", - "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", - "requires": { - "graceful-fs": "^4.1.2", - "minimatch": "^3.0.2", - "readable-stream": "^2.0.2", - "set-immediate-shim": "^1.0.1" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", @@ -6921,6 +7580,13 @@ "balanced-match": "^0.4.2", "math-expression-evaluator": "^1.2.14", "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } } }, "reduce-function-call": { @@ -6929,25 +7595,37 @@ "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", "requires": { "balanced-match": "^0.4.2" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=" + } } }, "regenerate": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.3.tgz", - "integrity": "sha512-jVpo1GadrDAK59t/0jRx5VxYWQEDkkEKi6+HjE3joFVLfDOh9Xrdh0dF1eSq+BI/SwvTQ44gSscJ8N5zYL61sg==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha1-SoVuxLVuQHfFV1icroXnpMiGmhE=" }, "regenerate-unicode-properties": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-5.1.3.tgz", - "integrity": "sha512-Yjy6t7jFQczDhYE+WVm7pg6gWYE258q4sUkk9qDErwXJIqx7jU9jGrMFHutJK/SRfcg7MEkXjGaYiVlOZyev/A==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha1-EHQFr8xKGQ7F7UUOyqAO0Mr6ekw=", "requires": { - "regenerate": "^1.3.3" + "regenerate": "^1.4.0" } }, + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha1-+hpxVEdkwDb4xJsToIsllMn4oN4=" + }, "regenerator-transform": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.3.tgz", - "integrity": "sha512-y2uxO/6u+tVmtEDIKo+tLCtI0GcbQr0OreosKgCd7HP4VypGjtTrw79DezuwT+W5QX0YWuvpeBOgumrepwM1kA==", + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.12.4.tgz", + "integrity": "sha1-qptsWfS5e+CA6XJQbFYLO8y/z/A=", "requires": { "private": "^0.1.6" } @@ -6955,7 +7633,7 @@ "regex-cache": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", "requires": { "is-equal-shallow": "^0.1.3" } @@ -6963,34 +7641,34 @@ "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=", "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" } }, "regexpu-core": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.3.tgz", - "integrity": "sha512-mB+njEzO7oezA57IbQxxd6fVPOeWKDmnGvJ485CwmfNchjHe5jWwqKepapmzUEj41yxIAqOg+C4LbXuJlkiO8A==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.4.0.tgz", + "integrity": "sha1-jUPg0SZog5aXIDRecMJ17grsDTI=", "requires": { - "regenerate": "^1.3.3", - "regenerate-unicode-properties": "^5.1.1", - "regjsgen": "^0.3.0", - "regjsparser": "^0.2.1", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^7.0.0", + "regjsgen": "^0.5.0", + "regjsparser": "^0.6.0", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" } }, "regjsgen": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.3.0.tgz", - "integrity": "sha1-DuSj6SdkMM2iXx54nqbBW4ewy0M=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz", + "integrity": "sha1-p2NNwI+JIJwgSa3aNSVxH7lyZd0=" }, "regjsparser": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.2.1.tgz", - "integrity": "sha1-w3h1U/rwTndcMCEC7zRtmVAA7Bw=", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz", + "integrity": "sha1-8eaui32iuulsmTmbhozWyTOiupw=", "requires": { "jsesc": "~0.5.0" }, @@ -7008,49 +7686,40 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "repeat-element": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", - "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha1-eC4NglwMWjuzlzH4Tv7mt0Lmsc4=" }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "requires": { - "is-finite": "^1.0.0" - } - }, "request": { - "version": "2.74.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", - "integrity": "sha1-dpPKdou7DqXIzgjAhKRe+gW4kqs=", - "requires": { - "aws-sign2": "~0.6.0", - "aws4": "^1.2.1", - "bl": "~1.1.2", - "caseless": "~0.11.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.0", + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha1-nC/KT301tZLv5Xx/ClXoEFIST+8=", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", "forever-agent": "~0.6.1", - "form-data": "~1.0.0-rc4", - "har-validator": "~2.0.6", - "hawk": "~3.1.3", - "http-signature": "~1.1.0", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.7", - "node-uuid": "~1.4.7", - "oauth-sign": "~0.8.1", - "qs": "~6.2.0", - "stringstream": "~0.0.4", - "tough-cookie": "~2.3.0", - "tunnel-agent": "~0.4.1" + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" } }, "request-promise": { @@ -7088,13 +7757,35 @@ "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", - "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.0.tgz", + "integrity": "sha1-O9qur0XMB/N1ZW39LlTtCBCxAbo=", + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "requires": { - "path-parse": "^1.0.5" + "resolve-from": "^3.0.0" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -7103,33 +7794,20 @@ "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, - "ric": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ric/-/ric-1.3.0.tgz", - "integrity": "sha1-jpUEJgnOghNUioMWTQjpT66UkJ8=" - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "requires": { - "align-text": "^0.1.1" - } + "integrity": "sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=" }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", "requires": { - "glob": "^7.0.5" + "glob": "^7.1.3" } }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "integrity": "sha1-ocGm9iR1FXe6XQeRTLyShQWFiQw=", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -7146,7 +7824,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safe-regex": { "version": "1.1.0", @@ -7156,10 +7834,15 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=" + }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=" }, "schema-utils": { "version": "0.3.0", @@ -7167,6 +7850,24 @@ "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", "requires": { "ajv": "^5.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" + } } }, "select-hose": { @@ -7175,22 +7876,22 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", - "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", + "integrity": "sha1-zdfsz8pO12NdR6CL8tXTB0CS4s0=", "requires": { "node-forge": "0.7.5" } }, "semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha1-fnQlb7qknHWqfHogXMInmcrIAAQ=" }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=", "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -7210,17 +7911,22 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "serialize-javascript": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", - "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.6.1.tgz", + "integrity": "sha1-TR9pfsSUKahHym9EKip1USbE2Hk=" }, "serve-index": { "version": "1.9.1", @@ -7239,17 +7945,22 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "serve-static": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=", "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -7262,41 +7973,15 @@ "resolved": "https://registry.npmjs.org/serviceworker-cache-polyfill/-/serviceworker-cache-polyfill-4.0.0.tgz", "integrity": "sha1-3hnuc77yGrPAdAo3sz22JGS6ves=" }, - "serviceworker-loader": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/serviceworker-loader/-/serviceworker-loader-0.1.0.tgz", - "integrity": "sha1-3p2MEFlZdzu9I4O+zcYg6rmuA+Q=", - "requires": { - "loader-utils": "0.2.x" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "requires": { - "big.js": "^3.1.3", - "emojis-list": "^2.0.0", - "json5": "^0.5.0", - "object-assign": "^4.0.1" - } - } - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" - }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", - "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "integrity": "sha1-ca5KiPD+77v1LR6mBPP7MV67YnQ=", "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", @@ -7322,29 +8007,30 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=" }, "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "integrity": "sha1-N6XPC4HsvGlD3hCbopYNGyZYSuc=", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, - "shell-quote": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", - "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", - "dev": true, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "requires": { - "array-filter": "~0.0.0", - "array-map": "~0.0.0", - "array-reduce": "~0.0.0", - "jsonify": "~0.0.0" + "shebang-regex": "^1.0.0" } }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -7383,13 +8069,18 @@ "isarray": "0.0.1", "string_decoder": "~0.10.x" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=", "requires": { "base": "^0.11.1", "debug": "^2.2.0", @@ -7404,7 +8095,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "requires": { "ms": "2.0.0" } @@ -7424,13 +8115,18 @@ "requires": { "is-extendable": "^0.1.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=", "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", @@ -7448,7 +8144,7 @@ "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", "requires": { "kind-of": "^6.0.0" } @@ -7456,7 +8152,7 @@ "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", "requires": { "kind-of": "^6.0.0" } @@ -7464,7 +8160,7 @@ "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", @@ -7479,56 +8175,40 @@ "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" } } }, "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=", "requires": { "kind-of": "^3.2.0" } }, - "sntp": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", - "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", - "requires": { - "hoek": "2.x.x" - } - }, "sockjs": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", - "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha1-2Xa76ACve9IK4IWY1YI5NQiZPA0=", "requires": { "faye-websocket": "^0.10.0", - "uuid": "^2.0.2" + "uuid": "^3.0.1" } }, "sockjs-client": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", - "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", + "integrity": "sha1-EvydbLZj2lc509xftuhofalcsXc=", "requires": { - "debug": "^2.2.0", - "eventsource": "0.1.6", - "faye-websocket": "~0.11.0", - "inherits": "^2.0.1", + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", "json3": "^3.3.2", - "url-parse": "^1.1.1" + "url-parse": "^1.4.3" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, "faye-websocket": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", @@ -7548,9 +8228,9 @@ } }, "source-list-map": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", - "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha1-OZO9hzv8SEecyp6jpUeDXHwVSzQ=" }, "source-map": { "version": "0.5.7", @@ -7558,120 +8238,117 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-resolve": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", - "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha1-cuLMNAlVQ+Q7LGKyxMENSpBU8lk=", "requires": { - "atob": "^2.0.0", + "atob": "^2.1.1", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", "urix": "^0.1.0" } }, + "source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha1-IhQIC8nVGDJRHuK6uW48L5NTEgw=", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + } + } + }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, "spdx-correct": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", - "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", - "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", - "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==" + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.3.tgz", + "integrity": "sha1-gcDOjyFHR1YUi7tfO/wPNr8V124=" }, "spdy": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", - "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.0.tgz", + "integrity": "sha1-gfIitadDoymqEs6mo5DmDpthPFI=", "requires": { - "debug": "^2.6.8", - "handle-thing": "^1.2.5", + "debug": "^4.1.0", + "handle-thing": "^2.0.0", "http-deceiver": "^1.2.7", - "safe-buffer": "^5.0.1", "select-hose": "^2.0.0", - "spdy-transport": "^2.0.18" + "spdy-transport": "^3.0.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } } } }, "spdy-transport": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", - "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=", "requires": { - "debug": "^2.6.8", - "detect-node": "^2.0.3", + "debug": "^4.1.0", + "detect-node": "^2.0.4", "hpack.js": "^2.1.6", - "obuf": "^1.1.1", - "readable-stream": "^2.2.9", - "safe-buffer": "^5.0.1", - "wbuf": "^1.7.2" + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.1.1.tgz", + "integrity": "sha1-7Wu8bFuliwkAOf8YzmcFFXla6wY=", "requires": { - "safe-buffer": "~5.1.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" } } } @@ -7679,7 +8356,7 @@ "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=", "requires": { "extend-shallow": "^3.0.0" } @@ -7690,9 +8367,9 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.1.tgz", - "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=", + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -7701,20 +8378,14 @@ "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - } } }, "ssri": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "integrity": "sha1-ujhyycbTOgcEp9cf8EXl7EiZnQY=", "requires": { "safe-buffer": "^5.1.1" } @@ -7741,7 +8412,7 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=" }, "stealthy-require": { "version": "1.1.1", @@ -7749,62 +8420,33 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, "stream-browserify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", - "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=", "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" } }, "stream-each": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.2.tgz", - "integrity": "sha512-mc1dbFhGBxvTM3bIWmAAINbqiuAk9TATcfIQC8P+/+HJefgaiTlMn2dHvkX8qlI12KeYKSQ1Ua9RrIqrn1VPoA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha1-6+J6DDibBPvMIzZClS4Qcxr6m64=", "requires": { "end-of-stream": "^1.1.0", "stream-shift": "^1.0.0" } }, "stream-http": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.1.tgz", - "integrity": "sha512-cQ0jo17BLca2r0GfRdZKYAGLU6JRoIWxqSOakUMuKOT6MOK7AAlE856L33QuDmAy/eeOrhLee3dZKX0Uadu93A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=", "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", - "readable-stream": "^2.3.3", + "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" - }, - "dependencies": { - "process-nextick-args": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } } }, "stream-shift": { @@ -7829,10 +8471,10 @@ "style-loader": "^0.8.3" }, "dependencies": { - "async": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", - "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=" + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=" }, "css-loader": { "version": "0.9.1", @@ -7893,14 +8535,12 @@ } }, "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "stringstream": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", - "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", + "requires": { + "safe-buffer": "~5.1.0" + } }, "strip-ansi": { "version": "3.0.1", @@ -7918,27 +8558,24 @@ "is-utf8": "^0.2.0" } }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "requires": { - "get-stdin": "^4.0.1" - } + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "style-loader": { "version": "0.18.2", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", - "integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw==", + "integrity": "sha1-zDFFmvvNbYC3Ig7lSykan9Zv9es=", "requires": { "loader-utils": "^1.0.2", "schema-utils": "^0.3.0" } }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", "requires": { "has-flag": "^3.0.0" } @@ -7946,13 +8583,18 @@ "svg-inline-loader": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/svg-inline-loader/-/svg-inline-loader-0.8.0.tgz", - "integrity": "sha512-rynplY2eXFrdNomL1FvyTFQlP+dx0WqbzHglmNtA9M4IHRC3no2aPAl3ny9lUpJzFzFMZfWRK5YIclNU+FRePA==", + "integrity": "sha1-fp2QXYDQtOaNLfIa/NCO6emj6m4=", "requires": { "loader-utils": "^0.2.11", "object-assign": "^4.0.1", "simple-html-tokenizer": "^0.1.1" }, "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=" + }, "loader-utils": { "version": "0.2.17", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", @@ -7990,9 +8632,9 @@ } }, "tapable": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.8.tgz", - "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha1-TSl5I8WnKkI2DeKrUtrfquwAAY4=" }, "tar": { "version": "2.2.1", @@ -8020,58 +8662,197 @@ } } }, - "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "terser": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.14.1.tgz", + "integrity": "sha1-zEdkAUr1cLx5x5dCNYvUaSYBijI=", "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "commander": "~2.17.1", + "source-map": "~0.6.1", + "source-map-support": "~0.5.6" }, "dependencies": { - "process-nextick-args": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + } + } + }, + "terser-webpack-plugin": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.2.1.tgz", + "integrity": "sha1-dUXamuX0+a5qCslh60b158hFzCY=", + "requires": { + "cacache": "^11.0.2", + "find-cache-dir": "^2.0.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "terser": "^3.8.1", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha1-LYHjCOPSWMo4Eltna5iyrJzmm/o=", + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "find-cache-dir": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.0.0.tgz", + "integrity": "sha1-TB+u1Z9FGEUw+51/oSOk0EqYRy0=", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "locate-path": "^3.0.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "requires": { - "safe-buffer": "~5.1.0" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=", + "requires": { + "yallist": "^3.0.2" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha1-6goykfl+C16HdrNj1fChLZTGcCI=", + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=" + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=", + "requires": { + "find-up": "^3.0.0" } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha1-tKIRaBW94vTh6mAjVOjHVWUQemQ=", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha1-KjxBso3UW2K2Nnbst0ABJlrp7dg=", + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha1-tLBJ4xS+VF486AIjbWzSLNkcPek=" } } }, - "thunky": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", - "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=" + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } }, - "time-stamp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.0.0.tgz", - "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=" + "thunky": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.3.tgz", + "integrity": "sha1-9d9zJFNAewkZHa5z4qjMc/OBqCY=" }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", - "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "integrity": "sha1-HSjj0qrfHVpZlsTp+VYBzQU0gK4=", "requires": { "setimmediate": "^1.0.4" } @@ -8097,7 +8878,7 @@ "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=", "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", @@ -8125,11 +8906,19 @@ } }, "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha1-U/Nto/R3g7CSWvoG/587FlKA94E=", "requires": { + "psl": "^1.1.24", "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + } } }, "traverse": { @@ -8137,36 +8926,38 @@ "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.3.9.tgz", "integrity": "sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk=" }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha1-1+TdeSRdhUKMTX5IIqeZF5VMooY=" + }, "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, "tunnel-agent": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz", - "integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", - "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=", "requires": { "media-typer": "0.3.0", "mime-types": "~2.1.18" @@ -8177,120 +8968,29 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, - "uglify-js": { - "version": "git+https://github.com/mishoo/UglifyJS2.git#278577f3cb75e72320564805ee91be63e5f9c806", - "from": "git+https://github.com/mishoo/UglifyJS2.git#harmony-v2.8.22", - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "requires": { - "source-map": "^0.5.6", - "uglify-js": "^2.8.29", - "webpack-sources": "^1.0.1" - }, - "dependencies": { - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - } - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } - }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", - "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha1-JhmADEyCWADv3YNDr33Zkzy+KBg=" }, "unicode-match-property-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", - "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha1-jtKjJWmWG86SJ9Cc0/+7j+1fAgw=", "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.2", - "unicode-property-aliases-ecmascript": "^1.0.3" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", - "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha1-nx3HaSbWzPRSMQVk/YNKzgWWY9Q=" }, "unicode-property-aliases-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", - "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha1-WlM/MbQxfqdvF9gH+g0RZUYRHdA=" }, "union-value": { "version": "1.0.0", @@ -8329,35 +9029,32 @@ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, - "uniqid": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", - "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", - "requires": { - "macaddress": "^0.2.8" - } - }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=" }, "unique-filename": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.0.tgz", - "integrity": "sha1-0F8v5AMlYIcfMOk8vnNe6iAVFPM=", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha1-HWl2k2mtoFgxA6HmrodoG1ZXMjA=", "requires": { "unique-slug": "^2.0.0" } }, "unique-slug": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.0.tgz", - "integrity": "sha1-22Z258fMBimHj/GWCXx4hVrp9Ks=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha1-Xp7cbRzo+yZNsYpQfvm9hURFHKY=", "requires": { "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -8451,13 +9148,35 @@ "isarray": "0.0.1", "string_decoder": "~0.10.x" } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" } } }, + "unzip-stream": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unzip-stream/-/unzip-stream-0.3.0.tgz", + "integrity": "sha1-wwwFTNaw1ksTojzT7OkR6wsrUtg=", + "requires": { + "binary": "^0.3.0", + "mkdirp": "^0.5.1" + } + }, "upath": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.0.5.tgz", - "integrity": "sha512-qbKn90aDQ0YEwvXoLqj0oiuUYroLX2lVHZ+b+xwjozFasAOC4GneDq5+OaIG5Zj+jFmbz/uO+f7a9qxjktJQww==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha1-NSVll+RqWB20eT0M5H+prr/J+r0=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", + "requires": { + "punycode": "^2.1.0" + } }, "urix": { "version": "0.1.0", @@ -8481,49 +9200,25 @@ } }, "url-parse": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.0.tgz", - "integrity": "sha512-ERuGxDiQ6Xw/agN4tuoCRbmwRuZP0cJ1lJxJubXr5Q/5cDa78+Dc4wfvtxzhzhkm5VvmW6Mf8EVj9SPGN4l8Lg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", + "integrity": "sha1-ysFVbpX6oDA2kf7Fz51aG8NGSPg=", "requires": { "querystringify": "^2.0.0", "requires-port": "^1.0.0" - }, - "dependencies": { - "querystringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", - "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==" - } } }, "use": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.0.tgz", - "integrity": "sha512-6UJEQM/L+mzC3ZJNM56Q4DFGLX/evKGRg15UJHGB9X5j5Z3AFbgZvjUh2yq/UJUY4U5dh7Fal++XbNg1uzpRAw==", - "requires": { - "kind-of": "^6.0.2" - }, - "dependencies": { - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - } - } + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=" }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha1-MjZzNyDsZLsn9uJvQhqqLhtYjWE=", "requires": { - "inherits": "2.0.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - } + "inherits": "2.0.3" } }, "util-deprecate": { @@ -8534,7 +9229,7 @@ "util.promisify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "integrity": "sha1-RA9xZaRZyaFtwUXrjnLzVocJcDA=", "requires": { "define-properties": "^1.1.2", "object.getownpropertydescriptors": "^2.0.3" @@ -8546,14 +9241,19 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha1-G0r0lV6zB3xQHCOHL8ZROBFYcTE=" + }, + "v8-compile-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.2.tgz", + "integrity": "sha1-pCiyi7JnkHNMT8i8n6EG/M6/amw=" }, "validate-npm-package-license": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", - "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -8567,7 +9267,7 @@ "vendors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.2.tgz", - "integrity": "sha512-w/hry/368nO21AN9QljsaIhb9ZiZtZARoVH5f3CsFbawdLdayCgKRPup7CggujvySMxx0I91NOyxdVENohprLQ==" + "integrity": "sha1-f8te759WI7FWvOqJ7DfWNnbyGAE=" }, "verror": { "version": "1.10.0", @@ -8577,207 +9277,761 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha1-S8EsLr6KonenHx0/FNaFx7RGzQA=", + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "4.29.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.29.0.tgz", + "integrity": "sha1-8s/vg/euQEuoif9dQ+/Shcom51A=", + "requires": { + "@webassemblyjs/ast": "1.7.11", + "@webassemblyjs/helper-module-context": "1.7.11", + "@webassemblyjs/wasm-edit": "1.7.11", + "@webassemblyjs/wasm-parser": "1.7.11", + "acorn": "^6.0.5", + "acorn-dynamic-import": "^4.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^1.0.0", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.0", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.1.0", + "terser-webpack-plugin": "^1.1.0", + "watchpack": "^1.5.0", + "webpack-sources": "^1.3.0" }, "dependencies": { - "assert-plus": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=", + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=", + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=" + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=", + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=", + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=", + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=", + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha1-unT1l9K+LqiAExdG7hfQoJPGgYc=", + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } } } }, - "vm-browserify": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", - "requires": { - "indexof": "0.0.1" - } - }, - "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - } - }, - "wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "requires": { - "minimalistic-assert": "^1.0.0" - } - }, - "webpack": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.3.0.tgz", - "integrity": "sha1-zi+eB2Vmq6kfdIhxM6iD/X2hh7w=", - "requires": { - "acorn": "^5.0.0", - "acorn-dynamic-import": "^2.0.0", - "ajv": "^5.1.5", - "ajv-keywords": "^2.0.0", - "async": "^2.1.2", - "enhanced-resolve": "^3.3.0", - "escope": "^3.6.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "json5": "^0.5.1", - "loader-runner": "^2.3.0", + "webpack-cli": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.2.1.tgz", + "integrity": "sha1-d5xpbIJIJJHwgDkHUI2y4nbtO2E=", + "requires": { + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.0", + "findup-sync": "^2.0.0", + "global-modules": "^1.0.0", + "global-modules-path": "^2.3.0", + "import-local": "^2.0.0", + "interpret": "^1.1.0", + "lightercollective": "^0.1.0", "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "mkdirp": "~0.5.0", - "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^3.1.0", - "tapable": "~0.2.5", - "uglifyjs-webpack-plugin": "^0.4.6", - "watchpack": "^1.4.0", - "webpack-sources": "^1.0.1", - "yargs": "^6.0.0" + "supports-color": "^5.5.0", + "v8-compile-cache": "^2.0.2", + "yargs": "^12.0.4" }, "dependencies": { - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha1-AylVJ9WL081Kp1Nj81sujZe+L0I=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", "requires": { - "has-flag": "^1.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha1-BfWZe2CWR7ZPZrgeO0sQo2jnrRM=", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha1-h5oIZZc7yp9rq1y987HGfsfTvPQ=", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "webpack-dev-middleware": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", - "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha1-ETL+zJAm/ZDw7O2sXL/3XR+0WJA=", "requires": { "memory-fs": "~0.4.1", - "mime": "^1.5.0", - "path-is-absolute": "^1.0.0", + "mime": "^2.3.1", "range-parser": "^1.0.3", - "time-stamp": "^2.0.0" + "webpack-log": "^2.0.0" }, "dependencies": { "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", + "integrity": "sha1-4FH9iBNYWF8yed8zP+aU2gvP/dY=" } } }, "webpack-dev-server": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.5.1.tgz", - "integrity": "sha1-oC5yaoe7YD211xq7fW0mSb8Qx2k=", + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.14.tgz", + "integrity": "sha1-YPsim5l/xaCh/GI3QhAwGAlZ1Gk=", "requires": { "ansi-html": "0.0.7", "bonjour": "^3.5.0", - "chokidar": "^1.6.0", + "chokidar": "^2.0.0", "compression": "^1.5.2", "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", "del": "^3.0.0", - "express": "^4.13.3", + "express": "^4.16.2", "html-entities": "^1.2.0", - "http-proxy-middleware": "~0.17.4", - "internal-ip": "^1.2.0", - "opn": "4.0.2", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", "selfsigned": "^1.9.1", + "semver": "^5.6.0", "serve-index": "^1.7.2", - "sockjs": "0.3.18", - "sockjs-client": "1.1.2", - "spdy": "^3.4.1", + "sockjs": "0.3.19", + "sockjs-client": "1.3.0", + "spdy": "^4.0.0", "strip-ansi": "^3.0.0", - "supports-color": "^3.1.1", - "webpack-dev-middleware": "^1.11.0", - "yargs": "^6.0.0" + "supports-color": "^5.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" }, "dependencies": { - "anymatch": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", - "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha1-NIQi2+gtgAswIu709qwQvy5NG0k=", "requires": { - "micromatch": "^2.1.5", - "normalize-path": "^2.0.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } } }, - "chokidar": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", - "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha1-ZW17vICUxMeI6lPFhAkIycfQY8c=", "requires": { - "anymatch": "^1.3.0", - "async-each": "^1.0.0", - "fsevents": "^1.0.0", - "glob-parent": "^2.0.0", - "inherits": "^2.0.1", - "is-binary-path": "^1.0.0", - "is-glob": "^2.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.0.0" + "xregexp": "4.0.0" } }, - "has-flag": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha1-c5P1r6Weyf9fZ6J2INEcIm4+7AI=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha1-bvXS32DlL4LrIopMNz6NHzlyU88=", + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha1-qAKm7hfyTBBIOrmTVxnO9O0Wvxo=", + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.1.0.tgz", + "integrity": "sha1-HVoNIPsScHx1imVfa7xDhrWTDWg=", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha1-hQgLuHxkaI+keZb+j3376CEXYLE=" + }, + "schema-utils": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha1-C3mpMgTXtgDUsoUNH2bCo0lRx3A=", + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "requires": { - "has-flag": "^1.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha1-/lgjQ2k5KvM+y+9TgZFx7/D1qtw=", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", + "requires": { + "camelcase": "^4.1.0" } } } }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha1-W3ko4GN1k/EZ0y9iJ8HgrDHhtH8=", + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, "webpack-manifest-plugin": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.2.tgz", - "integrity": "sha512-yg87MFSPKrc/02BbxI1oaQUOMV4ElhWQRU4X+XgmbVbBlw+/Pe/q6j1e9sk7HJCm1wh/Iz2Lggkr0VhW3Ogifg==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.0.4.tgz", + "integrity": "sha1-5MopmbCVV3Fri6RHX7efq1mG8M0=", "requires": { - "fs-extra": "^0.30.0", + "fs-extra": "^7.0.0", "lodash": ">=3.5 <5", "tapable": "^1.0.0" - }, - "dependencies": { - "tapable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", - "integrity": "sha512-dQRhbNQkRnaqauC7WqSJ21EEksgT0fYZX2lqXzGkpo8JNig9zGZTYoMGvyI2nWmXlE2VSVXVDu7wLVGu/mQEsg==" - } } }, "webpack-sources": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", - "integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha1-KijcufH0X+lg2PFJMlK17mUw+oU=", "requires": { "source-list-map": "^2.0.0", "source-map": "~0.6.1" }, "dependencies": { - "source-list-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", - "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==" - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=" } } }, @@ -8793,12 +10047,12 @@ "websocket-extensions": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" + "integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=" }, "whatwg-fetch": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", - "integrity": "sha1-nITsLc9oGH/wC8ZOEnS0QhduHIQ=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha1-3eal3zFfnTmZGqF2IYU9cguFVm8=" }, "whet.extend": { "version": "0.9.9", @@ -8806,9 +10060,9 @@ "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=" }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", "requires": { "isexe": "^2.0.0" } @@ -8818,15 +10072,13 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" - }, - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha1-rsxAWXb6talVJhgIRvDboojzpKA=", + "requires": { + "errno": "~0.1.7" + } }, "wrap-ansi": { "version": "2.1.0", @@ -8842,15 +10094,20 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha1-5pgYneSd0qGMxWh7BeF8jkOUMCA=" + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=" }, "yallist": { "version": "2.1.2", @@ -8875,6 +10132,13 @@ "which-module": "^1.0.0", "y18n": "^3.2.1", "yargs-parser": "^4.2.0" + }, + "dependencies": { + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + } } }, "yargs-parser": { @@ -8884,6 +10148,11 @@ "requires": { "camelcase": "^3.0.0" } + }, + "zen-observable": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.11.tgz", + "integrity": "sha1-00FYhe7rQu5au5ghyVu1GPzW0Zk=" } } } diff --git a/assets/package.json b/assets/package.json index 854ea872..9b19a4b5 100644 --- a/assets/package.json +++ b/assets/package.json @@ -1,46 +1,41 @@ { "name": "ellie", "description": "ellie-app.com", - "repository": "https://github.com/lukewestby/ellie.git", + "repository": "https://github.com/ellie-app/ellie.git", "version": "1.0.0", "license": "BSD-3-Clause", + "scripts": { + "build": "webpack --mode production --config webpack.prod.config.js", + "start": "webpack-dev-server --mode development --config webpack.dev.config.js", + "graphql": "elm-graphql --introspection-file ../priv/graphql/schema.json --base Ellie.Api --output ./elm-stuff/generated/dillonkearns/graphql" + }, "dependencies": { + "@absinthe/socket": "^0.2.0", "@babel/core": "7.0.0-beta.46", "@babel/preset-env": "7.0.0-beta.46", "@babel/preset-stage-2": "7.0.0-beta.46", + "@dillonkearns/elm-graphql": "^1.0.7", "@webcomponents/custom-elements": "1.1.0", "babel-loader": "8.0.0-beta.4", - "babel-plugin-elm-pre-minify": "0.1.2", "codemirror": "5.27.4", - "compression-webpack-plugin": "1.1.11", + "compression-webpack-plugin": "^1.1.11", "copy-webpack-plugin": "4.5.1", "css-loader": "0.28.4", - "elm": "0.18.0", - "elm-webpack-loader": "https://github.com/lukewestby/elm-webpack-loader.git", - "graphqelm": "3.1.11", + "elm": "^0.19.0-bugfix6", + "elm-format": "^0.8.1", + "elm-webpack-loader": "^5.0.0", "jszip": "3.1.5", - "marked": "0.3.17", "newless": "0.3.0", "opbeat-js": "3.1.4", "phoenix": "1.3.0", - "ric": "1.3.0", - "serviceworker-loader": "0.1.0", "string-replace-webpack-plugin": "0.1.3", "style-loader": "0.18.2", "svg-inline-loader": "0.8.0", "sw-toolbox": "3.6.0", - "uglify-js": "git+https://github.com/mishoo/UglifyJS2.git#harmony-v2.8.22", - "webpack": "3.3.0", - "webpack-dev-server": "2.5.1", - "webpack-manifest-plugin": "2.0.2" - }, - "scripts": { - "start": "yarn run watch", - "watch": "MIX_ENV=dev webpack-dev-server --watch --config ./webpack.dev.config.js", - "build": "webpack --config ./webpack.prod.config.js", - "graphql": "graphqelm --introspection-file ../priv/graphql/schema.json --base Ellie.Api --output elm-stuff/generated/dillonkearns/graphqelm" - }, - "devDependencies": { - "chokidar-cli": "1.2.0" + "terser-webpack-plugin": "^1.1.0", + "webpack": "^4.20.2", + "webpack-cli": "^3.2.1", + "webpack-dev-server": "^3.1.9", + "webpack-manifest-plugin": "^2.0.4" } } diff --git a/assets/src/Colors.elm b/assets/src/Colors.elm index 3fcd7965..16cccc30 100644 --- a/assets/src/Colors.elm +++ b/assets/src/Colors.elm @@ -1,4 +1,4 @@ -module Colors exposing (..) +module Colors exposing (BoxShadow, blue, boxShadow, darkGray, darkMediumGray, green, lightGray, lightMediumGray, mediumGray, pink, red, yellow) import Css exposing (..) diff --git a/assets/src/Data/Either.elm b/assets/src/Data/Either.elm index ffd21e32..038e9684 100644 --- a/assets/src/Data/Either.elm +++ b/assets/src/Data/Either.elm @@ -1,13 +1,12 @@ -module Data.Either - exposing - ( Either(..) - , andMap - , andThen - , map - , mapBoth - , mapLeft - , mapRight - ) +module Data.Either exposing + ( Either(..) + , andMap + , andThen + , map + , mapBoth + , mapLeft + , mapRight + ) type Either l r diff --git a/assets/src/Data/Entity.elm b/assets/src/Data/Entity.elm index 189ef2d1..3a934b20 100644 --- a/assets/src/Data/Entity.elm +++ b/assets/src/Data/Entity.elm @@ -1,12 +1,11 @@ -module Data.Entity - exposing - ( Entity(..) - , decoder - , encoder - , key - , map - , record - ) +module Data.Entity exposing + ( Entity(..) + , decoder + , encoder + , key + , map + , record + ) {-| A representation of some data that is stored based on some unique ID. This is a much nicer way to represent this situation than by putting an diff --git a/assets/src/Data/Group.elm b/assets/src/Data/Group.elm index b4a0dc75..38112597 100644 --- a/assets/src/Data/Group.elm +++ b/assets/src/Data/Group.elm @@ -1,10 +1,9 @@ -module Data.Group - exposing - ( Group - , batch - , none - , one - ) +module Data.Group exposing + ( Group + , batch + , none + , one + ) type Group a diff --git a/assets/src/Data/Jwt.elm b/assets/src/Data/Jwt.elm index 9da48db2..9e36a202 100644 --- a/assets/src/Data/Jwt.elm +++ b/assets/src/Data/Jwt.elm @@ -1,7 +1,7 @@ module Data.Jwt exposing (Jwt, decoder, encoder, field, fromString, toString, withTokenHeader) -import Graphqelm.Field -import Graphqelm.Http +import Graphql.Field +import Graphql.Http import Json.Decode as Decode exposing (Decoder) import Json.Encode as Encode exposing (Value) @@ -30,11 +30,11 @@ decoder = Decode.map Jwt Decode.string -withTokenHeader : Jwt -> Graphqelm.Http.Request a -> Graphqelm.Http.Request a +withTokenHeader : Jwt -> Graphql.Http.Request a -> Graphql.Http.Request a withTokenHeader (Jwt token) = - Graphqelm.Http.withHeader "authorization" ("Bearer " ++ token) + Graphql.Http.withHeader "authorization" ("Bearer " ++ token) -field : Graphqelm.Field.Field String a -> Graphqelm.Field.Field Jwt a +field : Graphql.Field.Field String a -> Graphql.Field.Field Jwt a field stringField = - Graphqelm.Field.map Jwt stringField + Graphql.Field.map Jwt stringField diff --git a/assets/src/Data/Replaceable.elm b/assets/src/Data/Replaceable.elm index 7514eb66..6476060b 100644 --- a/assets/src/Data/Replaceable.elm +++ b/assets/src/Data/Replaceable.elm @@ -1,4 +1,4 @@ -module Data.Replaceable exposing (..) +module Data.Replaceable exposing (Replaceable(..), fromMaybe, inject, loading, reset, toMaybe) type Replaceable k v diff --git a/assets/src/Data/Transition.elm b/assets/src/Data/Transition.elm index 4deeaf2d..815922ba 100644 --- a/assets/src/Data/Transition.elm +++ b/assets/src/Data/Transition.elm @@ -1,4 +1,4 @@ -module Data.Transition exposing (..) +module Data.Transition exposing (Transition(..), exit, fold, step) type Transition a b diff --git a/assets/src/Data/Url.elm b/assets/src/Data/Url.elm deleted file mode 100644 index 7b06f25f..00000000 --- a/assets/src/Data/Url.elm +++ /dev/null @@ -1,35 +0,0 @@ -module Data.Url - exposing - ( Url - , fromString - , href - , src - , toString - ) - -import Html.Styled exposing (Attribute) -import Html.Styled.Attributes as Attributes - - -type Url - = Url String - - -fromString : String -> Url -fromString = - Url - - -toString : Url -> String -toString (Url string) = - string - - -src : Url -> Attribute msg -src (Url string) = - Attributes.src string - - -href : Url -> Attribute msg -href (Url string) = - Attributes.src string diff --git a/assets/src/Data/Url/Parser.elm b/assets/src/Data/Url/Parser.elm deleted file mode 100644 index 391909ae..00000000 --- a/assets/src/Data/Url/Parser.elm +++ /dev/null @@ -1,726 +0,0 @@ -module Data.Url.Parser - exposing - ( () - , () - , Parser - , Protocol - , Url - , custom - , fragment - , fromUrl - , int - , map - , oneOf - , parse - , query - , s - , string - , toUrl - , top - ) - -{-| In [the URI spec](https://tools.ietf.org/html/rfc3986), Tim Berners-Lee -says a URL looks like this: - - https://example.com:8042/over/there?name=ferret#nose - \___/ \______________/\_________/ \_________/ \__/ - | | | | | - scheme authority path query fragment - -This module is for parsing the `path` part. - - -# Primitives - -@docs Parser, string, int, s - - -# Path - -@docs (), map, oneOf, top, custom - - -# Query - -@docs (), query - - -# Fragment - -@docs fragment - - -# Run Parsers - -@docs parse, Url, Protocol, toUrl, fromUrl - --} - -import Data.Url.Parser.Internal as Q -import Data.Url.Parser.Query as Query -import Dict exposing (Dict) -import Http - - --- INFIX TABLE - - -() : Parser a b -> Parser b c -> Parser a c -() = - slash -infixr 7 - - -() : Parser a (query -> b) -> Query.Parser query -> Parser a b -() = - questionMark -infixl 8 - - - --- PARSERS - - -{-| Turn URLs like `/blog/42/cat-herding-techniques` into nice Elm data. --} -type Parser a b - = Parser (State a -> List (State b)) - - -type alias State value = - { visited : List String - , unvisited : List String - , params : Dict String (List String) - , frag : Maybe String - , value : value - } - - - --- PARSE SEGMENTS - - -{-| Parse a segment of the path as a `String`. - - -- /alice/ ==> Just "alice" - -- /bob ==> Just "bob" - -- /42/ ==> Just "42" - -- / ==> Nothing - --} -string : Parser (String -> a) a -string = - custom "STRING" Just - - -{-| Parse a segment of the path as an `Int`. - - -- /alice/ ==> Nothing - -- /bob ==> Nothing - -- /42/ ==> Just 42 - -- / ==> Nothing - --} -int : Parser (Int -> a) a -int = - custom "NUMBER" (String.toInt >> Result.toMaybe) - - -{-| Parse a segment of the path if it matches a given string. It is almost -always used with [``](#) or [`oneOf`](#oneOf). For example: - - blog : Parser (String -> a) a - blog = - s "blog" int - - - -- /blog/42 ==> Just 42 - -- /tree/42 ==> Nothing - -The path segment must be an exact match! - --} -s : String -> Parser a a -s str = - Parser <| - \{ visited, unvisited, params, frag, value } -> - case unvisited of - [] -> - [] - - next :: rest -> - if next == str then - [ State (next :: visited) rest params frag value ] - else - [] - - -{-| Create a custom path segment parser. Here is how it is used to define the -`int` parser: - - int : Parser (Int -> a) a - int = - custom "NUMBER" String.toInt - -You can use it to define something like “only CSS files” like this: - - css : Parser (String -> a) a - css = - custom "CSS_FILE" <| - \segment -> - if String.endsWith ".css" segment then - Just segment - else - Nothing - --} -custom : String -> (String -> Maybe a) -> Parser (a -> b) b -custom tipe stringToSomething = - Parser <| - \{ visited, unvisited, params, frag, value } -> - case unvisited of - [] -> - [] - - next :: rest -> - case stringToSomething next of - Just nextValue -> - [ State (next :: visited) rest params frag (value nextValue) ] - - Nothing -> - [] - - - --- COMBINING PARSERS - - -{-| Parse a path with multiple segments. - - blog : Parser (Int -> a) a - blog = - s "blog" int - - - -- /blog/35/ ==> Just 35 - -- /blog/42 ==> Just 42 - -- /blog/ ==> Nothing - -- /42/ ==> Nothing - - search : Parser (String -> a) a - search = - s "search" string - - - -- /search/cats/ ==> Just "cats" - -- /search/frog ==> Just "frog" - -- /search/ ==> Nothing - -- /cats/ ==> Nothing - --} -slash : Parser a b -> Parser b c -> Parser a c -slash (Parser parseBefore) (Parser parseAfter) = - Parser <| - \state -> - List.concatMap parseAfter (parseBefore state) - - -{-| Transform a path parser. - - type alias Comment = - { user : String, id : Int } - - userAndId : Parser (String -> Int -> a) a - userAndId = - s "user" string s "comments" int - - comment : Parser (Comment -> a) a - comment = - map Comment userAndId - - - -- /user/bob/comments/42 ==> Just { user = "bob", id = 42 } - -- /user/tom/comments/35 ==> Just { user = "tom", id = 35 } - -- /user/sam/ ==> Nothing - --} -map : a -> Parser a b -> Parser (b -> c) c -map subValue (Parser parseArg) = - Parser <| - \{ visited, unvisited, params, frag, value } -> - List.map (mapState value) <| - parseArg <| - State visited unvisited params frag subValue - - -mapState : (a -> b) -> State a -> State b -mapState func { visited, unvisited, params, frag, value } = - State visited unvisited params frag (func value) - - -{-| Try a bunch of different path parsers. - - type Route - = Search String - | Blog Int - | User String - | Comment String Int - - route : Parser (Route -> a) a - route = - oneOf - [ map Search (s "search" string) - , map Blog (s "blog" int) - , map User (s "user" string) - , map Comment (s "user" string s "comments" int) - ] - - - -- /search/cats ==> Just (Search "cats") - -- /search/" ==> Nothing - -- /blog/42 ==> Just (Blog 42) - -- /blog/cats ==> Nothing - -- /user/sam/ ==> Just (User "sam") - -- /user/bob/comments/42 ==> Just (Comment "bob" 42) - -- /user/tom/comments/35 ==> Just (Comment "tom" 35) - -- /user/ ==> Nothing - -If there are multiple parsers that could succeed, the first one wins. - --} -oneOf : List (Parser a b) -> Parser a b -oneOf parsers = - Parser <| - \state -> - List.concatMap (\(Parser parser) -> parser state) parsers - - -{-| A parser that does not consume any path segments. - - type Route - = Overview - | Post Int - - blog : Parser (BlogRoute -> a) a - blog = - s "blog" - oneOf - [ map Overview top - , map Post (s "post" int) - ] - - - -- /blog/ ==> Just Overview - -- /blog/post/42 ==> Just (Post 42) - --} -top : Parser a a -top = - Parser <| \state -> [ state ] - - - --- QUERY - - -{-| The [`Url.Parser.Query`](Url-Parser-Query) module defines its own -[`Parser`](Url-Parser-Query#Parser) type. This function helps you use those -with normal parsers. For example, maybe you want to add a search feature to -your blog website: - - import Url.Parser.Query as Query - - type Route - = Overview (Result Query.Problem String) - | Post Int - - blog : Parser (Route -> a) a - blog = - oneOf - [ map Overview (s "blog" Query.string "q") - , map Post (s "blog" int) - ] - - - -- /blog/ ==> Just (Overview (Err Query.NotFound)) - -- /blog/?q=cats ==> Just (Overview (Ok "cats")) - -- /blog/cats ==> Nothing - -- /blog/42 ==> Just (Post 42) - -- /blog/42?q=cats ==> Just (Post 42) - -- /blog/42/cats ==> Nothing - --} -questionMark : Parser a (query -> b) -> Query.Parser query -> Parser a b -questionMark parser queryParser = - slash parser (query queryParser) - - -{-| The [`Url.Parser.Query`](Url-Parser-Query) module defines its own -[`Parser`](Url-Parser-Query#Parser) type. This function is a helper to convert -those into normal parsers. - - import Url.Parser.Query as Query - - -- the following expressions are both the same! - -- - -- s "blog" Query.string "search" - -- s "blog" query (Query.string "search") - -This may be handy if you need query parameters but are not parsing any path -segments. - --} -query : Query.Parser query -> Parser (query -> a) a -query (Q.Parser queryParser) = - Parser <| - \{ visited, unvisited, params, frag, value } -> - [ State visited unvisited params frag (value (queryParser params)) - ] - - - --- FRAGMENT - - -{-| Create a parser for the URL fragment, the stuff after the `#`. This can -be handy for handling links to DOM elements within a page. Pages like this one! - - type alias Docs = - { name : String - , value : Maybe String - } - - docs : Parser (Docs -> a) a - docs = - map Docs (string fragment identity) - - - -- /List/map ==> Nothing - -- /List/#map ==> Just (Docs "List" (Just "map")) - -- /List#map ==> Just (Docs "List" (Just "map")) - -- /List# ==> Just (Docs "List" (Just "")) - -- /List ==> Just (Docs "List" Nothing) - -- / ==> Nothing - --} -fragment : (Maybe String -> fragment) -> Parser (fragment -> a) a -fragment toFrag = - Parser <| - \{ visited, unvisited, params, frag, value } -> - [ State visited unvisited params frag (value (toFrag frag)) - ] - - - --- PARSE - - -{-| Actually run a parser! You provide some [`Url`](#Url) that -represent a valid URL. From there `parse` runs your parser on the path, query -parameters, and fragment! - - import Url.Parser as Parser exposing (Parser, int, map, oneOf, s, top) - - type Route - = Home - | Blog Int - | NotFound - - route : Parser (Route -> a) a - route = - oneOf - [ map Home top - , map Blog (s "blog" int) - ] - - toRoute : String -> Route - toRoute url = - case Parser.toUrl url of - Nothing -> - NotFound - - Just segments -> - Maybe.withDefault NotFound (Parser.parse route segments) - - - -- toRoute "/blog/42" == NotFound - -- toRoute "https://example.com/" == Home - -- toRoute "https://example.com/blog" == NotFound - -- toRoute "https://example.com/blog/42" == Blog 42 - -- toRoute "https://example.com/blog/42/" == Blog 42 - -- toRoute "https://example.com/blog/42#cats" == Blog 42 - -- toRoute "https://example.com/blog/42?q=cats" == Blog 42 - -- toRoute "https://example.com/settings" == NotFound - -Functions like `toRoute` are useful when creating single-page apps with -[`Browser.fullscreen`][fs]. I use them in `init` and `onNavigation` to handle -the initial URL and any changes. - -[fs]: http://package.elm-lang.org/packages/elm-lang/browser/latest#fullscreen - --} -parse : Parser (a -> a) a -> Url -> Maybe a -parse (Parser parser) url = - getFirstMatch <| - parser <| - State [] (preparePath url.path) (prepareQuery url.query) url.fragment identity - - -getFirstMatch : List (State a) -> Maybe a -getFirstMatch states = - case states of - [] -> - Nothing - - state :: rest -> - case state.unvisited of - [] -> - Just state.value - - [ "" ] -> - Just state.value - - _ -> - getFirstMatch rest - - - --- PREPARE PATH - - -preparePath : String -> List String -preparePath path = - case String.split "/" path of - "" :: segments -> - removeFinalEmpty segments - - segments -> - removeFinalEmpty segments - - -removeFinalEmpty : List String -> List String -removeFinalEmpty segments = - case segments of - [] -> - [] - - "" :: [] -> - [] - - segment :: rest -> - segment :: removeFinalEmpty rest - - - --- PREPARE QUERY - - -prepareQuery : Maybe String -> Dict String (List String) -prepareQuery maybeQuery = - case maybeQuery of - Nothing -> - Dict.empty - - Just qry -> - List.foldr addParam Dict.empty (String.split "&" qry) - - -addParam : String -> Dict String (List String) -> Dict String (List String) -addParam segment dict = - case String.split "=" segment of - [ rawKey, rawValue ] -> - case Http.decodeUri rawKey of - Nothing -> - dict - - Just key -> - case Http.decodeUri rawValue of - Nothing -> - dict - - Just value -> - Dict.update key (addToParametersHelp value) dict - - _ -> - dict - - -addToParametersHelp : a -> Maybe (List a) -> Maybe (List a) -addToParametersHelp value maybeList = - case maybeList of - Nothing -> - Just [ value ] - - Just list -> - Just (value :: list) - - - --- URL SEGMENTS - - -{-| The URL segments for webpages served over HTTP or HTTPS. - -When you are creating a single-page app with [`Browser.fullscreen`][fs], you -use the [`parse`](#parse) function to turn a `Url` into nicely structured data. - -[fs]: http://package.elm-lang.org/packages/elm-lang/browser/latest#fullscreen - -**Note:** This is a subset of all the full possibilities listed in [the URI -spec](https://tools.ietf.org/html/rfc3986). Specifically, it does not accept -the `userinfo` segment you see in email addresses like `tom@example.com`. - --} -type alias Url = - { protocol : Protocol - , host : String - , port_ : Maybe Int - , path : String - , query : Maybe String - , fragment : Maybe String - } - - -{-| Is the URL served over a secure connection or not? --} -type Protocol - = Http - | Https - - -{-| Attempt to break a URL up into [`Url`](#Url). This is useful in -single-page apps when you want to parse certain chunks of a URL to figure out -what to show on screen. - - toUrl "https://example.com:443" - -- Just - -- { protocol = Https, host = "example.com", port = Just 443 - -- , path = "/", query = Nothing, fragment = Nothing - -- } - - toUrl "https://example.com/hats?q=top" - -- Just - -- { protocol = Https, host = "example.com", port = Nothing - -- , path = "/hats", query = Just "q=top", fragment = Nothing - -- } - - toUrl "http://example.com/core/List/#map" - -- Just - -- { protocol = Http, host = "example.com", port = Nothing - -- , path = "/core/List/", query = Nothing, fragment = Just "map" - -- } - -The conversion to segments can fail in some cases as well: - - toUrl "example.com:443" == Nothing -- no protocol - toUrl "http://tom@example.com" == Nothing -- userinfo disallowed - toUrl "http://#cats" == Nothing -- no host - --} -toUrl : String -> Maybe Url -toUrl str = - if String.startsWith "http://" str then - chompAfterProtocol Http (String.dropLeft 7 str) - else if String.startsWith "https://" str then - chompAfterProtocol Https (String.dropLeft 8 str) - else - Nothing - - -chompAfterProtocol : Protocol -> String -> Maybe Url -chompAfterProtocol protocol str = - if String.isEmpty str then - Nothing - else - case String.indexes "#" str of - [] -> - chompBeforeFragment protocol Nothing str - - i :: _ -> - chompBeforeFragment protocol (Just (String.dropLeft (i + 1) str)) (String.left i str) - - -chompBeforeFragment : Protocol -> Maybe String -> String -> Maybe Url -chompBeforeFragment protocol frag str = - if String.isEmpty str then - Nothing - else - case String.indexes "?" str of - [] -> - chompBeforeQuery protocol Nothing frag str - - i :: _ -> - chompBeforeQuery protocol (Just (String.dropLeft (i + 1) str)) frag (String.left i str) - - -chompBeforeQuery : Protocol -> Maybe String -> Maybe String -> String -> Maybe Url -chompBeforeQuery protocol params frag str = - if String.isEmpty str then - Nothing - else - case String.indexes "/" str of - [] -> - chompBeforePath protocol "/" params frag str - - i :: _ -> - chompBeforePath protocol (String.dropLeft i str) params frag (String.left i str) - - -chompBeforePath : Protocol -> String -> Maybe String -> Maybe String -> String -> Maybe Url -chompBeforePath protocol path params frag str = - if String.isEmpty str || String.contains "@" str then - Nothing - else - case String.indexes ":" str of - [] -> - Just <| Url protocol str Nothing path params frag - - i :: [] -> - case Result.toMaybe (String.toInt (String.dropLeft (i + 1) str)) of - Nothing -> - Nothing - - port_ -> - Just <| Url protocol (String.left i str) port_ path params frag - - _ -> - Nothing - - -{-| Turn [`Url`](#Url) back into a `String`. --} -fromUrl : Url -> String -fromUrl url = - let - http = - case url.protocol of - Http -> - "http://" - - Https -> - "https://" - in - addPort url.port_ (http ++ url.host) - ++ url.path - |> addPrefixed "?" url.query - |> addPrefixed "#" url.fragment - - -addPort : Maybe Int -> String -> String -addPort maybePort starter = - case maybePort of - Nothing -> - starter - - Just port_ -> - starter ++ ":" ++ toString port_ - - -addPrefixed : String -> Maybe String -> String -> String -addPrefixed prefix maybeSegment starter = - case maybeSegment of - Nothing -> - starter - - Just segment -> - starter ++ prefix ++ segment diff --git a/assets/src/Data/Url/Parser/Internal.elm b/assets/src/Data/Url/Parser/Internal.elm deleted file mode 100644 index bd6371c4..00000000 --- a/assets/src/Data/Url/Parser/Internal.elm +++ /dev/null @@ -1,10 +0,0 @@ -module Data.Url.Parser.Internal - exposing - ( QueryParser(..) - ) - -import Dict - - -type QueryParser a - = Parser (Dict.Dict String (List String) -> a) diff --git a/assets/src/Data/Url/Parser/Query.elm b/assets/src/Data/Url/Parser/Query.elm deleted file mode 100644 index 391837cb..00000000 --- a/assets/src/Data/Url/Parser/Query.elm +++ /dev/null @@ -1,250 +0,0 @@ -module Data.Url.Parser.Query - exposing - ( Parser - , custom - , enum - , int - , map - , map2 - , map3 - , map4 - , map5 - , map6 - , map7 - , map8 - , string - ) - -{-| In [the URI spec](https://tools.ietf.org/html/rfc3986), Tim Berners-Lee -says a URL looks like this: - - https://example.com:8042/over/there?name=ferret#nose - \___/ \______________/\_________/ \_________/ \__/ - | | | | | - scheme authority path query fragment - -This module is for parsing the `query` part. - -In this library, a valid query looks like `?search=hats&page=2` where each -query parameter has the format `key=value` and is separated from the next -parameter by the `&` character. - - -# Parse Query Parameters - -@docs Parser, string, int, enum, custom - - -# Mapping - -@docs map, map2, map3, map4, map5, map6, map7, map8 - --} - -import Data.Url.Parser.Internal as Q -import Dict - - --- PARSERS - - -{-| Parse a query like `?search=hat&page=2` into nice Elm data. --} -type alias Parser a = - Q.QueryParser a - - -string : String -> Parser (Maybe String) -string key = - custom key <| - \stringList -> - case stringList of - [] -> - Nothing - - [ str ] -> - Just str - - _ -> - Nothing - - -int : String -> Parser (Maybe Int) -int key = - custom key <| - \stringList -> - case stringList of - [] -> - Nothing - - [ str ] -> - case String.toInt str of - Err _ -> - Nothing - - Ok n -> - Just n - - _ -> - Nothing - - -enum : String -> Dict.Dict String a -> Parser (Maybe a) -enum key dict = - custom key <| - \stringList -> - case stringList of - [] -> - Nothing - - [ str ] -> - Dict.get str dict - - _ -> - Nothing - - - --- CUSTOM PARSERS - - -{-| Create a custom query parser. The [`string`](#string), [`int`](#int), and -[`enum`](#enum) parsers are defined using this function. It can help you handle -anything though! - -Say you are unlucky enough to need to handle `?post=2&post=7` to show a couple -posts on screen at once. You could say: - - posts : Parser (Maybe (List Int)) - posts = - custom "post" (List.maybeMap String.toInt) - --} -custom : String -> (List String -> a) -> Parser a -custom key func = - Q.Parser <| - \dict -> - func (Maybe.withDefault [] (Dict.get key dict)) - - - --- MAPPING - - -{-| Transform a parser in some way. Maybe you want your `page` query parser to -default to `1` if there is any problem? - - page : Parser Int - page = - map (Result.withDefault 1) (int "page") - --} -map : (a -> b) -> Parser a -> Parser b -map func (Q.Parser a) = - Q.Parser <| \dict -> func (a dict) - - -{-| Combine two parsers. A query like `?search=hats&page=2` could be parsed -with something like this: - - type alias Query = - { search : Result Problem String - , page : Result Problem Int - } - - query : Parser Query - query = - map2 Query (string "search") (int "page") - --} -map2 : (a -> b -> result) -> Parser a -> Parser b -> Parser result -map2 func (Q.Parser a) (Q.Parser b) = - Q.Parser <| - \dict -> - func (a dict) (b dict) - - -{-| Combine three parsers. A query like `?search=hats&page=2&sort=ascending` -could be parsed with something like this: - - import Dict - - type alias Query = - { search : Result Problem String - , page : Result Problem Int - , sort : Result Problem Order - } - - type Order - = Ascending - | Descending - - query : Parser Query - query = - map3 Query (string "search") (int "page") (enum "sort" order) - - order : Dict.Dict String Order - order = - Dict.fromList - [ ( "ascending", Ascending ) - , ( "descending", Descending ) - ] - --} -map3 : (a -> b -> c -> result) -> Parser a -> Parser b -> Parser c -> Parser result -map3 func (Q.Parser a) (Q.Parser b) (Q.Parser c) = - Q.Parser <| - \dict -> - func (a dict) (b dict) (c dict) - - -{-| -} -map4 : (a -> b -> c -> d -> result) -> Parser a -> Parser b -> Parser c -> Parser d -> Parser result -map4 func (Q.Parser a) (Q.Parser b) (Q.Parser c) (Q.Parser d) = - Q.Parser <| - \dict -> - func (a dict) (b dict) (c dict) (d dict) - - -{-| -} -map5 : (a -> b -> c -> d -> e -> result) -> Parser a -> Parser b -> Parser c -> Parser d -> Parser e -> Parser result -map5 func (Q.Parser a) (Q.Parser b) (Q.Parser c) (Q.Parser d) (Q.Parser e) = - Q.Parser <| - \dict -> - func (a dict) (b dict) (c dict) (d dict) (e dict) - - -{-| -} -map6 : (a -> b -> c -> d -> e -> f -> result) -> Parser a -> Parser b -> Parser c -> Parser d -> Parser e -> Parser f -> Parser result -map6 func (Q.Parser a) (Q.Parser b) (Q.Parser c) (Q.Parser d) (Q.Parser e) (Q.Parser f) = - Q.Parser <| - \dict -> - func (a dict) (b dict) (c dict) (d dict) (e dict) (f dict) - - -{-| -} -map7 : (a -> b -> c -> d -> e -> f -> g -> result) -> Parser a -> Parser b -> Parser c -> Parser d -> Parser e -> Parser f -> Parser g -> Parser result -map7 func (Q.Parser a) (Q.Parser b) (Q.Parser c) (Q.Parser d) (Q.Parser e) (Q.Parser f) (Q.Parser g) = - Q.Parser <| - \dict -> - func (a dict) (b dict) (c dict) (d dict) (e dict) (f dict) (g dict) - - -{-| If you need higher than eight, you can define a function like this: - - apply : Parser a -> Parser (a -> b) -> Parser b - apply argParser funcParser = - map2 (<|) funcParser argParser - -And then you can chain it to do as many of these as you would like: - - map func (string "search") - |> apply (int "page") - |> apply (int "per-page") - --} -map8 : (a -> b -> c -> d -> e -> f -> g -> h -> result) -> Parser a -> Parser b -> Parser c -> Parser d -> Parser e -> Parser f -> Parser g -> Parser h -> Parser result -map8 func (Q.Parser a) (Q.Parser b) (Q.Parser c) (Q.Parser d) (Q.Parser e) (Q.Parser f) (Q.Parser g) (Q.Parser h) = - Q.Parser <| - \dict -> - func (a dict) (b dict) (c dict) (d dict) (e dict) (f dict) (g dict) (h dict) diff --git a/assets/src/Data/Uuid.elm b/assets/src/Data/Uuid.elm index 2e809654..aba4f30a 100644 --- a/assets/src/Data/Uuid.elm +++ b/assets/src/Data/Uuid.elm @@ -1,12 +1,11 @@ -module Data.Uuid - exposing - ( Uuid - , decoder - , encoder - , eq - , fromString - , toString - ) +module Data.Uuid exposing + ( Uuid + , decoder + , encoder + , eq + , fromString + , toString + ) import Json.Decode as Decode exposing (Decoder) import Json.Encode as Encode exposing (Value) diff --git a/assets/src/Effect/Command.elm b/assets/src/Effect/Command.elm index edf8eb4c..c52036a6 100644 --- a/assets/src/Effect/Command.elm +++ b/assets/src/Effect/Command.elm @@ -1,10 +1,10 @@ -module Effect.Command exposing (..) +module Effect.Command exposing (CacheLevel(..), Command(..), batch, eq, map, none) import Data.Jwt as Jwt exposing (Jwt) -import Graphqelm.Document as Document -import Graphqelm.Http -import Graphqelm.Operation exposing (RootMutation, RootQuery) -import Graphqelm.SelectionSet as SelectionSet exposing (SelectionSet) +import Graphql.Document as Document +import Graphql.Http +import Graphql.Operation exposing (RootMutation, RootQuery) +import Graphql.SelectionSet as SelectionSet exposing (SelectionSet) import Json.Decode as Decode exposing (Decoder, Value) @@ -19,7 +19,7 @@ type Command msg { url : String , token : Maybe Jwt , selection : SelectionSet msg RootQuery - , onError : Graphqelm.Http.Error () -> msg + , onError : Graphql.Http.Error () -> msg , debounce : Maybe String , cache : CacheLevel } @@ -27,7 +27,7 @@ type Command msg { url : String , token : Maybe Jwt , selection : SelectionSet msg RootMutation - , onError : Graphqelm.Http.Error () -> msg + , onError : Graphql.Http.Error () -> msg , debounce : Maybe String } | PortSend diff --git a/assets/src/Effect/Program.elm b/assets/src/Effect/Program.elm index e9e1b0f8..f319c7e3 100644 --- a/assets/src/Effect/Program.elm +++ b/assets/src/Effect/Program.elm @@ -1,28 +1,31 @@ -port module Effect.Program exposing (..) +port module Effect.Program exposing (Config, Model(..), Msg(..), Program, State, debounceConfig, effectProgramKeyDowns, effectProgramTitle, includeTitle, initialState, keyDownDecoder, maybeWithDebounce, maybeWithToken, program, runCmd, runSub, withCaching, wrapInit, wrapSubscriptions, wrapUpdate, wrapView) +import Browser +import Browser.Events +import Browser.Navigation as Navigation import Css exposing (..) -import Css.Foreign +import Css.Global import Data.Jwt as Jwt exposing (Jwt) import Debounce import Dict exposing (Dict) import Effect.Command as Command exposing (Command) import Effect.Subscription as Subscription exposing (Subscription) +import Ellie.Ui.Icon as Icon import Ellie.Ui.Output as Output -import Graphqelm.Document -import Graphqelm.Http -import Graphqelm.Operation exposing (RootSubscription) -import Graphqelm.SelectionSet exposing (SelectionSet) +import Graphql.Document +import Graphql.Http +import Graphql.Operation exposing (RootSubscription) +import Graphql.SelectionSet exposing (SelectionSet) import Html import Html.Styled as Styled import Json.Decode as Decode exposing (Decoder) -import Keyboard exposing (KeyCode) import Murmur3 -import Navigation exposing (Location) -import Network.Absinthe.Subscription as Absinthe +import Network.Absinthe.Socket as Absinthe import Process import Set exposing (Set) import Task import Time +import Url exposing (Url) port effectProgramKeyDowns : (Decode.Value -> a) -> Sub a @@ -33,13 +36,13 @@ port effectProgramTitle : String -> Cmd a type alias Config flags route model msg = { init : flags -> route -> ( model, Command msg ) - , url : Location -> route + , url : Url -> route , route : route -> msg , flags : Decoder flags , update : flags -> msg -> model -> ( model, Command msg ) , view : model -> Styled.Html msg , title : model -> String - , styles : List Css.Foreign.Snippet + , styles : List Css.Global.Snippet , subscriptions : model -> Subscription msg , outbound : ( String, Decode.Value ) -> Cmd (Msg msg) , inbound : (( String, Decode.Value ) -> Msg msg) -> Sub (Msg msg) @@ -55,7 +58,7 @@ debounceConfig debounceMsg = type Msg msg = UserMsg msg - | SetupSocket String String (SelectionSet msg RootSubscription) + | SetupSocket String { url : String, token : Maybe String } (SelectionSet msg RootSubscription) | SubscriptionMsg String Absinthe.Msg | KeyDown String | KeyUp String @@ -64,7 +67,8 @@ type Msg msg type alias State msg = - { sockets : Dict String Absinthe.Socket + { navKey : Navigation.Key + , sockets : Dict String Absinthe.Socket , keysDown : Set String , debouncers : Dict String (Debounce.Debounce (Cmd (Msg msg))) } @@ -75,15 +79,16 @@ type Model flags model msg | Running (State msg) flags model -initialState : State msg -initialState = - { sockets = Dict.empty +initialState : Navigation.Key -> State msg +initialState navKey = + { navKey = navKey + , sockets = Dict.empty , keysDown = Set.empty , debouncers = Dict.empty } -maybeWithToken : Maybe Jwt -> Graphqelm.Http.Request a -> Graphqelm.Http.Request a +maybeWithToken : Maybe Jwt -> Graphql.Http.Request a -> Graphql.Http.Request a maybeWithToken maybeToken request = case maybeToken of Just token -> @@ -94,16 +99,16 @@ maybeWithToken maybeToken request = request -withCaching : Command.CacheLevel -> Graphqelm.Http.Request a -> Graphqelm.Http.Request a +withCaching : Command.CacheLevel -> Graphql.Http.Request a -> Graphql.Http.Request a withCaching cacheLevel request = case cacheLevel of Command.Permanent -> request - |> Graphqelm.Http.withQueryParams [ ( "cache", "permanent" ) ] + |> Graphql.Http.withQueryParams [ ( "cache", "permanent" ) ] Command.Temporary -> request - |> Graphqelm.Http.withQueryParams [ ( "cache", "temporary" ) ] + |> Graphql.Http.withQueryParams [ ( "cache", "temporary" ) ] Command.AlwaysFetch -> request @@ -127,11 +132,11 @@ runCmd : Config flags route model msg -> State msg -> Command msg -> ( State msg runCmd config state cmd = case cmd of Command.GraphqlQuery { url, token, selection, onError, debounce, cache } -> - Graphqelm.Http.queryRequestWithHttpGet url Graphqelm.Http.AlwaysGet selection + Graphql.Http.queryRequestWithHttpGet url Graphql.Http.AlwaysGet selection |> maybeWithToken token |> withCaching cache - |> Graphqelm.Http.send identity - |> Cmd.map (Result.mapError Graphqelm.Http.ignoreParsedErrorData) + |> Graphql.Http.send identity + |> Cmd.map (Result.mapError Graphql.Http.ignoreParsedErrorData) |> Cmd.map (\result -> case result of @@ -144,10 +149,10 @@ runCmd config state cmd = |> maybeWithDebounce state debounce Command.GraphqlMutation { url, token, selection, onError, debounce } -> - Graphqelm.Http.mutationRequest url selection + Graphql.Http.mutationRequest url selection |> maybeWithToken token - |> Graphqelm.Http.send identity - |> Cmd.map (Result.mapError Graphqelm.Http.ignoreParsedErrorData) + |> Graphql.Http.send identity + |> Cmd.map (Result.mapError Graphql.Http.ignoreParsedErrorData) |> Cmd.map (\result -> case result of @@ -170,12 +175,12 @@ runCmd config state cmd = Command.NewUrl url -> ( state - , Navigation.newUrl url + , Navigation.pushUrl state.navKey url ) Command.Redirect url -> ( state - , Navigation.modifyUrl url + , Navigation.replaceUrl state.navKey url ) Command.Delay millis next -> @@ -192,12 +197,12 @@ runCmd config state cmd = Command.Batch commands -> commands |> List.foldr - (\command ( state, cmds ) -> + (\command ( currentState, cmds ) -> let - ( nextState, cmd ) = - runCmd config state command + ( nextState, nextCmd ) = + runCmd config currentState command in - ( nextState, cmd :: cmds ) + ( nextState, nextCmd :: cmds ) ) ( state, [] ) |> Tuple.mapSecond Cmd.batch @@ -212,6 +217,7 @@ keyDownDecoder needsShift needsMeta key msg = (\actualKey shift meta -> if shift == needsShift && meta == needsMeta && key == actualKey then UserMsg msg + else NoOp ) @@ -230,8 +236,8 @@ runSub config state sub = effectProgramKeyDowns (\value -> case Decode.decodeValue (keyDownDecoder combo.shift combo.meta combo.key msg) value of - Ok msg -> - msg + Ok wrappedMsg -> + wrappedMsg Err _ -> NoOp @@ -242,26 +248,32 @@ runSub config state sub = \( inChannel, data ) -> if inChannel == channel then UserMsg (callback data) + else NoOp Subscription.KeyPress code msg -> - Keyboard.ups - (\keycode -> - if keycode == code then - UserMsg msg - else - NoOp - ) + Browser.Events.onKeyUp <| + Decode.andThen + (\keycode -> + Decode.succeed <| + if keycode == code then + UserMsg msg - Subscription.AbsintheSubscription url selection onStatus -> + else + NoOp + ) + Decode.int + + Subscription.AbsintheSubscription socketConfig selection onStatus -> let key = - url + socketConfig.url + ++ Maybe.withDefault "" (Maybe.map (\t -> "?token=" ++ t) socketConfig.token) ++ " :: " - ++ Graphqelm.Document.serializeSubscription selection + ++ Graphql.Document.serializeSubscription selection |> Murmur3.hashString 0 - |> toString + |> String.fromInt in case Dict.get key state.sockets of Just socket -> @@ -270,7 +282,7 @@ runSub config state sub = (\info -> case info of Absinthe.Data data -> - case Decode.decodeValue (Graphqelm.Document.decoder selection) data of + case Decode.decodeValue (Graphql.Document.decoder selection) data of Ok msg -> UserMsg msg @@ -285,7 +297,7 @@ runSub config state sub = ) Nothing -> - Time.every 100 (\_ -> SetupSocket key url selection) + Time.every 100 (\_ -> SetupSocket key socketConfig selection) Subscription.Batch subs -> Sub.batch <| List.map (runSub config state) subs @@ -294,16 +306,16 @@ runSub config state sub = Sub.none -wrapInit : Config flags route model msg -> Decode.Value -> Location -> ( Model flags model msg, Cmd (Msg msg) ) -wrapInit config flagsValue location = +wrapInit : Config flags route model msg -> Decode.Value -> Url -> Navigation.Key -> ( Model flags model msg, Cmd (Msg msg) ) +wrapInit config flagsValue url navKey = case Decode.decodeValue config.flags flagsValue of Ok flags -> let ( userModel, userCmd ) = - config.init flags (config.url location) + config.init flags (config.url url) ( state, cmd ) = - runCmd config initialState userCmd + runCmd config (initialState navKey) userCmd in ( Running state flags userModel , Cmd.batch [ cmd, effectProgramTitle (config.title userModel) ] @@ -356,12 +368,16 @@ wrapUpdate config msg model = , cmd ) - SetupSocket key url selection -> + SetupSocket key socketConfig selection -> + let + ( absinthe, absintheCmd ) = + Absinthe.init socketConfig always selection + in ( Running - { state | sockets = Dict.insert key (Absinthe.init url Debug.log selection) state.sockets } + { state | sockets = Dict.insert key absinthe state.sockets } flags m - , Cmd.none + , absintheCmd ) SubscriptionMsg key socketMsg -> @@ -394,21 +410,28 @@ includeTitle produceTitle ( model, cmd ) = ) -wrapView : Config flags route model msg -> Model flags model msg -> Html.Html (Msg msg) +wrapView : Config flags route model msg -> Model flags model msg -> Browser.Document (Msg msg) wrapView config model = case model of StartupFailure -> - Html.text "Couldn't decode the flags" + { title = "" + , body = [ Html.text "Couldn't decode the flags" ] + } Running _ _ m -> - Styled.toUnstyled <| - Styled.styled Styled.div - [ height (pct 100) ] - [] - [ Css.Foreign.global config.styles - , Styled.map UserMsg <| config.view m - , Styled.node "ellie-ui-portal" [] [] - ] + { title = config.title m + , body = + [ Styled.toUnstyled <| + Styled.styled Styled.div + [ height (pct 100) ] + [] + [ Icon.sprite + , Css.Global.global config.styles + , Styled.map UserMsg <| config.view m + , Styled.node "ellie-ui-portal" [] [] + ] + ] + } wrapSubscriptions : Config flags route model msg -> Model flags model msg -> Sub (Msg msg) @@ -427,9 +450,11 @@ type alias Program flags model msg = program : Config flags route model msg -> Program flags model msg program config = - Navigation.programWithFlags (config.url >> config.route >> UserMsg) + Browser.application { init = wrapInit config , update = wrapUpdate config , view = wrapView config , subscriptions = wrapSubscriptions config + , onUrlChange = UserMsg << config.route << config.url + , onUrlRequest = \_ -> NoOp } diff --git a/assets/src/Effect/Subscription.elm b/assets/src/Effect/Subscription.elm index a3d46a95..e0020593 100644 --- a/assets/src/Effect/Subscription.elm +++ b/assets/src/Effect/Subscription.elm @@ -1,16 +1,15 @@ -module Effect.Subscription exposing (..) +module Effect.Subscription exposing (Subscription(..), batch, eq, map, none) -import Graphqelm.Document as Document -import Graphqelm.Operation exposing (RootSubscription) -import Graphqelm.SelectionSet as SelectionSet exposing (SelectionSet) +import Graphql.Document as Document +import Graphql.Operation exposing (RootSubscription) +import Graphql.SelectionSet as SelectionSet exposing (SelectionSet) import Json.Decode as Decode exposing (Decoder, Value) -import Keyboard exposing (KeyCode) type Subscription msg - = AbsintheSubscription String (SelectionSet msg RootSubscription) (Bool -> msg) + = AbsintheSubscription { url : String, token : Maybe String } (SelectionSet msg RootSubscription) (Bool -> msg) | PortReceive String (Value -> msg) - | KeyPress KeyCode msg + | KeyPress Int msg | KeyCombo { meta : Bool, shift : Bool, key : String } msg | Batch (List (Subscription msg)) | None @@ -29,8 +28,8 @@ batch = eq : Subscription msg -> Subscription msg -> Bool eq left right = case ( left, right ) of - ( AbsintheSubscription lUrl lSelection _, AbsintheSubscription rUrl rSelection _ ) -> - (lUrl == rUrl) + ( AbsintheSubscription lConfig lSelection _, AbsintheSubscription rConfig rSelection _ ) -> + (lConfig.token == rConfig.token) && (Document.serializeSubscription lSelection == Document.serializeSubscription rSelection) ( PortReceive lChannel _, PortReceive rChannel _ ) -> @@ -45,6 +44,7 @@ eq left right = ( Batch lSubs, Batch rSubs ) -> if List.length lSubs == List.length rSubs then List.all identity (List.map2 eq lSubs rSubs) + else False @@ -58,8 +58,8 @@ eq left right = map : (a -> b) -> Subscription a -> Subscription b map f cmd = case cmd of - AbsintheSubscription url selection onStatus -> - AbsintheSubscription url (SelectionSet.map f selection) (onStatus >> f) + AbsintheSubscription socketConfig selection onStatus -> + AbsintheSubscription socketConfig (SelectionSet.map f selection) (onStatus >> f) PortReceive channel callback -> PortReceive channel (callback >> f) diff --git a/assets/src/Ellie/Api/Helpers.elm b/assets/src/Ellie/Api/Helpers.elm index 9838d42f..25bcb702 100644 --- a/assets/src/Ellie/Api/Helpers.elm +++ b/assets/src/Ellie/Api/Helpers.elm @@ -1,10 +1,10 @@ -module Ellie.Api.Helpers exposing (..) +module Ellie.Api.Helpers exposing (defaultField, nameField, projectIdField, unitField, versionField, withMaybe) import Ellie.Api.Scalar as ApiScalar import Elm.Name as Name exposing (Name) import Elm.Version as Version exposing (Version) -import Graphqelm.Field as Field exposing (Field) -import Graphqelm.Http exposing (Request) +import Graphql.Field as Field exposing (Field) +import Graphql.Http exposing (Request) versionField : Field ApiScalar.ElmVersion a -> Field Version a diff --git a/assets/src/Ellie/Constants.elm b/assets/src/Ellie/Constants.elm index 41764373..996841da 100644 --- a/assets/src/Ellie/Constants.elm +++ b/assets/src/Ellie/Constants.elm @@ -1,4 +1,4 @@ -module Ellie.Constants exposing (..) +module Ellie.Constants exposing (apiBase, editorBase, embedBase, headerHeight, hostname, iframeId, isProduction, packageSite, sansFont, scriptFont, secure, serverOrigin, sidebarWidth, socketOrigin) packageSite : String @@ -35,6 +35,7 @@ serverOrigin : String serverOrigin = if secure then "https://" ++ hostname + else "http://" ++ hostname @@ -53,6 +54,7 @@ socketOrigin : String socketOrigin = if secure then "wss://" ++ hostname + else "ws://" ++ hostname diff --git a/assets/src/Ellie/Ui/Button.elm b/assets/src/Ellie/Ui/Button.elm index a8d08ae5..3e5351e2 100644 --- a/assets/src/Ellie/Ui/Button.elm +++ b/assets/src/Ellie/Ui/Button.elm @@ -1,7 +1,7 @@ module Ellie.Ui.Button exposing (Action, Config, click, link, none, view) import Css exposing (..) -import Css.Foreign +import Css.Global import Ellie.Ui.Icon as Icon import Ellie.Ui.Theme as Theme import Extra.Html.Attributes as Attributes @@ -117,8 +117,8 @@ buttonStyles config = , outline zero , focus [ borderColor Theme.accent - , Css.Foreign.descendants - [ Css.Foreign.selector "[data-ellie-ui-button-icon]" + , Css.Global.descendants + [ Css.Global.selector "[data-ellie-ui-button-icon]" [ borderColor Theme.accent ] ] diff --git a/assets/src/Ellie/Ui/Checkbox.elm b/assets/src/Ellie/Ui/Checkbox.elm index 82b2bbe8..c211608e 100644 --- a/assets/src/Ellie/Ui/Checkbox.elm +++ b/assets/src/Ellie/Ui/Checkbox.elm @@ -1,7 +1,7 @@ module Ellie.Ui.Checkbox exposing (Config, view) import Css exposing (..) -import Css.Foreign +import Css.Global import Ellie.Ui.Theme as Theme import Extra.Html.Attributes as Attributes import Html.Styled exposing (Attribute, Html, div, input, label, span) @@ -38,24 +38,24 @@ view config = , position absolute , left (px -999) , checked - [ Css.Foreign.adjacentSiblings - [ Css.Foreign.div - [ Css.Foreign.descendants - [ Css.Foreign.selector "[data-ui-checkbox-check]" [ display block ] + [ Css.Global.adjacentSiblings + [ Css.Global.div + [ Css.Global.descendants + [ Css.Global.selector "[data-ui-checkbox-check]" [ display block ] ] ] ] ] , focus - [ Css.Foreign.adjacentSiblings - [ Css.Foreign.div + [ Css.Global.adjacentSiblings + [ Css.Global.div [ borderColor Theme.accent ] ] ] , active - [ Css.Foreign.adjacentSiblings - [ Css.Foreign.div + [ Css.Global.adjacentSiblings + [ Css.Global.div [ borderColor Theme.accent ] ] diff --git a/assets/src/Ellie/Ui/CodeEditor.elm b/assets/src/Ellie/Ui/CodeEditor.elm index 591c58b4..99a8f001 100644 --- a/assets/src/Ellie/Ui/CodeEditor.elm +++ b/assets/src/Ellie/Ui/CodeEditor.elm @@ -1,29 +1,28 @@ -module Ellie.Ui.CodeEditor - exposing - ( Attribute - , Completions - , LinterMessage - , Located(..) - , Position - , Severity(..) - , Token(..) - , autocomplete - , completions - , id - , linterMessages - , mode - , noCompletions - , nowhere - , onAdvancedToken - , onChange - , onSettled - , onToken - , readOnly - , tabSize - , value - , view - , vim - ) +module Ellie.Ui.CodeEditor exposing + ( Attribute + , Completions + , LinterMessage + , Located(..) + , Position + , Severity(..) + , Token(..) + , autocomplete + , completions + , id + , linterMessages + , mode + , noCompletions + , nowhere + , onAdvancedToken + , onChange + , onSettled + , onToken + , readOnly + , tabSize + , value + , view + , vim + ) import Html.Styled as Html exposing (Html) import Html.Styled.Attributes as Attributes exposing (property) @@ -57,8 +56,8 @@ mode = vim : Bool -> Attribute msg -vim value = - Attr <| property "vimMode" <| Encode.bool value +vim isVim = + Attr <| property "vimMode" <| Encode.bool isVim tabSize : Int -> Attribute msg @@ -73,12 +72,12 @@ readOnly = linterMessages : List LinterMessage -> Attribute msg linterMessages messages = - Attr <| property "linterMessages" <| Encode.list <| List.map linterMessageEncoder messages + Attr <| property "linterMessages" <| Encode.list linterMessageEncoder messages autocomplete : Completions -> Attribute msg -autocomplete (Completions value) = - Attr <| property "autocomplete" value +autocomplete (Completions comps) = + Attr <| property "autocomplete" comps onChange : (String -> msg) -> Attribute msg @@ -184,7 +183,7 @@ completions (Located from to list) = Encode.object [ ( "from", positionEncoder from ) , ( "to", positionEncoder to ) - , ( "list", Encode.list <| List.map Encode.string stuff ) + , ( "list", Encode.list Encode.string stuff ) ] diff --git a/assets/src/Ellie/Ui/CodeEditor.js b/assets/src/Ellie/Ui/CodeEditor.js index 611f3fe7..83537e96 100644 --- a/assets/src/Ellie/Ui/CodeEditor.js +++ b/assets/src/Ellie/Ui/CodeEditor.js @@ -1,316 +1,347 @@ -import CustomElements from '../../Platform/CustomElements' -import * as Helpers from './CodeEditor/Helpers' +import CustomElements from "../../Platform/CustomElements"; +import * as Helpers from "./CodeEditor/Helpers"; -const getToken = (editor) => { - const position = editor.getCursor() - const line = position.line - let token = editor.getTokenAt(position) +const getToken = editor => { + const position = editor.getCursor(); + const line = position.line; + let token = editor.getTokenAt(position); if (!token.type) { - token = editor.getTokenAt({ line: line, ch: position.ch + 1 }) + token = editor.getTokenAt({ line: line, ch: position.ch + 1 }); } - if (token.type === 'variable' || token.type === 'variable-2' || token.type === 'type') { + if ( + token.type === "variable" || + token.type === "variable-2" || + token.type === "type" + ) { return expandLeft(editor, line, token.start, token.string); } - if (token.string === '.' || token.type === 'qualifier') { - return expandRight(editor, line, token.end, expandLeft(editor, line, token.start, token.string)) + if (token.string === "." || token.type === "qualifier") { + return expandRight( + editor, + line, + token.end, + expandLeft(editor, line, token.start, token.string) + ); } - if (token.type === 'builtin') { - return token.string + if (token.type === "builtin") { + return token.string; } - return null -} + return null; +}; const expandLeft = (editor, line, start, string) => { - const token = editor.getTokenAt({ line: line, ch: start }) + const token = editor.getTokenAt({ line: line, ch: start }); if (start === token.start) { - return string + return string; } - if (token.string === '.' || token.type === 'qualifier') { - return expandLeft(editor, line, token.start - 1, token.string + string) + if (token.string === "." || token.type === "qualifier") { + return expandLeft(editor, line, token.start - 1, token.string + string); } - return string -} + return string; +}; const expandRight = (editor, line, end, string) => { - const token = editor.getTokenAt({ line: line, ch: end + 1 }) + const token = editor.getTokenAt({ line: line, ch: end + 1 }); if (end === token.end) { - return string + return string; } - if (token.string === '.' || token.type === 'qualifier') { - return expandRight(editor, line, token.end, string + token.string) + if (token.string === "." || token.type === "qualifier") { + return expandRight(editor, line, token.end, string + token.string); } - if (token.type === 'variable' || token.type === 'variable-2' || token.type === 'type') { - return string + token.string + if ( + token.type === "variable" || + token.type === "variable-2" || + token.type === "type" + ) { + return string + token.string; } - return string -} + return string; +}; const load = () => { return Promise.all([ - import(/* webpackChunkName: "codemirror-base" */ 'codemirror/lib/codemirror'), - import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ 'codemirror/lib/codemirror.css'), - import(/* webpackChunkName: "codemirror-base" */ 'codemirror/mode/elm/elm'), - import(/* webpackChunkName: "codemirror-base" */ 'codemirror/mode/htmlmixed/htmlmixed'), - import(/* webpackChunkName: "codemirror-base" */ 'codemirror/addon/lint/lint'), - import(/* webpackChunkName: "codemirror-base" */ 'codemirror/addon/selection/active-line'), - // import(/* webpackChunkName: "codemirror-base" */ 'codemirror/addon/hint/show-hint'), - // import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ 'codemirror/addon/hint/show-hint.css'), - import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ 'codemirror/addon/lint/lint.css'), - import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ 'codemirror/theme/material.css'), - import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ './CodeEditor.css') - ]) - .then(([CodeMirror]) => CodeMirror) -} + import(/* webpackChunkName: "codemirror-base" */ "codemirror/lib/codemirror"), + import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ "codemirror/lib/codemirror.css"), + import(/* webpackChunkName: "codemirror-base" */ "codemirror/mode/elm/elm"), + import(/* webpackChunkName: "codemirror-base" */ "codemirror/mode/htmlmixed/htmlmixed"), + import(/* webpackChunkName: "codemirror-base" */ "codemirror/addon/lint/lint"), + import(/* webpackChunkName: "codemirror-base" */ "codemirror/addon/selection/active-line"), + import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ "codemirror/addon/lint/lint.css"), + import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ "codemirror/theme/material.css"), + import(/* webpackChunkName: "codemirror-base", webpackMode: "eager" */ "./CodeEditor.css") + ]).then(([{ default: CodeMirror }]) => CodeMirror); +}; const loadVimMode = () => { return Promise.all([ - import(/* webpackChunkName: "codemirror-vim" */ 'codemirror/keymap/vim'), - import(/* webpackChunkName: "codemirror-vim" */ 'codemirror/addon/dialog/dialog'), - import(/* webpackChunkName: "codemirror-vim", webpackMode: "eager" */ 'codemirror/addon/dialog/dialog.css') - ]) - .then(() => {}) -} - -const debounce = (func) => { - let token + import(/* webpackChunkName: "codemirror-vim" */ "codemirror/keymap/vim"), + import(/* webpackChunkName: "codemirror-vim" */ "codemirror/addon/dialog/dialog"), + import(/* webpackChunkName: "codemirror-vim", webpackMode: "eager" */ "codemirror/addon/dialog/dialog.css") + ]).then(() => {}); +}; + +const debounce = func => { + let token; return function() { const later = () => { - token = null - func.apply(null, arguments) + token = null; + func.apply(null, arguments); }; - cancelIdleCallback(token) - token = requestIdleCallback(later) - } -} + cancelIdleCallback(token); + token = requestIdleCallback(later); + }; +}; -const STALE_TOKEN = {} +const STALE_TOKEN = {}; -const start = (app) => { +const start = app => { return load().then(CodeMirror => { - CodeMirror.registerHelper('lint', 'elm', (text, options, instance) => { - return instance._errors || [] - }) - - CustomElements.define('code-editor', (HTMLElement) => class CodeEditor extends HTMLElement { - constructor() { - super() - this._value = this.editorValue || '' - delete this.editorValue - - this._tabSize = this.tabSize || 4 - delete this.tabSize - - this._readOnly = this.readOnly || false - delete this.readOnly - - this._mode = this.mode || 'htmlmixed' - delete this.mode - - this._completions = null - this._onCursorActivity = this._onCursorActivity.bind(this) - this._onElmChanges = this._onElmChanges.bind(this) - this._ready = false - this._instance = null - this._errors = [] - this._vimMode = false - this._vimModeLoadState = 'NOT_ASKED' - this._idleCallback = null - this._token = STALE_TOKEN - } - - get vimMode() { - return this._vimMode - } - set vimMode(value) { - if (value === null) value = false - if (value === this._vimMode) return - this._vimMode = value - if (this._vimModeLoadState === 'NOT_ASKED' && this._vimMode) { - this._vimModeLoadState = 'LOADING' - loadVimMode().then(() => { - this._vimModeLoadState = 'FINISHED' - if (!this._instance) return - this._instance.setOption('keyMap', this._vimMode ? 'vim' : 'default') - }) - } else if (this._vimModeLoadState === 'FINISHED' && this._instance) { - this._instance.setOption('keyMap', this._vimMode ? 'vim' : 'default') - } - } - - get editorValue() { - return this._value - } - set editorValue(value) { - if (value !== null && value !== this._value) { - this._value = value - if (!this._instance) return - const prevScrollPosition = this._instance.getScrollInfo() - this._instance.setValue(value) - this._instance.scrollTo(prevScrollPosition.left, prevScrollPosition.top) - } - } - - get tabSize() { - return this._tabSize - } - set tabSize(value) { - if (value === null) value = 4 - if (value === this._tabSize) return - this._tabSize = value - if (!this._instance) return - this._instance.setOption('indentWidth', this._tabSize) - this._instance.setOption('tabSize', this._tabSize) - this._instance.setOption('indentUnit', this._tabSize) - } - - get readOnly() { - return this._readOnly - } - set readOnly(value) { - if (value === null) value = false - if (value === this._readOnly) return - this._readOnly = value - if (!this._instance) return - this._instance.setOption('readOnly', value) - } - - get mode() { - return this._mode - } - set mode(value) { - if (value === null) value = 'htmlmixed' - if (value === this._mode) return - this._mode = value - if (!this._instance) return - this._instance.setOption('mode', this._mode) - if (value === 'elm') { - this._setupElmEvents() - } else { - this._tearDownElmEvents() - } - } - - get linterMessages() { - return this._errors - } - set linterMessages(value) { - if (value === null) value = [] - this._errors = value - if (!this._instance) return - this._instance._errors = this.formatLinterMessages(value) - this._instance.performLint() - } - - get token() { - if (!this._instance) return null - if (this._token === STALE_TOKEN) this._token = getToken(this._instance) - return this._token - } - - get advancedToken() { - return Helpers.getCompletionContext(this._instance) - } - - get autocomplete() { - return this._completions - } - - set autocomplete(value) { - if (value === this._completions) return - this._completions = value - // if (this._instance === null) return - // this._instance.showHint({ completeSingle: false }) - } - - moveCursor(line, column) { - if (!this._instance) return - this._instance.focus() - this._instance.setCursor({ line: line - 1, ch: column - 1 }) - } - - connectedCallback() { - if (this._instance) return - this._instance = CodeMirror(this, { - lineNumbers: true, - styleActiveLine: { nonEmpty: true }, - smartIndent: true, - indentWithTabs: false, - keyMap: this._vimModeLoadState === 'FINISHED' && this._vimMode ? 'vim' : 'default', - lint: { lintOnChange: false }, - theme: 'material', - indentWidth: this._tabSize, - tabSize: this._tabSize, - indentUnit: this._tabSize, - readOnly: this._readOnly, - mode: this._mode, - value: this._value, - dragDrop: false, - extraKeys: { - 'Ctrl-Space': 'autocomplete', - Tab(cm) { - let x = "" - for (let i = cm.getOption('indentUnit'); i > 0; i--) x += " " - cm.replaceSelection(x) - }, + CodeMirror.registerHelper("lint", "elm", (text, options, instance) => { + return instance._errors || []; + }); + + CustomElements.define( + "code-editor", + HTMLElement => + class CodeEditor extends HTMLElement { + constructor() { + super(); + this._value = this.editorValue || ""; + delete this.editorValue; + + this._tabSize = this.tabSize || 4; + delete this.tabSize; + + this._readOnly = this.readOnly || false; + delete this.readOnly; + + this._mode = this.mode || "htmlmixed"; + delete this.mode; + + this._completions = null; + this._onCursorActivity = this._onCursorActivity.bind(this); + this._onElmChanges = this._onElmChanges.bind(this); + this._ready = false; + this._instance = null; + this._errors = []; + this._vimMode = false; + this._vimModeLoadState = "NOT_ASKED"; + this._idleCallback = null; + this._token = STALE_TOKEN; } - }) - - const runDispatch = debounce(() => { - this._value = this._instance.getValue() - const event = new Event('change') - this.dispatchEvent(event) - }) - - this._instance.on('changes', runDispatch) - - if (this._mode === 'elm') this._setupElmEvents() - - requestAnimationFrame(() => { - this._instance.refresh() - }) - - if (this._vimMode && this._vimModeLoadState !== 'FINISHED') { - this._vimModeLoadState = 'LOADING' - loadVimMode().then(() => { - this._vimModeLoadState = 'FINISHED' - this._instance.setOption('keyMap', this._vimMode ? 'vim' : 'default') - }) - } - } - - _setupElmEvents() { - this._instance.on('cursorActivity', this._onCursorActivity) - this._instance.on('changes', this._onElmChanges) - } - - _tearDownElmEvents() { - this._instance.off('cursorActivity', this._onCursorActivity) - this._instance.off('cursorActivity', this._onCursorActivity) - } - - _onCursorActivity() { - this._token = STALE_TOKEN - this._idleCallback = requestIdleCallback(() => { - this._idleCallback = null - this.dispatchEvent(new CustomEvent('settled')) - }) - } - - _onElmChanges() { - } - - formatLinterMessages(messages) { - return messages.map(message => { - return { - from: message.from, - to: message.to, - message: message.message, - severity: message.severity + + get vimMode() { + return this._vimMode; + } + set vimMode(value) { + if (value === null) value = false; + if (value === this._vimMode) return; + this._vimMode = value; + if (this._vimModeLoadState === "NOT_ASKED" && this._vimMode) { + this._vimModeLoadState = "LOADING"; + loadVimMode().then(() => { + this._vimModeLoadState = "FINISHED"; + if (!this._instance) return; + this._instance.setOption( + "keyMap", + this._vimMode ? "vim" : "default" + ); + }); + } else if ( + this._vimModeLoadState === "FINISHED" && + this._instance + ) { + this._instance.setOption( + "keyMap", + this._vimMode ? "vim" : "default" + ); + } + } + + get editorValue() { + return this._value; + } + set editorValue(value) { + if (value !== null && value !== this._value) { + this._value = value; + if (!this._instance) return; + const prevScrollPosition = this._instance.getScrollInfo(); + this._instance.setValue(value); + this._instance.scrollTo( + prevScrollPosition.left, + prevScrollPosition.top + ); + } + } + + get tabSize() { + return this._tabSize; + } + set tabSize(value) { + if (value === null) value = 4; + if (value === this._tabSize) return; + this._tabSize = value; + if (!this._instance) return; + this._instance.setOption("indentWidth", this._tabSize); + this._instance.setOption("tabSize", this._tabSize); + this._instance.setOption("indentUnit", this._tabSize); + } + + get readOnly() { + return this._readOnly; + } + set readOnly(value) { + if (value === null) value = false; + if (value === this._readOnly) return; + this._readOnly = value; + if (!this._instance) return; + this._instance.setOption("readOnly", value); + } + + get mode() { + return this._mode; + } + set mode(value) { + if (value === null) value = "htmlmixed"; + if (value === this._mode) return; + this._mode = value; + if (!this._instance) return; + this._instance.setOption("mode", this._mode); + if (value === "elm") { + this._setupElmEvents(); + } else { + this._tearDownElmEvents(); + } + } + + get linterMessages() { + return this._errors; + } + set linterMessages(value) { + if (value === null) value = []; + this._errors = value; + if (!this._instance) return; + this._instance._errors = this.formatLinterMessages(value); + this._instance.performLint(); } - }) - } - }) - }) -} -export default { start } + get token() { + if (!this._instance) return null; + if (this._token === STALE_TOKEN) + this._token = getToken(this._instance); + return this._token; + } + + get advancedToken() { + return Helpers.getCompletionContext(this._instance); + } + + get autocomplete() { + return this._completions; + } + + set autocomplete(value) { + if (value === this._completions) return; + this._completions = value; + // if (this._instance === null) return + // this._instance.showHint({ completeSingle: false }) + } + + moveCursor(line, column) { + if (!this._instance) return; + this._instance.focus(); + this._instance.setCursor({ line: line - 1, ch: column - 1 }); + } + + connectedCallback() { + if (this._instance) return; + this._instance = CodeMirror(this, { + lineNumbers: true, + styleActiveLine: { nonEmpty: true }, + smartIndent: true, + indentWithTabs: false, + keyMap: + this._vimModeLoadState === "FINISHED" && this._vimMode + ? "vim" + : "default", + lint: { lintOnChange: false }, + theme: "material", + indentWidth: this._tabSize, + tabSize: this._tabSize, + indentUnit: this._tabSize, + readOnly: this._readOnly, + mode: this._mode, + value: this._value, + dragDrop: false, + extraKeys: { + "Ctrl-Space": "autocomplete", + Tab(cm) { + let x = ""; + for (let i = cm.getOption("indentUnit"); i > 0; i--) x += " "; + cm.replaceSelection(x); + } + } + }); + + const runDispatch = debounce(() => { + this._value = this._instance.getValue(); + const event = new Event("change"); + this.dispatchEvent(event); + }); + + this._instance.on("changes", runDispatch); + + if (this._mode === "elm") this._setupElmEvents(); + + requestAnimationFrame(() => { + this._instance.refresh(); + }); + + if (this._vimMode && this._vimModeLoadState !== "FINISHED") { + this._vimModeLoadState = "LOADING"; + loadVimMode().then(() => { + this._vimModeLoadState = "FINISHED"; + this._instance.setOption( + "keyMap", + this._vimMode ? "vim" : "default" + ); + }); + } + } + + _setupElmEvents() { + this._instance.on("cursorActivity", this._onCursorActivity); + this._instance.on("changes", this._onElmChanges); + } + + _tearDownElmEvents() { + this._instance.off("cursorActivity", this._onCursorActivity); + this._instance.off("cursorActivity", this._onCursorActivity); + } + + _onCursorActivity() { + this._token = STALE_TOKEN; + this._idleCallback = requestIdleCallback(() => { + this._idleCallback = null; + this.dispatchEvent(new CustomEvent("settled")); + }); + } + + _onElmChanges() {} + + formatLinterMessages(messages) { + return messages.map(message => { + return { + from: message.from, + to: message.to, + message: message.message, + severity: message.severity + }; + }); + } + } + ); + }); +}; + +export default { start }; diff --git a/assets/src/Ellie/Ui/Errors.elm b/assets/src/Ellie/Ui/Errors.elm index 70639ec6..62329cf3 100644 --- a/assets/src/Ellie/Ui/Errors.elm +++ b/assets/src/Ellie/Ui/Errors.elm @@ -1,4 +1,4 @@ -module Ellie.Ui.Errors exposing (..) +module Ellie.Ui.Errors exposing (Config, chunkColor, view, viewChunk, viewProblem) import Css exposing (..) import Ellie.Ui.Theme as Theme @@ -84,7 +84,7 @@ viewProblem config problem = [ Attributes.href "javascript:void(0)" , Events.onClick <| config.onPositionClick problem.region.start ] - [ Html.text <| "Line " ++ toString problem.region.start.line ++ ", Column " ++ toString problem.region.start.column ] + [ Html.text <| "Line " ++ String.fromInt problem.region.start.line ++ ", Column " ++ String.fromInt problem.region.start.column ] , Html.styled Html.div [ whiteSpace preWrap , fontSize (px 16) @@ -102,10 +102,12 @@ viewChunk chunk = Html.styled Html.span [ if style.bold then fontWeight bold + else batch [] , if style.underline then textDecoration underline + else batch [] , style.color diff --git a/assets/src/Ellie/Ui/Icon.elm b/assets/src/Ellie/Ui/Icon.elm index c5606c64..e7315dcf 100644 --- a/assets/src/Ellie/Ui/Icon.elm +++ b/assets/src/Ellie/Ui/Icon.elm @@ -1,7 +1,7 @@ -module Ellie.Ui.Icon exposing (Icon(..), view) +module Ellie.Ui.Icon exposing (Icon(..), sprite, view) import Css exposing (..) -import Html.Styled exposing (Attribute, Html) +import Html.Styled as Html exposing (Attribute, Html) import Svg.Styled exposing (svg, use) import Svg.Styled.Attributes exposing (css, xlinkHref) @@ -188,3 +188,8 @@ iconStyles = , fill currentColor , display block ] + + +sprite : Html msg +sprite = + Html.node "ellie-ui-icon-sprite" [] [] diff --git a/assets/src/Ellie/Ui/Icon.js b/assets/src/Ellie/Ui/Icon.js index 4ae0eb45..bdfe6ebb 100644 --- a/assets/src/Ellie/Ui/Icon.js +++ b/assets/src/Ellie/Ui/Icon.js @@ -1,23 +1,20 @@ +import CustomElements from "../../Platform/CustomElements"; + export default { start(app) { - import(/* webpackChunkName: "icons-svg" */ './Icon.svg') - .then((text) => { - const hack = document && document.documentElement.doScroll - let loaded = document && (hack ? /^loaded|^c/ : /^loaded|^i|^c/).test(document.readyState) - const callback = () => { - const div = document.createElement('div') - div.style.display = 'none' - div.innerHTML = text - document.body.insertBefore(div, document.body.childNodes[0]) - document.removeEventListener('DOMContentLoaded', callback) - loaded = true - } - - if (!loaded) { - document.addEventListener('DOMContentLoaded', callback) - } else { - setTimeout(callback, 0) - } - }) + import(/* webpackChunkName: "icons-svg" */ "./Icon.svg").then( + ({ default: text }) => { + CustomElements.define( + "ellie-ui-icon-sprite", + HTMLElement => + class extends HTMLElement { + connectedCallback() { + this.style.display = "none"; + this.innerHTML = text; + } + } + ); + } + ); } -} +}; diff --git a/assets/src/Ellie/Ui/Logo.elm b/assets/src/Ellie/Ui/Logo.elm index 7d0b6fd1..85cb6fd4 100644 --- a/assets/src/Ellie/Ui/Logo.elm +++ b/assets/src/Ellie/Ui/Logo.elm @@ -1,4 +1,4 @@ -module Ellie.Ui.Logo exposing (..) +module Ellie.Ui.Logo exposing (animated, flat, logoPath) import Css exposing (..) import Html.Styled as Html exposing (Attribute, Html) diff --git a/assets/src/Ellie/Ui/Menu.elm b/assets/src/Ellie/Ui/Menu.elm index 79496b2d..c9267637 100644 --- a/assets/src/Ellie/Ui/Menu.elm +++ b/assets/src/Ellie/Ui/Menu.elm @@ -1,4 +1,4 @@ -module Ellie.Ui.Menu exposing (..) +module Ellie.Ui.Menu exposing (Config, Item, view, viewItem) import Css exposing (..) import Ellie.Ui.Icon as Icon exposing (Icon) diff --git a/assets/src/Ellie/Ui/Output.elm b/assets/src/Ellie/Ui/Output.elm index 9fb79cd0..75026a0b 100644 --- a/assets/src/Ellie/Ui/Output.elm +++ b/assets/src/Ellie/Ui/Output.elm @@ -1,7 +1,7 @@ port module Ellie.Ui.Output exposing (Attribute, debug, elmSource, html, onCanDebug, onLog, onRuntimeException, reload, view) import Css exposing (..) -import Css.Foreign +import Css.Global import Html.Styled as Html exposing (Html) import Html.Styled.Attributes as Attributes exposing (css) import Html.Styled.Events as Events @@ -73,8 +73,8 @@ styles = , position relative , backgroundColor (hex "#fff") , display block - , Css.Foreign.children - [ Css.Foreign.selector "iframe" + , Css.Global.children + [ Css.Global.selector "iframe" [ width (pct 100) , height (pct 100) , border zero diff --git a/assets/src/Ellie/Ui/SplitPane.elm b/assets/src/Ellie/Ui/SplitPane.elm index 5e95c267..6479ac6f 100644 --- a/assets/src/Ellie/Ui/SplitPane.elm +++ b/assets/src/Ellie/Ui/SplitPane.elm @@ -1,7 +1,7 @@ -module Ellie.Ui.SplitPane exposing (..) +module Ellie.Ui.SplitPane exposing (Config, Direction(..), horizontalStyles, verticalStyles, view) import Css exposing (..) -import Css.Foreign +import Css.Global import Ellie.Ui.Theme as Theme import Html.Styled as Html exposing (Attribute, Html, node) import Html.Styled.Attributes as Attributes exposing (css) @@ -66,8 +66,8 @@ horizontalStyles = , width (pct 100) , height (pct 100) , overflow hidden - , Css.Foreign.children - [ Css.Foreign.typeSelector "ellie-ui-split-pane-panel" + , Css.Global.children + [ Css.Global.typeSelector "ellie-ui-split-pane-panel" [ width (pct 50) , height (pct 100) , firstChild @@ -77,7 +77,7 @@ horizontalStyles = [ borderLeft3 (px 1) solid Theme.draggableBorder ] ] - , Css.Foreign.typeSelector "ellie-ui-split-pane-divider" + , Css.Global.typeSelector "ellie-ui-split-pane-divider" [ width (px 10) , marginLeft (px -5) , position absolute @@ -100,8 +100,8 @@ verticalStyles = , width (pct 100) , height (pct 100) , overflow hidden - , Css.Foreign.children - [ Css.Foreign.typeSelector "ellie-ui-split-pane-panel" + , Css.Global.children + [ Css.Global.typeSelector "ellie-ui-split-pane-panel" [ height (pct 50) , width (pct 100) , firstChild @@ -111,7 +111,7 @@ verticalStyles = [ borderTop3 (px 1) solid Theme.draggableBorder ] ] - , Css.Foreign.typeSelector "ellie-ui-split-pane-divider" + , Css.Global.typeSelector "ellie-ui-split-pane-divider" [ height (px 10) , marginTop (px -5) , position absolute diff --git a/assets/src/Ellie/Ui/Switch.elm b/assets/src/Ellie/Ui/Switch.elm index 1bb6329b..01f1c3c7 100644 --- a/assets/src/Ellie/Ui/Switch.elm +++ b/assets/src/Ellie/Ui/Switch.elm @@ -2,11 +2,11 @@ module Ellie.Ui.Switch exposing (Config, view) import Colors import Css exposing (..) -import Css.Foreign +import Css.Global import Extra.Html.Attributes as Attributes import Html.Styled as Html exposing (Attribute, Html, div, input, label, span) import Html.Styled.Attributes as Attributes exposing (attribute, css, for, id, type_) -import Html.Styled.Events exposing (onCheck, onClick, onWithOptions) +import Html.Styled.Events as Events exposing (onCheck, onClick) import Json.Decode as Decode import Svg.Styled as Svg exposing (svg) import Svg.Styled.Attributes as Svg @@ -38,10 +38,10 @@ view config = , position absolute , left (px -999) , checked - [ Css.Foreign.generalSiblings - [ Css.Foreign.selector "[data-ui-switch-toggler]" - [ Css.Foreign.descendants - [ Css.Foreign.selector "[data-ui-switch-toggler-circle]" [ property "cx" "28" ] + [ Css.Global.generalSiblings + [ Css.Global.selector "[data-ui-switch-toggler]" + [ Css.Global.descendants + [ Css.Global.selector "[data-ui-switch-toggler-circle]" [ property "cx" "28" ] ] ] ] @@ -53,27 +53,33 @@ view config = [] , div [ labelTextStyles True - , onWithOptions - "click" - { stopPropagation = True, preventDefault = False } - (Decode.succeed (config.onChange False)) + , Events.custom "click" <| + Decode.succeed + { message = config.onChange False + , preventDefault = True + , stopPropagation = True + } , attribute "data-ui-switch-left-label" "" ] [ Html.text config.offLabel ] , div - [ onWithOptions - "click" - { stopPropagation = True, preventDefault = False } - (Decode.succeed (config.onChange (not config.on))) + [ Events.custom "click" <| + Decode.succeed + { message = config.onChange (not config.on) + , preventDefault = False + , stopPropagation = True + } , attribute "data-ui-switch-toggler" "" ] [ switch ] , div [ labelTextStyles False - , onWithOptions - "click" - { stopPropagation = True, preventDefault = False } - (Decode.succeed (config.onChange True)) + , Events.custom "click" <| + Decode.succeed + { message = config.onChange True + , preventDefault = False + , stopPropagation = True + } , attribute "data-ui-switch-right-label" "" ] [ Html.text config.onLabel ] @@ -90,16 +96,17 @@ labelTextStyles leftSide = , property "user-select" "none" , if leftSide then marginRight (px 8) + else marginLeft (px 8) ] activeFocus = - Css.Foreign.generalSiblings - [ Css.Foreign.selector "[data-ui-switch-toggler]" - [ Css.Foreign.descendants - [ Css.Foreign.selector "[data-ui-switch-toggler-outline]" [ property "stroke" (.value Colors.pink) ] + Css.Global.generalSiblings + [ Css.Global.selector "[data-ui-switch-toggler]" + [ Css.Global.descendants + [ Css.Global.selector "[data-ui-switch-toggler-outline]" [ property "stroke" (.value Colors.pink) ] ] ] ] diff --git a/assets/src/Ellie/Ui/TextInput.elm b/assets/src/Ellie/Ui/TextInput.elm index 478de27a..2a3140c4 100644 --- a/assets/src/Ellie/Ui/TextInput.elm +++ b/assets/src/Ellie/Ui/TextInput.elm @@ -1,12 +1,13 @@ module Ellie.Ui.TextInput exposing (view) import Css exposing (..) -import Css.Foreign +import Css.Global import Ellie.Ui.Icon as Icon import Ellie.Ui.Theme as Theme import Extra.Html as Html import Extra.Html.Attributes as Attributes import Extra.Maybe as Maybe +import Html.Events import Html.Styled exposing (Attribute, Html, button, div, input) import Html.Styled.Attributes exposing (attribute, autofocus, css, placeholder, tabindex, type_, value) import Html.Styled.Events as Events exposing (onClick, onInput) @@ -25,17 +26,20 @@ type alias Config msg = clearOnEscape : (String -> msg) -> Attribute msg clearOnEscape onChange = - Events.onWithOptions "keydown" - { preventDefault = True, stopPropagation = True } - (Events.keyCode - |> Decode.andThen - (\keycode -> - if keycode == 27 then - Decode.succeed <| onChange "" - else - Decode.fail "" - ) - ) + Events.custom "keydown" <| + Decode.andThen + (\keycode -> + if keycode == 27 then + Decode.succeed + { message = onChange "" + , preventDefault = True + , stopPropagation = True + } + + else + Decode.fail "" + ) + Html.Events.keyCode view : Config msg -> Html msg @@ -50,6 +54,7 @@ view config = , autofocus config.autofocus , if config.clearable then clearOnEscape config.onChange + else Attributes.none , inputStyles @@ -113,8 +118,8 @@ inputStyles hasIcon hasClearButton = , height (pct 100) , focus [ border3 (px 1) solid Theme.accent - , Css.Foreign.adjacentSiblings - [ Css.Foreign.div + , Css.Global.adjacentSiblings + [ Css.Global.div [ borderRightColor Theme.accent ] ] @@ -124,10 +129,12 @@ inputStyles hasIcon hasClearButton = , pseudoElement "-moz-placeholder" [ color Theme.secondaryForeground ] , if hasIcon then batch [ paddingLeft (px 40) ] + else batch [] , if hasClearButton then batch [ paddingRight (px 28) ] + else batch [] ] diff --git a/assets/src/Ellie/Ui/Theme.elm b/assets/src/Ellie/Ui/Theme.elm index 524321ca..948f5e87 100644 --- a/assets/src/Ellie/Ui/Theme.elm +++ b/assets/src/Ellie/Ui/Theme.elm @@ -1,7 +1,7 @@ -module Ellie.Ui.Theme exposing (..) +module Ellie.Ui.Theme exposing (accent, blue, buttonBackground, buttonBorder, connectionStatusConnected, connectionStatusDisconnected, controlBorder, darkGray, darkMediumGray, darkStyles, draggableBorder, editorFontFamily, editorHeaderBackground, failure, green, information, lightGray, lightMediumGray, lightStyles, markdownCodeBackground, mediumGray, pink, primaryBackground, primaryForeground, red, secondaryBackground, secondaryForeground, staticBorder, success, tabActiveBorder, tabForeground, warning, workbenchWatermark, yellow) import Css exposing (..) -import Css.Foreign +import Css.Global import Extra.Css exposing (..) import Html.Styled as Html exposing (Attribute, Html) import Html.Styled.Attributes exposing (attribute) @@ -117,9 +117,9 @@ markdownCodeBackground = var "--theme-color-markdown-code-background" -darkStyles : Css.Foreign.Snippet +darkStyles : Css.Global.Snippet darkStyles = - Css.Foreign.selector ":root" + Css.Global.selector ":root" [ property "--theme-color-border-draggable" mediumGray.value , property "--theme-color-border-static" darkGray.value , property "--theme-color-border-control" mediumGray.value @@ -145,9 +145,9 @@ darkStyles = ] -lightStyles : Css.Foreign.Snippet +lightStyles : Css.Global.Snippet lightStyles = - Css.Foreign.selector ":root" + Css.Global.selector ":root" [ property "--theme-color-border-draggable" mediumGray.value , property "--theme-color-border-static" "#EAEAEA" , property "--theme-color-border-control" mediumGray.value diff --git a/assets/src/Elm/Compiler.elm b/assets/src/Elm/Compiler.elm index c621f67c..3db8eeef 100644 --- a/assets/src/Elm/Compiler.elm +++ b/assets/src/Elm/Compiler.elm @@ -1,4 +1,4 @@ -module Elm.Compiler exposing (..) +module Elm.Compiler exposing (version) import Elm.Version as Version exposing (Version) diff --git a/assets/src/Elm/Docs.elm b/assets/src/Elm/Docs.elm index 461f64de..165238f8 100644 --- a/assets/src/Elm/Docs.elm +++ b/assets/src/Elm/Docs.elm @@ -1,15 +1,8 @@ -module Elm.Docs - exposing - ( Alias - , Associativity(..) - , Binop - , Block(..) - , Module - , Union - , Value - , selection - , toBlocks - ) +module Elm.Docs exposing + ( Module, Alias, Union, Value, Binop, Associativity(..) + , toBlocks, Block(..) + , selection + ) {-| When packages are published to [package.elm-lang.org][pkg], documentation is generated for all of the exposed modules (and all of the exposed values). @@ -48,8 +41,9 @@ import Ellie.Api.Object.ElmDocsUnion as ElmDocsUnion import Ellie.Api.Object.ElmDocsValue as ElmDocsValue import Ellie.Api.Scalar as Scalar import Elm.Package as Package exposing (Package) -import Graphqelm.Field as Field -import Graphqelm.SelectionSet exposing (SelectionSet, hardcoded, with) +import Graphql.Field as Field +import Graphql.SelectionSet exposing (SelectionSet, hardcoded, with) + -- DOCUMENTATION @@ -83,7 +77,7 @@ When it became an `Alias` it would be like this: { name = "Pair" , comment = " pair of values " - , args = ["a"] + , args = [ "a" ] , tipe = Tuple [ Var "a", Var "a" ] } @@ -106,10 +100,10 @@ When it became a `Union` it would be like this: { name = "Maybe" , comment = " maybe " - , args = ["a"] + , args = [ "a" ] , tipe = - [ ("Nothing", []) - , ("Just", [Var "a"]) + [ ( "Nothing", [] ) + , ( "Just", [ Var "a" ] ) ] } @@ -152,7 +146,8 @@ something like this: , tipe = Lambda (Var "number") (Lambda (Var "number") (Var "number")) , associativity = Left , precedence = 6 - }8 + } + 8 -} type alias Binop = @@ -172,8 +167,9 @@ parentheses around everything. Here are some examples: We have to do the operations in _some_ order, so which of these interpretations should we choose? - ((1 + 2) + 3) + 4 -- left-associative - 1 + (2 + (3 + 4)) -- right-associative + ((1 + 2) + 3) + 4 -- left-associative + + 1 + (2 + (3 + 4)) -- right-associative This is really important for operators like `(|>)`! @@ -235,7 +231,7 @@ selection = |> with ElmDocsBinop.precedence tagSelection = - ElmDocsTag.selection (,) + ElmDocsTag.selection (\a b -> ( a, b )) |> with ElmDocsTag.name |> with (Field.map (List.map (\(Scalar.ElmDocsType t) -> t)) ElmDocsTag.args) @@ -329,6 +325,7 @@ nameToBlock docs docsName = name = if String.startsWith "(" docsName then String.dropLeft 1 (String.dropRight 1 docsName) + else docsName in @@ -352,5 +349,6 @@ find toBlock name entries fallback = entry :: rest -> if entry.name == name then toBlock entry + else find toBlock name rest fallback diff --git a/assets/src/Elm/Error.elm b/assets/src/Elm/Error.elm index 01a0763f..4e77f744 100644 --- a/assets/src/Elm/Error.elm +++ b/assets/src/Elm/Error.elm @@ -1,15 +1,9 @@ -module Elm.Error - exposing - ( BadModule - , Chunk(..) - , Color(..) - , Error(..) - , Position - , Problem - , Region - , Style - , selection - ) +module Elm.Error exposing + ( Error(..), BadModule, Problem + , Chunk(..), Style, Color(..) + , Region, Position + , selection + ) {-| When `elm make --report=json` fails, this module helps you turn the resulting JSON into HTML. @@ -42,8 +36,8 @@ import Ellie.Api.Object.ElmErrorRegion as ElmErrorRegion import Ellie.Api.Object.ElmErrorStyle as ElmErrorStyle import Ellie.Api.Union as ApiUnion import Ellie.Api.Union.ElmError as ElmError -import Graphqelm.Field as Field -import Graphqelm.SelectionSet exposing (SelectionSet, with) +import Graphql.Field as Field +import Graphql.SelectionSet exposing (SelectionSet, with) type Error @@ -111,18 +105,6 @@ type alias Position = selection : SelectionSet Error ApiUnion.ElmError selection = let - selection = - ElmError.selection (Maybe.withDefault (ModuleProblems [])) - [ ElmErrorGeneralProblem.selection (\path title message -> GeneralProblem { path = path, title = title, message = message }) - |> with ElmErrorGeneralProblem.path - |> with ElmErrorGeneralProblem.title - |> with (ElmErrorGeneralProblem.message chunkSelection) - |> ElmError.onElmErrorGeneralProblem - , ElmErrorModuleProblems.selection ModuleProblems - |> with (ElmErrorModuleProblems.errors badModuleSelection) - |> ElmError.onElmErrorModuleProblems - ] - badModuleSelection = ElmErrorBadModule.selection BadModule |> with ElmErrorBadModule.path @@ -150,8 +132,8 @@ selection = |> with ElmErrorChunk.string |> with (ElmErrorChunk.style styleSelection) - makeChunk string style = - case style of + makeChunk string maybeStyle = + case maybeStyle of Just style -> Styled style string @@ -214,4 +196,13 @@ selection = ElmErrorColor.VividBlack -> BLACK in - selection + ElmError.selection (Maybe.withDefault (ModuleProblems [])) + [ ElmErrorGeneralProblem.selection (\path title message -> GeneralProblem { path = path, title = title, message = message }) + |> with ElmErrorGeneralProblem.path + |> with ElmErrorGeneralProblem.title + |> with (ElmErrorGeneralProblem.message chunkSelection) + |> ElmError.onElmErrorGeneralProblem + , ElmErrorModuleProblems.selection ModuleProblems + |> with (ElmErrorModuleProblems.errors badModuleSelection) + |> ElmError.onElmErrorModuleProblems + ] diff --git a/assets/src/Elm/Name.elm b/assets/src/Elm/Name.elm index dc46dd4d..103879af 100644 --- a/assets/src/Elm/Name.elm +++ b/assets/src/Elm/Name.elm @@ -1,12 +1,11 @@ -module Elm.Name - exposing - ( Name - , compare - , decoder - , encoder - , fromString - , toString - ) +module Elm.Name exposing + ( Name + , compare + , decoder + , encoder + , fromString + , toString + ) import Json.Decode as Decode exposing (Decoder) import Json.Encode as Encode exposing (Value) diff --git a/assets/src/Elm/Package.elm b/assets/src/Elm/Package.elm index ea2f3dbb..b5f34b6d 100644 --- a/assets/src/Elm/Package.elm +++ b/assets/src/Elm/Package.elm @@ -1,16 +1,15 @@ -module Elm.Package - exposing - ( Package - , codeLink - , compare - , decoder - , docsLink - , encoder - , fromString - , selection - , toInputObject - , toString - ) +module Elm.Package exposing + ( Package + , codeLink + , compare + , decoder + , docsLink + , encoder + , fromString + , selection + , toInputObject + , toString + ) import Ellie.Api.Helpers as ApiHelpers import Ellie.Api.InputObject as ApiInputObject @@ -19,7 +18,7 @@ import Ellie.Api.Object.ElmPackage as ApiPackage import Ellie.Api.Scalar as ApiScalar import Elm.Name as Name exposing (Name) import Elm.Version as Version exposing (Version) -import Graphqelm.SelectionSet exposing (SelectionSet, with) +import Graphql.SelectionSet exposing (SelectionSet, with) import Json.Decode as Decode exposing (Decoder) import Json.Encode as Encode exposing (Value) diff --git a/assets/src/Elm/Project.elm b/assets/src/Elm/Project.elm index f7e185ec..8876d0a5 100644 --- a/assets/src/Elm/Project.elm +++ b/assets/src/Elm/Project.elm @@ -1,8 +1,7 @@ -module Elm.Project - exposing - ( Project - , encoder - ) +module Elm.Project exposing + ( Project + , encoder + ) {-| Turn `elm.json` files into data that is nice to use in Elm. @@ -24,6 +23,7 @@ import Elm.Version as Version exposing (Version) import Json.Encode as Encode exposing (Value) + -- PROJECT @@ -48,15 +48,16 @@ encoder project = , ( "summary", Encode.string "helpful summary of your project, less than 80 characers" ) , ( "repository", Encode.string "https://github.com/user/project.git" ) , ( "license", Encode.string "MIT" ) - , ( "source-directories", Encode.list <| List.map Encode.string project.sourceDirs ) - , ( "exposed-modules", Encode.list [] ) + , ( "source-directories", Encode.list Encode.string project.sourceDirs ) + , ( "exposed-modules", Encode.list identity [] ) , ( "dependencies", encodeDeps project.deps ) , ( "elm-version", Encode.string "0.18.0 <= v < 0.19.0" ) ] + else Encode.object [ ( "type", Encode.string "application" ) - , ( "source-directories", Encode.list <| List.map Encode.string project.sourceDirs ) + , ( "source-directories", Encode.list Encode.string project.sourceDirs ) , ( "elm-version", Version.encoder project.elm ) , ( "dependencies", encodeDeps project.deps ) , ( "test-dependencies", Encode.object [] ) diff --git a/assets/src/Elm/Version.elm b/assets/src/Elm/Version.elm index 78db33a0..16f41f50 100644 --- a/assets/src/Elm/Version.elm +++ b/assets/src/Elm/Version.elm @@ -15,11 +15,11 @@ fromString : String -> Result String Version fromString str = case String.split "." str of [ major, minor, patch ] -> - Result.map3 - Version - (String.toInt major) - (String.toInt minor) - (String.toInt patch) + Result.fromMaybe "Expecting a version as .." <| + Maybe.map3 Version + (String.toInt major) + (String.toInt minor) + (String.toInt patch) _ -> Err "Expecting a version like MAJOR.MINOR.PATCH" @@ -40,19 +40,21 @@ compare left right = if left.major == right.major then if left.minor == right.minor then Basics.compare left.patch right.patch + else Basics.compare left.minor right.minor + else Basics.compare left.major right.major toString : Version -> String toString version = - Basics.toString version.major + String.fromInt version.major ++ "." - ++ Basics.toString version.minor + ++ String.fromInt version.minor ++ "." - ++ Basics.toString version.patch + ++ String.fromInt version.patch decoder : Decode.Decoder Version diff --git a/assets/src/Extra/Html.elm b/assets/src/Extra/Html.elm index 8fa7005d..d96894ab 100644 --- a/assets/src/Extra/Html.elm +++ b/assets/src/Extra/Html.elm @@ -12,6 +12,7 @@ viewIf : Bool -> Html msg -> Html msg viewIf predicate content = if predicate then content + else none @@ -20,6 +21,7 @@ viewIfLazy : Bool -> (() -> Html msg) -> Html msg viewIfLazy predicate thunk = if predicate then thunk () + else none diff --git a/assets/src/Extra/Html/Attributes.elm b/assets/src/Extra/Html/Attributes.elm index 4b153ecd..cc0ae870 100644 --- a/assets/src/Extra/Html/Attributes.elm +++ b/assets/src/Extra/Html/Attributes.elm @@ -1,4 +1,4 @@ -module Extra.Html.Attributes exposing (..) +module Extra.Html.Attributes exposing (cond, maybe, none, style) import Html.Styled exposing (Attribute) import Html.Styled.Attributes as Attributes exposing (property) @@ -9,6 +9,7 @@ cond : Attribute msg -> Bool -> Attribute msg cond attr bool = if bool then attr + else none @@ -25,4 +26,4 @@ none = style : String -> String -> Attribute msg style key value = - Attributes.style [ ( key, value ) ] + Attributes.style key value diff --git a/assets/src/Extra/HttpBuilder.elm b/assets/src/Extra/HttpBuilder.elm index 2dbb8978..5d23fa30 100644 --- a/assets/src/Extra/HttpBuilder.elm +++ b/assets/src/Extra/HttpBuilder.elm @@ -1,4 +1,4 @@ -module Extra.HttpBuilder exposing (..) +module Extra.HttpBuilder exposing (withMaybe) import HttpBuilder exposing (RequestBuilder) diff --git a/assets/src/Extra/Json/Decode.elm b/assets/src/Extra/Json/Decode.elm index 1e95c607..78f797b6 100644 --- a/assets/src/Extra/Json/Decode.elm +++ b/assets/src/Extra/Json/Decode.elm @@ -1,4 +1,4 @@ -module Extra.Json.Decode exposing (..) +module Extra.Json.Decode exposing (either, genericUnion1, genericUnion2, genericUnion3, withDefault) import Json.Decode as Decode exposing (Decoder) @@ -35,6 +35,7 @@ genericUnion1 constructor tag a = (\actualTag -> if actualTag == tag then Decode.map constructor <| Decode.field "contents" a + else Decode.fail <| "Expected constructor \"" ++ tag ++ "\". Got \"" ++ actualTag ++ "\"." ) @@ -50,6 +51,7 @@ genericUnion2 constructor tag a b = Decode.map2 constructor (Decode.index 0 a) (Decode.index 1 b) + else Decode.fail <| "Expected constructor \"" ++ tag ++ "\". Got \"" ++ actualTag ++ "\"." ) @@ -66,6 +68,7 @@ genericUnion3 constructor tag a b c = (Decode.index 0 a) (Decode.index 1 b) (Decode.index 2 c) + else Decode.fail <| "Expected constructor \"" ++ tag ++ "\". Got \"" ++ actualTag ++ "\"." ) diff --git a/assets/src/Extra/Json/Encode.elm b/assets/src/Extra/Json/Encode.elm index 0674f379..70d77e5f 100644 --- a/assets/src/Extra/Json/Encode.elm +++ b/assets/src/Extra/Json/Encode.elm @@ -1,4 +1,4 @@ -module Extra.Json.Encode exposing (..) +module Extra.Json.Encode exposing (genericUnion, maybeNull, objectWithType) import Json.Encode as Encode exposing (Value) @@ -33,5 +33,5 @@ genericUnion tag contents = _ -> Encode.object [ ( "tag", Encode.string tag ) - , ( "contents", Encode.list contents ) + , ( "contents", Encode.list identity contents ) ] diff --git a/assets/src/Extra/Maybe.elm b/assets/src/Extra/Maybe.elm index e39709f8..1b2405aa 100644 --- a/assets/src/Extra/Maybe.elm +++ b/assets/src/Extra/Maybe.elm @@ -1,4 +1,4 @@ -module Extra.Maybe exposing (..) +module Extra.Maybe exposing (combine, eq, isJust, withDefaultLazy) combine : List (Maybe a) -> Maybe (List a) diff --git a/assets/src/Extra/RemoteData.elm b/assets/src/Extra/RemoteData.elm deleted file mode 100644 index 25e0c321..00000000 --- a/assets/src/Extra/RemoteData.elm +++ /dev/null @@ -1,13 +0,0 @@ -module Extra.RemoteData exposing (..) - -import RemoteData exposing (RemoteData) - - -fromMaybe : Maybe a -> RemoteData x a -fromMaybe maybeValue = - case maybeValue of - Just a -> - RemoteData.Success a - - Nothing -> - RemoteData.NotAsked diff --git a/assets/src/Extra/Result.elm b/assets/src/Extra/Result.elm index f37a8318..90882f83 100644 --- a/assets/src/Extra/Result.elm +++ b/assets/src/Extra/Result.elm @@ -1,4 +1,4 @@ -module Extra.Result exposing (..) +module Extra.Result exposing (fold, traverse) fold : (a -> b) -> (x -> b) -> Result x a -> b diff --git a/assets/src/Extra/Set.elm b/assets/src/Extra/Set.elm index 7788c039..3a87b996 100644 --- a/assets/src/Extra/Set.elm +++ b/assets/src/Extra/Set.elm @@ -1,4 +1,4 @@ -module Extra.Set exposing (..) +module Extra.Set exposing (superset) import Set exposing (Set) diff --git a/assets/src/Extra/String.elm b/assets/src/Extra/String.elm index 2b9ad9bb..9b2ca4f7 100644 --- a/assets/src/Extra/String.elm +++ b/assets/src/Extra/String.elm @@ -1,4 +1,4 @@ -module Extra.String exposing (..) +module Extra.String exposing (fromFloat, fromInt, replace) import Regex exposing (Regex) diff --git a/assets/src/Network/Absinthe/Socket.elm b/assets/src/Network/Absinthe/Socket.elm new file mode 100644 index 00000000..f6648fb5 --- /dev/null +++ b/assets/src/Network/Absinthe/Socket.elm @@ -0,0 +1,153 @@ +port module Network.Absinthe.Socket exposing + ( Info(..) + , Logger + , Msg + , Socket + , emptyLogger + , init + , listen + , update + ) + +import Extra.Json.Encode as Encode +import Graphql.Document as Document +import Graphql.Operation exposing (RootSubscription) +import Graphql.SelectionSet exposing (SelectionSet) +import Json.Decode as Decode exposing (Decoder) +import Json.Encode as Encode exposing (Value) +import Process +import Task +import Time + + +port absintheSocketOutbound : Value -> Cmd msg + + +port absintheSocketInbound : (Value -> msg) -> Sub msg + + +socketListen : Socket -> Sub Info +socketListen state = + absintheSocketInbound <| + \input -> + case Decode.decodeValue (infoDecoder state) input of + Ok info -> + info + + Err _ -> + Control SocketClosed + + +type alias Socket = + { connected : Bool + , url : String + , token : Maybe String + , logger : Logger + , document : String + } + + +type alias Logger = + String -> String -> String + + +emptyLogger : Logger +emptyLogger a b = + b + + +init : + { url : String, token : Maybe String } + -> Logger + -> SelectionSet a RootSubscription + -> ( Socket, Cmd msg ) +init { url, token } logger doc = + ( { connected = False + , url = url + , token = token + , logger = logger + , document = Document.serializeSubscription doc + } + , absintheSocketOutbound <| + Encode.object + [ ( "tag", Encode.string "Initialize" ) + , ( "url", Encode.string url ) + , ( "token", Encode.maybeNull Encode.string token ) + , ( "doc", Encode.string <| Document.serializeSubscription doc ) + ] + ) + + +type Info + = Data Value + | Status Bool + | Control Msg + + +type Msg + = SocketOpened + | SocketClosed + | ProblemResponse String + | NoOp + + +update : Msg -> Socket -> ( Socket, Cmd Msg ) +update msg state = + case msg of + SocketOpened -> + ( { state | connected = True } + , Cmd.none + ) + + SocketClosed -> + ( { state | connected = False } + , Cmd.none + ) + + ProblemResponse string -> + let + _ = + state.logger "Malformed response" string + in + ( state, Cmd.none ) + + NoOp -> + ( state, Cmd.none ) + + +listen : Socket -> Sub Info +listen state = + Sub.batch + [ Sub.map toStatus (socketListen state) + , socketListen state + ] + + +toStatus : Info -> Info +toStatus socketInfo = + case socketInfo of + Control SocketClosed -> + Status False + + Control SocketOpened -> + Status True + + _ -> + Control NoOp + + +infoDecoder : Socket -> Decoder Info +infoDecoder state = + Decode.field "tag" Decode.string + |> Decode.andThen + (\tag -> + case tag of + "Open" -> + Decode.succeed <| Control SocketOpened + + "Data" -> + Decode.map Data <| Decode.field "data" Decode.value + + _ -> + Decode.succeed <| Control SocketClosed + ) diff --git a/assets/src/Network/Absinthe/Socket.js b/assets/src/Network/Absinthe/Socket.js new file mode 100644 index 00000000..021ff6fb --- /dev/null +++ b/assets/src/Network/Absinthe/Socket.js @@ -0,0 +1,62 @@ +import * as AbsintheSocket from "@absinthe/socket"; +import { Socket as PhoenixSocket } from "phoenix"; + +const createPhoenixSocket = (address, params) => + new PhoenixSocket(address, { params }); + +const createAbsintheSocket = phoenixSocket => + AbsintheSocket.create(phoenixSocket); + +export default { + start(app) { + const onOpen = () => { + app.ports.absintheSocketInbound.send({ tag: "Open" }); + }; + + const onAbort = data => { + app.ports.absintheSocketInbound.send({ tag: "Abort" }); + }; + + const onCancel = data => { + app.ports.absintheSocketInbound.send({ tag: "Cancel" }); + }; + + const onError = data => { + app.ports.absintheSocketInbound.send({ tag: "Error" }); + }; + + const onResult = res => { + app.ports.absintheSocketInbound.send({ tag: "Data", data: res }); + }; + + app.ports.absintheSocketOutbound.subscribe(data => { + switch (data.tag) { + case "Initialize": { + const phoenixSocket = createPhoenixSocket(data.url, { + token: data.token + }); + const absintheSocket = createAbsintheSocket(phoenixSocket); + + phoenixSocket.onOpen(onOpen); + + const notifier = AbsintheSocket.send(absintheSocket, { + operation: data.doc, + variables: {} + }); + + AbsintheSocket.observe(absintheSocket, notifier, { + onAbort, + onError, + onCancel, + onResult + }); + + break; + } + + default: { + } + } + }); + } +}; diff --git a/assets/src/Network/Absinthe/Subscription.elm b/assets/src/Network/Absinthe/Subscription.elm deleted file mode 100644 index 0e80c6f2..00000000 --- a/assets/src/Network/Absinthe/Subscription.elm +++ /dev/null @@ -1,321 +0,0 @@ -module Network.Absinthe.Subscription - exposing - ( ChannelStatus(..) - , Info(..) - , Logger - , Msg - , Socket - , emptyLogger - , init - , listen - , update - ) - -import Graphqelm.Document as Document -import Graphqelm.Operation exposing (RootSubscription) -import Graphqelm.SelectionSet exposing (SelectionSet) -import Json.Decode as Decode exposing (Decoder) -import Json.Encode as Encode exposing (Value) -import Network.Socket as Socket exposing (Info(..)) -import Process -import Task -import Time - - -type alias Socket = - { connected : Bool - , channel : ChannelStatus - , url : String - , refId : Int - , docId : Maybe String - , logger : Logger - , document : String - } - - -type ChannelStatus - = Errored - | Joined Int - | Joining Int - | Initial - - -type alias Logger = - String -> String -> String - - -emptyLogger : Logger -emptyLogger a b = - b - - -init : String -> Logger -> SelectionSet a RootSubscription -> Socket -init url logger doc = - { connected = False - , channel = Initial - , url = url - , refId = 0 - , docId = Nothing - , logger = logger - , document = Document.serializeSubscription doc - } - - -type Info - = Data Value - | Status Bool - | Control Msg - - -type Msg - = SocketOpened - | SocketClosed - | JoinRequested - | ChannelJoined Int - | DocRequested - | DocSubscribed String - | ProblemResponse String - | MutationComplete - | NoOp - | HeartbeatReceived - | HeartbeatRequested - - -update : Msg -> Socket -> ( Socket, Cmd Msg ) -update msg state = - case msg of - SocketOpened -> - ( { state | connected = True, refId = 0, docId = Nothing, channel = Initial } - , Process.sleep 0 - |> Task.perform (\_ -> JoinRequested) - ) - - SocketClosed -> - ( { state | connected = False, refId = 0, docId = Nothing, channel = Initial } - , Cmd.none - ) - - JoinRequested -> - case ( state.connected, state.channel ) of - ( _, Joined _ ) -> - ( state, Cmd.none ) - - ( _, Joining _ ) -> - ( state, Cmd.none ) - - ( True, _ ) -> - ( { state | channel = Joining (state.refId + 1), refId = state.refId + 1 } - , Socket.send state.url <| - Encode.encode 0 <| - Encode.list - [ Encode.null - , Encode.string <| toString (state.refId + 1) - , Encode.string "__absinthe__:control" - , Encode.string "phx_join" - , Encode.object [] - ] - ) - - _ -> - ( state, Cmd.none ) - - ChannelJoined joinRef -> - case ( state.channel, state.connected ) of - ( Joining _, True ) -> - ( { state | channel = Joined joinRef } - , Process.sleep 0 - |> Task.perform (\_ -> DocRequested) - ) - - _ -> - ( state, Cmd.none ) - - DocRequested -> - case ( state.channel, state.connected, state.docId ) of - ( Joined joinRef, True, Nothing ) -> - ( { state | refId = state.refId + 1 } - , Socket.send state.url <| - Encode.encode 0 <| - Encode.list - [ Encode.string <| toString joinRef - , Encode.string <| toString (state.refId + 1) - , Encode.string "__absinthe__:control" - , Encode.string "doc" - , Encode.object [ ( "query", Encode.string state.document ) ] - ] - ) - - _ -> - ( state, Cmd.none ) - - DocSubscribed docId -> - case ( state.channel, state.connected, state.docId ) of - ( Joined _, True, Nothing ) -> - ( { state | docId = Just docId } - , Cmd.none - ) - - _ -> - ( state, Cmd.none ) - - ProblemResponse string -> - let - _ = - state.logger "Malformed response" string - in - ( state, Cmd.none ) - - MutationComplete -> - ( state, Cmd.none ) - - NoOp -> - ( state, Cmd.none ) - - HeartbeatReceived -> - ( state, Cmd.none ) - - HeartbeatRequested -> - ( { state | refId = state.refId + 1 } - , Socket.send state.url <| - Encode.encode 0 <| - Encode.list - [ Encode.null - , Encode.string <| toString (state.refId + 1) - , Encode.string "phoenix" - , Encode.string "heartbeat" - , Encode.object [] - ] - ) - - -listen : Socket -> Sub Info -listen state = - Sub.batch - [ Socket.listen state.url - |> Sub.map (status state) - , Socket.listen state.url - |> Sub.map (listenHelp state) - , Time.every (30 * Time.second) (\_ -> Control HeartbeatRequested) - ] - - -status : Socket -> Socket.Info -> Info -status state socketInfo = - case listenHelp state socketInfo of - Control SocketClosed -> - Status False - - Control (DocSubscribed _) -> - Status True - - _ -> - Control NoOp - - -listenHelp : Socket -> Socket.Info -> Info -listenHelp state socketInfo = - case socketInfo of - Socket.Open -> - Control SocketOpened - - Socket.Close -> - Control SocketClosed - - Socket.Data data -> - let - rawMessage = - Decode.decodeValue rawMessageDecoder data - |> Result.withDefault nonsenseRawMessage - in - case ( state.channel, rawMessage.ref, rawMessage.joinRef, rawMessage.channel, rawMessage.event ) of - ( Joining refId, Just ref, Just joinRef, "__absinthe__:control", "phx_reply" ) -> - Control (ChannelJoined joinRef) - - ( Joined myJoinRef, Just ref, Just joinRef, "__absinthe__:control", "phx_reply" ) -> - if myJoinRef == joinRef then - case Decode.decodeValue decodeAbsintheControl rawMessage.data of - Ok msg -> - Control msg - - Err stuff -> - Control (ProblemResponse stuff) - else - Control NoOp - - ( Joined myJoinRef, Just ref, _, "phoenix", "phx_reply" ) -> - Control HeartbeatReceived - - ( Joined myJoinRef, Nothing, Nothing, docId, "subscription:data" ) -> - if state.docId == Just docId then - let - decoder = - Decode.field "result" Decode.value - in - case Decode.decodeValue decoder rawMessage.data of - Ok data -> - Data data - - Err string -> - Control (ProblemResponse string) - else - Control NoOp - - _ -> - Control NoOp - - -decodeAbsintheControl : Decoder Msg -decodeAbsintheControl = - Decode.field "status" Decode.string - |> Decode.andThen - (\status -> - case status of - "ok" -> - Decode.oneOf - [ Decode.field "subscriptionId" Decode.string - |> Decode.map DocSubscribed - , Decode.field "data" Decode.value - |> Decode.map (\_ -> MutationComplete) - ] - |> Decode.field "response" - - _ -> - Decode.fail "Unsuccessful response" - ) - - -type alias RawMessage = - { joinRef : Maybe Int - , ref : Maybe Int - , channel : String - , event : String - , data : Value - } - - -nonsenseRawMessage : RawMessage -nonsenseRawMessage = - { joinRef = Nothing - , ref = Nothing - , channel = "nonsense" - , event = "failure" - , data = Encode.null - } - - -rawMessageDecoder : Decoder RawMessage -rawMessageDecoder = - Decode.map5 RawMessage - (Decode.index 0 (Decode.map (Maybe.andThen (String.toInt >> Result.toMaybe)) (Decode.nullable Decode.string))) - (Decode.index 1 (Decode.map (Maybe.andThen (String.toInt >> Result.toMaybe)) (Decode.nullable Decode.string))) - (Decode.index 2 Decode.string) - (Decode.index 3 Decode.string) - (Decode.index 4 Decode.value) - - - --- (Decode.field "join_ref" (Decode.map (Maybe.andThen (String.toInt >> Result.toMaybe)) (Decode.nullable Decode.string))) --- (Decode.field "ref" (Decode.map (Maybe.andThen (String.toInt >> Result.toMaybe)) (Decode.nullable Decode.string))) --- (Decode.field "topic" Decode.string) --- (Decode.field "event" Decode.string) --- (Decode.field "payload" Decode.value) diff --git a/assets/src/Network/Socket.elm b/assets/src/Network/Socket.elm deleted file mode 100644 index a4e081de..00000000 --- a/assets/src/Network/Socket.elm +++ /dev/null @@ -1,49 +0,0 @@ -module Network.Socket - exposing - ( Info(..) - , listen - , send - ) - -import Json.Decode as Decode exposing (Decoder, Value) -import WebSocket - - -type Info - = Open - | Data Value - | Close - - -listen : String -> Sub Info -listen url = - WebSocket.listen ("ELM_LANG_SOCKET::" ++ url) <| - \input -> - case Decode.decodeString infoDecoder input of - Ok info -> - info - - Err _ -> - Close - - -send : String -> String -> Cmd msg -send url data = - WebSocket.send ("ELM_LANG_SOCKET::" ++ url) data - - -infoDecoder : Decoder Info -infoDecoder = - Decode.field "type" Decode.string - |> Decode.andThen - (\tipe -> - case tipe of - "Open" -> - Decode.succeed Open - - "Data" -> - Decode.map Data <| Decode.field "data" Decode.value - - _ -> - Decode.succeed Close - ) diff --git a/assets/src/Network/Socket.js b/assets/src/Network/Socket.js deleted file mode 100644 index fcfb806a..00000000 --- a/assets/src/Network/Socket.js +++ /dev/null @@ -1,55 +0,0 @@ -var OldWebSocket = window.WebSocket - -window.WebSocket = function (url, protocols) { - if (url.indexOf('ELM_LANG_SOCKET::') !== 0) { - return new OldWebSocket(url, protocols) - } - - var ws = new OldWebSocket(url.replace('ELM_LANG_SOCKET::', ''), protocols) - var oldAddEventListener = OldWebSocket.prototype.addEventListener - ws.addEventListener = function(type, callback) { - if (type === 'message') { - oldAddEventListener.call(this, type, (event) => { - if (event.isTrusted) { - Object.defineProperty(event, 'data', { value: JSON.stringify({ type: 'Data', data: JSON.parse(event.data) }) }) - } - callback(event) - }) - return - } - - if (type === 'open') { - oldAddEventListener.call(this, type, (event) => { - callback(event) - setTimeout(() => { - this.dispatchEvent(new MessageEvent('message', { data: JSON.stringify({ type: 'Open' })})) - }) - }) - } - - if (type === 'close') { - oldAddEventListener.call(this, type, (event) => { - this.dispatchEvent(new MessageEvent('message', { data: JSON.stringify({ type: 'Close' })})) - setTimeout(() => { - callback(event) - }) - }) - return - } - - oldAddEventListener.call(this, type, callback) - } - - // this might have to change if we have multiple subscriptions - var oldRemoveEventListener = OldWebSocket.prototype.removeEventListener - ws.removeEventListener = function(type, callback) { - return oldRemoveEventListener.call(type) - } - return ws -} - -export default { - start(app) { - - } -} diff --git a/assets/src/Pages/Editor/Effects.elm b/assets/src/Pages/Editor/Effects.elm index 63b6f522..6b5933fd 100644 --- a/assets/src/Pages/Editor/Effects.elm +++ b/assets/src/Pages/Editor/Effects.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Effects exposing (..) +module Pages.Editor.Effects exposing (attachToWorkspace, authenticate, compile, createRevision, delay, downloadZip, escapePressed, formatCode, getDocs, getRevision, keyCombos, moveElmCursor, navigate, networkStatus, openInNewTab, redirect, reloadOutput, saveToken, searchPackages, updateRecoveryRevision, updateUser, workspaceUpdates) import Data.Jwt as Jwt exposing (Jwt) import Effect.Command as Command exposing (Command) @@ -22,9 +22,9 @@ import Elm.Package as Package exposing (Package) import Elm.Project as Project exposing (Project) import Elm.Version as Version exposing (Version) import Extra.Json.Encode as Encode -import Graphqelm.Http -import Graphqelm.OptionalArgument as OptionalArgument -import Graphqelm.SelectionSet as SelectionSet exposing (SelectionSet(..), hardcoded, with) +import Graphql.Http +import Graphql.OptionalArgument as OptionalArgument +import Graphql.SelectionSet as SelectionSet exposing (SelectionSet(..), hardcoded, with) import Json.Decode as Decode exposing (Decoder) import Json.Encode as Encode exposing (Value) import Pages.Editor.Types.EditorAction as EditorAction exposing (EditorAction) @@ -33,7 +33,7 @@ import Pages.Editor.Types.User as User exposing (User) import Pages.Editor.Types.WorkspaceUpdate as WorkspaceUpdate exposing (WorkspaceUpdate(..)) -getRevision : Revision.Id -> Command (Result (Graphqelm.Http.Error ()) Revision) +getRevision : Revision.Id -> Command (Result (Graphql.Http.Error ()) Revision) getRevision revisionId = let query = @@ -61,7 +61,7 @@ getRevision revisionId = } -searchPackages : String -> Command (Result (Graphqelm.Http.Error ()) (List Package)) +searchPackages : String -> Command (Result (Graphql.Http.Error ()) (List Package)) searchPackages queryString = let query = @@ -86,7 +86,7 @@ searchPackages queryString = } -formatCode : Jwt -> Version -> String -> Command (Result (Graphqelm.Http.Error ()) String) +formatCode : Jwt -> Version -> String -> Command (Result (Graphql.Http.Error ()) String) formatCode token version code = let mutation = @@ -107,7 +107,7 @@ formatCode token version code = } -compile : Jwt -> Version -> String -> List Package -> Command (Result (Graphqelm.Http.Error ()) ()) +compile : Jwt -> Version -> String -> List Package -> Command (Result (Graphql.Http.Error ()) ()) compile token elmVersion elmCode packages = let mutation = @@ -134,7 +134,7 @@ compile token elmVersion elmCode packages = } -authenticate : Command (Result (Graphqelm.Http.Error ()) Jwt) +authenticate : Command (Result (Graphql.Http.Error ()) Jwt) authenticate = Command.GraphqlMutation { url = "/api" @@ -168,17 +168,18 @@ workspaceUpdates token = ] in Subscription.AbsintheSubscription - (Constants.socketOrigin ++ "/api/sockets/websocket?vsn=2.0.0&token=" ++ Jwt.toString token) + { url = Constants.socketOrigin ++ "/api/sockets", token = Just (Jwt.toString token) } selection (\connected -> if connected then Connected + else Disconnected ) -attachToWorkspace : Jwt -> Version -> Command (Result (Graphqelm.Http.Error ()) ()) +attachToWorkspace : Jwt -> Version -> Command (Result (Graphql.Http.Error ()) ()) attachToWorkspace token version = let selection = @@ -202,11 +203,11 @@ updateUser user = Command.PortSend { channel = "UpdateUser" , debounce = Nothing - , data = Encode.list [ User.localStorageEncoder user ] + , data = Encode.list User.localStorageEncoder [ user ] } -createRevision : Jwt -> Int -> Revision -> Command (Result (Graphqelm.Http.Error ()) Revision.Id) +createRevision : Jwt -> Int -> Revision -> Command (Result (Graphql.Http.Error ()) Revision.Id) createRevision token termsVersion revision = let selection = @@ -268,7 +269,7 @@ getDocs packages = { url = "/api" , token = Nothing , selection = SelectionSet.map identity selection - , onError = Debug.log "e" >> always [] + , onError = always [] , debounce = Nothing , cache = Command.Permanent } @@ -280,9 +281,9 @@ moveElmCursor position = { channel = "MoveElmCursor" , debounce = Nothing , data = - Encode.list - [ Encode.int position.line - , Encode.int position.column + Encode.list Encode.int + [ position.line + , position.column ] } @@ -293,7 +294,7 @@ downloadZip elm html project = { channel = "DownloadZip" , debounce = Nothing , data = - Encode.list + Encode.list identity [ Encode.string <| Encode.encode 2 (Project.encoder project) , Encode.string elm , Encode.string html @@ -306,7 +307,7 @@ openInNewTab url = Command.PortSend { channel = "OpenInNewTab" , debounce = Nothing - , data = Encode.list [ Encode.string url ] + , data = Encode.list Encode.string [ url ] } @@ -320,7 +321,7 @@ saveToken token = Command.PortSend { channel = "SaveToken" , debounce = Nothing - , data = Encode.list [ Jwt.encoder token ] + , data = Encode.list Jwt.encoder [ token ] } @@ -374,6 +375,6 @@ updateRecoveryRevision : Maybe Revision -> Command msg updateRecoveryRevision revision = Command.PortSend { channel = "UpdateRecoveryRevision" - , data = Encode.list [ Encode.maybeNull Revision.localStorageEncoder revision ] + , data = Encode.list (Encode.maybeNull Revision.localStorageEncoder) [ revision ] , debounce = Just "UpdateRecoveryRevision" } diff --git a/assets/src/Pages/Editor/Main.css b/assets/src/Pages/Editor/Main.css index 598bf379..7ee144c1 100644 --- a/assets/src/Pages/Editor/Main.css +++ b/assets/src/Pages/Editor/Main.css @@ -48,15 +48,3 @@ .LoadingIcon-circle:nth-child(3) { animation-delay: 0.4s; } - - - -.elm-overlay { - z-index: 20; -} - - -.elm-mini-controls { - left: 6px !important; - right: unset !important; -} diff --git a/assets/src/Pages/Editor/Route.elm b/assets/src/Pages/Editor/Route.elm index e179b2e9..8cdbe9dc 100644 --- a/assets/src/Pages/Editor/Route.elm +++ b/assets/src/Pages/Editor/Route.elm @@ -1,13 +1,13 @@ module Pages.Editor.Route exposing (Route(..), parse, toString) -import Data.Url.Parser as UrlParser exposing ((), (), Parser, int, s, string) -import Data.Url.Parser.Query as QueryParser import Elm.Compiler as Compiler import Elm.Package as Package exposing (Package) import Elm.Version as Version exposing (Version) import Extra.Maybe as Maybe -import Navigation import Pages.Editor.Types.Revision as Revision exposing (Revision) +import Url exposing (Url) +import Url.Parser as UrlParser exposing ((), (), Parser, int, s, string) +import Url.Parser.Query as QueryParser type Route @@ -23,6 +23,7 @@ revisionId = \string -> if String.endsWith "a1" string then Just string + else Nothing @@ -104,11 +105,9 @@ parser = ] -parse : Navigation.Location -> Route -parse location = - location.href - |> UrlParser.toUrl - |> Maybe.andThen (UrlParser.parse parser) +parse : Url -> Route +parse url = + UrlParser.parse parser url |> Maybe.withDefault NotFound @@ -118,8 +117,8 @@ toString route = New -> "/new" - Existing revisionId -> - "/" ++ revisionId + Existing id -> + "/" ++ id Example _ -> "/a/example/v1" diff --git a/assets/src/Pages/Editor/State/Actions.elm b/assets/src/Pages/Editor/State/Actions.elm index d23eafa7..9a7e3fd1 100644 --- a/assets/src/Pages/Editor/State/Actions.elm +++ b/assets/src/Pages/Editor/State/Actions.elm @@ -1,4 +1,4 @@ -module Pages.Editor.State.Actions exposing (..) +module Pages.Editor.State.Actions exposing (Model(..), Msg(..), PackagesModel, packages, subscriptions, update) import Effect.Command as Command exposing (Command) import Effect.Subscription as Subscription exposing (Subscription) @@ -42,10 +42,12 @@ update msg model = ( Packages { packagesModel | query = query, searchedPackages = Nothing, awaitingSearch = False } , Command.none ) + else if String.length query < 4 then ( Packages { packagesModel | query = query } , Command.none ) + else ( Packages { packagesModel | query = query, awaitingSearch = True } , Effects.searchPackages query @@ -53,11 +55,12 @@ update msg model = |> Command.map SearchedPackagesReceived ) - ( Packages packagesModel, SearchedPackagesReceived packages ) -> + ( Packages packagesModel, SearchedPackagesReceived searchedPackages ) -> if packagesModel.awaitingSearch then - ( Packages { packagesModel | searchedPackages = packages, awaitingSearch = False } + ( Packages { packagesModel | searchedPackages = searchedPackages, awaitingSearch = False } , Command.none ) + else ( model, Command.none ) diff --git a/assets/src/Pages/Editor/State/App.elm b/assets/src/Pages/Editor/State/App.elm index 8030e557..9bcbe5a0 100644 --- a/assets/src/Pages/Editor/State/App.elm +++ b/assets/src/Pages/Editor/State/App.elm @@ -1,11 +1,10 @@ -module Pages.Editor.State.App - exposing - ( Model(..) - , Msg(..) - , init - , subscriptions - , update - ) +module Pages.Editor.State.App exposing + ( Model(..) + , Msg(..) + , init + , subscriptions + , update + ) import Data.Jwt as Jwt exposing (Jwt) import Data.Transition as Transition exposing (Transition(..)) @@ -65,8 +64,8 @@ update flags msg_ model = case ( model, msg_ ) of ( _, RouteChanged route ) -> case model of - Initial flags _ -> - init flags route + Initial initFlags _ -> + init initFlags route Setup setupState -> update flags (SetupMsg (Setup.RouteChanged route)) model diff --git a/assets/src/Pages/Editor/State/Setup.elm b/assets/src/Pages/Editor/State/Setup.elm index 1a1f7f12..983375e3 100644 --- a/assets/src/Pages/Editor/State/Setup.elm +++ b/assets/src/Pages/Editor/State/Setup.elm @@ -1,13 +1,12 @@ -module Pages.Editor.State.Setup - exposing - ( Model - , Msg(..) - , State(..) - , Transition - , init - , subscriptions - , update - ) +module Pages.Editor.State.Setup exposing + ( Model + , Msg(..) + , State(..) + , Transition + , init + , subscriptions + , update + ) import Data.Jwt as Jwt exposing (Jwt) import Data.Transition as Transition @@ -285,6 +284,7 @@ update msg model = ( Transition.step model , Command.none ) + else ( Transition.step { model @@ -335,6 +335,7 @@ update msg model = } , Command.none ) + else ( Transition.step model , Command.none @@ -354,6 +355,7 @@ update msg model = ( Transition.step model , Command.none ) + else ( Transition.step { model @@ -442,8 +444,8 @@ subscriptions model = chooseUpdate : WorkspaceUpdate -> Msg -chooseUpdate update = - case update of +chooseUpdate workspaceUpdate = + case workspaceUpdate of WorkspaceUpdate.Attached packages -> WorkspaceAttached packages diff --git a/assets/src/Pages/Editor/State/Working.elm b/assets/src/Pages/Editor/State/Working.elm index e849040f..a64d67e5 100644 --- a/assets/src/Pages/Editor/State/Working.elm +++ b/assets/src/Pages/Editor/State/Working.elm @@ -1,4 +1,4 @@ -module Pages.Editor.State.Working exposing (..) +module Pages.Editor.State.Working exposing (ErrorsPane(..), Model, Msg(..), SuccessPane(..), Workbench(..), addNotification, addNotificationIf, canReplaceRevision, compilerVersion, fromEditorAction, hasChanged, init, reset, subscriptions, toRevision, update, withRecoveryUpdate) import BoundedDeque exposing (BoundedDeque) import Data.Jwt exposing (Jwt) @@ -23,6 +23,7 @@ import Pages.Editor.Types.User as User exposing (User) import Pages.Editor.Types.WorkspaceUpdate as WorkspaceUpdate exposing (WorkspaceUpdate) + -- MODEL @@ -149,6 +150,7 @@ addNotificationIf : Bool -> Notification -> Model -> Model addNotificationIf cond notification model = if cond then addNotification notification model + else model @@ -334,6 +336,7 @@ update msg ({ user } as model) = ( { model | saving = False, revision = Replaceable.Loaded ( revisionId, revision ) } , Command.none ) + else ( { model | saving = False } , Command.none @@ -421,6 +424,7 @@ update msg ({ user } as model) = ( { model | workbenchRatio = 0.5 } , Command.none ) + else ( { model | workbenchRatio = 0 } , Command.none @@ -490,6 +494,7 @@ update msg ({ user } as model) = CompileRequested -> if model.compiling then ( model, Command.none ) + else ( { model | compiling = True } , Effects.compile model.token (compilerVersion model) model.elmCode model.packages @@ -546,18 +551,18 @@ update msg ({ user } as model) = , Effects.reloadOutput ) - ( True, Just error, FinishedWithError state ) -> + ( True, Just e, FinishedWithError state ) -> ( { model | compiling = False - , workbench = FinishedWithError { state | error = error } + , workbench = FinishedWithError { state | error = e } } , Command.none ) - ( True, Just error, _ ) -> + ( True, Just e, _ ) -> ( { model | compiling = False - , workbench = FinishedWithError { error = error, pane = ErrorsList } + , workbench = FinishedWithError { error = e, pane = ErrorsList } } , Command.none ) @@ -591,6 +596,7 @@ update msg ({ user } as model) = CollapseHtml -> ( if model.editorsRatio == 1 then { model | editorsRatio = 0.75 } + else { model | editorsRatio = 1 } , Command.none @@ -694,6 +700,7 @@ update msg ({ user } as model) = model.defaultPackages , Command.none ) + else ( model, Command.none ) @@ -707,6 +714,7 @@ update msg ({ user } as model) = model.defaultPackages , Command.none ) + else ( model, Command.none ) @@ -746,6 +754,7 @@ update msg ({ user } as model) = |> Command.map (Result.mapError (\_ -> ())) |> Command.map (RevisionLoaded newRevisionId) ) + else ( model, Command.none ) @@ -756,6 +765,7 @@ update msg ({ user } as model) = |> Command.map (Result.mapError (\_ -> ())) |> Command.map (RevisionLoaded newRevisionId) ) + else ( model, Command.none ) @@ -766,6 +776,7 @@ update msg ({ user } as model) = |> Command.map (Result.mapError (\_ -> ())) |> Command.map (RevisionLoaded newRevisionId) ) + else ( model, Command.none ) @@ -822,6 +833,7 @@ withRecoveryUpdate ( model, command ) = , Effects.updateRecoveryRevision <| if hasChanged model then Just (toRevision model) + else Nothing ] @@ -835,8 +847,8 @@ subscriptions model = |> Subscription.map ActionsMsg , Effects.workspaceUpdates model.token |> Subscription.map - (\update -> - case update of + (\updates -> + case updates of WorkspaceUpdate.CompileCompleted maybeError -> CompileFinished maybeError @@ -854,6 +866,7 @@ subscriptions model = (\online -> if online then NoOp + else OnlineStatusChanged False ) @@ -866,12 +879,14 @@ fromEditorAction model action = EditorAction.Save -> if model.connected && hasChanged model then SaveRequested + else NoOp EditorAction.Recompile -> if model.compiling then NoOp + else CompileRequested @@ -880,6 +895,7 @@ fromEditorAction model action = Finished state -> if state.canDebug then SuccessPaneSelected SuccessDebug + else NoOp diff --git a/assets/src/Pages/Editor/Types/Analysis.elm b/assets/src/Pages/Editor/Types/Analysis.elm index 0d62c3bb..0c4cb095 100644 --- a/assets/src/Pages/Editor/Types/Analysis.elm +++ b/assets/src/Pages/Editor/Types/Analysis.elm @@ -1,14 +1,13 @@ -module Pages.Editor.Types.Analysis - exposing - ( Analysis - , Hint - , completions - , empty - , hint - , withCode - , withModules - , withToken - ) +module Pages.Editor.Types.Analysis exposing + ( Analysis + , Hint + , completions + , empty + , hint + , withCode + , withModules + , withToken + ) import Char import Dict exposing (Dict) @@ -17,7 +16,6 @@ import Ellie.Ui.CodeEditor as CodeEditor exposing (Completions, Located(..), Tok import Elm.Docs exposing (Binop, Module, Union) import Elm.Version as Version exposing (Version) import Parser exposing ((|.), (|=), Parser) -import Parser.LanguageKit import Set exposing (Set) @@ -125,6 +123,7 @@ buildCompletions (Located from to token) (Analysis analysis) = (\value -> if String.startsWith text value.name && text /= value.name then Just value.name + else Nothing ) @@ -171,11 +170,11 @@ findHint (Located _ _ token) (Analysis stuff) = |> Maybe.map (\q -> q ++ "." ++ name) |> Maybe.withDefault name - value = + hintFromDict = Dict.get fullName stuff.tokens |> Maybe.andThen List.head in - case value of + case hintFromDict of Just value -> Just value @@ -261,8 +260,8 @@ buildTokenIndex imports moduleList = getMaybeHints moduleDocs = Maybe.map (filteredHints moduleDocs) (Dict.get moduleDocs.name imports) - insert ( token, hint ) dict = - Dict.update token (\value -> Just (hint :: Maybe.withDefault [] value)) dict + insert ( token, nextHing ) dict = + Dict.update token (\value -> Just (nextHing :: Maybe.withDefault [] value)) dict in moduleList |> List.filterMap getMaybeHints @@ -295,6 +294,7 @@ binopsToHints moduleData importData binop = "(" ++ binop.name ++ ")" in [ ( binop.name, { name = moduleData.name ++ "." ++ withParens, url = urlTo moduleData withParens } ) ] + else [] @@ -305,7 +305,7 @@ nameToHints moduleDocs importData name = fullName = moduleDocs.name ++ "." ++ name - hint = + nextHint = { name = fullName, url = urlTo moduleDocs name } localName = @@ -314,9 +314,10 @@ nameToHints moduleDocs importData name = ++ name in if isExposed name importData then - [ ( name, hint ), ( localName, hint ) ] + [ ( name, nextHint ), ( localName, nextHint ) ] + else - [ ( localName, hint ) ] + [ ( localName, nextHint ) ] isExposed : String -> Import -> Bool @@ -340,10 +341,10 @@ unionTagsToHints moduleDocs union = fullName = moduleDocs.name ++ "." ++ tag - hint = + nextHint = Hint fullName (urlTo moduleDocs union.name) in - ( tag, hint ) :: ( fullName, hint ) :: hints + ( tag, nextHint ) :: ( fullName, nextHint ) :: hints in List.foldl addHints [] union.tags @@ -371,6 +372,7 @@ dotToHyphen string = (\c -> if c == '.' then '-' + else c ) @@ -447,10 +449,11 @@ detailsParser = aliasParser : Parser ( Maybe String, Exposed ) aliasParser = - Parser.delayedCommit asParser <| - Parser.succeed (\s e -> ( Just s, e )) - |= capVarParser - |= exposingParser + Parser.succeed (\s e -> ( Just s, e )) + -- TODO: Try to rm backtrackable use + |. Parser.backtrackable asParser + |= capVarParser + |= exposingParser asParser : Parser () @@ -463,8 +466,9 @@ asParser = exposingParser : Parser Exposed exposingParser = + -- TODO: Test heavily Parser.oneOf - [ Parser.delayedCommit exposingKwParser exposedParser + [ exposedParser , Parser.succeed ExposedNone ] @@ -479,13 +483,27 @@ exposingKwParser = exposedParser : Parser Exposed exposedParser = - Parser.oneOf - [ Parser.map (\_ -> ExposedAll) (Parser.symbol "(..)") - , Parser.oneOf [ typeParser, lowerVarParser, infixParser ] - |> Parser.LanguageKit.tuple spaces - |> Parser.map (Set.fromList >> ExposedSome) - , Parser.succeed ExposedNone - ] + Parser.succeed identity + |. exposingKwParser + |= Parser.oneOf + [ Parser.map (\_ -> ExposedAll) (Parser.symbol "(..)") + , Parser.oneOf [ typeParser, lowerVarParser, infixParser ] + |> tuple + |> Parser.map (Set.fromList >> ExposedSome) + , Parser.succeed ExposedNone + ] + + +tuple : Parser a -> Parser (List a) +tuple item = + Parser.sequence + { start = "(" + , separator = "," + , end = ")" + , spaces = spaces + , item = item + , trailing = Parser.Forbidden + } typeParser : Parser String @@ -499,8 +517,10 @@ typeParser = constructorExportsParser : Parser () constructorExportsParser = Parser.oneOf - [ Parser.symbol "(..)" - , Parser.map (\_ -> ()) <| Parser.LanguageKit.tuple spaces capVarParser + [ -- TODO: Try to rm backtrackable use + -- Parser.symbol "(..)" + -- , + Parser.map (\_ -> ()) <| tuple capVarParser , Parser.succeed () ] @@ -508,44 +528,79 @@ constructorExportsParser = infixParser : Parser String infixParser = Parser.succeed identity - |. Parser.ignore (Parser.Exactly 1) ((==) '(') - |= Parser.keep Parser.oneOrMore (\c -> not (isVarChar c) && c /= ')') - |. Parser.ignore (Parser.Exactly 1) ((==) ')') + |. Parser.symbol "(" + |= (Parser.chompWhile (\c -> not (isVarChar c) && c /= ')' && c /= ' ') + |> Parser.getChompedString + |> Parser.andThen + (\v -> + if String.length v > 0 then + Parser.succeed v + + else + Parser.problem "To few characters" + ) + ) + |. Parser.symbol ")" capVarParser : Parser String capVarParser = - Parser.LanguageKit.variable Char.isUpper isVarChar keywords + Parser.variable + { start = Char.isUpper + , inner = isVarChar + , reserved = reserved + } lowerVarParser : Parser String lowerVarParser = - Parser.LanguageKit.variable Char.isLower isVarChar keywords + Parser.variable + { start = Char.isLower + , inner = isVarChar + , reserved = reserved + } isVarChar : Char -> Bool isVarChar char = - Char.isLower char - || Char.isUpper char - || Char.isDigit char - || char - == '_' + Char.isAlphaNum char || char == '_' qualifiedVarParser : Parser String qualifiedVarParser = - Parser.LanguageKit.variable Char.isUpper (\c -> isVarChar c || c == '.') keywords + Parser.variable + { start = Char.isUpper + , inner = \c -> isVarChar c || c == '.' + , reserved = reserved + } -keywords : Set String -keywords = +reserved : Set String +reserved = Set.fromList [ "let", "in", "case", "of", "type", "import", "exposing", "as" ] spaces : Parser () spaces = - Parser.LanguageKit.whitespace - { allowTabs = False - , lineComment = Parser.LanguageKit.LineComment "--" - , multiComment = Parser.LanguageKit.NestableComment "{-" "-}" - } + Parser.loop 0 <| + ifProgress <| + Parser.oneOf + [ Parser.lineComment "--" + , Parser.multiComment "{-" "-}" Parser.Nestable + , Parser.spaces + ] + + +ifProgress : Parser a -> Int -> Parser (Parser.Step Int ()) +ifProgress parser offset = + Parser.succeed identity + |. parser + |= Parser.getOffset + |> Parser.map + (\newOffset -> + if offset == newOffset then + Parser.Done () + + else + Parser.Loop newOffset + ) diff --git a/assets/src/Pages/Editor/Types/EditorAction.elm b/assets/src/Pages/Editor/Types/EditorAction.elm index 526b3da6..6925fc32 100644 --- a/assets/src/Pages/Editor/Types/EditorAction.elm +++ b/assets/src/Pages/Editor/Types/EditorAction.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Types.EditorAction exposing (..) +module Pages.Editor.Types.EditorAction exposing (EditorAction(..)) type EditorAction diff --git a/assets/src/Pages/Editor/Types/Log.elm b/assets/src/Pages/Editor/Types/Log.elm index ca58a363..531998d4 100644 --- a/assets/src/Pages/Editor/Types/Log.elm +++ b/assets/src/Pages/Editor/Types/Log.elm @@ -1,7 +1,6 @@ module Pages.Editor.Types.Log exposing (Log, decoder) import Json.Decode as Decode exposing (Decoder) -import Json.Decode.Pipeline as Decode type alias Log = @@ -12,6 +11,6 @@ type alias Log = decoder : Decoder Log decoder = - Decode.decode Log - |> Decode.required "label" Decode.string - |> Decode.required "body" Decode.string + Decode.map2 Log + (Decode.field "label" Decode.string) + (Decode.field "body" Decode.string) diff --git a/assets/src/Pages/Editor/Types/Notification.elm b/assets/src/Pages/Editor/Types/Notification.elm index 1aa27144..0afb42a1 100644 --- a/assets/src/Pages/Editor/Types/Notification.elm +++ b/assets/src/Pages/Editor/Types/Notification.elm @@ -1,17 +1,15 @@ -module Pages.Editor.Types.Notification - exposing - ( Action(..) - , Notification - , Severity(..) - , eq - ) - -import Data.Url as Url exposing (Url) +module Pages.Editor.Types.Notification exposing + ( Action(..) + , Notification + , Severity(..) + , eq + ) + import Pages.Editor.Types.EditorAction as EditorAction exposing (EditorAction) type Action - = CopyLink Url + = CopyLink String | GoToLink String | PerformAction String EditorAction diff --git a/assets/src/Pages/Editor/Types/Revision.elm b/assets/src/Pages/Editor/Types/Revision.elm index 601f4782..b0b8def6 100644 --- a/assets/src/Pages/Editor/Types/Revision.elm +++ b/assets/src/Pages/Editor/Types/Revision.elm @@ -1,6 +1,5 @@ -module Pages.Editor.Types.Revision exposing (..) +module Pages.Editor.Types.Revision exposing (External(..), Id, Revision, default, editorLink, embedLink, localStorageDecoder, localStorageEncoder) -import Data.Url as Url exposing (Url) import Ellie.Constants as Constants import Elm.Compiler as Compiler import Elm.Package as Package exposing (Package) @@ -28,14 +27,14 @@ type alias Revision = } -editorLink : Id -> Url +editorLink : Id -> String editorLink id = - Url.fromString <| Constants.editorBase ++ "/" ++ id + Constants.editorBase ++ "/" ++ id -embedLink : Id -> Url +embedLink : Id -> String embedLink id = - Url.fromString <| Constants.embedBase ++ "/" ++ id + Constants.embedBase ++ "/" ++ id localStorageDecoder : Decoder Revision @@ -53,7 +52,7 @@ localStorageEncoder revision = Encode.object [ ( "htmlCode", Encode.string revision.htmlCode ) , ( "elmCode", Encode.string revision.elmCode ) - , ( "packages", Encode.list <| List.map Package.encoder revision.packages ) + , ( "packages", Encode.list Package.encoder revision.packages ) , ( "title", Encode.string revision.title ) , ( "elmVersion", Version.encoder revision.elmVersion ) ] diff --git a/assets/src/Pages/Editor/Types/User.elm b/assets/src/Pages/Editor/Types/User.elm index 8dbcb6ab..4b25cc06 100644 --- a/assets/src/Pages/Editor/Types/User.elm +++ b/assets/src/Pages/Editor/Types/User.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Types.User exposing (..) +module Pages.Editor.Types.User exposing (Settings, Theme(..), User, default, localStorageDecoder, localStorageEncoder) import Extra.Json.Encode as Encode import Json.Decode as Decode exposing (Decoder) diff --git a/assets/src/Pages/Editor/Types/Workspace.elm b/assets/src/Pages/Editor/Types/Workspace.elm index 757d97d9..08c15fcd 100644 --- a/assets/src/Pages/Editor/Types/Workspace.elm +++ b/assets/src/Pages/Editor/Types/Workspace.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Types.Message exposing (..) +module Pages.Editor.Types.Message exposing (Event(..), Incoming(..), Outgoing(..)) import Elm.Compiler.Error as Compiler import Elm.Package as Package exposing (Package) diff --git a/assets/src/Pages/Editor/Types/WorkspaceUpdate.elm b/assets/src/Pages/Editor/Types/WorkspaceUpdate.elm index 45a56b08..f92e2c7f 100644 --- a/assets/src/Pages/Editor/Types/WorkspaceUpdate.elm +++ b/assets/src/Pages/Editor/Types/WorkspaceUpdate.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Types.WorkspaceUpdate exposing (..) +module Pages.Editor.Types.WorkspaceUpdate exposing (WorkspaceUpdate(..)) import Data.Jwt as Jwt exposing (Jwt) import Elm.Error as Error exposing (Error) diff --git a/assets/src/Pages/Editor/Views/App.elm b/assets/src/Pages/Editor/Views/App.elm index 38112ddb..8209b81f 100644 --- a/assets/src/Pages/Editor/Views/App.elm +++ b/assets/src/Pages/Editor/Views/App.elm @@ -1,7 +1,7 @@ module Pages.Editor.Views.App exposing (styles, title, view) import Css exposing (..) -import Css.Foreign +import Css.Global import Ellie.Ui.Theme as Theme import Html.Styled as Html exposing (Attribute, Html) import Html.Styled.Attributes exposing (css) @@ -23,9 +23,7 @@ view model = SetupView.view SetupView.Authenticating SetupState.AcceptingTerms state -> - { termsVersion = state.latestTerms - , onAccept = SetupState.UserAcceptedTerms - } + { termsVersion = state.latestTerms, onAccept = SetupState.UserAcceptedTerms } |> SetupView.AcceptingTerms |> SetupView.view |> Html.map AppState.SetupMsg @@ -65,31 +63,31 @@ title model = -- STYLES -styles : List Css.Foreign.Snippet +styles : List Css.Global.Snippet styles = - [ Css.Foreign.html + [ Css.Global.html [ height (pct 100) , backgroundColor Theme.secondaryBackground ] - , Css.Foreign.body + , Css.Global.body [ height (pct 100) , margin zero , fontFamilies [ "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica", "Arial", "sans-serif" ] , property "-webkit-font-smoothing" "antialiased" ] - , Css.Foreign.everything + , Css.Global.everything [ boxSizing borderBox ] - , Css.Foreign.button + , Css.Global.button [ focus [ outline zero ] ] - , Css.Foreign.input + , Css.Global.input [ focus [ outline zero ] ] - , Css.Foreign.id "elmEditor" + , Css.Global.id "elmEditor" [ width (pct 100) , height (pct 100) , position relative , zIndex (int 0) ] - , Css.Foreign.id "htmlEditor" + , Css.Global.id "htmlEditor" [ width (pct 100) , height (pct 100) , position relative @@ -97,10 +95,3 @@ styles = ] , Theme.darkStyles ] - - -notificationsStyles : Attribute msg -notificationsStyles = - css - [ padding (px 16) - ] diff --git a/assets/src/Pages/Editor/Views/Editors.elm b/assets/src/Pages/Editor/Views/Editors.elm index 8ceec6b4..9d31fb3e 100644 --- a/assets/src/Pages/Editor/Views/Editors.elm +++ b/assets/src/Pages/Editor/Views/Editors.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Views.Editors exposing (..) +module Pages.Editor.Views.Editors exposing (Config, containerStyles, editorStyles, errorToLinterMessages, problemToLinterMessage, renderChunks, view, viewEditorHeader) import Css exposing (..) import Ellie.Ui.CodeEditor as CodeEditor @@ -131,6 +131,7 @@ view config = Html.div [ css [ height (pct 100), transform (rotate (deg 180)) ] ] [ Icon.view Icon.Chevron ] + else Icon.view Icon.Chevron , Html.div [ editorStyles ] diff --git a/assets/src/Pages/Editor/Views/Notifications.elm b/assets/src/Pages/Editor/Views/Notifications.elm index 42c60af3..3ae2eb95 100644 --- a/assets/src/Pages/Editor/Views/Notifications.elm +++ b/assets/src/Pages/Editor/Views/Notifications.elm @@ -1,8 +1,7 @@ -module Pages.Editor.Views.Notifications exposing (..) +module Pages.Editor.Views.Notifications exposing (Config, view, viewAction, viewCloseAllButton, viewCloseButton, viewNotification, viewSeverity, viewTitle) import Css exposing (..) -import Css.Foreign -import Data.Url as Url exposing (Url) +import Css.Global import Ellie.Ui.Button as Button import Ellie.Ui.CopyText as CopyText import Ellie.Ui.Icon as Icon @@ -12,6 +11,7 @@ import Html.Styled.Attributes as Attributes exposing (css) import Html.Styled.Events as Events import Pages.Editor.Types.EditorAction as EditorAction exposing (EditorAction) import Pages.Editor.Types.Notification as Notification exposing (Notification) +import Url as Url exposing (Url) type alias Config msg = @@ -47,8 +47,8 @@ viewNotification config notification = , boxShadow5 (px 0) (px 1) (px 6) (px 0) (hex "#000") , lastChild [ marginBottom zero ] , hover - [ Css.Foreign.descendants - [ Css.Foreign.selector "[data-close-all-button]" [ displayFlex ] + [ Css.Global.descendants + [ Css.Global.selector "[data-close-all-button]" [ displayFlex ] ] ] ] @@ -75,6 +75,7 @@ viewNotification config notification = ] , if List.isEmpty notification.actions then Html.text "" + else Html.div [ css [ paddingTop (px 12) ] ] @@ -86,7 +87,7 @@ viewAction : Config msg -> Notification.Action -> Html msg viewAction config action = case action of Notification.CopyLink url -> - CopyText.view <| Url.toString url + CopyText.view url Notification.GoToLink url -> Html.div [] @@ -102,12 +103,12 @@ viewAction config action = ] ] - Notification.PerformAction label action -> + Notification.PerformAction label actionToPerform -> Html.div [] [ Button.view { icon = Nothing , label = label - , action = Button.click <| config.onEditorAction action + , action = Button.click <| config.onEditorAction actionToPerform } ] diff --git a/assets/src/Pages/Editor/Views/Packages.elm b/assets/src/Pages/Editor/Views/Packages.elm index 67b7c9f5..0c9d1f1e 100644 --- a/assets/src/Pages/Editor/Views/Packages.elm +++ b/assets/src/Pages/Editor/Views/Packages.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Views.Packages exposing (..) +module Pages.Editor.Views.Packages exposing (Config, infoContainerStyles, packageInfoStyles, packageNameStyles, view, viewAction, viewHeader, viewInstalledPackage, viewInstalledPackages, viewPackage, viewSearchInput, viewSearchedPackage, viewSearchedPackages) import Colors import Css exposing (..) @@ -79,6 +79,7 @@ viewSearchInput isLoading value onSearch = , icon = if isLoading then Just Icon.Loading + else Just Icon.Search } @@ -146,6 +147,7 @@ viewSearchedPackage : (Package -> msg) -> (Package -> msg) -> List Package -> Pa viewSearchedPackage onInstall onUninstall installed package = if List.member package installed then viewInstalledPackage onUninstall package + else viewPackage package [ Button.view diff --git a/assets/src/Pages/Editor/Views/Setup.elm b/assets/src/Pages/Editor/Views/Setup.elm index cbecd709..f2871c78 100644 --- a/assets/src/Pages/Editor/Views/Setup.elm +++ b/assets/src/Pages/Editor/Views/Setup.elm @@ -1,8 +1,7 @@ -module Pages.Editor.Views.Setup - exposing - ( Stage(..) - , view - ) +module Pages.Editor.Views.Setup exposing + ( Stage(..) + , view + ) import Css exposing (..) import Ellie.Ui.Button as Button @@ -87,7 +86,7 @@ terms state = [ Html.text "Please accept Ellie's " , Html.styled Html.a [ color Theme.accent ] - [ Attributes.href <| "/a/terms/" ++ toString state.termsVersion + [ Attributes.href <| "/a/terms/" ++ String.fromInt state.termsVersion , Attributes.target "_blank" ] [ Html.text "Terms of Service" ] @@ -107,7 +106,7 @@ terms state = , position relative , height (px 400) ] - [ Attributes.src <| "/a/terms/" ++ toString state.termsVersion + [ Attributes.src <| "/a/terms/" ++ String.fromInt state.termsVersion ] [] ] @@ -130,7 +129,7 @@ terms state = , Html.text ". See our " , Html.styled Html.a [ color Theme.accent ] - [ Attributes.href <| "/a/terms/" ++ toString state.termsVersion ++ "#privacy" + [ Attributes.href <| "/a/terms/" ++ String.fromInt state.termsVersion ++ "#privacy" , Attributes.target "_blank" ] [ Html.text "Privacy Policy" ] diff --git a/assets/src/Pages/Editor/Views/Sidebar.elm b/assets/src/Pages/Editor/Views/Sidebar.elm index 1f82737c..0978c1eb 100644 --- a/assets/src/Pages/Editor/Views/Sidebar.elm +++ b/assets/src/Pages/Editor/Views/Sidebar.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Views.Sidebar exposing (..) +module Pages.Editor.Views.Sidebar exposing (view, viewIconButton, viewIconLink, viewLogo) import Css exposing (..) import Ellie.Ui.Icon as Icon @@ -80,6 +80,7 @@ viewIconButton icon tooltip default current = , color <| if isActive then Theme.primaryForeground + else Theme.secondaryForeground , hover diff --git a/assets/src/Pages/Editor/Views/StatusBar.elm b/assets/src/Pages/Editor/Views/StatusBar.elm index bd3ad9cf..0bb4d40c 100644 --- a/assets/src/Pages/Editor/Views/StatusBar.elm +++ b/assets/src/Pages/Editor/Views/StatusBar.elm @@ -71,6 +71,7 @@ view config = , color <| if config.connected then Theme.connectionStatusConnected + else Theme.connectionStatusDisconnected ] @@ -83,10 +84,11 @@ view config = , color Theme.primaryForeground ] [ Attributes.title <| - toString config.notificationCount + String.fromInt config.notificationCount ++ " notification" ++ (if config.notificationCount == 1 then "" + else "s" ) @@ -102,7 +104,8 @@ view config = Html.styled Html.div [ paddingLeft (px 4) ] [] - [ Html.text <| toString config.notificationCount ] + [ Html.text <| String.fromInt config.notificationCount ] + else Html.text "" ] diff --git a/assets/src/Pages/Editor/Views/Workbench.elm b/assets/src/Pages/Editor/Views/Workbench.elm index 246e75b1..27193fbf 100644 --- a/assets/src/Pages/Editor/Views/Workbench.elm +++ b/assets/src/Pages/Editor/Views/Workbench.elm @@ -1,4 +1,4 @@ -module Pages.Editor.Views.Workbench exposing (..) +module Pages.Editor.Views.Workbench exposing (Config, view, viewContent, viewErrorsHeader, viewFinishedHeader, viewHeader, viewHeaderAction, viewHeaderActions, viewHeaderTab, viewHeaderTabs, viewInitial, viewLog, viewLogs, viewOutput) import BoundedDeque exposing (BoundedDeque) import Css exposing (..) @@ -157,11 +157,13 @@ viewErrorsHeader pane config = { icon = if config.compiling then Just Icon.Loading + else Just Icon.Play , label = if config.compiling then "Compiling..." + else "Compile" , action = @@ -177,11 +179,13 @@ viewErrorsHeader pane config = { label = if config.saving then "Saving..." + else "Save" , icon = if config.saving then Just Icon.Loading + else Just Icon.Upload , action = @@ -192,6 +196,7 @@ viewErrorsHeader pane config = Nothing -> Button.none } + else Nothing ] @@ -214,11 +219,13 @@ viewFinishedHeader pane canDebug config = { icon = if config.compiling then Just Icon.Loading + else Just Icon.Play , label = if config.compiling then "Compiling..." + else "Compile" , action = @@ -241,6 +248,7 @@ viewFinishedHeader pane canDebug config = _ -> Button.none } + else Nothing , case pane of @@ -270,6 +278,7 @@ viewFinishedHeader pane canDebug config = [ Just ( config.onSelectSuccessPane SuccessOutput, "Output", pane == SuccessOutput ) , if canDebug then Just ( config.onSelectSuccessPane SuccessDebug, "Debug", pane == SuccessDebug ) + else Nothing , Just ( config.onSelectSuccessPane SuccessLogs, "Logs", pane == SuccessLogs ) @@ -299,6 +308,7 @@ viewHeader config actions tabs = [ Attributes.title <| if config.maximized then "Minimize workbench" + else "Maximize workbench" , Events.onClick config.onExpand @@ -320,6 +330,7 @@ viewHeader config actions tabs = [ height (pct 100) , if config.maximized then transform <| rotate (deg -90) + else transform <| rotate (deg 90) ] @@ -401,6 +412,7 @@ viewHeaderTab msg name active = , textTransform uppercase , if active then borderBottom3 (px 1) solid Theme.tabActiveBorder + else batch [] ] @@ -435,16 +447,19 @@ viewInitial config = { icon = if config.compiling then Just Icon.Loading + else Just Icon.Play , label = if config.compiling then "Compiling..." + else "Compile" , action = if config.compiling then Button.none + else case config.onCompile of Just onCompile -> @@ -478,6 +493,7 @@ viewLogs logSearch logs config = filteredLogs = if String.isEmpty lowerSearch then BoundedDeque.toList logs + else logs |> BoundedDeque.toList diff --git a/assets/src/Pages/Editor/Views/Workbench/Share.elm b/assets/src/Pages/Editor/Views/Workbench/Share.elm index 5f32ab38..3bcfa798 100644 --- a/assets/src/Pages/Editor/Views/Workbench/Share.elm +++ b/assets/src/Pages/Editor/Views/Workbench/Share.elm @@ -1,7 +1,6 @@ -module Pages.Editor.Views.Workbench.Share exposing (..) +module Pages.Editor.Views.Workbench.Share exposing (Config, container, heading, iframe, preview, view, warning) import Css exposing (..) -import Data.Url as Url import Ellie.Ui.Button as Button import Ellie.Ui.CopyText as CopyText import Ellie.Ui.Icon as Icon @@ -9,6 +8,7 @@ import Ellie.Ui.Theme as Theme import Html.Styled as Html exposing (Attribute, Html) import Html.Styled.Attributes as Attributes exposing (css) import Pages.Editor.Types.Revision as Revision exposing (Revision) +import Url as Url type alias Config msg = @@ -32,6 +32,7 @@ view config = [] [ if config.hasUnsavedChanges then container [ warning ] + else Html.text "" , container @@ -47,7 +48,7 @@ view config = ] , container [ heading "Share on Medium (Embed.ly)" - , CopyText.view <| Url.toString <| Revision.editorLink config.revisionId + , CopyText.view <| Revision.editorLink config.revisionId ] , container [ heading "Embed IFrame" @@ -89,7 +90,7 @@ warning = iframe : Revision.Id -> String iframe revisionId = - "" + "" preview : Revision.Id -> Html msg @@ -101,7 +102,7 @@ preview revisionId = , position relative , zIndex (int 1) ] - [ Url.src <| Revision.embedLink revisionId ] + [ Attributes.src <| Revision.embedLink revisionId ] [] diff --git a/assets/src/Pages/Editor/Views/Working.elm b/assets/src/Pages/Editor/Views/Working.elm index 698f0325..78414dbd 100644 --- a/assets/src/Pages/Editor/Views/Working.elm +++ b/assets/src/Pages/Editor/Views/Working.elm @@ -2,7 +2,7 @@ module Pages.Editor.Views.Working exposing (view) import Colors import Css exposing (..) -import Css.Foreign +import Css.Global import Data.Replaceable as Replaceable import Ellie.Ui.SplitPane as SplitPane import Ellie.Ui.Theme as Theme @@ -189,11 +189,13 @@ viewWorkbench model = , onCompile = if model.connected then Just WorkingState.CompileRequested + else Nothing , onSave = if model.connected && WorkingState.hasChanged model then Just WorkingState.SaveRequested + else Nothing , compilerVersion = WorkingState.compilerVersion model @@ -209,8 +211,8 @@ viewWorkbench model = viewStyles : WorkingState.Model -> Html msg viewStyles model = - Css.Foreign.global - [ Css.Foreign.selector ":root" + Css.Global.global + [ Css.Global.selector ":root" [ property "--editor-font-size" model.user.settings.fontSize , property "--theme-font-family-editor" model.user.settings.fontFamily ] diff --git a/assets/src/Pages/Editor/index.js b/assets/src/Pages/Editor/index.js index 07af0c61..08ee421e 100644 --- a/assets/src/Pages/Editor/index.js +++ b/assets/src/Pages/Editor/index.js @@ -15,34 +15,33 @@ * topological order of module imports. */ -import NetworkSocket from '../../Network/Socket' -import EffectProgram from '../../Effect/Program' -import EllieUiIcon from '../../Ellie/Ui/Icon' -import EllieUiMenu from '../../Ellie/Ui/Menu' -import EllieUiCopyText from '../../Ellie/Ui/CopyText' -import EllieUiSplitPane from '../../Ellie/Ui/SplitPane' -import EllieUiCodeEditor from '../../Ellie/Ui/CodeEditor' -import EllieUiOutput from '../../Ellie/Ui/Output' -import '../../Ellie/Ui/CodeEditor.css' -import './Views/Setup.css' -import './Main.css' -import Main from './Main' +import NetworkAbsintheSocket from "../../Network/Absinthe/Socket"; +import EffectProgram from "../../Effect/Program"; +import EllieUiIcon from "../../Ellie/Ui/Icon"; +import EllieUiMenu from "../../Ellie/Ui/Menu"; +import EllieUiCopyText from "../../Ellie/Ui/CopyText"; +import EllieUiSplitPane from "../../Ellie/Ui/SplitPane"; +import EllieUiCodeEditor from "../../Ellie/Ui/CodeEditor"; +import EllieUiOutput from "../../Ellie/Ui/Output"; +import "../../Ellie/Ui/CodeEditor.css"; +import "./Views/Setup.css"; +import "./Main.css"; +import Main from "./Main"; +import { Elm } from "./Main.elm"; -const Elm = require('./Main.elm') +document.addEventListener("DOMContentLoaded", () => { + let flags = {}; + flags = Main.flags(flags); -document.addEventListener('DOMContentLoaded', () => { - let flags = {} - flags = Main.flags(flags) + const app = Elm.Pages.Editor.Main.init({ flags }); - const app = Elm.Pages.Editor.Main.fullscreen(flags) - - NetworkSocket.start(app) - EffectProgram.start(app) - EllieUiIcon.start(app) - EllieUiMenu.start(app) - EllieUiCopyText.start(app) - EllieUiSplitPane.start(app) - EllieUiCodeEditor.start(app) - EllieUiOutput.start(app) - Main.start(app) -}) + NetworkAbsintheSocket.start(app); + EffectProgram.start(app); + EllieUiIcon.start(app); + EllieUiMenu.start(app); + EllieUiCopyText.start(app); + EllieUiSplitPane.start(app); + EllieUiCodeEditor.start(app); + EllieUiOutput.start(app); + Main.start(app); +}); diff --git a/assets/src/Pages/Embed/Effects.elm b/assets/src/Pages/Embed/Effects.elm index 8e7407c6..662cf780 100644 --- a/assets/src/Pages/Embed/Effects.elm +++ b/assets/src/Pages/Embed/Effects.elm @@ -1,10 +1,9 @@ -module Pages.Embed.Effects - exposing - ( embedUpdates - , getRevision - , goToPosition - , runEmbed - ) +module Pages.Embed.Effects exposing + ( embedUpdates + , getRevision + , goToPosition + , runEmbed + ) import Effect.Command as Command exposing (Command) import Effect.Subscription as Subscription exposing (Subscription) @@ -20,14 +19,14 @@ import Ellie.Api.Union.EmbedUpdate as ApiEmbedUpdate import Ellie.Constants as Constants import Elm.Error as Error exposing (Error) import Elm.Package as Package exposing (Package) -import Graphqelm.Http -import Graphqelm.SelectionSet as SelectionSet exposing (SelectionSet(..), hardcoded, with) +import Graphql.Http +import Graphql.SelectionSet as SelectionSet exposing (SelectionSet(..), hardcoded, with) import Json.Encode as Encode exposing (Value) import Pages.Embed.Types.EmbedUpdate as EmbedUpdate exposing (EmbedUpdate) import Pages.Embed.Types.Revision as Revision exposing (Revision) -getRevision : Revision.Id -> Command (Result (Graphqelm.Http.Error ()) Revision) +getRevision : Revision.Id -> Command (Result (Graphql.Http.Error ()) Revision) getRevision revisionId = let query = @@ -56,7 +55,7 @@ getRevision revisionId = } -runEmbed : Revision.Id -> Command (Result (Graphqelm.Http.Error ()) (Maybe (Maybe Error))) +runEmbed : Revision.Id -> Command (Result (Graphql.Http.Error ()) (Maybe (Maybe Error))) runEmbed revisionId = let selection = @@ -102,11 +101,12 @@ embedUpdates revisionId = ] in Subscription.AbsintheSubscription - (Constants.socketOrigin ++ "/api/sockets/websocket?vsn=2.0.0") + { url = Constants.socketOrigin ++ "/api/sockets", token = Nothing } selection (\connected -> if connected then EmbedUpdate.Connected + else EmbedUpdate.Disconnected ) @@ -118,8 +118,8 @@ goToPosition position = { channel = "GoToPosition" , debounce = Nothing , data = - Encode.list - [ Encode.int position.line - , Encode.int position.column + Encode.list Encode.int + [ position.line + , position.column ] } diff --git a/assets/src/Pages/Embed/State/App.elm b/assets/src/Pages/Embed/State/App.elm index 9395fde0..1a85e550 100644 --- a/assets/src/Pages/Embed/State/App.elm +++ b/assets/src/Pages/Embed/State/App.elm @@ -1,4 +1,4 @@ -module Pages.Embed.State.App exposing (..) +module Pages.Embed.State.App exposing (DebugState(..), Flags, Model(..), Msg(..), OutputState(..), WorkingState, flags, init, subscriptions, update) import Effect.Command as Command exposing (Command) import Effect.Subscription as Subscription exposing (Subscription) @@ -49,7 +49,7 @@ flags = init : Flags -> Route -> ( Model, Command Msg ) -init flags route = +init _ route = case route of Route.NotFound -> ( Failure, Command.none ) @@ -76,7 +76,7 @@ type Msg update : Flags -> Msg -> Model -> ( Model, Command Msg ) -update flags msg model = +update _ msg model = case ( model, msg ) of ( _, RouteChanged route ) -> init {} route @@ -94,12 +94,14 @@ update flags msg model = } , Command.none ) + else ( model, Command.none ) ( Loading rid panel, RevisionLoaded revisionId (Err error) ) -> if rid == revisionId then ( Failure, Command.none ) + else ( model, Command.none ) @@ -114,6 +116,7 @@ update flags msg model = | debug = if canDebug then NotDebugging + else DebuggerUnavailable } diff --git a/assets/src/Pages/Embed/Types/EmbedUpdate.elm b/assets/src/Pages/Embed/Types/EmbedUpdate.elm index b6d84c5f..d021a4bb 100644 --- a/assets/src/Pages/Embed/Types/EmbedUpdate.elm +++ b/assets/src/Pages/Embed/Types/EmbedUpdate.elm @@ -1,4 +1,4 @@ -module Pages.Embed.Types.EmbedUpdate exposing (..) +module Pages.Embed.Types.EmbedUpdate exposing (EmbedUpdate(..)) import Elm.Error as Error exposing (Error) diff --git a/assets/src/Pages/Embed/Types/Panel.elm b/assets/src/Pages/Embed/Types/Panel.elm index 61684697..5af6907f 100644 --- a/assets/src/Pages/Embed/Types/Panel.elm +++ b/assets/src/Pages/Embed/Types/Panel.elm @@ -1,4 +1,4 @@ -module Pages.Embed.Types.Panel exposing (..) +module Pages.Embed.Types.Panel exposing (Panel(..), eq, fromString, toString) type Panel diff --git a/assets/src/Pages/Embed/Types/Revision.elm b/assets/src/Pages/Embed/Types/Revision.elm index 5ebcacad..303043e4 100644 --- a/assets/src/Pages/Embed/Types/Revision.elm +++ b/assets/src/Pages/Embed/Types/Revision.elm @@ -1,6 +1,5 @@ -module Pages.Embed.Types.Revision exposing (..) +module Pages.Embed.Types.Revision exposing (Id, Revision, editorLink, embedLink, outputLink) -import Data.Url as Url exposing (Url) import Ellie.Constants as Constants import Elm.Package as Package exposing (Package) import Elm.Version as Version exposing (Version) @@ -19,16 +18,16 @@ type alias Revision = } -editorLink : Id -> Url +editorLink : Id -> String editorLink id = - Url.fromString <| Constants.editorBase ++ "/" ++ id + Constants.editorBase ++ "/" ++ id -embedLink : Id -> Url +embedLink : Id -> String embedLink id = - Url.fromString <| Constants.embedBase ++ "/" ++ id + Constants.embedBase ++ "/" ++ id -outputLink : Id -> Url +outputLink : Id -> String outputLink id = - Url.fromString <| Constants.serverOrigin ++ "/r/embed/" ++ id + Constants.serverOrigin ++ "/r/embed/" ++ id diff --git a/assets/src/Pages/Embed/Types/Route.elm b/assets/src/Pages/Embed/Types/Route.elm index 72ca4521..415f5445 100644 --- a/assets/src/Pages/Embed/Types/Route.elm +++ b/assets/src/Pages/Embed/Types/Route.elm @@ -1,10 +1,10 @@ module Pages.Embed.Types.Route exposing (Route(..), parse, toString) -import Data.Url.Parser as UrlParser exposing ((), (), Parser, int, map, s, string) -import Data.Url.Parser.Query as QueryParser -import Navigation import Pages.Embed.Types.Panel as Panel exposing (Panel(..)) import Pages.Embed.Types.Revision as Revision exposing (Revision) +import Url exposing (Url) +import Url.Parser as UrlParser exposing ((), (), Parser, int, map, s, string) +import Url.Parser.Query as QueryParser type Route @@ -24,19 +24,17 @@ parser = UrlParser.map Existing <| s "embed" string panel -parse : Navigation.Location -> Route -parse location = - location.href - |> UrlParser.toUrl - |> Maybe.andThen (UrlParser.parse parser) +parse : Url -> Route +parse url = + UrlParser.parse parser url |> Maybe.withDefault NotFound toString : Route -> String toString route = case route of - Existing id panel -> - "/embed/" ++ id ++ "?panel=" ++ Panel.toString panel + Existing id existingPanel -> + "/embed/" ++ id ++ "?panel=" ++ Panel.toString existingPanel NotFound -> "/embed/not-found" diff --git a/assets/src/Pages/Embed/Views/App.elm b/assets/src/Pages/Embed/Views/App.elm index a68e00c1..425324d1 100644 --- a/assets/src/Pages/Embed/Views/App.elm +++ b/assets/src/Pages/Embed/Views/App.elm @@ -1,8 +1,7 @@ module Pages.Embed.Views.App exposing (styles, title, view) import Css exposing (..) -import Css.Foreign -import Data.Url as Url +import Css.Global import Ellie.Ui.Button as Button import Ellie.Ui.CodeEditor as CodeEditor import Ellie.Ui.Errors as Errors @@ -16,6 +15,7 @@ import Html.Styled.Events as Events import Pages.Embed.State.App as AppState exposing (Model(..), Msg(..), OutputState, WorkingState) import Pages.Embed.Types.Panel as Panel exposing (Panel) import Pages.Embed.Types.Revision as Revision exposing (Revision) +import Url as Url title : Model -> String @@ -118,14 +118,14 @@ viewHeader revisionId current = , lineHeight (num 1) , textDecoration none , hover [ color Theme.accent ] - , Css.Foreign.children - [ Css.Foreign.mediaQuery [ "(max-width: 320px)" ] - [ Css.Foreign.selector "[data-extraneous]" + , Css.Global.children + [ Css.Global.mediaQuery [ "(max-width: 320px)" ] + [ Css.Global.selector "[data-extraneous]" [ display none |> important ] ] ] ] - [ Attributes.href <| Url.toString <| Revision.editorLink revisionId + [ Attributes.href <| Revision.editorLink revisionId , Attributes.target "_blank" ] [ Html.span [] [ Html.text "Edit" ] @@ -161,6 +161,7 @@ viewTab mine current = , textTransform capitalize , if Panel.eq mine current then borderBottom3 (px 2) solid Theme.tabActiveBorder + else batch [] ] @@ -254,7 +255,7 @@ viewOutput state = [] [ Output.view [ Output.html state.revision.data.htmlCode - , Output.elmSource <| Url.toString <| Revision.outputLink state.revision.id + , Output.elmSource <| Revision.outputLink state.revision.id , Output.onCanDebug CanDebugChanged , Output.debug (state.debug == AppState.Debugging) ] @@ -397,23 +398,23 @@ viewCrashed message = -- STYLES -styles : List Css.Foreign.Snippet +styles : List Css.Global.Snippet styles = - [ Css.Foreign.html + [ Css.Global.html [ height (pct 100) , backgroundColor Theme.secondaryBackground ] - , Css.Foreign.body + , Css.Global.body [ height (pct 100) , margin zero , fontFamilies [ "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica", "Arial", "sans-serif" ] , property "-webkit-font-smoothing" "antialiased" ] - , Css.Foreign.everything + , Css.Global.everything [ boxSizing borderBox ] - , Css.Foreign.button + , Css.Global.button [ focus [ outline zero ] ] - , Css.Foreign.input + , Css.Global.input [ focus [ outline zero ] ] , Theme.darkStyles ] diff --git a/assets/src/Pages/Embed/index.js b/assets/src/Pages/Embed/index.js index 0127776c..bcb8592f 100644 --- a/assets/src/Pages/Embed/index.js +++ b/assets/src/Pages/Embed/index.js @@ -1,20 +1,22 @@ -import EllieUiIcon from '../../Ellie/Ui/Icon' -import EllieUiCodeEditor from '../../Ellie/Ui/CodeEditor' -import EllieUiOutput from '../../Ellie/Ui/Output' -import NetworkSocket from '../../Network/Socket' -import EffectProgram from '../../Effect/Program' -import PagesEmbedMain from './Main' -import '../../Ellie/Ui/CodeEditor.css' -import '../../Ellie/Ui/Logo.css' -import { Pages } from './Main.elm' +import EllieUiIcon from "../../Ellie/Ui/Icon"; +import EllieUiCodeEditor from "../../Ellie/Ui/CodeEditor"; +import EllieUiOutput from "../../Ellie/Ui/Output"; +import NetworkAbsintheSocket from "../../Network/Absinthe/Socket"; +import EffectProgram from "../../Effect/Program"; +import PagesEmbedMain from "./Main"; +import "../../Ellie/Ui/CodeEditor.css"; +import "../../Ellie/Ui/Logo.css"; +import { Elm } from "./Main.elm"; -document.addEventListener('DOMContentLoaded', () => { - let flags = {} - const app = Pages.Embed.Main.fullscreen(flags) - NetworkSocket.start(app) - EffectProgram.start(app) - EllieUiOutput.start(app) - EllieUiCodeEditor.start(app) - EllieUiIcon.start(app) - PagesEmbedMain.start(app) -}) +document.addEventListener("DOMContentLoaded", () => { + let flags = {}; + + const app = Elm.Pages.Embed.Main.init({ flags }); + + NetworkAbsintheSocket.start(app); + EffectProgram.start(app); + EllieUiOutput.start(app); + EllieUiCodeEditor.start(app); + EllieUiIcon.start(app); + PagesEmbedMain.start(app); +}); diff --git a/assets/src/Platform/CustomElements.js b/assets/src/Platform/CustomElements.js index 297966d4..d3eac438 100644 --- a/assets/src/Platform/CustomElements.js +++ b/assets/src/Platform/CustomElements.js @@ -1,30 +1,32 @@ -import builtin from 'newless' +import builtin from "newless"; -let polyfillPromise = null +let polyfillPromise = null; const setup = () => { if (polyfillPromise !== null) { - return polyfillPromise + return polyfillPromise; } - if (typeof window.customElements === 'undefined') { - polyfillPromise = import(/* webpackChunkName: "custom-elements-polyfill" */ '@webcomponents/custom-elements') - .then(() => builtin(window.HTMLElement)) + if (typeof window.customElements === "undefined") { + polyfillPromise = import(/* webpackChunkName: "custom-elements-polyfill" */ "@webcomponents/custom-elements").then( + () => builtin(window.HTMLElement) + ); } else { - polyfillPromise = import(/* webpackChunkName: "custom-elements-native-shim" */ '@webcomponents/custom-elements/src/native-shim') - .then(() => { - window.HTMLElement.prototype.constructor = window.HTMLElement - return builtin(window.HTMLElement) - }) + polyfillPromise = import(/* webpackChunkName: "custom-elements-native-shim" */ "@webcomponents/custom-elements/src/native-shim").then( + () => { + window.HTMLElement.prototype.constructor = window.HTMLElement; + return builtin(window.HTMLElement); + } + ); } - return polyfillPromise -} + return polyfillPromise; +}; export default { define(name, factory) { - return setup().then((BaseClass) => { - window.customElements.define(name, factory(BaseClass)) - }) + return setup().then(BaseClass => { + window.customElements.define(name, factory(BaseClass)); + }); } -} +}; diff --git a/assets/vendor/Graphql/Document.elm b/assets/vendor/Graphql/Document.elm new file mode 100644 index 00000000..6c28e43a --- /dev/null +++ b/assets/vendor/Graphql/Document.elm @@ -0,0 +1,62 @@ +module Graphql.Document exposing (serializeQuery, serializeMutation, serializeSubscription, serializeQueryForUrl, decoder) + +{-| You'll usually want to use `Graphql.Http` to perform your queries directly. +This package provides low-level functions for generating GraphQL documents that +are helpful for debugging and demo purposes. + +@docs serializeQuery, serializeMutation, serializeSubscription, serializeQueryForUrl, decoder + +-} + +import Graphql.Document.Field as Field +import Graphql.Operation exposing (RootMutation, RootQuery, RootSubscription) +import Graphql.RawField exposing (RawField) +import Graphql.SelectionSet exposing (SelectionSet(..)) +import Json.Decode as Decode exposing (Decoder) +import String.Interpolate exposing (interpolate) + + +{-| Serialize a query selection set into a string for a GraphQL endpoint. +-} +serializeQuery : SelectionSet decodesTo RootQuery -> String +serializeQuery (SelectionSet fields decoder_) = + serialize "query" fields + + +{-| Serialize a query selection set into a string with minimal whitespace. For +use with a GET request as a query param. +-} +serializeQueryForUrl : SelectionSet decodesTo RootQuery -> String +serializeQueryForUrl (SelectionSet fields decoder_) = + "{" ++ Field.serializeChildren Nothing fields ++ "}" + + +{-| Serialize a mutation selection set into a string for a GraphQL endpoint. +-} +serializeMutation : SelectionSet decodesTo RootMutation -> String +serializeMutation (SelectionSet fields decoder_) = + serialize "mutation" fields + + +{-| Serialize a subscription selection set into a string for a GraphQL endpoint. +-} +serializeSubscription : SelectionSet decodesTo RootSubscription -> String +serializeSubscription (SelectionSet fields decoder_) = + serialize "subscription" fields + + +{-| Decoder a response from the server. This low-level function shouldn't be needed +in the majority of cases. Instead, the high-level functions in `Graphql.Http` +should be used. +-} +decoder : SelectionSet decodesTo typeLock -> Decoder decodesTo +decoder (SelectionSet fields decoder_) = + decoder_ |> Decode.field "data" + + +serialize : String -> List RawField -> String +serialize operationName queries = + interpolate """{0} { +{1} +}""" + [ operationName, Field.serializeChildren (Just 0) queries ] diff --git a/assets/vendor/Graphql/Document/Argument.elm b/assets/vendor/Graphql/Document/Argument.elm new file mode 100644 index 00000000..b2298089 --- /dev/null +++ b/assets/vendor/Graphql/Document/Argument.elm @@ -0,0 +1,24 @@ +module Graphql.Document.Argument exposing (serialize) + +import Graphql.Internal.Builder.Argument as Argument exposing (Argument(..)) +import Graphql.Internal.Encode as Encode + + +serialize : List Argument -> String +serialize args = + case args of + [] -> + "" + + nonemptyArgs -> + "(" + ++ (nonemptyArgs + |> List.map argToString + |> String.join ", " + ) + ++ ")" + + +argToString : Argument -> String +argToString (Argument name value) = + name ++ ": " ++ Encode.serialize value diff --git a/assets/vendor/Graphql/Document/Field.elm b/assets/vendor/Graphql/Document/Field.elm new file mode 100644 index 00000000..3d145599 --- /dev/null +++ b/assets/vendor/Graphql/Document/Field.elm @@ -0,0 +1,127 @@ +module Graphql.Document.Field exposing (hashedAliasName, serializeChildren) + +import Graphql.Document.Argument as Argument +import Graphql.Document.Indent as Indent +import Graphql.RawField exposing (RawField(..)) +import List.Extra +import Murmur3 + + +hashedAliasName : RawField -> String +hashedAliasName field = + field + |> alias + |> Maybe.withDefault (Graphql.RawField.name field) + + +maybeAliasHash : RawField -> Maybe String +maybeAliasHash field = + case field of + Composite name arguments children -> + if List.isEmpty arguments then + Nothing + + else + arguments + |> Argument.serialize + |> Murmur3.hashString 0 + |> String.fromInt + |> Just + + Leaf name arguments -> + if List.isEmpty arguments then + Nothing + + else + arguments + |> Argument.serialize + |> Murmur3.hashString 0 + |> String.fromInt + |> Just + + +alias : RawField -> Maybe String +alias field = + field + |> maybeAliasHash + |> Maybe.map (\aliasHash -> Graphql.RawField.name field ++ aliasHash) + + +serialize : Maybe String -> Maybe Int -> RawField -> Maybe String +serialize aliasName mIndentationLevel field = + let + prefix = + case aliasName of + Just aliasName_ -> + aliasName_ + ++ (case mIndentationLevel of + Just _ -> + ": " + + Nothing -> + ":" + ) + + Nothing -> + "" + in + (case field of + Composite fieldName args children -> + case mIndentationLevel of + Nothing -> + (fieldName + ++ Argument.serialize args + ++ "{" + ++ serializeChildren Nothing children + ) + ++ "}" + |> Just + + Just indentationLevel -> + (fieldName + ++ Argument.serialize args + ++ " {\n" + ++ serializeChildren (Just indentationLevel) children + ) + ++ "\n" + ++ Indent.generate indentationLevel + ++ "}" + |> Just + + Leaf fieldName args -> + Just (fieldName ++ Argument.serialize args) + ) + |> Maybe.map + (\string -> + Indent.generate (mIndentationLevel |> Maybe.withDefault 0) + ++ prefix + ++ string + ) + + +serializeChildren : Maybe Int -> List RawField -> String +serializeChildren indentationLevel children = + children + |> nonemptyChildren + |> List.indexedMap + (\index field -> + serialize (alias field) (indentationLevel |> Maybe.map ((+) 1)) field + ) + |> List.filterMap identity + |> String.join + (case indentationLevel of + Just _ -> + "\n" + + Nothing -> + " " + ) + + +nonemptyChildren : List RawField -> List RawField +nonemptyChildren children = + if List.isEmpty children then + Graphql.RawField.typename :: children + + else + children diff --git a/assets/vendor/Graphql/Document/Indent.elm b/assets/vendor/Graphql/Document/Indent.elm new file mode 100644 index 00000000..8cfafe4b --- /dev/null +++ b/assets/vendor/Graphql/Document/Indent.elm @@ -0,0 +1,15 @@ +module Graphql.Document.Indent exposing (generate) + + +generate : Int -> String +generate indentationLevel = + spaces (indentationLevel * 2) + + +spaces : Int -> String +spaces n = + if n > 0 then + " " ++ spaces (n - 1) + + else + "" diff --git a/assets/vendor/Graphql/Field.elm b/assets/vendor/Graphql/Field.elm new file mode 100644 index 00000000..630ebff7 --- /dev/null +++ b/assets/vendor/Graphql/Field.elm @@ -0,0 +1,178 @@ +module Graphql.Field exposing + ( map + , mapOrFail, nonNullOrFail, nonNullElementsOrFail + , Field(..) + ) + +{-| `Field`s are automatically generated by the `@dillonkearns/elm-graphql` CLI command. +You can use `Graphql.Field.map` to transform a value. + + +## Safe Transformations + +@docs map + + +## Result (`...OrFail`) Transformations + +**Warning** When you use these functions, you lose the guarantee that the +server response will decode successfully. + +These helpers, though convenient, will cause your entire decoder to fail if +it ever maps to an `Err` instead of an `Ok` `Result`. + +@docs mapOrFail, nonNullOrFail, nonNullElementsOrFail + + +## Types + +@docs Field + +-} + +import Graphql.RawField as Field exposing (RawField) +import Json.Decode as Decode exposing (Decoder) + + +{-| -} +type Field decodesTo typeLock + = Field RawField (Decoder decodesTo) + + +{-| Maps the data coming back from the GraphQL endpoint. In this example, +`User.name` is a function that the `@dillonkearns/elm-graphql` CLI tool created which tells us +that the `name` field on a `User` object is a String according to your GraphQL +schema. + + import Api.Object + import Api.Object.User as User + import Graphql.Field as Field + import Graphql.SelectionSet exposing (SelectionSet, with) + + human : SelectionSet String Api.Object.User + human = + User.selection identity + |> with + (User.name + |> Field.map String.toUpper + ) + +You can also map to values of a different type (`String -> Int`, for example), see +[`examples/StarWars.elm`](https://github.com/dillonkearns/elm-graphql/blob/master/examples/src/Starwars.elm) for more advanced example. + +-} +map : (decodesTo -> mapsTo) -> Field decodesTo typeLock -> Field mapsTo typeLock +map mapFunction (Field field decoder) = + Field field (Decode.map mapFunction decoder) + + +{-| If the map function provided returns an `Ok` `Result`, it will map to that value. +If it returns an `Err`, the _entire_ response will fail to decode. + + import Date exposing (Date) + import Github.Object + import Github.Object.Repository + import Github.Scalar + import Graphql.Field as Field exposing (Field) + + createdAt : Field Date Github.Object.Repository + createdAt = + Github.Object.Repository.createdAt + |> Field.mapOrFail + (\(Github.Scalar.DateTime dateTime) -> + Date.fromString dateTime + ) + +-} +mapOrFail : (decodesTo -> Result String mapsTo) -> Field decodesTo typeLock -> Field mapsTo typeLock +mapOrFail mapFunction (Field field decoder) = + decoder + |> Decode.map mapFunction + |> Decode.andThen + (\result -> + case result of + Ok value -> + Decode.succeed value + + Err errorMessage -> + Decode.fail ("Check your code for calls to mapOrFail, your map function returned an `Err` with the message: " ++ errorMessage) + ) + |> Field field + + +{-| Effectively turns an attribute that is `String` => `String!`, or `User` => +`User!` (if you're not familiar with the GraphQL type language notation, learn more +[here](http://graphql.org/learn/schema/#type-language)). + +This will cause your _entire_ decoder to fail if the field comes back as null. +It's far better to fix your schema then to use this escape hatch! + +-} +nonNullOrFail : Field (Maybe decodesTo) typeLock -> Field decodesTo typeLock +nonNullOrFail (Field field decoder) = + decoder + |> Decode.andThen + (\result -> + case result of + Just value -> + Decode.succeed value + + Nothing -> + Decode.fail "Expected non-null but got null, check for calls to nonNullOrFail in your code. Ideally your schema should indicate that this is non-nullable so you don't need to use nonNullOrFail at all." + ) + |> Field field + + +{-| Effectively turns a field that is `[String]` => `[String!]`, or `[User]` => +`[User!]` (if you're not familiar with the GraphQL type language notation, learn more +[here](http://graphql.org/learn/schema/#type-language)). + +This will cause your _entire_ decoder to fail if any elements in the list for this +field comes back as null. +It's far better to fix your schema then to use this escape hatch! + +Often GraphQL schemas will contain things like `[String]` (i.e. a nullable list +of nullable strings) when they really mean `[String!]!` (a non-nullable list of +non-nullable strings). You can chain together these nullable helpers if for some +reason you can't go in and fix this in the schema, for example: + + releases : SelectionSet (List Release) Github.Object.ReleaseConnection + releases = + Github.Object.ReleaseConnection.selection identity + |> with + (Github.Object.ReleaseConnection.nodes release + |> Field.nonNullOrFail + |> Field.nonNullElementsOrFail + ) + +Without the `Field.nonNull...` transformations here, the type would be +`SelectionSet (Maybe (List (Maybe Release))) Github.Object.ReleaseConnection`. + +-} +nonNullElementsOrFail : Field (List (Maybe decodesTo)) typeLock -> Field (List decodesTo) typeLock +nonNullElementsOrFail (Field field decoder) = + decoder + |> Decode.andThen + (\result -> + case combineMaybeList result of + Nothing -> + Decode.fail "Expected only non-null list elements but found a null. Check for calls to nonNullElementsOrFail in your code. Ideally your schema should indicate that this is non-nullable so you don't need to use nonNullElementsOrFail at all." + + Just listWithoutNulls -> + Decode.succeed listWithoutNulls + ) + |> Field field + + +combineMaybeList : List (Maybe a) -> Maybe (List a) +combineMaybeList listOfMaybes = + let + step maybeElement accumulator = + case maybeElement of + Nothing -> + Nothing + + Just element -> + Maybe.map ((::) element) accumulator + in + List.foldr step (Just []) listOfMaybes diff --git a/assets/vendor/Graphql/Http.elm b/assets/vendor/Graphql/Http.elm new file mode 100644 index 00000000..a9c197e7 --- /dev/null +++ b/assets/vendor/Graphql/Http.elm @@ -0,0 +1,480 @@ +module Graphql.Http exposing + ( Request, Error(..) + , queryRequest, mutationRequest, queryRequestWithHttpGet + , QueryRequestMethod(..) + , withHeader, withTimeout, withCredentials, withQueryParams + , send, toTask + , mapError, ignoreParsedErrorData, fromHttpError, discardParsedErrorData + , parseableErrorAsSuccess + ) + +{-| Send requests to your GraphQL endpoint. See [this live code demo](https://rebrand.ly/graphqelm) +or the [`examples/`](https://github.com/dillonkearns/elm-graphql/tree/master/examples) +folder for some end-to-end examples. +The builder syntax is inspired by Luke Westby's +[elm-http-builder package](http://package.elm-lang.org/packages/lukewestby/elm-http-builder/latest). + + +## Data Types + +@docs Request, Error + + +## Begin `Request` Pipeline + +@docs queryRequest, mutationRequest, queryRequestWithHttpGet +@docs QueryRequestMethod + + +## Configure `Request` Options + +@docs withHeader, withTimeout, withCredentials, withQueryParams + + +## Perform `Request` + +@docs send, toTask + + +## Map `Error`s + +@docs mapError, ignoreParsedErrorData, fromHttpError, discardParsedErrorData + + +## Error Handling Strategies + +There are 3 possible strategies to handle GraphQL errors. + +1. **`parseableErrorAsSuccess`** If there is a GraphQL error (and the data was + complete enough for the decoder to run successfully), pretend that there was + no error at all. +2. **Not Implemented** If there is a GraphQL error pretend it was a network error. + There is currently no implementation for this strategy, if you think this + would come in handy, please open a Github issue to describe your use case! +3. **Default** This gives you full control. You get an accurate and exact + picture of what happened (got a GraphQL error & could parse the body, got a + GraphQL error and couldn't parse the body, got an http error, or got + everything was successful). And you can handle each case explicitly. + +@docs parseableErrorAsSuccess + +-} + +import Graphql.Document as Document +import Graphql.Http.GraphqlError as GraphqlError +import Graphql.Http.QueryHelper as QueryHelper +import Graphql.Http.QueryParams as QueryParams +import Graphql.Operation exposing (RootMutation, RootQuery) +import Graphql.SelectionSet exposing (SelectionSet) +import Http +import Json.Decode +import Json.Encode +import Task exposing (Task) + + +{-| An internal request as it's built up. Once it's built up, send the +request with `Graphql.Http.send`. +-} +type Request decodesTo + = Request + { details : Details decodesTo + , headers : List Http.Header + , baseUrl : String + , expect : Json.Decode.Decoder decodesTo + , timeout : Maybe Float + , withCredentials : Bool + , queryParams : List ( String, String ) + } + + +{-| Union type to pass in to `queryRequestWithHttpGet`. Only applies to queries. +Mutations don't accept this configuration option and will always use POST. +-} +type QueryRequestMethod + = AlwaysGet + | GetIfShortEnough + + +type Details decodesTo + = Query (Maybe QueryRequestMethod) (SelectionSet decodesTo RootQuery) + | Mutation (SelectionSet decodesTo RootMutation) + + +{-| Initialize a basic request from a Query. You can add on options with `withHeader`, +`withTimeout`, `withCredentials`, and send it with `Graphql.Http.send`. +-} +queryRequest : String -> SelectionSet decodesTo RootQuery -> Request decodesTo +queryRequest baseUrl query = + { headers = [] + , baseUrl = baseUrl + , expect = Document.decoder query + , timeout = Nothing + , withCredentials = False + , details = Query Nothing query + , queryParams = [] + } + |> Request + + +{-| Exactly like `queryRequest`, but with an option to use the HTTP GET request +method. You will probably want to use `GetIfShortEnough`, which uses GET if the +full URL ends up being under 2000 characters, or POST otherwise, since [some browsers +don't support URLs over a certain length](https://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string?noredirect=1&lq=1). +`GetIfShortEnough` will typically do what you need. If you must use GET no matter +what when hitting your endpoint, you can use `AlwaysGet`. + +`queryRequest` always uses POST since some GraphQL API's don't support GET +requests (for example, the Github API assumes that you are doing an introspection +query if you make a GET request). But for semantic reasons, GET requests +are sometimes useful for sending GraphQL Query requests. That is, a GraphQL Query +does not perform side-effects on the server like a Mutation does, so a GET +indicates this and allows some servers to cache requests. See +[this github thread from the Apollo project](https://github.com/apollographql/apollo-client/issues/813) +for more details. + +-} +queryRequestWithHttpGet : String -> QueryRequestMethod -> SelectionSet decodesTo RootQuery -> Request decodesTo +queryRequestWithHttpGet baseUrl requestMethod query = + { headers = [] + , baseUrl = baseUrl + , expect = Document.decoder query + , timeout = Nothing + , withCredentials = False + , details = Query (Just requestMethod) query + , queryParams = [] + } + |> Request + + +{-| Initialize a basic request from a Mutation. You can add on options with `withHeader`, +`withTimeout`, `withCredentials`, and send it with `Graphql.Http.send`. +-} +mutationRequest : String -> SelectionSet decodesTo RootMutation -> Request decodesTo +mutationRequest baseUrl mutationSelectionSet = + { details = Mutation mutationSelectionSet + , headers = [] + , baseUrl = baseUrl + , expect = Document.decoder mutationSelectionSet + , timeout = Nothing + , withCredentials = False + , queryParams = [] + } + |> Request + + +{-| Represents the two types of errors you can get, an Http error or a GraphQL error. +See the `Graphql.Http.GraphqlError` module docs for more details. +-} +type Error parsedData + = GraphqlError (GraphqlError.PossiblyParsedData parsedData) (List GraphqlError.GraphqlError) + | HttpError Http.Error + + +{-| Map the error data if it is `ParsedData`. +-} +mapError : (a -> b) -> Error a -> Error b +mapError mapFn error = + case error of + GraphqlError possiblyParsedData graphqlErrorList -> + case possiblyParsedData of + GraphqlError.ParsedData parsedData -> + GraphqlError (GraphqlError.ParsedData (mapFn parsedData)) graphqlErrorList + + GraphqlError.UnparsedData unparsedData -> + GraphqlError (GraphqlError.UnparsedData unparsedData) graphqlErrorList + + HttpError httpError -> + HttpError httpError + + +{-| Turn an `Http.Error` into a `Graphql.Http.Error`. +-} +fromHttpError : Http.Error -> Error () +fromHttpError httpError = + HttpError httpError + + +{-| Useful when you don't want to deal with the recovered data if there is `ParsedData`. +Just a shorthand for `mapError` that will turn any `ParsedData` into `()`. +-} +ignoreParsedErrorData : Error parsedData -> Error () +ignoreParsedErrorData error = + mapError (\_ -> ()) error + + +{-| Useful when you don't want to deal with the recovered data if there is `ParsedData`. +Just a shorthand for `mapError` that will turn any `ParsedData` into `()`. + +This is helpful if you want to simplify your types, or if you are combining multiple +results together and you need the error types to line up (but you don't care about +recovering parsed data when there are GraphQL errors in the response). + +In the examples below, notice the error type is now `(Graphql.Http.Error ())`. + +You can use this when you call `Graphql.Http.send` like so: + + import Graphql.Http + + type Msg + = GotResponse (Result (Graphql.Http.Error ()) Response) + + makeRequest = + query + |> Graphql.Http.queryRequest "http://elm-graphql.herokuapp.com" + |> Graphql.Http.send + (Graphql.Http.discardParsedErrorData + >> RemoteData.fromResult + >> GotResponse + ) + +Or if you are using the RemoteData package: + + import Graphql.Http + import RemoteData exposing (RemoteData) + + type Msg + = GotResponse (RemoteData (Graphql.Http.Error ()) Response) + + makeRequest = + query + |> Graphql.Http.queryRequest "http://elm-graphql.herokuapp.com" + |> Graphql.Http.send + (Graphql.Http.discardParsedErrorData + >> RemoteData.fromResult + >> GotResponse + ) + +-} +discardParsedErrorData : Result (Error decodesTo) decodesTo -> Result (Error ()) decodesTo +discardParsedErrorData result = + Result.mapError + (mapError (\_ -> ())) + result + + +{-| WARNING: When using this function you lose information. Make sure this is +the approach you want before using this. + +Treat responses with GraphQL errors as successful responses if the data can +be parsed. If you want to use the successfully decoded data without ignoring the +GraphQL error you can do a pattern match on the `Graphql.Http.Error` type +(it contains `PossiblyParsedData` which is either unparsed with a raw +`Json.Decode.Value` or else it contains successfully decoded data). + +-} +parseableErrorAsSuccess : Result (Error decodesTo) decodesTo -> Result (Error ()) decodesTo +parseableErrorAsSuccess result = + case result of + Ok value -> + Ok value + + Err error -> + case error of + GraphqlError possiblyParsedData errors -> + case possiblyParsedData of + GraphqlError.ParsedData parsedData -> + Ok parsedData + + GraphqlError.UnparsedData jsonValue -> + GraphqlError (GraphqlError.UnparsedData jsonValue) errors + |> Err + + HttpError httpError -> + HttpError httpError + |> Err + + +type alias DataResult parsedData = + Result ( GraphqlError.PossiblyParsedData parsedData, List GraphqlError.GraphqlError ) parsedData + + +convertResult : Result Http.Error (DataResult decodesTo) -> Result (Error decodesTo) decodesTo +convertResult httpResult = + case httpResult of + Ok successOrError -> + case successOrError of + Ok value -> + Ok value + + Err ( possiblyParsedData, error ) -> + Err (GraphqlError possiblyParsedData error) + + Err httpError -> + Err (HttpError httpError) + + +{-| Send the `Graphql.Request` +You can use it on its own, or with a library like +[RemoteData](http://package.elm-lang.org/packages/krisajenkins/remotedata/latest/). + + import Graphql.Http + import Graphql.OptionalArgument exposing (OptionalArgument(..)) + import RemoteData exposing (RemoteData) + + type Msg + = GotResponse RemoteData (Graphql.Http.Error Response) Response + + makeRequest : Cmd Msg + makeRequest = + query + |> Graphql.Http.queryRequest "https://elm-graphql.herokuapp.com/" + |> Graphql.Http.withHeader "authorization" "Bearer abcdefgh12345678" + -- If you're not using remote data, it's just + -- |> Graphql.Http.send GotResponse + -- With remote data, it's as below + |> Graphql.Http.send (RemoteData.fromResult >> GotResponse) + +If any errors are present, you will get a `GraphqlError` that includes the details. +GraphQL allows for partial data to be returned in the case of errors so you can +inspect the data returned in the `GraphqlError` if you would like to try to recover +any data that made it through in the response. + +-} +send : (Result (Error decodesTo) decodesTo -> msg) -> Request decodesTo -> Cmd msg +send resultToMessage elmGraphqlRequest = + elmGraphqlRequest + |> toRequest + |> Http.send (convertResult >> resultToMessage) + + +toRequest : Request decodesTo -> Http.Request (DataResult decodesTo) +toRequest (Request request) = + (case request.details of + Query forcedRequestMethod querySelectionSet -> + let + queryRequestDetails = + QueryHelper.build + (case forcedRequestMethod of + Just AlwaysGet -> + Just QueryHelper.Get + + Just GetIfShortEnough -> + Nothing + + Nothing -> + Just QueryHelper.Post + ) + request.baseUrl + request.queryParams + querySelectionSet + in + { method = + case queryRequestDetails.method of + QueryHelper.Get -> + "GET" + + QueryHelper.Post -> + "Post" + , headers = request.headers + , url = queryRequestDetails.url + , body = queryRequestDetails.body + , expect = Http.expectJson (decoderOrError request.expect) + , timeout = request.timeout + , withCredentials = request.withCredentials + } + + Mutation mutationSelectionSet -> + { method = "POST" + , headers = request.headers + , url = request.baseUrl |> QueryParams.urlWithQueryParams request.queryParams + , body = + Http.jsonBody + (Json.Encode.object + [ ( "query" + , Json.Encode.string (Document.serializeMutation mutationSelectionSet) + ) + ] + ) + , expect = Http.expectJson (decoderOrError request.expect) + , timeout = request.timeout + , withCredentials = request.withCredentials + } + ) + |> Http.request + + +{-| Convert a Request to a Task. See `Graphql.Http.send` for an example of +how to build up a Request. +-} +toTask : Request decodesTo -> Task (Error decodesTo) decodesTo +toTask request = + request + |> toRequest + |> Http.toTask + |> Task.mapError HttpError + |> Task.andThen failTaskOnHttpSuccessWithErrors + + +failTaskOnHttpSuccessWithErrors : DataResult decodesTo -> Task (Error decodesTo) decodesTo +failTaskOnHttpSuccessWithErrors successOrError = + case successOrError of + Ok value -> + Task.succeed value + + Err ( possiblyParsedData, graphqlErrorGraphqlErrorList ) -> + Task.fail (GraphqlError possiblyParsedData graphqlErrorGraphqlErrorList) + + +decoderOrError : Json.Decode.Decoder a -> Json.Decode.Decoder (DataResult a) +decoderOrError decoder = + Json.Decode.oneOf + [ errorDecoder decoder + , decoder |> Json.Decode.map Ok + ] + + +errorDecoder : Json.Decode.Decoder a -> Json.Decode.Decoder (DataResult a) +errorDecoder decoder = + Json.Decode.oneOf + [ decoder |> Json.Decode.map GraphqlError.ParsedData |> Json.Decode.andThen decodeErrorWithData + , Json.Decode.field "data" Json.Decode.value |> Json.Decode.map GraphqlError.UnparsedData |> Json.Decode.andThen decodeErrorWithData + ] + + +decodeErrorWithData : GraphqlError.PossiblyParsedData a -> Json.Decode.Decoder (DataResult a) +decodeErrorWithData data = + GraphqlError.decoder |> Json.Decode.map (Tuple.pair data) |> Json.Decode.map Err + + +{-| Add a header. + + makeRequest : Cmd Msg + makeRequest = + query + |> Graphql.Http.queryRequest "https://api.github.com/graphql" + |> Graphql.Http.withHeader "authorization" "Bearer " + |> Graphql.Http.send (RemoteData.fromResult >> GotResponse) + +-} +withHeader : String -> String -> Request decodesTo -> Request decodesTo +withHeader key value (Request request) = + Request { request | headers = Http.header key value :: request.headers } + + +{-| Add query params. The values will be Uri encoded. + + makeRequest : Cmd Msg + makeRequest = + query + |> Graphql.Http.queryRequest "https://api.github.com/graphql" + |> Graphql.Http.withQueryParams [ ( "version", "1.2.3" ) ] + |> Graphql.Http.send (RemoteData.fromResult >> GotResponse) + +-} +withQueryParams : List ( String, String ) -> Request decodesTo -> Request decodesTo +withQueryParams additionalQueryParams (Request request) = + Request { request | queryParams = request.queryParams ++ additionalQueryParams } + + +{-| Add a timeout. +-} +withTimeout : Float -> Request decodesTo -> Request decodesTo +withTimeout timeout (Request request) = + Request { request | timeout = Just timeout } + + +{-| Set with credentials to true. +-} +withCredentials : Request decodesTo -> Request decodesTo +withCredentials (Request request) = + Request { request | withCredentials = True } diff --git a/assets/vendor/Graphql/Http/GraphqlError.elm b/assets/vendor/Graphql/Http/GraphqlError.elm new file mode 100644 index 00000000..cee2617f --- /dev/null +++ b/assets/vendor/Graphql/Http/GraphqlError.elm @@ -0,0 +1,71 @@ +module Graphql.Http.GraphqlError exposing (GraphqlError, decoder, Location, PossiblyParsedData(..)) + +{-| + +@docs GraphqlError, decoder, Location, PossiblyParsedData + +-} + +import Dict exposing (Dict) +import Json.Decode as Decode exposing (Decoder) + + +{-| Represents an error from the GraphQL endpoint. Also see `Graphql.Http`. + +The code generated by `dillonkearns/elm-graphql` +guarantees that your requests are valid according to the server's schema, so +the two cases where you will get a GraphqlError are 1) when there is an implicit +constraint that the schema doesn't specify, or 2) when your generated code is +out of date with the schema. + +See the +[Errors section in the GraphQL spec](http://facebook.github.io/graphql/October2016/#sec-Errors). +for more details about GraphQL errors. + +-} +type alias GraphqlError = + { message : String + , locations : Maybe (List Location) + , details : Dict String Decode.Value + } + + +{-| Represents the `data` field in cases where there is an error present, see +[the error section in the GraphQL spec](http://facebook.github.io/graphql/October2016/#sec-Data). +If the decoder succeeds you will end up with `ParsedData`. If it fails, you +will get an `UnparsedData` with a `Json.Decode.Value` containing the raw, undecoded +`data` field. You're likely to end up with `UnparsedData` since +[GraphQL will return `null` if there is an error on a non-nullable field](http://facebook.github.io/graphql/October2016/#sec-Errors-and-Non-Nullability) +, which will cause the decode pipeline to fail and give you `UnparsedData`. +-} +type PossiblyParsedData parsed + = ParsedData parsed + | UnparsedData Decode.Value + + +{-| For internal use only. +-} +decoder : Decoder (List GraphqlError) +decoder = + Decode.map3 GraphqlError + (Decode.field "message" Decode.string) + (Decode.maybe (Decode.field "locations" (Decode.list locationDecoder))) + (Decode.dict Decode.value + |> Decode.map (Dict.remove "message") + |> Decode.map (Dict.remove "locations") + ) + |> Decode.list + |> Decode.field "errors" + + +{-| The location in the GraphQL query document where the error occured +-} +type alias Location = + { line : Int, column : Int } + + +locationDecoder : Decode.Decoder Location +locationDecoder = + Decode.map2 Location + (Decode.field "line" Decode.int) + (Decode.field "column" Decode.int) diff --git a/assets/vendor/Graphql/Http/QueryHelper.elm b/assets/vendor/Graphql/Http/QueryHelper.elm new file mode 100644 index 00000000..02d7a38e --- /dev/null +++ b/assets/vendor/Graphql/Http/QueryHelper.elm @@ -0,0 +1,48 @@ +module Graphql.Http.QueryHelper exposing (HttpMethod(..), build) + +import Graphql.Document as Document +import Graphql.Http.QueryParams as QueryParams +import Graphql.Operation exposing (RootMutation, RootQuery) +import Graphql.SelectionSet as SelectionSet exposing (SelectionSet) +import Http +import Json.Encode + + +type HttpMethod + = Get + | Post + + +type alias QueryRequest = + { method : HttpMethod + , url : String + , body : Http.Body + } + + +type alias QueryParam = + ( String, String ) + + +maxLength : number +maxLength = + 2000 + + +build : Maybe HttpMethod -> String -> List QueryParam -> SelectionSet decodesTo RootQuery -> QueryRequest +build forceMethod url queryParams queryDocument = + let + urlForGetRequest = + QueryParams.urlWithQueryParams (queryParams ++ [ ( "query", Document.serializeQueryForUrl queryDocument ) ]) url + in + if forceMethod == Just Post || (String.length urlForGetRequest >= maxLength && forceMethod /= Just Get) then + { method = Post + , url = QueryParams.urlWithQueryParams [] url + , body = Http.jsonBody (Json.Encode.object [ ( "query", Json.Encode.string (Document.serializeQuery queryDocument) ) ]) + } + + else + { method = Get + , url = urlForGetRequest + , body = Http.emptyBody + } diff --git a/assets/vendor/Graphql/Http/QueryParams.elm b/assets/vendor/Graphql/Http/QueryParams.elm new file mode 100644 index 00000000..00b33a07 --- /dev/null +++ b/assets/vendor/Graphql/Http/QueryParams.elm @@ -0,0 +1,32 @@ +module Graphql.Http.QueryParams exposing (urlWithQueryParams) + +import Url + + +urlWithQueryParams : List ( String, String ) -> String -> String +urlWithQueryParams queryParams url = + if List.isEmpty queryParams then + url + + else + url ++ "?" ++ joinUrlEncoded queryParams + + +joinUrlEncoded : List ( String, String ) -> String +joinUrlEncoded args = + String.join "&" (List.map queryPair args) + + +queryPair : ( String, String ) -> String +queryPair ( key, value ) = + queryEscape key ++ "=" ++ queryEscape value + + +queryEscape : String -> String +queryEscape = + Url.percentEncode >> replace "%20" "+" + + +replace : String -> String -> String -> String +replace old new = + String.split old >> String.join new diff --git a/assets/vendor/Graphql/Internal/Builder/Argument.elm b/assets/vendor/Graphql/Internal/Builder/Argument.elm new file mode 100644 index 00000000..79da074f --- /dev/null +++ b/assets/vendor/Graphql/Internal/Builder/Argument.elm @@ -0,0 +1,43 @@ +module Graphql.Internal.Builder.Argument exposing (Argument(..), optional, required) + +{-| **WARNING** `Graphql.Interal` modules are used by the `@dillonkearns/elm-graphql` command line +code generator tool. They should not be consumed through hand-written code. + +Internal functions for use by auto-generated code from the `@dillonkearns/elm-graphql` CLI. + +@docs Argument, optional, required + +-} + +import Graphql.Internal.Encode as Encode exposing (Value) +import Graphql.OptionalArgument as OptionalArgument exposing (OptionalArgument) + + +{-| Argument type. +-} +type Argument + = Argument String Value + + +{-| Used for passing optional arguments in generated code. +-} +optional : String -> OptionalArgument a -> (a -> Value) -> Maybe Argument +optional fieldName maybeValue toValue = + case maybeValue of + OptionalArgument.Present value -> + Argument fieldName (toValue value) + |> Just + + OptionalArgument.Absent -> + Nothing + + OptionalArgument.Null -> + Argument fieldName Encode.null + |> Just + + +{-| Used for passing required arguments in generated code. +-} +required : String -> a -> (a -> Value) -> Argument +required fieldName raw encode = + Argument fieldName (encode raw) diff --git a/assets/vendor/Graphql/Internal/Builder/Object.elm b/assets/vendor/Graphql/Internal/Builder/Object.elm new file mode 100644 index 00000000..b569a7fe --- /dev/null +++ b/assets/vendor/Graphql/Internal/Builder/Object.elm @@ -0,0 +1,130 @@ +module Graphql.Internal.Builder.Object exposing (fieldDecoder, selection, selectionField, interfaceSelection, unionSelection, scalarDecoder) + +{-| **WARNING** `Graphql.Interal` modules are used by the `@dillonkearns/elm-graphql` command line +code generator tool. They should not be consumed through hand-written code. + +Internal functions for use by auto-generated code from the `@dillonkearns/elm-graphql` CLI. + +@docs fieldDecoder, selection, selectionField, interfaceSelection, unionSelection, scalarDecoder + +-} + +import Dict +import Graphql.Field as Field exposing (Field(..)) +import Graphql.Internal.Builder.Argument exposing (Argument) +import Graphql.RawField exposing (RawField) +import Graphql.SelectionSet exposing (FragmentSelectionSet(..), SelectionSet(..)) +import Json.Decode as Decode exposing (Decoder) + + +{-| Decoder for scalars for use in auto-generated code. +-} +scalarDecoder : Decoder String +scalarDecoder = + Decode.oneOf + [ Decode.string + , Decode.float |> Decode.map String.fromFloat + , Decode.int |> Decode.map String.fromInt + , Decode.bool + |> Decode.map + (\bool -> + case bool of + True -> + "true" + + False -> + "false" + ) + ] + + +{-| Refer to a field in auto-generated code. +-} +fieldDecoder : String -> List Argument -> Decoder decodesTo -> Field decodesTo lockedTo +fieldDecoder fieldName args decoder = + Field (leaf fieldName args) decoder + + +{-| Refer to an object in auto-generated code. +-} +selectionField : + String + -> List Argument + -> SelectionSet a objectTypeLock + -> (Decoder a -> Decoder b) + -> Field b lockedTo +selectionField fieldName args (SelectionSet fields decoder) decoderTransform = + Field (composite fieldName args fields) (decoderTransform decoder) + + +composite : String -> List Argument -> List RawField -> RawField +composite fieldName args fields = + Graphql.RawField.Composite fieldName args fields + + +leaf : String -> List Argument -> RawField +leaf fieldName args = + Graphql.RawField.Leaf fieldName args + + +{-| Used to create the `selection` functions in auto-generated code. +-} +selection : (a -> constructor) -> SelectionSet (a -> constructor) typeLock +selection constructor = + SelectionSet [] (Decode.succeed constructor) + + +{-| Used to create the `selection` functions in auto-generated code for interfaces. +-} +interfaceSelection : List (FragmentSelectionSet typeSpecific typeLock) -> (Maybe typeSpecific -> a -> b) -> SelectionSet (a -> b) typeLock +interfaceSelection typeSpecificSelections constructor = + let + typeNameDecoder = + \typeName -> + typeSpecificSelections + |> List.map (\(FragmentSelectionSet thisTypeName fields decoder) -> ( thisTypeName, decoder )) + |> Dict.fromList + |> Dict.get typeName + |> Maybe.map (Decode.map Just) + |> Maybe.withDefault (Decode.succeed Nothing) + + selections = + typeSpecificSelections + |> List.map (\(FragmentSelectionSet typeName fields decoder) -> composite ("...on " ++ typeName) [] fields) + in + SelectionSet (leaf "__typename" [] :: selections) + (Decode.map2 (|>) + (Decode.string + |> Decode.field "__typename" + |> Decode.andThen typeNameDecoder + ) + (Decode.succeed constructor) + ) + + +{-| Used to create the `selection` functions in auto-generated code for unions. +-} +unionSelection : List (FragmentSelectionSet typeSpecific typeLock) -> (Maybe typeSpecific -> a) -> SelectionSet a typeLock +unionSelection typeSpecificSelections constructor = + let + typeNameDecoder = + \typeName -> + typeSpecificSelections + |> List.map (\(FragmentSelectionSet thisTypeName fields decoder) -> ( thisTypeName, decoder )) + |> Dict.fromList + |> Dict.get typeName + |> Maybe.map (Decode.map Just) + |> Maybe.withDefault (Decode.succeed Nothing) + + selections = + typeSpecificSelections + |> List.map (\(FragmentSelectionSet typeName fields decoder) -> composite ("...on " ++ typeName) [] fields) + in + SelectionSet (leaf "__typename" [] :: selections) + (Decode.map2 (|>) + (Decode.string + |> Decode.field "__typename" + |> Decode.andThen typeNameDecoder + ) + (Decode.succeed constructor) + ) diff --git a/assets/vendor/Graphql/Internal/Encode.elm b/assets/vendor/Graphql/Internal/Encode.elm new file mode 100644 index 00000000..e82a439d --- /dev/null +++ b/assets/vendor/Graphql/Internal/Encode.elm @@ -0,0 +1,157 @@ +module Graphql.Internal.Encode exposing + ( null, bool, enum, int, list, string, object, maybe, maybeObject, optional, float + , serialize + , Value + ) + +{-| **WARNING** `Graphql.Interal` modules are used by the `@dillonkearns/elm-graphql` command line +code generator tool. They should not be consumed through hand-written code. + +`Graphql.Internal.Encode.Value`s are low-level details used by generated code. +They are only used by the code generated by the `@dillonkearns/elm-graphql` CLI tool. + +@docs null, bool, enum, int, list, string, object, maybe, maybeObject, optional, float +@docs serialize +@docs Value + +-} + +import Graphql.OptionalArgument as OptionalArgument exposing (OptionalArgument) +import Json.Encode + + +{-| Represents an encoded Value +-} +type Value + = EnumValue String + | Json Json.Encode.Value + | List (List Value) + | Object (List ( String, Value )) + + +{-| Encode a list of key-value pairs into an object +-} +object : List ( String, Value ) -> Value +object value = + Object value + + +{-| Encode a list of key-value pairs into an object +-} +maybeObject : List ( String, Maybe Value ) -> Value +maybeObject maybeValues = + maybeValues + |> List.filterMap + (\( key, value ) -> + case value of + Just actualValue -> + Just ( key, actualValue ) + + Nothing -> + Nothing + ) + |> Object + + +{-| Encode a list of key-value pairs into an object +-} +optional : OptionalArgument a -> (a -> Value) -> Maybe Value +optional optionalValue toValue = + case optionalValue of + OptionalArgument.Present value -> + toValue value + |> Just + + OptionalArgument.Absent -> + Nothing + + OptionalArgument.Null -> + Just null + + +{-| Encode an int +-} +int : Int -> Value +int value = + Json.Encode.int value + |> Json + + +{-| Encode a float +-} +float : Float -> Value +float value = + Json.Encode.float value + |> Json + + +{-| Encode null +-} +null : Value +null = + Json.Encode.null + |> Json + + +{-| Encode a bool +-} +bool : Bool -> Value +bool value = + Json.Encode.bool value + |> Json + + +{-| Encode a string +-} +string : String -> Value +string value = + Json.Encode.string value + |> Json + + +{-| Encode an enum. The first argument is the toString function for that enum. +-} +enum : (a -> String) -> a -> Value +enum enumToString value = + EnumValue (enumToString value) + + +{-| Encode a list of Values +-} +list : (a -> Value) -> List a -> Value +list toValue value = + value + |> List.map toValue + |> List + + +{-| Encode a Maybe. Uses encoder for `Just`, or `Encode.null` for `Nothing`. +-} +maybe : (a -> Value) -> Maybe a -> Value +maybe encoder = + Maybe.map encoder >> Maybe.withDefault null + + +{-| Low-level function for serializing a `Graphql.Internal.Encode.Value`s. +-} +serialize : Value -> String +serialize value = + case value of + EnumValue enumValue -> + enumValue + + Json json -> + Json.Encode.encode 0 json + + List values -> + "[" + ++ (List.map serialize values |> String.join ", ") + ++ "]" + + Object keyValuePairs -> + "{" + ++ (List.map (\( key, objectValue ) -> key ++ ": " ++ serialize objectValue) + keyValuePairs + |> String.join ", " + ) + ++ "}" diff --git a/assets/vendor/Graphql/Operation.elm b/assets/vendor/Graphql/Operation.elm new file mode 100644 index 00000000..e26b710a --- /dev/null +++ b/assets/vendor/Graphql/Operation.elm @@ -0,0 +1,30 @@ +module Graphql.Operation exposing (RootMutation, RootQuery, RootSubscription) + +{-| This module contains types used to annotate top-level queries which can be +built up using functions in code generated by the `@dillonkearns/elm-graphql` command line tool +and sent using functions in the `Graphql.Http` module. + +@docs RootMutation, RootQuery, RootSubscription + +-} + + +{-| Type for top-level queries which can be sent using functions +from `Graphql.Http`. +-} +type RootQuery + = RootQuery + + +{-| Type for top-level mutations which can be sent using functions +from `Graphql.Http`. +-} +type RootMutation + = RootMutation + + +{-| Type for top-level mutations which can be sent using functions +from `Graphql.Http`. +-} +type RootSubscription + = RootSubscription diff --git a/assets/vendor/Graphql/OptionalArgument.elm b/assets/vendor/Graphql/OptionalArgument.elm new file mode 100644 index 00000000..94edcd9e --- /dev/null +++ b/assets/vendor/Graphql/OptionalArgument.elm @@ -0,0 +1,78 @@ +module Graphql.OptionalArgument exposing + ( OptionalArgument(..) + , fromMaybe + , map + ) + +{-| + +@docs OptionalArgument +@docs fromMaybe +@docs map + +-} + + +{-| This type is used to create values to pass in optional arguments. + + import Api.Enum.Episode as Episode exposing (Episode) + import Api.Query as Query + import Graphql.Operation exposing (RootQuery) + import Graphql.OptionalArgument exposing (OptionalArgument(Null, Present)) + import Graphql.SelectionSet exposing (SelectionSet, with) + + + query : SelectionSet Response RootQuery + query = + Query.selection Response + |> with (Query.human { id = "1004" } human) + |> with (Query.human { id = "1001" } human) + |> with + (Query.hero + (\optionals -> + { optionals + | episode = Present Episode.EMPIRE + } + ) + hero + ) + +An optional argument can be either present, absent, or null, so using a Maybe does not +fully capture the GraphQL concept of an optional argument. For example, you could have +a mutation that deletes an entry if a null argument is provided, or does nothing if +the argument is absent. See +[The official GraphQL spec section on null](http://facebook.github.io/graphql/October2016/#sec-Null-Value) +for details. + +-} +type OptionalArgument a + = Present a + | Absent + | Null + + +{-| Convert a `Maybe` to an OptionalArgument. +-} +fromMaybe : Maybe a -> OptionalArgument a +fromMaybe maybeValue = + case maybeValue of + Just value -> + Present value + + Nothing -> + Absent + + +{-| Transform an OptionalArgument value with a given function. +-} +map : (a -> b) -> OptionalArgument a -> OptionalArgument b +map transform option = + case option of + Present a -> + Present (transform a) + + Absent -> + Absent + + Null -> + Null diff --git a/assets/vendor/Graphql/RawField.elm b/assets/vendor/Graphql/RawField.elm new file mode 100644 index 00000000..bdb5f080 --- /dev/null +++ b/assets/vendor/Graphql/RawField.elm @@ -0,0 +1,23 @@ +module Graphql.RawField exposing (RawField(..), name, typename) + +import Graphql.Internal.Builder.Argument as Argument exposing (Argument) + + +type RawField + = Composite String (List Argument) (List RawField) + | Leaf String (List Argument) + + +name : RawField -> String +name field = + case field of + Composite fieldName argumentList fieldList -> + fieldName + + Leaf fieldName argumentList -> + fieldName + + +typename : RawField +typename = + Leaf "__typename" [] diff --git a/assets/vendor/Graphql/SelectionSet.elm b/assets/vendor/Graphql/SelectionSet.elm new file mode 100644 index 00000000..ca52de97 --- /dev/null +++ b/assets/vendor/Graphql/SelectionSet.elm @@ -0,0 +1,318 @@ +module Graphql.SelectionSet exposing + ( with, hardcoded, empty, map, succeed, fieldSelection + , map2, withFragment + , SelectionSet(..), FragmentSelectionSet(..) + ) + +{-| The auto-generated code from the `@dillonkearns/elm-graphql` CLI will provide `selection` +functions for Objects, Interfaces, and Unions in your GraphQL schema. +These functions build up a `Graphql.SelectionSet` which describes a set +of fields to retrieve. The `SelectionSet` is built up in a pipeline similar to how +[`Json.Decode.Pipeline`](http://package.elm-lang.org/packages/NoRedInk/elm-decode-pipeline/latest) +builds up decoders. + +For example, if you had a top-level query `human(id: ID!)` which returns an object +of type `Human`, you could build the following GraphQL query document: + + query { + human(id: 1001) { + name + id + } + } + +In this example, the `SelectionSet` on `human` is: + + { + name + id + } + +You could build up the above `SelectionSet` with the following `dillonkearns/elm-graphql` code: + + import Api.Object + import Api.Object.Human as Human + import Graphql.SelectionSet exposing (SelectionSet, with) + + type alias Human = + { name : String + , id : String + } + + hero : SelectionSet Hero Api.Interface.Human + hero = + Human.selection Human + |> with Human.name + |> with Human.id + +Note that all of the modules under `Api.` in this case are generated by running +the `@dillonkearns/elm-graphql` command line tool. + +The query itself is also a `SelectionSet` so it is built up similarly. +See [this live code demo](https://rebrand.ly/graphqelm) for an example. + +@docs with, hardcoded, empty, map, succeed, fieldSelection + + +## Combining + +@docs map2, withFragment + + +## Types + +These types are built for you by the code generated by the `@dillonkearns/elm-graphql` command line tool. + +@docs SelectionSet, FragmentSelectionSet + +-} + +import Graphql.Document.Field +import Graphql.Field as Field exposing (Field(..)) +import Graphql.RawField as RawField exposing (RawField) +import Json.Decode as Decode exposing (Decoder) +import List.Extra + + +{-| SelectionSet type +-} +type SelectionSet decodesTo typeLock + = SelectionSet (List RawField) (Decoder decodesTo) + + +{-| Create a `SelectionSet` from a single `Field`. + + import Api.Object + import Api.Object.Human as Human + import Graphql.SelectionSet exposing (SelectionSet) + + humanSelection : SelectionSet String Api.Object.Human + humanSelection = + SelectionSet.fieldSelection Human.name + +-} +fieldSelection : Field response typeLock -> SelectionSet response typeLock +fieldSelection field = + SelectionSet [] (Decode.succeed identity) + |> with field + + +{-| Apply a function to change the result of decoding the `SelectionSet`. +-} +map : (a -> b) -> SelectionSet a typeLock -> SelectionSet b typeLock +map mapFunction (SelectionSet selectionFields selectionDecoder) = + SelectionSet selectionFields (Decode.map mapFunction selectionDecoder) + + +{-| Combine two `SelectionSet`s into one, using the given combine function to +merge the two data sets together. +-} +map2 : + (decodesTo1 -> decodesTo2 -> decodesToCombined) + -> SelectionSet decodesTo1 typeLock + -> SelectionSet decodesTo2 typeLock + -> SelectionSet decodesToCombined typeLock +map2 combine (SelectionSet selectionFields1 selectionDecoder1) (SelectionSet selectionFields2 selectionDecoder2) = + SelectionSet + (selectionFields1 ++ selectionFields2) + (Decode.map2 combine selectionDecoder1 selectionDecoder2) + + +{-| Useful for Mutations when you don't want any data back. + + import Api.Mutation as Mutation + import Graphql.Operation exposing (RootMutation) + import Graphql.SelectionSet as SelectionSet exposing (SelectionSet, with) + + sendChatMessage : String -> SelectionSet () RootMutation + sendChatMessage message = + Mutation.selection identity + |> with (Mutation.sendMessage { message = message } SelectionSet.empty) + +-} +empty : SelectionSet () typeLock +empty = + SelectionSet [ RawField.Leaf "__typename" [] ] (Decode.succeed ()) + + +{-| FragmentSelectionSet type +-} +type FragmentSelectionSet decodesTo typeLock + = FragmentSelectionSet String (List RawField) (Decoder decodesTo) + + +{-| Used to pick out fields on an object. + + import Api.Enum.Episode as Episode exposing (Episode) + import Api.Object + import Api.Scalar + import Graphql.SelectionSet exposing (SelectionSet, with) + + type alias Hero = + { name : String + , id : Api.Scalar.Id + , appearsIn : List Episode + } + + hero : SelectionSet Hero Api.Interface.Character + hero = + Character.commonSelection Hero + |> with Character.name + |> with Character.id + |> with Character.appearsIn + +-} +with : Field a typeLock -> SelectionSet (a -> b) typeLock -> SelectionSet b typeLock +with (Field field fieldDecoder) (SelectionSet selectionFields selectionDecoder) = + SelectionSet (selectionFields ++ [ field ]) + (Decode.map2 (|>) + (Decode.field + (Graphql.Document.Field.hashedAliasName field) + fieldDecoder + ) + selectionDecoder + ) + + +{-| Include a `SelectionSet` within a `SelectionSet`. This is the equivalent of +including a [GraphQL fragment](https://graphql.org/learn/queries/#fragments) in +plain GraphQL queries. This is a handy tool for modularizing your GraphQL queries. + +([You can try the below query for yourself by pasting the query into the Github query explorer](https://developer.github.com/v4/explorer/)). + +Let's say we want to query Github's GraphQL API like this: + + { + repository(owner: "dillonkearns", name: "elm-graphql") { + nameWithOwner + ...timestamps + stargazers(first: 0) { totalCount } + } + } + + fragment timestamps on Repository { + createdAt + updatedAt + } + +We could do the equivalent of the `timestamps` fragment with the `timestampsFragment` +we define below. + + import Github.Object + import Github.Object.Repository as Repository + import Github.Object.StargazerConnection + import Graphql.Field as Field exposing (Field) + import Graphql.Operation exposing (RootQuery) + import Graphql.OptionalArgument exposing (OptionalArgument(..)) + import Graphql.SelectionSet as SelectionSet exposing (SelectionSet, fieldSelection, with, withFragment) + import Iso8601 + import Time exposing (Posix) + + type alias Repo = + { nameWithOwner : String + , timestamps : Timestamps + , stargazersCount : Int + } + + type alias Timestamps = + { createdAt : Posix + , updatedAt : Posix + } + + repositorySelection : SelectionSet Repo Github.Object.Repository + repositorySelection = + Repository.selection Repo + |> with Repository.nameWithOwner + |> withFragment timestampsFragment + |> with stargazersCount + + timestampsFragment : SelectionSet Timestamps Github.Object.Repository + timestampsFragment = + Repository.selection Timestamps + |> with (Repository.createdAt |> mapToDateTime) + |> with (Repository.updatedAt |> mapToDateTime) + + mapToDateTime : Field Github.Scalar.DateTime typeLock -> Field Posix typeLock + mapToDateTime = + Field.mapOrFail + (\(Github.Scalar.DateTime value) -> + Iso8601.toTime value + |> Result.mapError (\_ -> "Failed to parse " ++ value ++ " as Iso8601 DateTime.") + ) + + stargazersCount : Field Int Github.Object.Repository + stargazersCount = + Repository.stargazers + (\optionals -> { optionals | first = Present 0 }) + (fieldSelection Github.Object.StargazerConnection.totalCount) + +Notice that we are using two different techniques for abstraction here. +We use `|> withFragment timestampsFragment` to include a fragment and we use +`|> with stargazersCount`. What's the difference? For the `timestampsFragment`, +we want to pull in some fields at the same level of the `SelectionSet` we are +building up. But for the `stargazersCount`, we are simply extracting a `Field` +which builds up a nested `SelectionSet` that grabs the `totalCount` within the +`stargazers` `Field`. + +-} +withFragment : SelectionSet a typeLock -> SelectionSet (a -> b) typeLock -> SelectionSet b typeLock +withFragment (SelectionSet selectionFields1 selectionDecoder1) (SelectionSet selectionFields2 selectionDecoder2) = + SelectionSet (selectionFields1 ++ selectionFields2) + (Decode.map2 (|>) + selectionDecoder1 + selectionDecoder2 + ) + + +{-| Include a hardcoded value. + + import Api.Enum.Episode as Episode exposing (Episode) + import Api.Object + import Graphql.SelectionSet exposing (SelectionSet, with, hardcoded) + + type alias Hero = + { name : String + , movie : String + } + + hero : SelectionSet Hero Api.Interface.Character + hero = + Character.commonSelection Hero + |> with Character.name + |> hardcoded "Star Wars" + +-} +hardcoded : a -> SelectionSet (a -> b) typeLock -> SelectionSet b typeLock +hardcoded constant (SelectionSet objectFields objectDecoder) = + SelectionSet objectFields + (Decode.map2 (|>) + (Decode.succeed constant) + objectDecoder + ) + + +{-| Instead of hardcoding a field like `hardcoded`, `SelectionSet.succeed` hardcodes +an entire `SelectionSet`. This can be useful if you want hardcoded data based on +only the type when using a polymorphic type (Interface or Union). + + type alias Character = + { details : Maybe HumanOrDroid + , name : String + } + + type HumanOrDroid + = Human + | Droid + + hero : SelectionSet Character Swapi.Interface.Character + hero = + Character.selection Character + [ Character.onDroid (SelectionSet.succeed Droid) + , Character.onHuman (SelectionSet.succeed Human) + ] + |> with Character.name + +-} +succeed : a -> SelectionSet a typeLock +succeed constant = + SelectionSet [ RawField.Leaf "__typename" [] ] (Decode.succeed constant) diff --git a/assets/webpack.dev.config.js b/assets/webpack.dev.config.js index 7c417c24..0f7fd468 100644 --- a/assets/webpack.dev.config.js +++ b/assets/webpack.dev.config.js @@ -1,31 +1,29 @@ -const path = require('path') -const webpack = require('webpack') -const StringReplacePlugin = require('string-replace-webpack-plugin') -const CopyPlugin = require('copy-webpack-plugin') +const path = require("path"); +const webpack = require("webpack"); +const StringReplacePlugin = require("string-replace-webpack-plugin"); +const CopyPlugin = require("copy-webpack-plugin"); module.exports = { cache: true, - target: 'web', - devtool: 'inline-source-map', + target: "web", + devtool: "inline-source-map", context: __dirname, entry: { editor: [ - 'webpack-dev-server/client?http://localhost:8080/', - path.join(__dirname, 'src/Pages/Editor/index.js') - ], - 'editor-sw': [ - path.join(__dirname, 'src/Pages/Editor/ServiceWorker.js') + "webpack-dev-server/client?http://localhost:8080/", + path.join(__dirname, "src/Pages/Editor/index.js") ], + "editor-sw": [path.join(__dirname, "src/Pages/Editor/ServiceWorker.js")], embed: [ - 'webpack-dev-server/client?http://localhost:8080/', - path.join(__dirname, 'src/Pages/Embed/index.js') + "webpack-dev-server/client?http://localhost:8080/", + path.join(__dirname, "src/Pages/Embed/index.js") ] }, output: { path: path.resolve(__dirname, "../priv/static"), - publicPath: 'http://localhost:8080/assets/', - filename: '[name].js', + publicPath: "http://localhost:8080/assets/", + filename: "[name].js" }, module: { @@ -33,25 +31,25 @@ module.exports = { { test: /\.svg$/, use: { - loader: 'svg-inline-loader' + loader: "svg-inline-loader" } }, { test: /\.js$/, exclude: /node_modules/, use: { - loader: 'babel-loader', + loader: "babel-loader", options: { presets: [ - '@babel/preset-env', - [ '@babel/preset-stage-2', { decoratorsLegacy: true } ] + "@babel/preset-env", + ["@babel/preset-stage-2", { decoratorsLegacy: true }] ] - }, - }, + } + } }, { test: /\.css$/, - loader: 'style-loader!css-loader', + loader: "style-loader!css-loader" }, { test: /\.elm$/, @@ -59,54 +57,68 @@ module.exports = { loaders: [ StringReplacePlugin.replace({ replacements: [ - { pattern: /'\%HOSTNAME\%'/g, replacement: () => 'window.location.host' }, - { pattern: /'\%PROTOCOL\%'/g, replacement: () => 'window.location.protocol' }, - { pattern: /\%SERVER_ORIGIN\%/g, replacement: () => 'http://localhost:4000' }, - { pattern: /\%SOCKET_ORIGIN\%/g, replacement: () => 'ws://localhost:4000' }, - { pattern: /\%PACKAGE_SITE\%/g, replacement: () => 'https://package.elm-lang.org' }, - { pattern: /\%ENV\%/g, replacement: () => 'development' }, + { + pattern: /'\%HOSTNAME\%'/g, + replacement: () => "window.location.host" + }, + { + pattern: /'\%PROTOCOL\%'/g, + replacement: () => "window.location.protocol" + }, + { + pattern: /\%SERVER_ORIGIN\%/g, + replacement: () => "http://localhost:4000" + }, + { + pattern: /\%SOCKET_ORIGIN\%/g, + replacement: () => "ws://localhost:4000" + }, + { + pattern: /\%PACKAGE_SITE\%/g, + replacement: () => "https://package.elm-lang.org" + }, + { pattern: /\%ENV\%/g, replacement: () => "development" } ] }), { - loader: 'elm-webpack-loader', + loader: "elm-webpack-loader", options: { - maxInstances: 1, - forceWatch: true, - yes: true, - debug: true, - cwd: __dirname + cwd: __dirname, + runtimeOptions: "-A128m -H128m -n8m", + debug: true } } ] - }, + } ] }, plugins: [ new webpack.DefinePlugin({ OPBEAT_APP_ID: JSON.stringify(process.env.OPBEAT_FRONTEND_APP_ID), - OPBEAT_ORGANIZATION_ID: JSON.stringify(process.env.OPBEAT_ORGANIZATION_ID), - 'process.env.NODE_ENV': JSON.stringify('development') + OPBEAT_ORGANIZATION_ID: JSON.stringify( + process.env.OPBEAT_ORGANIZATION_ID + ), + "process.env.NODE_ENV": JSON.stringify("development") }), - new CopyPlugin(['images/*']) + new CopyPlugin(["images/*"]) ], devServer: { inline: true, stats: { colors: true }, historyApiFallback: true, - port: '8080', - host: '0.0.0.0', - allowedHosts: [ - 'http://localhost:4000' - ], + overlay: true, + port: "8080", + host: "0.0.0.0", + allowedHosts: ["http://localhost:4000"], headers: { - 'Access-Control-Allow-Origin': '*', - 'Service-Worker-Allowed': '/' + "Access-Control-Allow-Origin": "*", + "Service-Worker-Allowed": "/" }, watchOptions: { aggregateTimeout: 300, poll: 1000 - }, - }, -} + } + } +}; diff --git a/assets/webpack.prod.config.js b/assets/webpack.prod.config.js index 9a6fee70..fe9c7d57 100644 --- a/assets/webpack.prod.config.js +++ b/assets/webpack.prod.config.js @@ -1,93 +1,139 @@ -const path = require("path") -const webpack = require('webpack') -const StringReplacePlugin = require('string-replace-webpack-plugin') -const ManifestPlugin = require('webpack-manifest-plugin') -const CompressionPlugin = require('compression-webpack-plugin') -const CopyPlugin = require('copy-webpack-plugin') +const path = require("path"); +const webpack = require("webpack"); +const StringReplacePlugin = require("string-replace-webpack-plugin"); +const ManifestPlugin = require("webpack-manifest-plugin"); +const CompressionPlugin = require("compression-webpack-plugin"); +const CopyPlugin = require("copy-webpack-plugin"); +const TerserPlugin = require("terser-webpack-plugin"); module.exports = { cache: true, - target: 'web', entry: { - editor: path.join(__dirname, 'src/Pages/Editor/index.js'), - embed: path.join(__dirname, 'src/Pages/Embed/index.js'), + editor: path.join(__dirname, "src/Pages/Editor/index.js"), + embed: path.join(__dirname, "src/Pages/Embed/index.js") }, output: { - path: path.resolve(__dirname + '/../priv/static'), - filename: '[name]-[chunkhash].js', - chunkFilename: 'chunk.[name]-[chunkhash].js', - publicPath: '/assets/' + path: path.resolve(__dirname + "/../priv/static"), + filename: "[name]-[chunkhash].js", + chunkFilename: "chunk.[name]-[chunkhash].js", + publicPath: "/assets/" }, module: { rules: [ { test: /\.svg$/, - use: { loader: 'svg-inline-loader' } + use: { loader: "svg-inline-loader" } }, { test: /\.js$/, exclude: /node_modules/, use: { - loader: 'babel-loader', + loader: "babel-loader", options: { presets: [ - [ '@babel/preset-env', { 'targets': { 'uglify': true } } ], - [ '@babel/preset-stage-2', { decoratorsLegacy: true } ] + "@babel/preset-env", + ["@babel/preset-stage-2", { decoratorsLegacy: true }] ] } } }, { test: /\.css$/, - loader: 'style-loader!css-loader' + loader: "style-loader!css-loader" }, { - test: /\.elm$/, + test: /\.elm$/, exclude: [/elm-stuff/, /node_modules/], - loaders: [ + loaders: [ StringReplacePlugin.replace({ replacements: [ - { pattern: /'\%HOSTNAME\%'/g, replacement: () => 'window.location.host' }, - { pattern: /'\%PROTOCOL\%'/g, replacement: () => 'window.location.protocol' }, - { pattern: /\%SERVER_ORIGIN\%/g, replacement: () => 'https://' + process.env.SERVER_HOST }, - { pattern: /\%SOCKET_ORIGIN\%/g, replacement: () => 'wss://' + process.env.SERVER_HOST }, + { + pattern: /'\%HOSTNAME\%'/g, + replacement: () => "window.location.host" + }, + { + pattern: /'\%PROTOCOL\%'/g, + replacement: () => "window.location.protocol" + }, + { + pattern: /\%SERVER_ORIGIN\%/g, + replacement: () => "https://" + process.env.SERVER_HOST + }, + { + pattern: /\%SOCKET_ORIGIN\%/g, + replacement: () => "wss://" + process.env.SERVER_HOST + }, { pattern: /\%ENV\%/g, replacement: () => process.env.NODE_ENV }, - { pattern: /\%PACKAGE_SITE\%/g, replacement: () => 'https://package.elm-lang.org' }, + { + pattern: /\%PACKAGE_SITE\%/g, + replacement: () => "https://package.elm-lang.org" + } ] }), { - loader: 'babel-loader', + loader: "elm-webpack-loader", options: { - presets: [ - [ '@babel/preset-env', { 'targets': { 'uglify': true } } ] - ], - plugins: ['babel-plugin-elm-pre-minify'] - }, - }, - { - loader: 'elm-webpack-loader', - options: { yes: true, debug: false, cwd: path.join(__dirname) } + cwd: __dirname, + runtimeOptions: "-A128m -H128m -n8m", + optimize: true + } } ] - }, + } + ] + }, + + optimization: { + minimizer: [ + new TerserPlugin({ + cache: true, + parallel: true, + terserOptions: { + mangle: false, + compress: { + pure_funcs: [ + "F2", + "F3", + "F4", + "F5", + "F6", + "F7", + "F8", + "F9", + "A2", + "A3", + "A4", + "A5", + "A6", + "A7", + "A8", + "A9" + ], + pure_getters: true, + keep_fargs: false, + unsafe_comps: true, + unsafe: true + } + } + }), + new TerserPlugin({ + cache: true, + parallel: true, + terserOptions: { mangle: true } + }) ] }, plugins: [ new webpack.DefinePlugin({ OPBEAT_APP_ID: JSON.stringify(process.env.OPBEAT_FRONTEND_APP_ID), - OPBEAT_ORGANIZATION_ID: JSON.stringify(process.env.OPBEAT_ORGANIZATION_ID), - 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), - }), - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin({ - compress: true, - mangle: true, - warningsFilter: () => false, - exclude: /custom-elements-native-shim/ + OPBEAT_ORGANIZATION_ID: JSON.stringify( + process.env.OPBEAT_ORGANIZATION_ID + ), + "process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV) }), new StringReplacePlugin(), new ManifestPlugin({ @@ -96,16 +142,16 @@ module.exports = { version: 1, latest: files.reduce((memo, next) => { if (next.isInitial) { - memo['assets/' + next.name] = next.path.substr(1) + memo["assets/" + next.name] = next.path.substr(1); } - return memo + return memo; }, {}) - } + }; } }), new CompressionPlugin({ test: /\.js$/ }), - new CopyPlugin(['images/*']) + new CopyPlugin(["images/*"]) ] -} +}; diff --git a/config/dev.exs b/config/dev.exs index 126b026b..bd406006 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -16,19 +16,21 @@ config :ellie, EllieWeb.Endpoint, watchers: [ node: [ "node_modules/webpack-dev-server/bin/webpack-dev-server.js", + "--mode", + "development", "--watch-stdin", "--config", "./webpack.dev.config.js", cd: Path.expand("../assets", __DIR__) ], node: [ - "node_modules/graphqelm/bin/graphqelm", + "node_modules/@dillonkearns/elm-graphql/bin/elm-graphql", "--introspection-file", "../priv/graphql/schema.json", "--base", "Ellie.Api", "--output", - "elm-stuff/generated/dillonkearns/graphqelm", + "elm-stuff/generated/dillonkearns/graphql", cd: Path.expand("../assets", __DIR__) ] ] diff --git a/lib/ellie_web/graphql/socket.ex b/lib/ellie_web/graphql/socket.ex index 77240122..b2fb9f54 100644 --- a/lib/ellie_web/graphql/socket.ex +++ b/lib/ellie_web/graphql/socket.ex @@ -5,14 +5,12 @@ defmodule EllieWeb.Graphql.Socket do alias EllieWeb.Token alias Data.Uuid - transport :websocket, Phoenix.Transports.WebSocket, - timeout: 45_000 + transport(:websocket, Phoenix.Transports.WebSocket, timeout: 45_000) def connect(%{"token" => token}, socket) do with {:ok, workspace_string} <- Token.verify(token), {:ok, workspace} <- Uuid.parse(workspace_string), - :unit <- Workspace.watch(workspace, socket.transport_pid) - do + :unit <- Workspace.watch(workspace, socket.transport_pid) do {:ok, Absinthe.Phoenix.Socket.put_options(socket, context: %{workspace: workspace})} else _ -> {:error, "Socket setup failed"} diff --git a/lib/mix/tasks/ellie/graphqelm.ex b/lib/mix/tasks/ellie/graphqelm.ex deleted file mode 100644 index 97fe8be4..00000000 --- a/lib/mix/tasks/ellie/graphqelm.ex +++ /dev/null @@ -1,7 +0,0 @@ -defmodule Mix.Tasks.Ellie.Graphqelm do - use Mix.Task - - def run(_) do - Mix.Shell.cmd "cd assets && npx graphqelm --introspection-file ../priv/graphql/schema.json --base Ellie.Api --output elm-stuff/generated/dillonkearns/graphqelm", [], fn a -> a end - end -end diff --git a/mix.exs b/mix.exs index 67e563f7..4e38c5ff 100644 --- a/mix.exs +++ b/mix.exs @@ -72,7 +72,7 @@ defmodule Ellie.Mixfile do "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], "ecto.reset": ["ecto.drop", "ecto.setup"], test: ["ecto.create --quiet", "ecto.migrate", "test"], - generate_schema: ["loadpaths", "absinthe.schema.json ./priv/graphql/schema.json"] + generate_schema: ["absinthe.schema.json ./priv/graphql/schema.json"] ] end end diff --git a/scripts/bootstrap b/scripts/bootstrap index 3f0c9c5d..3d621a0b 100755 --- a/scripts/bootstrap +++ b/scripts/bootstrap @@ -20,13 +20,12 @@ mix local.rebar --force mix local.hex --force mix deps.get mix compile -mix do loadpaths, absinthe.schema.json ./priv/graphql/schema.json +mix generate_schema cd assets && npm install cd ../ mix ellie.binstall -mix ellie.graphqelm mix ecto.create mix ecto.migrate diff --git a/scripts/build b/scripts/build index 126486c1..72e79ca8 100755 --- a/scripts/build +++ b/scripts/build @@ -46,6 +46,7 @@ function do_install(){ echo "==> Installing git, node, npm" yum install -y git nodejs npm --enablerepo=epel + npm cache clean } function do_pre_build(){