diff --git a/.bundlewatch.config.js b/.bundlewatch.config.js
index 62be5bb911..735f2fb3b9 100644
--- a/.bundlewatch.config.js
+++ b/.bundlewatch.config.js
@@ -14,11 +14,7 @@ module.exports = {
"maxSize": "180 kB",
},
{
- "path": "client-participation/dist/cached/*/js/polis.js",
- "maxSize": "150 kB",
- },
- {
- "path": "client-participation/dist/cached/*/js/vis_bundle.js",
+ "path": "client-participation/dist/*.js",
"maxSize": "200 kB",
},
]
diff --git a/.github/workflows/bundlewatch.yml b/.github/workflows/bundlewatch.yml
index f988aba48b..c216c8b709 100644
--- a/.github/workflows/bundlewatch.yml
+++ b/.github/workflows/bundlewatch.yml
@@ -1,6 +1,7 @@
name: "Bundlewatch Github Action"
on:
+ workflow_dispatch:
push:
# Required so that baseline for comparison is pushed to bundlewatch service.
branches: ["dev"]
@@ -53,10 +54,15 @@ jobs:
working-directory: client-participation
run: |
npm install
- cp polis.config.template.js polis.config.js
- npm run deploy:prod
- # So directory stays consistent between builds for comparison.
- mv dist/cached/* dist/cached/xxxxxxxxx
+ npm run build:webpack
+
+ # - name: "Install & Build: client-participation"
+ # working-directory: client-participation
+ # run: |
+ # npm install
+ # npm run deploy:prod
+ # # So directory stays consistent between builds for comparison.
+ # mv dist/cached/* dist/cached/xxxxxxxxx
- name: Install Bundlewatch
run: npm install -g bundlewatch@0.2.6
diff --git a/.github/workflows/cypress-tests.yml b/.github/workflows/cypress-tests.yml
index 8993b703d2..aeaeae1790 100644
--- a/.github/workflows/cypress-tests.yml
+++ b/.github/workflows/cypress-tests.yml
@@ -2,6 +2,7 @@
name: E2E Tests
on:
+ workflow_dispatch:
push:
branches:
- dev
diff --git a/.github/workflows/depcheck.yml b/.github/workflows/depcheck.yml
index c78e0539a2..db88e16662 100644
--- a/.github/workflows/depcheck.yml
+++ b/.github/workflows/depcheck.yml
@@ -1,5 +1,6 @@
name: DepCheck
on:
+ workflow_dispatch:
pull_request:
types: ["opened", "reopened", "synchronize"]
paths:
diff --git a/.github/workflows/deploy-preprod.yml b/.github/workflows/deploy-preprod.yml
index 6260ff0442..b5dddec4c8 100644
--- a/.github/workflows/deploy-preprod.yml
+++ b/.github/workflows/deploy-preprod.yml
@@ -1,4 +1,5 @@
on:
+ workflow_dispatch:
push:
branches:
- dev
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 83ea3471e8..6fcc784d5b 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -1,6 +1,7 @@
name: Lint
on:
+ workflow_dispatch:
pull_request:
types: ["opened", "reopened", "synchronize"]
diff --git a/.github/workflows/release-docker-images.yml b/.github/workflows/release-docker-images.yml
index 1823c91614..00b9ae8bbc 100644
--- a/.github/workflows/release-docker-images.yml
+++ b/.github/workflows/release-docker-images.yml
@@ -2,6 +2,7 @@
name: Docker image builds
on:
+ workflow_dispatch:
push:
branches:
- main
diff --git a/.github/workflows/test-clojure.yml b/.github/workflows/test-clojure.yml
index a7bda1660b..14885b2315 100644
--- a/.github/workflows/test-clojure.yml
+++ b/.github/workflows/test-clojure.yml
@@ -1,6 +1,7 @@
name: Test Math
on:
+ workflow_dispatch:
push:
branches: ["dev", "504-clj-tests"]
# Note: Only configured for client-admin right now.
diff --git a/client-admin/Dockerfile b/client-admin/Dockerfile
index 00001a1f04..e8df55127a 100644
--- a/client-admin/Dockerfile
+++ b/client-admin/Dockerfile
@@ -8,8 +8,9 @@ RUN apk add git --no-cache
COPY package*.json ./
RUN npm install
-COPY polis.config.template.js polis.config.js
-# If polis.config.js exists on host, will override template here.
+COPY --from=polis_config /config/config.js /app/config/
+COPY --from=polis_config /config/*.yaml /app/config/
+
COPY . .
ARG GIT_HASH
diff --git a/client-admin/dev-server.js b/client-admin/dev-server.js
index cbf2cc2895..d95e77fcef 100644
--- a/client-admin/dev-server.js
+++ b/client-admin/dev-server.js
@@ -11,7 +11,8 @@ var request = require("request");
var app = express();
var compiler = webpack(config);
-var polisConfig = require("./polis.config");
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
app.use(
require("webpack-dev-middleware")(compiler, {
@@ -20,7 +21,7 @@ app.use(
})
);
-const serviceUrl = polisConfig.SERVICE_URL ? polisConfig.SERVICE_URL : "https://pol.is";
+const serviceUrl = config.get('service_url') ? config.get('service_url') : "https://pol.is";
console.log("SERVICE_URL:", serviceUrl);
function proxy(req, res) {
@@ -58,10 +59,10 @@ app.get(/^\/embed\/?$/, function (req, res) {
app.get("*", function (req, res) {
var html = fs.readFileSync(path.join(__dirname, "index.html"), { encoding: "utf8" });
- html = html.replace("<%= fbAppId %>", polisConfig.FB_APP_ID);
- html = html.replace("<%= useIntercom %>", !isTrue(polisConfig.DISABLE_INTERCOM));
- html = html.replace("<%= usePlans %>", !isTrue(polisConfig.DISABLE_PLANS));
- var domainWhitelist = '["' + polisConfig.domainWhitelist.join('","') + '"]';
+ html = html.replace("<%= fbAppId %>", config.get('fb_app_id'));
+ html = html.replace("<%= useIntercom %>", !isTrue(config.get('disable_intercom')));
+ html = html.replace("<%= usePlans %>", !isTrue(config.get('disable_plans')));
+ var domainWhitelist = '["' + config.get('domainWhitelist').join('","') + '"]';
html = html.replace("<%= domainWhitelist %>", domainWhitelist);
res.set({
diff --git a/client-admin/gulpfile.js b/client-admin/gulpfile.js
index 3dbdde86b7..365202f471 100644
--- a/client-admin/gulpfile.js
+++ b/client-admin/gulpfile.js
@@ -13,9 +13,10 @@ var rimraf = require("rimraf");
var runSequence = require("run-sequence");
var scp = require("gulp-scp2");
-var polisConfig = require("./polis.config");
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
-console.log("Uploader: " + polisConfig.UPLOADER);
+console.log("Uploader: " + config.get('uploader'));
const staticFilesPrefix = "cached";
const baseDistRoot = "dist";
@@ -78,11 +79,11 @@ gulp.task("index", [], function () {
);
html = html.replace("NULL_VERSION", versionString);
- html = html.replace("<%= fbAppId %>", polisConfig.FB_APP_ID);
- html = html.replace("<%= useIntercom %>", !isTrue(polisConfig.DISABLE_INTERCOM));
- html = html.replace("<%= usePlans %>", !isTrue(polisConfig.DISABLE_PLANS));
+ html = html.replace("<%= fbAppId %>", config.get('fb_app_id'));
+ html = html.replace("<%= useIntercom %>", !isTrue(config.get('disable_intercom')));
+ html = html.replace("<%= usePlans %>", !isTrue(config.get('disable_plans')));
- var domainWhitelist = '["' + polisConfig.domainWhitelist.join('","') + '"]';
+ var domainWhitelist = '["' + config.get('domainWhitelist').join('","') + '"]';
html = html.replace("<%= domainWhitelist %>", domainWhitelist);
// index goes to the root of the dist folder.
@@ -129,8 +130,8 @@ gulp.task("404", [], function () {
gulp.task("preprodConfig", function () {
preprodMode = true;
minified = true;
- scpSubdir = polisConfig.SCP_SUBDIR_PREPROD;
- s3Subdir = polisConfig.S3_BUCKET_PREPROD;
+ scpSubdir = config.get('scp_subdir_preprod');
+ s3Subdir = config.get('s3_bucket_preprod');
});
gulp.task("unminifiedConfig", function () {
@@ -140,8 +141,8 @@ gulp.task("unminifiedConfig", function () {
gulp.task("prodConfig", function () {
prodMode = true;
minified = true;
- scpSubdir = polisConfig.SCP_SUBDIR_PROD;
- s3Subdir = polisConfig.S3_BUCKET_PROD;
+ scpSubdir = config.get('scp_subdir_prod');
+ s3Subdir = config.get('s3_bucket_prod');
});
gulp.task("configureForProduction", function (callback) {
@@ -220,12 +221,12 @@ gulp.task("dist", ["configureForProduction"], function (callback) {
gulp.task("deploy_TO_PRODUCTION", ["prodConfig", "dist"], function () {
var uploader;
- if ("s3" === polisConfig.UPLOADER) {
+ if ("s3" === config.get('uploader')) {
uploader = s3uploader({
bucket: s3Subdir,
});
}
- if ("scp" === polisConfig.UPLOADER) {
+ if ("scp" === config.get('uploader')) {
uploader = scpUploader({
// subdir: "cached",
watch: function (client) {
@@ -235,7 +236,7 @@ gulp.task("deploy_TO_PRODUCTION", ["prodConfig", "dist"], function () {
},
});
}
- if ('local' === polisConfig.UPLOADER) {
+ if ('local' === config.get('uploader')) {
uploader = localUploader
uploader.needsHeadersJson = true
}
@@ -244,12 +245,12 @@ gulp.task("deploy_TO_PRODUCTION", ["prodConfig", "dist"], function () {
function doUpload() {
var uploader;
- if ("s3" === polisConfig.UPLOADER) {
+ if ("s3" === config.get('uploader')) {
uploader = s3uploader({
bucket: s3Subdir,
});
}
- if ("scp" === polisConfig.UPLOADER) {
+ if ("scp" === config.get('uploader')) {
uploader = scpUploader({
// subdir: "cached",
watch: function (client) {
@@ -259,7 +260,7 @@ function doUpload() {
},
});
}
- if ('local' === polisConfig.UPLOADER) {
+ if ('local' === config.get('uploader')) {
uploader = localUploader
uploader.needsHeadersJson = true
}
@@ -272,19 +273,19 @@ gulp.task("deployPreprodUnminified", ["preprodConfig", "unminifiedConfig", "dist
gulp.task("fontsPreprod", ["preprodConfig"], function () {
return deployFonts({
- bucket: polisConfig.S3_BUCKET_PREPROD,
+ bucket: config.get('s3_bucket_preprod'),
});
});
gulp.task("fontsProd", ["prodConfig"], function () {
return deployFonts({
- bucket: polisConfig.S3_BUCKET_PROD,
+ bucket: config.get('s3_bucket_prod'),
});
});
function localUploader(params) {
params.subdir = params.subdir || ''
- return gulp.dest(path.join(polisConfig.LOCAL_OUTPUT_PATH, params.subdir))
+ return gulp.dest(path.join(config.get('local_output_path'), params.subdir))
}
function s3uploader(params) {
diff --git a/client-admin/package-lock.json b/client-admin/package-lock.json
index 0fdf20a07e..ee07181f2b 100644
--- a/client-admin/package-lock.json
+++ b/client-admin/package-lock.json
@@ -5092,7 +5092,6 @@
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
"requires": {
"sprintf-js": "~1.0.2"
}
@@ -5779,6 +5778,11 @@
"get-intrinsic": "^1.0.0"
}
},
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
"camelcase-css": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
@@ -6068,6 +6072,15 @@
"safe-buffer": "~5.1.1"
}
},
+ "convict": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/convict/-/convict-6.0.0.tgz",
+ "integrity": "sha512-osfPkv5yjVoZqrTWBXuh/ABGpFoaJplbt0WXr0CodR4CSWt8UnzY4PSUyRz/+5BX5YUtWcToG29Kr0B6xhdIMg==",
+ "requires": {
+ "lodash.clonedeep": "^4.5.0",
+ "yargs-parser": "^18.1.3"
+ }
+ },
"cookie": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
@@ -6344,8 +6357,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"decode-uri-component": {
"version": "0.2.0",
@@ -7318,8 +7330,7 @@
"esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
},
"esquery": {
"version": "1.4.0",
@@ -9650,10 +9661,9 @@
"integrity": "sha1-eZA/VWPud4zBFi5tzxoAJ8l/nLU="
},
"js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
"requires": {
"argparse": "^1.0.7",
"esprima": "^4.0.0"
@@ -10072,6 +10082,11 @@
"lodash._objecttypes": "~2.4.1"
}
},
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -13039,8 +13054,7 @@
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"ssh2": {
"version": "0.3.6",
@@ -15015,6 +15029,21 @@
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
"integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg=="
},
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ },
+ "yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true
+ },
"zwitch": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz",
diff --git a/client-admin/package.json b/client-admin/package.json
index 7f54011700..914ca2a1c7 100644
--- a/client-admin/package.json
+++ b/client-admin/package.json
@@ -9,7 +9,8 @@
"build:webpack_unminified": "npm run clean && NODE_ENV=development webpack --config webpack.config.unminified.js",
"build": "npm run build:webpack",
"build-debug": "npm run build:webpack_unminified",
- "deploy:prod": "node gulpfile.js deploy_TO_PRODUCTION",
+ "convict": "6.0.0",
+ "deploy:prod": "POLIS_ROOT=/app/ node gulpfile.js deploy_TO_PRODUCTION",
"deploy:preprod": "node gulpfile.js deployPreprod",
"start": "./x",
"lint": "eslint src",
@@ -58,8 +59,10 @@
},
"dependencies": {
"boolean": "^3.0.2",
+ "convict": "6.0.0",
"d3-scale": "^3.2.3",
"jquery": "^2.1.4",
+ "js-yaml": "3.14.0",
"lodash": "^4.17.21",
"prop-types": "^15.7.2",
"react": "^16.14.0",
diff --git a/client-admin/polis.config.template.js b/client-admin/polis.config.template.js
deleted file mode 100644
index 90cfa90b52..0000000000
--- a/client-admin/polis.config.template.js
+++ /dev/null
@@ -1,37 +0,0 @@
-
-module.exports = {
-
- domainWhitelist: [
- // local ports
- "^localhost$",
- "^127\\.0\\.0\\.1$",
- "^192\\.168\\.1\\.140$",
- // sample configuration for main pol.is deployment
- "^pol\\.is",
- ".+\\.pol\\.is$",
- // These allow for local ip routing for remote dev deployment
- "^(n|ssl)ip\\.io$",
- ".+\\.(n|ssl)ip\\.io$",
- ],
-
- DISABLE_INTERCOM: true,
- DISABLE_PLANS: true,
-
- FB_APP_ID: '661042417336977',
-
- //SERVICE_URL: 'http://localhost:5000',
- SERVICE_URL: 'https://preprod.pol.is',
-
- UPLOADER: 'local', // alt: s3, scp
-
- // Uploader settings: local
- LOCAL_OUTPUT_PATH: './build',
-
- // Uploader settings: s3
- S3_BUCKET_PROD: 'pol.is',
- S3_BUCKET_PREPROD: 'preprod.pol.is',
-
- // Uploader settings: scp
- SCP_SUBDIR_PREPROD: 'preprod',
- SCP_SUBDIR_PROD: 'prod',
-};
diff --git a/client-participation/Dockerfile b/client-participation/Dockerfile
index 1a8899cdce..979a02e1f5 100644
--- a/client-participation/Dockerfile
+++ b/client-participation/Dockerfile
@@ -19,8 +19,9 @@ RUN npm ci
RUN apk del .build
-COPY polis.config.template.js polis.config.js
-# If polis.config.js exists on host, will override template here.
+COPY --from=polis_config /config/config.js /app/config/
+COPY --from=polis_config /config/*.yaml /app/config/
+
COPY . .
ARG GIT_HASH
diff --git a/client-participation/gulpfile.js b/client-participation/gulpfile.js
index bcaafa0dfb..de091d8639 100644
--- a/client-participation/gulpfile.js
+++ b/client-participation/gulpfile.js
@@ -50,9 +50,10 @@ var spawn = require("child_process").spawn;
var Stream = require("stream");
var url = require("url");
-var polisConfig = require("./polis.config");
+let POLIS_ROOT = process.env.POLIS_ROOT
+var yaml_config = require(POLIS_ROOT + 'config/config.js');
-console.log("Uploader: " + polisConfig.UPLOADER);
+console.log("Uploader: " + yaml_config.get('uploader'));
// WARNING: useJsHint gets mutated in watch builds
var useJsHint = true;
@@ -108,7 +109,7 @@ function prepPathForTemplate(path) {
gulp.task("connect", [], function () {
function proxyToPreprod(req, response) {
var x = request(
- (polisConfig.SERVICE_URL || "https://preprod.pol.is") + req.originalUrl
+ (yaml_config.get('service_url') || "https://preprod.pol.is") + req.originalUrl
);
x.on("error", function (err) {
response.status(500).end();
@@ -232,8 +233,8 @@ gulp.task("connect", [], function () {
app.use(/^\/wimp$/, express.static(path.join(destRootBase, "wimp.html")));
app.use(/^\/try$/, express.static(path.join(destRootBase, "try.html")));
- app.listen(polisConfig.PORT);
- console.log("listening on localhost:" + polisConfig.PORT);
+ app.listen(yaml_config.get('port'));
+ console.log("listening on localhost:" + yaml_config.get('port'));
});
function getGitHash() {
@@ -285,7 +286,7 @@ gulp.task("embedJs", function () {
])
.pipe(
template({
- polisHostName: polisConfig.SERVICE_HOSTNAME || "pol.is",
+ polisHostName: yaml_config.get('service_hostname') || "pol.is",
})
)
// .pipe(template({
@@ -298,15 +299,15 @@ gulp.task("embedJs", function () {
gulp.task("index", [], function () {
var s = gulp.src("index.html");
var basepath = prepPathForTemplate(destRootRest);
- var domainWhitelist = '["' + polisConfig.domainWhitelist.join('","') + '"]';
+ var domainWhitelist = '["' + yaml_config.get('domainWhitelist').join('","') + '"]';
if (devMode) {
s = s.pipe(
template({
basepath: basepath,
basepath_visbundle: basepath_visbundle_dev,
d3Filename: "d3.js",
- fbAppId: polisConfig.FB_APP_ID,
- useIntercom: !isTrue(polisConfig.DISABLE_INTERCOM),
+ fbAppId: yaml_config.get('fb_app_id'),
+ useIntercom: !isTrue(config.get('disable_intercom')),
versionString: versionString,
domainWhitelist: domainWhitelist,
})
@@ -318,8 +319,8 @@ gulp.task("index", [], function () {
basepath: basepath, // proxy through server (cached by cloudflare, and easier than choosing a bucket for preprod, etc)
basepath_visbundle: basepath,
d3Filename: "d3.min.js",
- fbAppId: polisConfig.FB_APP_ID,
- useIntercom: !isTrue(polisConfig.DISABLE_INTERCOM),
+ fbAppId: yaml_config.get('fb_app_id'),
+ useIntercom: !isTrue(yaml_config.get('disable_intercom')),
versionString: versionString,
domainWhitelist: domainWhitelist,
})
@@ -656,15 +657,15 @@ gulp.task("scriptsD3v4", function () {
gulp.task("preprodConfig", function () {
preprodMode = true;
minified = true;
- scpSubdir = polisConfig.SCP_SUBDIR_PREPROD;
- s3Subdir = polisConfig.S3_BUCKET_PREPROD;
+ scpSubdir = yaml_config.get('scp_subdir_preprod');
+ s3Subdir = yaml_config.get('s3_bucket_preprod');
});
gulp.task("prodConfig", function () {
prodMode = true;
minified = true;
- scpSubdir = polisConfig.SCP_SUBDIR_PROD;
- s3Subdir = polisConfig.S3_BUCKET_PROD;
+ scpSubdir = yaml_config.get('scp_subdir_prod');
+ s3Subdir = yaml_config.get('s3_bucket_prod');
});
gulp.task("unminifiedConfig", function () {
@@ -790,12 +791,12 @@ gulp.task("deploy_TO_PRODUCTION", ["prodConfig", "dist"], function () {
notifySlackOfDeployment("prod");
var uploader;
- if ("s3" === polisConfig.UPLOADER) {
+ if ("s3" === yaml_config.get('uploader')) {
uploader = s3uploader({
bucket: s3Subdir,
});
}
- if ("scp" === polisConfig.UPLOADER) {
+ if ("scp" === yaml_config.get('uploader')) {
uploader = scpUploader({
// TODO needs to upload as prod somehow.
// subdir: "cached",
@@ -806,7 +807,7 @@ gulp.task("deploy_TO_PRODUCTION", ["prodConfig", "dist"], function () {
},
});
}
- if ("local" === polisConfig.UPLOADER) {
+ if ("local" === yaml_config.get('uploader')) {
uploader = localUploader;
uploader.needsHeadersJson = true;
}
@@ -817,12 +818,12 @@ function doUpload() {
notifySlackOfDeployment("preprod");
var uploader;
- if ("s3" === polisConfig.UPLOADER) {
+ if ("s3" === yaml_config.get('uploader')) {
uploader = s3uploader({
bucket: s3Subdir,
});
}
- if ("scp" === polisConfig.UPLOADER) {
+ if ("scp" === yaml_config.get('uploader')) {
uploader = scpUploader({
// TODO needs to upload as PREprod somehow.
// subdir: "cached",
@@ -833,7 +834,7 @@ function doUpload() {
},
});
}
- if ("local" === polisConfig.UPLOADER) {
+ if ("local" === yaml_config.get('uploader')) {
uploader = localUploader;
uploader.needsHeadersJson = true;
}
@@ -857,7 +858,7 @@ gulp.task("deploySurvey", ["prodConfig", "dist"], function () {
function localUploader(params) {
params.subdir = params.subdir || "";
- return gulp.dest(path.join(polisConfig.LOCAL_OUTPUT_PATH, params.subdir));
+ return gulp.dest(path.join(yaml_config.get('local_output_path'), params.subdir));
}
function s3uploader(params) {
diff --git a/client-participation/package-lock.json b/client-participation/package-lock.json
index 32384e5c4c..aa0c542ff5 100644
--- a/client-participation/package-lock.json
+++ b/client-participation/package-lock.json
@@ -789,6 +789,14 @@
"readable-stream": "^2.0.6"
}
},
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
"arr-diff": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz",
@@ -2235,6 +2243,15 @@
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
},
+ "compression-webpack-plugin": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-7.1.2.tgz",
+ "integrity": "sha512-9DKNW6ILLjx+bNBoviHDgLx6swBhWWH9ApClC9sTH2NoFfQM47BapQfovCm9zjD9v1uZwInF5a925FB9ErGQeQ==",
+ "requires": {
+ "schema-utils": "^3.0.0",
+ "serialize-javascript": "^5.0.1"
+ }
+ },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -2392,6 +2409,15 @@
"safe-buffer": "~5.1.1"
}
},
+ "convict": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/convict/-/convict-6.0.0.tgz",
+ "integrity": "sha512-osfPkv5yjVoZqrTWBXuh/ABGpFoaJplbt0WXr0CodR4CSWt8UnzY4PSUyRz/+5BX5YUtWcToG29Kr0B6xhdIMg==",
+ "requires": {
+ "lodash.clonedeep": "^4.5.0",
+ "yargs-parser": "^18.1.3"
+ }
+ },
"cookie": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz",
@@ -3454,6 +3480,11 @@
"integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
"dev": true
},
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
"esrecurse": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
@@ -6980,6 +7011,15 @@
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "js-yaml": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
@@ -7192,6 +7232,14 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
},
+ "lodash-webpack-plugin": {
+ "version": "0.11.6",
+ "resolved": "https://registry.npmjs.org/lodash-webpack-plugin/-/lodash-webpack-plugin-0.11.6.tgz",
+ "integrity": "sha512-nsHN/+IxZK/C425vGC8pAxkKJ8KQH2+NJnhDul14zYNWr6HJcA95w+oRR7Cp0oZpOdMplDZXmjVROp8prPk7ig==",
+ "requires": {
+ "lodash": "^4.17.20"
+ }
+ },
"lodash._arraypool": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash._arraypool/-/lodash._arraypool-2.4.1.tgz",
@@ -7518,6 +7566,11 @@
"resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
},
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
"lodash.defaults": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-2.4.1.tgz",
@@ -10315,6 +10368,11 @@
"extend-shallow": "^3.0.0"
}
},
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
+ },
"ssh2": {
"version": "0.3.6",
"resolved": "https://registry.npmjs.org/ssh2/-/ssh2-0.3.6.tgz",
@@ -12698,6 +12756,22 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
},
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ }
+ }
+ },
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/client-participation/package.json b/client-participation/package.json
index bdf22f58b4..3a8fc9d055 100644
--- a/client-participation/package.json
+++ b/client-participation/package.json
@@ -4,10 +4,12 @@
"version": "0.0.0",
"license": "AGPL-3.0",
"scripts": {
+ "clean": "rimraf dist",
"start": "gulp",
"build:prod": "gulp prodBuildNoDeploy",
+ "build:webpack": "npm run clean && NODE_ENV=production webpack --config webpack.config.js",
"deploy:preprod": "gulp deployPreprod",
- "deploy:prod": "gulp deploy_TO_PRODUCTION",
+ "deploy:prod": "POLIS_ROOT=/app/ gulp deploy_TO_PRODUCTION",
"deploy:preprod:unminified": "gulp deployPreprodUnminified"
},
"dependencies": {
@@ -17,6 +19,8 @@
"bootstrap-sass": "^3.4.1",
"brain": "~0.6.3",
"combine-css": "0.0.2",
+ "compression-webpack-plugin": "^7.1.2",
+ "convict": "6.0.0",
"d3": "^3.5.17",
"d3-force": "^1.2.1",
"d3-tip": "^0.6.7",
@@ -34,7 +38,9 @@
"handlebones": "github:pol-is/handlebones#master",
"hull.js": "^0.2.10",
"jquery": "~1.11",
+ "js-yaml": "3.14.0",
"lodash": "4.17.21",
+ "lodash-webpack-plugin": "^0.11.6",
"map-stream": "~0.1.0",
"markdown": "^0.5.0",
"prop-types": "^15.7.2",
diff --git a/client-participation/polis.config.template.js b/client-participation/polis.config.template.js
deleted file mode 100644
index ec6ea1de81..0000000000
--- a/client-participation/polis.config.template.js
+++ /dev/null
@@ -1,45 +0,0 @@
-module.exports = {
- domainWhitelist: [
- // local ports
- "^localhost$",
- "^127\\.0\\.0\\.1$",
- "^192\\.168\\.1\\.140$",
- // sample configuration for main pol.is deployment
- "^pol\\.is",
- ".+\\.pol\\.is$",
- // These allow for local ip routing for remote dev deployment
- "^(n|ssl)ip\\.io$",
- ".+\\.(n|ssl)ip\\.io$",
- ],
-
- // Point to a polisServer instance (local recommended for dev)
- //SERVICE_URL: "http://localhost:5000", // local server; recommended for dev
- SERVICE_URL: "http:localhost:5000",
-
- // Used for setting appropriate hostname for embedding.
- //SERVICE_HOSTNAME: "123.45.67.89.sslip.io",
- SERVICE_HOSTNAME: "localhost",
-
- // Note that this must match the participation client port specified in polisServer instance
- PORT: 5001,
-
- DISABLE_INTERCOM: true,
-
- // must register with facebook and get a facebook app id to use the facebook auth features
- FB_APP_ID: "661042417336977",
-
- // For data exports
-
- UPLOADER: "local", // alt: s3, scp
-
- // Uploader settings: local
- LOCAL_OUTPUT_PATH: "./build",
-
- // Uploader settings: s3
- S3_BUCKET_PROD: "pol.is",
- S3_BUCKET_PREPROD: "preprod.pol.is",
-
- // Uploader settings: scp
- SCP_SUBDIR_PREPROD: "preprod",
- SCP_SUBDIR_PROD: "prod",
-};
diff --git a/client-participation/webpack.config.js b/client-participation/webpack.config.js
index 8b5f3f65b2..efe208970e 100644
--- a/client-participation/webpack.config.js
+++ b/client-participation/webpack.config.js
@@ -1,16 +1,41 @@
+// Copyright (C) 2012-present, The Authors. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
+
var path = require("path");
var webpack = require("webpack");
+var CompressionPlugin = require('compression-webpack-plugin')
+var LodashModuleReplacementPlugin = require('lodash-webpack-plugin');
module.exports = {
- // devtool: "source-map",
entry: [
"./vis2/vis2"
],
output: {
- path: path.join(__dirname, "dist_foo"),
+ path: path.join(__dirname, "dist"),
filename: "vis_bundle.js",
- publicPath: "SET_THIS_FROM_GULP"
+ publicPath: "/dist/",
+ },
+ resolve: {
+ extensions: [".js", ".css", ".png", ".svg"],
},
+ plugins: [
+ new LodashModuleReplacementPlugin({
+ "currying": true,
+ "flattening": true,
+ "paths": true,
+ "placeholders": true,
+ "shorthands": true
+ }),
+ new CompressionPlugin({
+ test: /\.js$/,
+ // Leave unmodified without gz ext.
+ // See: https://webpack.js.org/plugins/compression-webpack-plugin/#options
+ filename: '[path][base]',
+ deleteOriginalAssets: true,
+ }),
+ new webpack.DefinePlugin({
+ "process.env.NODE_ENV": JSON.stringify("production"),
+ }),
+ ],
mode: 'production',
optimization: {
minimize: true,
diff --git a/client-report/Dockerfile b/client-report/Dockerfile
index b98a3dcd37..3e7b107e64 100644
--- a/client-report/Dockerfile
+++ b/client-report/Dockerfile
@@ -8,8 +8,9 @@ RUN apk add git --no-cache
COPY package*.json ./
RUN npm ci
-COPY polis.config.template.js polis.config.js
-# If polis.config.js exists on host, will override template here.
+COPY --from=polis_config /config/config.js /app/config/
+COPY --from=polis_config /config/*.yaml /app/config/
+
COPY . .
ARG GIT_HASH
diff --git a/client-report/dev-server.js b/client-report/dev-server.js
index 632b931883..3da05870cd 100644
--- a/client-report/dev-server.js
+++ b/client-report/dev-server.js
@@ -5,6 +5,8 @@ var express = require("express");
var webpack = require("webpack");
var config = require("./webpack.config.dev");
var request = require("request");
+let POLIS_ROOT = process.env.POLIS_ROOT
+var globalConfig = require(POLIS_ROOT + 'config/config.js');
var app = express();
var compiler = webpack(config);
@@ -26,7 +28,7 @@ app.use(require("webpack-hot-middleware")(compiler));
-const serviceUrl = process.env.SERVICE_URL ? process.env.SERVICE_URL : "https://preprod.pol.is";
+const serviceUrl = globalConfig.get('service_url') ? globalConfig.get('service_url') : "https://preprod.pol.is";
console.log("SERVICE_URL:", serviceUrl);
diff --git a/client-report/gulpfile.js b/client-report/gulpfile.js
index 09e4358cc4..f9ca7c04f4 100644
--- a/client-report/gulpfile.js
+++ b/client-report/gulpfile.js
@@ -14,9 +14,10 @@ var rimraf = require("rimraf");
var runSequence = require('run-sequence');
var scp = require('gulp-scp2');
-var polisConfig = require('./polis.config');
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
-console.log("Uploader: " + polisConfig.UPLOADER);
+console.log("Uploader: " + config.get('uploader'));
const staticFilesPrefix = "cached";
const baseDistRoot = "dist";
@@ -88,14 +89,14 @@ gulp.task('index', [
gulp.task("preprodConfig", function() {
preprodMode = true;
- scpSubdir = polisConfig.SCP_SUBDIR_PREPROD;
- s3Subdir = polisConfig.S3_BUCKET_PREPROD;
+ scpSubdir = config.get('scp_subdir_preprod');
+ s3Subdir = config.get('s3_bucket_preprod');
});
gulp.task("prodConfig", function() {
prodMode = true;
- scpSubdir = polisConfig.SCP_SUBDIR_PROD;
- s3Subdir = polisConfig.S3_BUCKET_PROD;
+ scpSubdir = config.get('scp_subdir_prod');
+ s3Subdir = config.get('s3_bucket_prod');
});
@@ -165,7 +166,7 @@ gulp.task('dist', [
function localUploader(params) {
params.subdir = params.subdir || ''
- return gulp.dest(path.join(polisConfig.LOCAL_OUTPUT_PATH, params.subdir))
+ return gulp.dest(path.join(config.get('local_output_path'), params.subdir))
}
function s3uploader(params) {
@@ -324,12 +325,12 @@ function deploy(uploader) {
function doUpload() {
var uploader;
- if ('s3' === polisConfig.UPLOADER) {
+ if ('s3' === config.get('uploader')) {
uploader = s3uploader({
bucket: s3Subdir,
});
}
- if ('scp' === polisConfig.UPLOADER) {
+ if ('scp' === config.get('uploader')) {
uploader = scpUploader({
// subdir: "cached",
watch: function(client) {
@@ -339,7 +340,7 @@ function doUpload() {
},
});
}
- if ('local' === polisConfig.UPLOADER) {
+ if ('local' === config.get('uploader')) {
uploader = localUploader
uploader.needsHeadersJson = true
}
diff --git a/client-report/package-lock.json b/client-report/package-lock.json
index b9afddfe38..d22b4a9b9c 100644
--- a/client-report/package-lock.json
+++ b/client-report/package-lock.json
@@ -10,7 +10,7 @@
"integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
"dev": true,
"requires": {
- "mime-types": "~2.1.24",
+ "mime-types": "2.1.27",
"negotiator": "0.6.2"
}
},
@@ -26,7 +26,7 @@
"integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=",
"dev": true,
"requires": {
- "acorn": "^3.0.4"
+ "acorn": "3.3.0"
},
"dependencies": {
"acorn": {
@@ -48,10 +48,10 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
"integrity": "sha1-xinF7O0XuvMUQ3kY0tqIyZ1ZWM0=",
"requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "fast-deep-equal": "3.1.1",
+ "fast-json-stable-stringify": "2.1.0",
+ "json-schema-traverse": "0.4.1",
+ "uri-js": "4.2.2"
}
},
"ajv-keywords": {
@@ -66,9 +66,9 @@
"integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2",
- "longest": "^1.0.1",
- "repeat-string": "^1.5.2"
+ "kind-of": "3.2.2",
+ "longest": "1.0.1",
+ "repeat-string": "1.6.1"
},
"dependencies": {
"kind-of": {
@@ -77,7 +77,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -88,7 +88,7 @@
"integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=",
"dev": true,
"requires": {
- "stable": "~0.1.3"
+ "stable": "0.1.8"
}
},
"amdefine": {
@@ -142,8 +142,8 @@
"integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
"dev": true,
"requires": {
- "micromatch": "^2.1.5",
- "normalize-path": "^2.0.0"
+ "micromatch": "2.3.11",
+ "normalize-path": "2.1.1"
},
"dependencies": {
"arr-diff": {
@@ -152,7 +152,7 @@
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
"requires": {
- "arr-flatten": "^1.0.1"
+ "arr-flatten": "1.1.0"
}
},
"array-unique": {
@@ -167,9 +167,9 @@
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
- "expand-range": "^1.8.1",
- "preserve": "^0.2.0",
- "repeat-element": "^1.1.2"
+ "expand-range": "1.8.2",
+ "preserve": "0.2.0",
+ "repeat-element": "1.1.3"
}
},
"expand-brackets": {
@@ -178,7 +178,7 @@
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
"requires": {
- "is-posix-bracket": "^0.1.0"
+ "is-posix-bracket": "0.1.1"
}
},
"extglob": {
@@ -187,7 +187,7 @@
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
},
"is-extglob": {
@@ -202,7 +202,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
},
"kind-of": {
@@ -211,7 +211,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
},
"micromatch": {
@@ -220,19 +220,19 @@
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
"requires": {
- "arr-diff": "^2.0.0",
- "array-unique": "^0.2.1",
- "braces": "^1.8.2",
- "expand-brackets": "^0.1.4",
- "extglob": "^0.3.1",
- "filename-regex": "^2.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.1",
- "kind-of": "^3.0.2",
- "normalize-path": "^2.0.1",
- "object.omit": "^2.0.0",
- "parse-glob": "^3.0.4",
- "regex-cache": "^0.4.2"
+ "arr-diff": "2.0.0",
+ "array-unique": "0.2.1",
+ "braces": "1.8.5",
+ "expand-brackets": "0.1.5",
+ "extglob": "0.3.2",
+ "filename-regex": "2.0.1",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1",
+ "kind-of": "3.2.2",
+ "normalize-path": "2.1.1",
+ "object.omit": "2.0.1",
+ "parse-glob": "3.0.4",
+ "regex-cache": "0.4.4"
}
}
}
@@ -246,10 +246,9 @@
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
- "dev": true,
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"requires": {
- "sprintf-js": "~1.0.2"
+ "sprintf-js": "1.0.3"
}
},
"arr-diff": {
@@ -328,7 +327,7 @@
"integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
"dev": true,
"requires": {
- "safer-buffer": "~2.1.0"
+ "safer-buffer": "2.1.2"
}
},
"assert": {
@@ -337,7 +336,7 @@
"integrity": "sha1-VcEJqvbgrv2z3EtxJAxwv1dLGOs=",
"dev": true,
"requires": {
- "object-assign": "^4.1.1",
+ "object-assign": "4.1.1",
"util": "0.10.3"
},
"dependencies": {
@@ -426,52 +425,52 @@
"integrity": "sha1-H8ruedfmG3ULALjlT238nQr4ZVg=",
"dev": true,
"requires": {
- "babel-plugin-constant-folding": "^1.0.1",
- "babel-plugin-dead-code-elimination": "^1.0.2",
- "babel-plugin-eval": "^1.0.1",
- "babel-plugin-inline-environment-variables": "^1.0.1",
- "babel-plugin-jscript": "^1.0.4",
- "babel-plugin-member-expression-literals": "^1.0.1",
- "babel-plugin-property-literals": "^1.0.1",
- "babel-plugin-proto-to-assign": "^1.0.3",
- "babel-plugin-react-constant-elements": "^1.0.3",
- "babel-plugin-react-display-name": "^1.0.3",
- "babel-plugin-remove-console": "^1.0.1",
- "babel-plugin-remove-debugger": "^1.0.1",
- "babel-plugin-runtime": "^1.0.7",
- "babel-plugin-undeclared-variables-check": "^1.0.2",
- "babel-plugin-undefined-to-void": "^1.1.6",
- "babylon": "^5.8.38",
- "bluebird": "^2.9.33",
- "chalk": "^1.0.0",
- "convert-source-map": "^1.1.0",
- "core-js": "^1.0.0",
- "debug": "^2.1.1",
- "detect-indent": "^3.0.0",
- "esutils": "^2.0.0",
- "fs-readdir-recursive": "^0.1.0",
- "globals": "^6.4.0",
- "home-or-tmp": "^1.0.0",
- "is-integer": "^1.0.4",
+ "babel-plugin-constant-folding": "1.0.1",
+ "babel-plugin-dead-code-elimination": "1.0.2",
+ "babel-plugin-eval": "1.0.1",
+ "babel-plugin-inline-environment-variables": "1.0.1",
+ "babel-plugin-jscript": "1.0.4",
+ "babel-plugin-member-expression-literals": "1.0.1",
+ "babel-plugin-property-literals": "1.0.1",
+ "babel-plugin-proto-to-assign": "1.0.4",
+ "babel-plugin-react-constant-elements": "1.0.3",
+ "babel-plugin-react-display-name": "1.0.3",
+ "babel-plugin-remove-console": "1.0.1",
+ "babel-plugin-remove-debugger": "1.0.1",
+ "babel-plugin-runtime": "1.0.7",
+ "babel-plugin-undeclared-variables-check": "1.0.2",
+ "babel-plugin-undefined-to-void": "1.1.6",
+ "babylon": "5.8.38",
+ "bluebird": "2.11.0",
+ "chalk": "1.1.3",
+ "convert-source-map": "1.7.0",
+ "core-js": "1.2.7",
+ "debug": "2.6.9",
+ "detect-indent": "3.0.1",
+ "esutils": "2.0.3",
+ "fs-readdir-recursive": "0.1.2",
+ "globals": "6.4.1",
+ "home-or-tmp": "1.0.0",
+ "is-integer": "1.0.7",
"js-tokens": "1.0.1",
- "json5": "^0.4.0",
- "lodash": "^3.10.0",
- "minimatch": "^2.0.3",
- "output-file-sync": "^1.1.0",
- "path-exists": "^1.0.0",
- "path-is-absolute": "^1.0.0",
- "private": "^0.1.6",
+ "json5": "0.4.0",
+ "lodash": "3.10.1",
+ "minimatch": "2.0.10",
+ "output-file-sync": "1.1.2",
+ "path-exists": "1.0.0",
+ "path-is-absolute": "1.0.1",
+ "private": "0.1.8",
"regenerator": "0.8.40",
- "regexpu": "^1.3.0",
- "repeating": "^1.1.2",
- "resolve": "^1.1.6",
- "shebang-regex": "^1.0.0",
- "slash": "^1.0.0",
- "source-map": "^0.5.0",
- "source-map-support": "^0.2.10",
- "to-fast-properties": "^1.0.0",
- "trim-right": "^1.0.0",
- "try-resolve": "^1.0.0"
+ "regexpu": "1.3.0",
+ "repeating": "1.1.3",
+ "resolve": "1.17.0",
+ "shebang-regex": "1.0.0",
+ "slash": "1.0.0",
+ "source-map": "0.5.7",
+ "source-map-support": "0.2.10",
+ "to-fast-properties": "1.0.3",
+ "trim-right": "1.0.1",
+ "try-resolve": "1.0.1"
},
"dependencies": {
"js-tokens": {
@@ -498,7 +497,7 @@
"integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
"dev": true,
"requires": {
- "is-finite": "^1.0.0"
+ "is-finite": "1.1.0"
}
}
}
@@ -509,10 +508,10 @@
"integrity": "sha1-T3nnpPWHns8D9Iyxb1UqNV/MMbI=",
"dev": true,
"requires": {
- "acorn-to-esprima": "^1.0.5",
- "babel-core": "^5.8.33",
- "lodash.assign": "^3.2.0",
- "lodash.pick": "^3.1.0"
+ "acorn-to-esprima": "1.0.7",
+ "babel-core": "5.8.38",
+ "lodash.assign": "3.2.0",
+ "lodash.pick": "3.1.0"
},
"dependencies": {
"lodash.pick": {
@@ -521,11 +520,11 @@
"integrity": "sha1-8lKoVbIEa2G805BLJvdr0u/GVVA=",
"dev": true,
"requires": {
- "lodash._baseflatten": "^3.0.0",
- "lodash._bindcallback": "^3.0.0",
- "lodash._pickbyarray": "^3.0.0",
- "lodash._pickbycallback": "^3.0.0",
- "lodash.restparam": "^3.0.0"
+ "lodash._baseflatten": "3.1.4",
+ "lodash._bindcallback": "3.0.1",
+ "lodash._pickbyarray": "3.0.2",
+ "lodash._pickbycallback": "3.0.0",
+ "lodash.restparam": "3.6.1"
}
}
}
@@ -536,9 +535,9 @@
"integrity": "sha1-d/4o2OYNDwVrHBvKJbhJTNqrnHY=",
"dev": true,
"requires": {
- "babel-core": "^5.4.0",
- "loader-utils": "^0.2.9",
- "object-assign": "^3.0.0"
+ "babel-core": "5.8.38",
+ "loader-utils": "0.2.17",
+ "object-assign": "3.0.0"
}
},
"babel-plugin-constant-folding": {
@@ -589,7 +588,7 @@
"integrity": "sha1-xJ56/QL1d7xNoF6i3wAiUM980SM=",
"dev": true,
"requires": {
- "lodash": "^3.9.3"
+ "lodash": "3.10.1"
},
"dependencies": {
"lodash": {
@@ -618,7 +617,7 @@
"integrity": "sha1-leJDgnoQkLuLbpP+fG9W+1wjsPs=",
"dev": true,
"requires": {
- "path-parse": "^1.0.5"
+ "path-parse": "1.0.7"
}
},
"babel-plugin-remove-console": {
@@ -645,7 +644,7 @@
"integrity": "sha1-XPGqU52BP/ZOmWQSkK9iCWX2Xe4=",
"dev": true,
"requires": {
- "leven": "^1.0.2"
+ "leven": "1.0.2"
}
},
"babel-plugin-undefined-to-void": {
@@ -659,7 +658,7 @@
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz",
"integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=",
"requires": {
- "core-js": "^1.0.0"
+ "core-js": "1.2.7"
}
},
"babylon": {
@@ -679,13 +678,13 @@
"integrity": "sha1-e95c7RRbbVUakNuH+DxVi060io8=",
"dev": true,
"requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
+ "cache-base": "1.0.1",
+ "class-utils": "0.3.6",
+ "component-emitter": "1.3.0",
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "mixin-deep": "1.3.2",
+ "pascalcase": "0.1.1"
},
"dependencies": {
"define-property": {
@@ -694,7 +693,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.0"
+ "is-descriptor": "1.0.2"
}
},
"is-accessor-descriptor": {
@@ -703,7 +702,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-data-descriptor": {
@@ -712,7 +711,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-descriptor": {
@@ -721,9 +720,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.3"
}
}
}
@@ -739,7 +738,7 @@
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"requires": {
- "tweetnacl": "^0.14.3"
+ "tweetnacl": "0.14.5"
}
},
"beeper": {
@@ -783,15 +782,15 @@
"dev": true,
"requires": {
"bytes": "3.1.0",
- "content-type": "~1.0.4",
+ "content-type": "1.0.4",
"debug": "2.6.9",
- "depd": "~1.1.2",
+ "depd": "1.1.2",
"http-errors": "1.7.2",
"iconv-lite": "0.4.24",
- "on-finished": "~2.3.0",
+ "on-finished": "2.3.0",
"qs": "6.7.0",
"raw-body": "2.4.0",
- "type-is": "~1.6.17"
+ "type-is": "1.6.18"
},
"dependencies": {
"qs": {
@@ -817,7 +816,7 @@
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=",
"requires": {
- "balanced-match": "^1.0.0",
+ "balanced-match": "1.0.0",
"concat-map": "0.0.1"
}
},
@@ -827,16 +826,16 @@
"integrity": "sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=",
"dev": true,
"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"
+ "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.3",
+ "snapdragon": "0.8.2",
+ "snapdragon-node": "2.1.1",
+ "split-string": "3.1.0",
+ "to-regex": "3.0.2"
},
"dependencies": {
"extend-shallow": {
@@ -845,7 +844,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -862,7 +861,7 @@
"integrity": "sha1-BnFJtmjfMcS1hTPgLQHoBthgjiw=",
"dev": true,
"requires": {
- "inherits": "^2.0.1"
+ "inherits": "2.0.4"
}
},
"browserify-zlib": {
@@ -871,7 +870,7 @@
"integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=",
"dev": true,
"requires": {
- "pako": "~0.2.0"
+ "pako": "0.2.9"
}
},
"buffer": {
@@ -880,9 +879,9 @@
"integrity": "sha1-Iw6tNEACmIZEhBqwJEr4xEu+Pvg=",
"dev": true,
"requires": {
- "base64-js": "^1.0.2",
- "ieee754": "^1.1.4",
- "isarray": "^1.0.0"
+ "base64-js": "1.3.1",
+ "ieee754": "1.1.13",
+ "isarray": "1.0.0"
},
"dependencies": {
"isarray": {
@@ -917,15 +916,15 @@
"integrity": "sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=",
"dev": true,
"requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
+ "collection-visit": "1.0.0",
+ "component-emitter": "1.3.0",
+ "get-value": "2.0.6",
+ "has-value": "1.0.0",
+ "isobject": "3.0.1",
+ "set-value": "2.0.1",
+ "to-object-path": "0.3.0",
+ "union-value": "1.0.1",
+ "unset-value": "1.0.0"
}
},
"caller-path": {
@@ -934,7 +933,7 @@
"integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=",
"dev": true,
"requires": {
- "callsites": "^0.2.0"
+ "callsites": "0.2.0"
}
},
"callsites": {
@@ -955,8 +954,8 @@
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
+ "camelcase": "2.1.1",
+ "map-obj": "1.0.1"
}
},
"caseless": {
@@ -970,8 +969,8 @@
"integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=",
"dev": true,
"requires": {
- "align-text": "^0.1.3",
- "lazy-cache": "^1.0.3"
+ "align-text": "0.1.4",
+ "lazy-cache": "1.0.4"
}
},
"chalk": {
@@ -980,11 +979,11 @@
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"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"
+ "ansi-styles": "2.2.1",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "2.0.0",
+ "strip-ansi": "3.0.1",
+ "supports-color": "2.0.0"
}
},
"cheerio": {
@@ -992,22 +991,22 @@
"resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
"integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
"requires": {
- "css-select": "~1.2.0",
- "dom-serializer": "~0.1.0",
- "entities": "~1.1.1",
- "htmlparser2": "^3.9.1",
- "lodash.assignin": "^4.0.9",
- "lodash.bind": "^4.1.4",
- "lodash.defaults": "^4.0.1",
- "lodash.filter": "^4.4.0",
- "lodash.flatten": "^4.2.0",
- "lodash.foreach": "^4.3.0",
- "lodash.map": "^4.4.0",
- "lodash.merge": "^4.4.0",
- "lodash.pick": "^4.2.1",
- "lodash.reduce": "^4.4.0",
- "lodash.reject": "^4.4.0",
- "lodash.some": "^4.4.0"
+ "css-select": "1.2.0",
+ "dom-serializer": "0.1.1",
+ "entities": "1.1.2",
+ "htmlparser2": "3.10.1",
+ "lodash.assignin": "4.2.0",
+ "lodash.bind": "4.2.1",
+ "lodash.defaults": "4.2.0",
+ "lodash.filter": "4.6.0",
+ "lodash.flatten": "4.4.0",
+ "lodash.foreach": "4.5.0",
+ "lodash.map": "4.6.0",
+ "lodash.merge": "4.6.2",
+ "lodash.pick": "4.4.0",
+ "lodash.reduce": "4.6.0",
+ "lodash.reject": "4.6.0",
+ "lodash.some": "4.6.0"
},
"dependencies": {
"lodash.defaults": {
@@ -1023,15 +1022,15 @@
"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"
+ "anymatch": "1.3.2",
+ "async-each": "1.0.3",
+ "fsevents": "1.2.13",
+ "glob-parent": "2.0.0",
+ "inherits": "2.0.4",
+ "is-binary-path": "1.0.1",
+ "is-glob": "2.0.1",
+ "path-is-absolute": "1.0.1",
+ "readdirp": "2.2.1"
},
"dependencies": {
"is-extglob": {
@@ -1046,7 +1045,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
}
}
@@ -1063,10 +1062,10 @@
"integrity": "sha1-+TNprouafOAv1B+q0MqDAzGQxGM=",
"dev": true,
"requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
+ "arr-union": "3.1.0",
+ "define-property": "0.2.5",
+ "isobject": "3.0.1",
+ "static-extend": "0.1.2"
},
"dependencies": {
"define-property": {
@@ -1075,7 +1074,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
}
}
@@ -1091,7 +1090,7 @@
"integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
"requires": {
- "restore-cursor": "^1.0.1"
+ "restore-cursor": "1.0.1"
}
},
"cli-width": {
@@ -1106,8 +1105,8 @@
"integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=",
"dev": true,
"requires": {
- "center-align": "^0.1.1",
- "right-align": "^0.1.1",
+ "center-align": "0.1.3",
+ "right-align": "0.1.3",
"wordwrap": "0.0.2"
}
},
@@ -1146,8 +1145,8 @@
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
"dev": true,
"requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
+ "map-visit": "1.0.0",
+ "object-visit": "1.0.1"
}
},
"color": {
@@ -1155,8 +1154,8 @@
"resolved": "https://registry.npmjs.org/color/-/color-0.7.3.tgz",
"integrity": "sha1-qzrkvGy4z62110nEDzSuoIgQT4k=",
"requires": {
- "color-convert": "0.5.x",
- "color-string": "0.2.x"
+ "color-convert": "0.5.3",
+ "color-string": "0.2.4"
}
},
"color-convert": {
@@ -1174,7 +1173,7 @@
"resolved": "https://registry.npmjs.org/color-string/-/color-string-0.2.4.tgz",
"integrity": "sha1-Ih/2QjT3Gqo+E7yMfoyV883Y+Bo=",
"requires": {
- "color-name": "1.0.x"
+ "color-name": "1.0.1"
}
},
"color-support": {
@@ -1188,7 +1187,7 @@
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=",
"requires": {
- "delayed-stream": "~1.0.0"
+ "delayed-stream": "1.0.0"
}
},
"commander": {
@@ -1202,15 +1201,15 @@
"integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=",
"dev": true,
"requires": {
- "commander": "^2.5.0",
- "detective": "^4.3.1",
- "glob": "^5.0.15",
- "graceful-fs": "^4.1.2",
- "iconv-lite": "^0.4.5",
- "mkdirp": "^0.5.0",
- "private": "^0.1.6",
- "q": "^1.1.2",
- "recast": "^0.11.17"
+ "commander": "2.20.3",
+ "detective": "4.7.1",
+ "glob": "5.0.15",
+ "graceful-fs": "4.2.4",
+ "iconv-lite": "0.4.24",
+ "mkdirp": "0.5.5",
+ "private": "0.1.8",
+ "q": "1.5.1",
+ "recast": "0.11.23"
},
"dependencies": {
"esprima": {
@@ -1225,11 +1224,11 @@
"integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=",
"dev": true,
"requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "2 || 3",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "inflight": "1.0.6",
+ "inherits": "2.0.4",
+ "minimatch": "2.0.10",
+ "once": "1.3.3",
+ "path-is-absolute": "1.0.1"
}
},
"graceful-fs": {
@@ -1245,9 +1244,9 @@
"dev": true,
"requires": {
"ast-types": "0.9.6",
- "esprima": "~3.1.0",
- "private": "~0.1.5",
- "source-map": "~0.5.0"
+ "esprima": "3.1.3",
+ "private": "0.1.8",
+ "source-map": "0.5.7"
}
}
}
@@ -1269,10 +1268,10 @@
"integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
+ "buffer-from": "1.1.1",
+ "inherits": "2.0.4",
+ "readable-stream": "2.3.7",
+ "typedarray": "0.0.6"
},
"dependencies": {
"isarray": {
@@ -1287,13 +1286,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -1302,7 +1301,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -1340,7 +1339,32 @@
"integrity": "sha1-F6LLiC1/d9NJBYXizmxSRCSjpEI=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.1"
+ "safe-buffer": "5.1.2"
+ }
+ },
+ "convict": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/convict/-/convict-6.0.0.tgz",
+ "integrity": "sha512-osfPkv5yjVoZqrTWBXuh/ABGpFoaJplbt0WXr0CodR4CSWt8UnzY4PSUyRz/+5BX5YUtWcToG29Kr0B6xhdIMg==",
+ "requires": {
+ "lodash.clonedeep": "4.5.0",
+ "yargs-parser": "18.1.3"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "requires": {
+ "camelcase": "5.3.1",
+ "decamelize": "1.2.0"
+ }
+ }
}
},
"cookie": {
@@ -1376,9 +1400,9 @@
"resolved": "https://registry.npmjs.org/create-react-class/-/create-react-class-15.6.3.tgz",
"integrity": "sha1-LXMjf7P5cK5uvgEanmb0bbyoADY=",
"requires": {
- "fbjs": "^0.8.9",
- "loose-envify": "^1.3.1",
- "object-assign": "^4.1.1"
+ "fbjs": "0.8.17",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1"
},
"dependencies": {
"object-assign": {
@@ -1405,10 +1429,10 @@
"resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"requires": {
- "boolbase": "~1.0.0",
- "css-what": "2.1",
+ "boolbase": "1.0.0",
+ "css-what": "2.1.3",
"domutils": "1.5.1",
- "nth-check": "~1.0.1"
+ "nth-check": "1.0.2"
}
},
"css-what": {
@@ -1422,7 +1446,7 @@
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"requires": {
- "array-find-index": "^1.0.1"
+ "array-find-index": "1.0.2"
}
},
"d": {
@@ -1431,8 +1455,8 @@
"integrity": "sha1-hpgJU3LVjb7jRv/Qxwk/mfj561o=",
"dev": true,
"requires": {
- "es5-ext": "^0.10.50",
- "type": "^1.0.1"
+ "es5-ext": "0.10.53",
+ "type": "1.2.0"
}
},
"d3": {
@@ -1487,11 +1511,11 @@
"resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-1.0.4.tgz",
"integrity": "sha1-AMLyOAGfJPbAoZSibUGhUw/+e8Q=",
"requires": {
- "d3-dispatch": "1",
- "d3-drag": "1",
- "d3-interpolate": "1",
- "d3-selection": "1",
- "d3-transition": "1"
+ "d3-dispatch": "1.0.3",
+ "d3-drag": "1.2.1",
+ "d3-interpolate": "1.1.6",
+ "d3-selection": "1.3.0",
+ "d3-transition": "1.1.1"
}
},
"d3-chord": {
@@ -1499,8 +1523,8 @@
"resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-1.0.4.tgz",
"integrity": "sha1-fexPC6iG9xP+ERxF92NBT290yiw=",
"requires": {
- "d3-array": "1",
- "d3-path": "1"
+ "d3-array": "1.2.1",
+ "d3-path": "1.0.5"
}
},
"d3-collection": {
@@ -1518,7 +1542,7 @@
"resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-1.3.2.tgz",
"integrity": "sha1-ZSqs1QDSJkyzQjzuENtp9vWb6tM=",
"requires": {
- "d3-array": "^1.1.1"
+ "d3-array": "1.2.1"
}
},
"d3-dispatch": {
@@ -1531,8 +1555,8 @@
"resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-1.2.1.tgz",
"integrity": "sha1-343UxQL7SQ/HRiBGqK2YpcR5KC0=",
"requires": {
- "d3-dispatch": "1",
- "d3-selection": "1"
+ "d3-dispatch": "1.0.3",
+ "d3-selection": "1.3.0"
}
},
"d3-dsv": {
@@ -1540,9 +1564,9 @@
"resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.0.8.tgz",
"integrity": "sha1-kH4kDVezhmGNxWRous/na/GXZK4=",
"requires": {
- "commander": "2",
- "iconv-lite": "0.4",
- "rw": "1"
+ "commander": "2.20.3",
+ "iconv-lite": "0.4.24",
+ "rw": "1.3.3"
}
},
"d3-ease": {
@@ -1555,10 +1579,10 @@
"resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.1.0.tgz",
"integrity": "sha1-zr88aU8QePzD1Nr45Wey+9cNTqM=",
"requires": {
- "d3-collection": "1",
- "d3-dispatch": "1",
- "d3-quadtree": "1",
- "d3-timer": "1"
+ "d3-collection": "1.0.4",
+ "d3-dispatch": "1.0.3",
+ "d3-quadtree": "1.0.3",
+ "d3-timer": "1.0.7"
}
},
"d3-format": {
@@ -1571,7 +1595,7 @@
"resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.9.1.tgz",
"integrity": "sha1-FX47D5FzedD3O+v/875Tf0n6c1Y=",
"requires": {
- "d3-array": "1"
+ "d3-array": "1.2.1"
}
},
"d3-hexbin": {
@@ -1589,7 +1613,7 @@
"resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-1.1.6.tgz",
"integrity": "sha1-LPOVriOBgE3wiqG/dmt/l7X2j7Y=",
"requires": {
- "d3-color": "1"
+ "d3-color": "1.0.3"
}
},
"d3-path": {
@@ -1622,10 +1646,10 @@
"resolved": "https://registry.npmjs.org/d3-request/-/d3-request-1.0.6.tgz",
"integrity": "sha1-oQRKnvTsKMgkFxyTefrm15R0sZ8=",
"requires": {
- "d3-collection": "1",
- "d3-dispatch": "1",
- "d3-dsv": "1",
- "xmlhttprequest": "1"
+ "d3-collection": "1.0.4",
+ "d3-dispatch": "1.0.3",
+ "d3-dsv": "1.0.8",
+ "xmlhttprequest": "1.8.0"
}
},
"d3-sankey": {
@@ -1633,9 +1657,9 @@
"resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.7.1.tgz",
"integrity": "sha1-0imDImj8aaf+yEgD6WwiVqYUxSE=",
"requires": {
- "d3-array": "1",
- "d3-collection": "1",
- "d3-shape": "^1.2.0"
+ "d3-array": "1.2.1",
+ "d3-collection": "1.0.4",
+ "d3-shape": "1.2.0"
}
},
"d3-scale": {
@@ -1643,13 +1667,13 @@
"resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-1.0.7.tgz",
"integrity": "sha1-+pAySz6op3ZCK9BHKvqwslKglF0=",
"requires": {
- "d3-array": "^1.2.0",
- "d3-collection": "1",
- "d3-color": "1",
- "d3-format": "1",
- "d3-interpolate": "1",
- "d3-time": "1",
- "d3-time-format": "2"
+ "d3-array": "1.2.1",
+ "d3-collection": "1.0.4",
+ "d3-color": "1.0.3",
+ "d3-format": "1.2.2",
+ "d3-interpolate": "1.1.6",
+ "d3-time": "1.0.8",
+ "d3-time-format": "2.1.1"
}
},
"d3-scale-chromatic": {
@@ -1657,8 +1681,8 @@
"resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-1.5.0.tgz",
"integrity": "sha1-VOMz/HghL0ObFGQftVgB3YETWpg=",
"requires": {
- "d3-color": "1",
- "d3-interpolate": "1"
+ "d3-color": "1.0.3",
+ "d3-interpolate": "1.1.6"
}
},
"d3-selection": {
@@ -1671,7 +1695,7 @@
"resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.0.tgz",
"integrity": "sha1-RdAVOPBkuv0F6j1tLLdI/YxB93c=",
"requires": {
- "d3-path": "1"
+ "d3-path": "1.0.5"
}
},
"d3-time": {
@@ -1684,7 +1708,7 @@
"resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.1.1.tgz",
"integrity": "sha1-hbfN+8n/yhh/FNPEVv/aJoCBuzE=",
"requires": {
- "d3-time": "1"
+ "d3-time": "1.0.8"
}
},
"d3-timer": {
@@ -1697,12 +1721,12 @@
"resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-1.1.1.tgz",
"integrity": "sha1-2O+Jw7hIc1sGDlSjmzKq66pCEDk=",
"requires": {
- "d3-color": "1",
- "d3-dispatch": "1",
- "d3-ease": "1",
- "d3-interpolate": "1",
- "d3-selection": "^1.1.0",
- "d3-timer": "1"
+ "d3-color": "1.0.3",
+ "d3-dispatch": "1.0.3",
+ "d3-ease": "1.0.3",
+ "d3-interpolate": "1.1.6",
+ "d3-selection": "1.3.0",
+ "d3-timer": "1.0.7"
}
},
"d3-voronoi": {
@@ -1715,11 +1739,11 @@
"resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-1.7.1.tgz",
"integrity": "sha1-AvQ7PD4ttU82RYLX5KI2zMVQa2M=",
"requires": {
- "d3-dispatch": "1",
- "d3-drag": "1",
- "d3-interpolate": "1",
- "d3-selection": "1",
- "d3-transition": "1"
+ "d3-dispatch": "1.0.3",
+ "d3-drag": "1.2.1",
+ "d3-interpolate": "1.1.6",
+ "d3-selection": "1.3.0",
+ "d3-transition": "1.1.1"
}
},
"dashdash": {
@@ -1727,7 +1751,7 @@
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
}
},
"dateformat": {
@@ -1748,8 +1772,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
+ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"decode-uri-component": {
"version": "0.2.0",
@@ -1767,12 +1790,12 @@
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
"integrity": "sha1-tcmMlCzv+vfLBR4k4UNKJaLmB2o=",
"requires": {
- "is-arguments": "^1.0.4",
- "is-date-object": "^1.0.1",
- "is-regex": "^1.0.4",
- "object-is": "^1.0.1",
- "object-keys": "^1.1.1",
- "regexp.prototype.flags": "^1.2.0"
+ "is-arguments": "1.0.4",
+ "is-date-object": "1.0.2",
+ "is-regex": "1.0.5",
+ "object-is": "1.1.2",
+ "object-keys": "1.1.1",
+ "regexp.prototype.flags": "1.3.0"
}
},
"deep-is": {
@@ -1787,7 +1810,7 @@
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"dev": true,
"requires": {
- "clone": "^1.0.2"
+ "clone": "1.0.4"
}
},
"define-properties": {
@@ -1795,7 +1818,7 @@
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=",
"requires": {
- "object-keys": "^1.0.12"
+ "object-keys": "1.1.1"
}
},
"define-property": {
@@ -1804,8 +1827,8 @@
"integrity": "sha1-1Flono1lS6d+AqgX+HENcCyxbp0=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
+ "is-descriptor": "1.0.2",
+ "isobject": "3.0.1"
},
"dependencies": {
"is-accessor-descriptor": {
@@ -1814,7 +1837,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-data-descriptor": {
@@ -1823,7 +1846,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-descriptor": {
@@ -1832,9 +1855,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.3"
}
}
}
@@ -1851,16 +1874,16 @@
"integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=",
"dev": true,
"requires": {
- "alter": "~0.2.0",
- "ast-traverse": "~0.1.1",
- "breakable": "~1.0.0",
- "esprima-fb": "~15001.1001.0-dev-harmony-fb",
- "simple-fmt": "~0.1.0",
- "simple-is": "~0.2.0",
- "stringmap": "~0.2.2",
- "stringset": "~0.2.1",
- "tryor": "~0.1.2",
- "yargs": "~3.27.0"
+ "alter": "0.2.0",
+ "ast-traverse": "0.1.1",
+ "breakable": "1.0.0",
+ "esprima-fb": "15001.1001.0-dev-harmony-fb",
+ "simple-fmt": "0.1.0",
+ "simple-is": "0.2.0",
+ "stringmap": "0.2.2",
+ "stringset": "0.2.1",
+ "tryor": "0.1.2",
+ "yargs": "3.27.0"
}
},
"delayed-stream": {
@@ -1898,9 +1921,9 @@
"integrity": "sha1-ncXl3bzu+DJXZLlFGwK8bVQIT3U=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1",
- "minimist": "^1.1.0",
- "repeating": "^1.1.0"
+ "get-stdin": "4.0.1",
+ "minimist": "1.2.5",
+ "repeating": "1.1.3"
},
"dependencies": {
"repeating": {
@@ -1909,7 +1932,7 @@
"integrity": "sha1-PUEUIYh3U3SU+X93+Xhfq4EPpKw=",
"dev": true,
"requires": {
- "is-finite": "^1.0.0"
+ "is-finite": "1.1.0"
}
}
}
@@ -1920,8 +1943,8 @@
"integrity": "sha1-DspzFDOEQv67bWXaVMELscgrJG4=",
"dev": true,
"requires": {
- "acorn": "^5.2.1",
- "defined": "^1.0.0"
+ "acorn": "5.7.4",
+ "defined": "1.0.0"
}
},
"doctrine": {
@@ -1930,8 +1953,8 @@
"integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
"dev": true,
"requires": {
- "esutils": "^2.0.2",
- "isarray": "^1.0.0"
+ "esutils": "2.0.3",
+ "isarray": "1.0.0"
},
"dependencies": {
"isarray": {
@@ -1947,8 +1970,8 @@
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
"integrity": "sha1-HsQFnihLq+027sKUHUqXChic58A=",
"requires": {
- "domelementtype": "^1.3.0",
- "entities": "^1.1.1"
+ "domelementtype": "1.3.1",
+ "entities": "1.1.2"
}
},
"dom-walk": {
@@ -1972,7 +1995,7 @@
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
"integrity": "sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=",
"requires": {
- "domelementtype": "1"
+ "domelementtype": "1.3.1"
}
},
"domutils": {
@@ -1980,8 +2003,8 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"requires": {
- "dom-serializer": "0",
- "domelementtype": "1"
+ "dom-serializer": "0.1.1",
+ "domelementtype": "1.3.1"
}
},
"duplexer": {
@@ -1996,7 +2019,7 @@
"integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=",
"dev": true,
"requires": {
- "readable-stream": "~1.1.9"
+ "readable-stream": "1.1.14"
}
},
"ecc-jsbn": {
@@ -2004,8 +2027,8 @@
"resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2"
}
},
"ee-first": {
@@ -2031,7 +2054,7 @@
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"requires": {
- "iconv-lite": "~0.4.13"
+ "iconv-lite": "0.4.24"
}
},
"end-of-stream": {
@@ -2040,7 +2063,7 @@
"integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=",
"dev": true,
"requires": {
- "once": "~1.3.0"
+ "once": "1.3.3"
}
},
"enhanced-resolve": {
@@ -2049,9 +2072,9 @@
"integrity": "sha1-TW5omzcl+GCQknzMhs2fFjW4ni4=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "memory-fs": "^0.2.0",
- "tapable": "^0.1.8"
+ "graceful-fs": "4.2.4",
+ "memory-fs": "0.2.0",
+ "tapable": "0.1.10"
},
"dependencies": {
"graceful-fs": {
@@ -2078,16 +2101,16 @@
"resolved": "https://registry.npmjs.org/enzyme/-/enzyme-2.9.1.tgz",
"integrity": "sha1-B9XOaRJBJA+4F78sSxjW5TAkDfY=",
"requires": {
- "cheerio": "^0.22.0",
- "function.prototype.name": "^1.0.0",
- "is-subset": "^0.1.1",
- "lodash": "^4.17.4",
- "object-is": "^1.0.1",
- "object.assign": "^4.0.4",
- "object.entries": "^1.0.4",
- "object.values": "^1.0.4",
- "prop-types": "^15.5.10",
- "uuid": "^3.0.1"
+ "cheerio": "0.22.0",
+ "function.prototype.name": "1.1.2",
+ "is-subset": "0.1.1",
+ "lodash": "4.17.15",
+ "object-is": "1.1.2",
+ "object.assign": "4.1.0",
+ "object.entries": "1.1.1",
+ "object.values": "1.1.1",
+ "prop-types": "15.7.2",
+ "uuid": "3.4.0"
},
"dependencies": {
"lodash": {
@@ -2103,7 +2126,7 @@
"integrity": "sha1-RoTXF3mtOa8Xfj8AeZb3xnyFJhg=",
"dev": true,
"requires": {
- "prr": "~1.0.1"
+ "prr": "1.0.1"
}
},
"error-ex": {
@@ -2112,7 +2135,7 @@
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
- "is-arrayish": "^0.2.1"
+ "is-arrayish": "0.2.1"
}
},
"error-stack-parser": {
@@ -2121,7 +2144,7 @@
"integrity": "sha1-4Oc7k+QXE40c18C3RrGkoUhUwpI=",
"dev": true,
"requires": {
- "stackframe": "^0.3.1"
+ "stackframe": "0.3.1"
}
},
"es-abstract": {
@@ -2129,17 +2152,17 @@
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz",
"integrity": "sha1-2MnR1myJgfuSAOIlHXme7pJ3Suk=",
"requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.1.5",
- "is-regex": "^1.0.5",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimleft": "^2.1.1",
- "string.prototype.trimright": "^2.1.1"
+ "es-to-primitive": "1.2.1",
+ "function-bind": "1.1.1",
+ "has": "1.0.3",
+ "has-symbols": "1.0.1",
+ "is-callable": "1.1.5",
+ "is-regex": "1.0.5",
+ "object-inspect": "1.7.0",
+ "object-keys": "1.1.1",
+ "object.assign": "4.1.0",
+ "string.prototype.trimleft": "2.1.2",
+ "string.prototype.trimright": "2.1.2"
}
},
"es-to-primitive": {
@@ -2147,9 +2170,9 @@
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=",
"requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "is-callable": "1.1.5",
+ "is-date-object": "1.0.2",
+ "is-symbol": "1.0.3"
}
},
"es5-ext": {
@@ -2158,9 +2181,9 @@
"integrity": "sha1-k8WjrP2+8nUiCtcmRK0C7hg2jeE=",
"dev": true,
"requires": {
- "es6-iterator": "~2.0.3",
- "es6-symbol": "~3.1.3",
- "next-tick": "~1.0.0"
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.3",
+ "next-tick": "1.0.0"
}
},
"es6-iterator": {
@@ -2169,9 +2192,9 @@
"integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "^0.10.35",
- "es6-symbol": "^3.1.1"
+ "d": "1.0.1",
+ "es5-ext": "0.10.53",
+ "es6-symbol": "3.1.3"
}
},
"es6-map": {
@@ -2180,12 +2203,12 @@
"integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "~0.10.14",
- "es6-iterator": "~2.0.1",
- "es6-set": "~0.1.5",
- "es6-symbol": "~3.1.1",
- "event-emitter": "~0.3.5"
+ "d": "1.0.1",
+ "es5-ext": "0.10.53",
+ "es6-iterator": "2.0.3",
+ "es6-set": "0.1.5",
+ "es6-symbol": "3.1.3",
+ "event-emitter": "0.3.5"
}
},
"es6-promise": {
@@ -2200,11 +2223,11 @@
"integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "~0.10.14",
- "es6-iterator": "~2.0.1",
+ "d": "1.0.1",
+ "es5-ext": "0.10.53",
+ "es6-iterator": "2.0.3",
"es6-symbol": "3.1.1",
- "event-emitter": "~0.3.5"
+ "event-emitter": "0.3.5"
},
"dependencies": {
"es6-symbol": {
@@ -2213,8 +2236,8 @@
"integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
+ "d": "1.0.1",
+ "es5-ext": "0.10.53"
}
}
}
@@ -2225,8 +2248,8 @@
"integrity": "sha1-utXTwbzawoJp9MszHkMceKxwXRg=",
"dev": true,
"requires": {
- "d": "^1.0.1",
- "ext": "^1.1.2"
+ "d": "1.0.1",
+ "ext": "1.4.0"
}
},
"es6-weak-map": {
@@ -2235,10 +2258,10 @@
"integrity": "sha1-ttofFswswNm+Q+a9v8Xn383zHVM=",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "^0.10.46",
- "es6-iterator": "^2.0.3",
- "es6-symbol": "^3.1.1"
+ "d": "1.0.1",
+ "es5-ext": "0.10.53",
+ "es6-iterator": "2.0.3",
+ "es6-symbol": "3.1.3"
}
},
"escape-html": {
@@ -2259,10 +2282,10 @@
"integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
"dev": true,
"requires": {
- "es6-map": "^0.1.3",
- "es6-weak-map": "^2.0.1",
- "esrecurse": "^4.1.0",
- "estraverse": "^4.1.1"
+ "es6-map": "0.1.5",
+ "es6-weak-map": "2.0.3",
+ "esrecurse": "4.2.1",
+ "estraverse": "4.3.0"
}
},
"eslint": {
@@ -2271,39 +2294,39 @@
"integrity": "sha1-IvyfeA6lvKEwb6srbTM2sPpix1Q=",
"dev": true,
"requires": {
- "chalk": "^1.1.3",
- "concat-stream": "^1.4.6",
- "debug": "^2.1.1",
- "doctrine": "^1.2.2",
- "escope": "^3.6.0",
- "espree": "^3.1.6",
- "estraverse": "^4.2.0",
- "esutils": "^2.0.2",
- "file-entry-cache": "^2.0.0",
- "glob": "^7.0.3",
- "globals": "^9.2.0",
- "ignore": "^3.1.5",
- "imurmurhash": "^0.1.4",
- "inquirer": "^0.12.0",
- "is-my-json-valid": "^2.10.0",
- "is-resolvable": "^1.0.0",
- "js-yaml": "^3.5.1",
- "json-stable-stringify": "^1.0.0",
- "levn": "^0.3.0",
- "lodash": "^4.0.0",
- "mkdirp": "^0.5.0",
- "natural-compare": "^1.4.0",
- "optionator": "^0.8.1",
- "path-is-inside": "^1.0.1",
- "pluralize": "^1.2.1",
- "progress": "^1.1.8",
- "require-uncached": "^1.0.2",
- "shelljs": "^0.6.0",
- "strip-bom": "^3.0.0",
- "strip-json-comments": "~1.0.1",
- "table": "^3.7.8",
- "text-table": "~0.2.0",
- "user-home": "^2.0.0"
+ "chalk": "1.1.3",
+ "concat-stream": "1.6.2",
+ "debug": "2.6.9",
+ "doctrine": "1.5.0",
+ "escope": "3.6.0",
+ "espree": "3.5.4",
+ "estraverse": "4.3.0",
+ "esutils": "2.0.3",
+ "file-entry-cache": "2.0.0",
+ "glob": "7.1.6",
+ "globals": "9.18.0",
+ "ignore": "3.3.10",
+ "imurmurhash": "0.1.4",
+ "inquirer": "0.12.0",
+ "is-my-json-valid": "2.20.0",
+ "is-resolvable": "1.1.0",
+ "js-yaml": "3.14.0",
+ "json-stable-stringify": "1.0.1",
+ "levn": "0.3.0",
+ "lodash": "4.17.21",
+ "mkdirp": "0.5.5",
+ "natural-compare": "1.4.0",
+ "optionator": "0.8.3",
+ "path-is-inside": "1.0.2",
+ "pluralize": "1.2.1",
+ "progress": "1.1.8",
+ "require-uncached": "1.0.3",
+ "shelljs": "0.6.1",
+ "strip-bom": "3.0.0",
+ "strip-json-comments": "1.0.4",
+ "table": "3.8.3",
+ "text-table": "0.2.0",
+ "user-home": "2.0.0"
},
"dependencies": {
"globals": {
@@ -2324,7 +2347,7 @@
"integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=",
"dev": true,
"requires": {
- "os-homedir": "^1.0.0"
+ "os-homedir": "1.0.2"
}
}
}
@@ -2353,10 +2376,15 @@
"integrity": "sha1-sPRHGHyKi+2US4FaZgvd9d610ac=",
"dev": true,
"requires": {
- "acorn": "^5.5.0",
- "acorn-jsx": "^3.0.0"
+ "acorn": "5.7.4",
+ "acorn-jsx": "3.0.1"
}
},
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
"esprima-fb": {
"version": "15001.1001.0-dev-harmony-fb",
"resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz",
@@ -2369,7 +2397,7 @@
"integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
"dev": true,
"requires": {
- "estraverse": "^4.1.0"
+ "estraverse": "4.3.0"
}
},
"estraverse": {
@@ -2396,8 +2424,8 @@
"integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=",
"dev": true,
"requires": {
- "d": "1",
- "es5-ext": "~0.10.14"
+ "d": "1.0.1",
+ "es5-ext": "0.10.53"
}
},
"event-stream": {
@@ -2406,13 +2434,13 @@
"integrity": "sha1-A4u7LqnqkDhbJvvBhU0LU58qvqM=",
"dev": true,
"requires": {
- "duplexer": "~0.1.1",
- "from": "~0",
- "map-stream": "~0.0.3",
+ "duplexer": "0.1.1",
+ "from": "0.1.7",
+ "map-stream": "0.0.7",
"pause-stream": "0.0.11",
- "split": "0.2",
- "stream-combiner": "~0.0.3",
- "through": "~2.3.1"
+ "split": "0.2.10",
+ "stream-combiner": "0.0.4",
+ "through": "2.3.8"
}
},
"events": {
@@ -2438,13 +2466,13 @@
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"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"
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "posix-character-classes": "0.1.1",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
},
"dependencies": {
"define-property": {
@@ -2453,7 +2481,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
},
"extend-shallow": {
@@ -2462,7 +2490,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -2473,7 +2501,7 @@
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"requires": {
- "fill-range": "^2.1.0"
+ "fill-range": "2.2.4"
},
"dependencies": {
"fill-range": {
@@ -2482,11 +2510,11 @@
"integrity": "sha1-6x53OrsFbc2N8r/favWbizqTZWU=",
"dev": true,
"requires": {
- "is-number": "^2.1.0",
- "isobject": "^2.0.0",
- "randomatic": "^3.0.0",
- "repeat-element": "^1.1.2",
- "repeat-string": "^1.5.2"
+ "is-number": "2.1.0",
+ "isobject": "2.1.0",
+ "randomatic": "3.1.1",
+ "repeat-element": "1.1.3",
+ "repeat-string": "1.6.1"
}
},
"is-number": {
@@ -2495,7 +2523,7 @@
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
}
},
"isarray": {
@@ -2519,7 +2547,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -2530,7 +2558,7 @@
"integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"dev": true,
"requires": {
- "homedir-polyfill": "^1.0.1"
+ "homedir-polyfill": "1.0.3"
}
},
"express": {
@@ -2539,36 +2567,36 @@
"integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
"dev": true,
"requires": {
- "accepts": "~1.3.7",
+ "accepts": "1.3.7",
"array-flatten": "1.1.1",
"body-parser": "1.19.0",
"content-disposition": "0.5.3",
- "content-type": "~1.0.4",
+ "content-type": "1.0.4",
"cookie": "0.4.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
- "depd": "~1.1.2",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "finalhandler": "~1.1.2",
+ "depd": "1.1.2",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
+ "finalhandler": "1.1.2",
"fresh": "0.5.2",
"merge-descriptors": "1.0.1",
- "methods": "~1.1.2",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
+ "methods": "1.1.2",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.3",
"path-to-regexp": "0.1.7",
- "proxy-addr": "~2.0.5",
+ "proxy-addr": "2.0.6",
"qs": "6.7.0",
- "range-parser": "~1.2.1",
+ "range-parser": "1.2.1",
"safe-buffer": "5.1.2",
"send": "0.17.1",
"serve-static": "1.14.1",
"setprototypeof": "1.1.1",
- "statuses": "~1.5.0",
- "type-is": "~1.6.18",
+ "statuses": "1.5.0",
+ "type-is": "1.6.18",
"utils-merge": "1.0.1",
- "vary": "~1.1.2"
+ "vary": "1.1.2"
},
"dependencies": {
"qs": {
@@ -2585,7 +2613,7 @@
"integrity": "sha1-ia56BxWPedNVF4gpBDJAd+Q3kkQ=",
"dev": true,
"requires": {
- "type": "^2.0.0"
+ "type": "2.0.0"
},
"dependencies": {
"type": {
@@ -2607,8 +2635,8 @@
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
"requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
+ "assign-symbols": "1.0.0",
+ "is-extendable": "1.0.1"
},
"dependencies": {
"is-extendable": {
@@ -2617,7 +2645,7 @@
"integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "is-plain-object": "2.0.4"
}
}
}
@@ -2628,14 +2656,14 @@
"integrity": "sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=",
"dev": true,
"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"
+ "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.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
},
"dependencies": {
"define-property": {
@@ -2644,7 +2672,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.0"
+ "is-descriptor": "1.0.2"
}
},
"extend-shallow": {
@@ -2653,7 +2681,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
},
"is-accessor-descriptor": {
@@ -2662,7 +2690,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-data-descriptor": {
@@ -2671,7 +2699,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-descriptor": {
@@ -2680,9 +2708,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.3"
}
}
}
@@ -2698,10 +2726,10 @@
"integrity": "sha1-28GRVPVYaQFQojlToK29A1vkX8c=",
"dev": true,
"requires": {
- "ansi-gray": "^0.1.1",
- "color-support": "^1.1.3",
- "parse-node-version": "^1.0.0",
- "time-stamp": "^1.0.0"
+ "ansi-gray": "0.1.1",
+ "color-support": "1.1.3",
+ "parse-node-version": "1.0.1",
+ "time-stamp": "1.1.0"
}
},
"fast-deep-equal": {
@@ -2725,13 +2753,13 @@
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz",
"integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=",
"requires": {
- "core-js": "^1.0.0",
- "isomorphic-fetch": "^2.1.1",
- "loose-envify": "^1.0.0",
- "object-assign": "^4.1.0",
- "promise": "^7.1.1",
- "setimmediate": "^1.0.5",
- "ua-parser-js": "^0.7.18"
+ "core-js": "1.2.7",
+ "isomorphic-fetch": "2.2.1",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "promise": "7.3.1",
+ "setimmediate": "1.0.5",
+ "ua-parser-js": "0.7.28"
},
"dependencies": {
"object-assign": {
@@ -2747,8 +2775,8 @@
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"requires": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
+ "escape-string-regexp": "1.0.5",
+ "object-assign": "4.1.1"
},
"dependencies": {
"object-assign": {
@@ -2765,8 +2793,8 @@
"integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=",
"dev": true,
"requires": {
- "flat-cache": "^1.2.1",
- "object-assign": "^4.0.1"
+ "flat-cache": "1.3.4",
+ "object-assign": "4.1.1"
},
"dependencies": {
"object-assign": {
@@ -2796,10 +2824,10 @@
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
+ "extend-shallow": "2.0.1",
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1",
+ "to-regex-range": "2.1.1"
},
"dependencies": {
"extend-shallow": {
@@ -2808,7 +2836,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -2820,12 +2848,12 @@
"dev": true,
"requires": {
"debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "on-finished": "2.3.0",
+ "parseurl": "1.3.3",
+ "statuses": "1.5.0",
+ "unpipe": "1.0.0"
}
},
"find-index": {
@@ -2840,8 +2868,8 @@
"integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
"dev": true,
"requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "path-exists": "2.1.0",
+ "pinkie-promise": "2.0.1"
}
},
"findup-sync": {
@@ -2850,10 +2878,10 @@
"integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
"dev": true,
"requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^3.1.0",
- "micromatch": "^3.0.4",
- "resolve-dir": "^1.0.1"
+ "detect-file": "1.0.0",
+ "is-glob": "3.1.0",
+ "micromatch": "3.1.10",
+ "resolve-dir": "1.0.1"
}
},
"fined": {
@@ -2862,11 +2890,11 @@
"integrity": "sha1-0AvszxqitHXRbUI7Aji3E6LEo3s=",
"dev": true,
"requires": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
+ "expand-tilde": "2.0.2",
+ "is-plain-object": "2.0.4",
+ "object.defaults": "1.1.0",
+ "object.pick": "1.3.0",
+ "parse-filepath": "1.0.2"
}
},
"first-chunk-stream": {
@@ -2887,10 +2915,10 @@
"integrity": "sha1-LC73dSXMKSkAff/6HdMUqpyd7m8=",
"dev": true,
"requires": {
- "circular-json": "^0.3.1",
- "graceful-fs": "^4.1.2",
- "rimraf": "~2.6.2",
- "write": "^0.2.1"
+ "circular-json": "0.3.3",
+ "graceful-fs": "4.2.4",
+ "rimraf": "2.6.3",
+ "write": "0.2.1"
},
"dependencies": {
"graceful-fs": {
@@ -2905,7 +2933,7 @@
"integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "glob": "7.1.6"
}
}
}
@@ -2922,7 +2950,7 @@
"integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=",
"dev": true,
"requires": {
- "for-in": "^1.0.1"
+ "for-in": "1.0.2"
}
},
"forever-agent": {
@@ -2935,9 +2963,9 @@
"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"
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.8",
+ "mime-types": "2.1.27"
}
},
"forwarded": {
@@ -2952,7 +2980,7 @@
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
"dev": true,
"requires": {
- "map-cache": "^0.2.2"
+ "map-cache": "0.2.2"
}
},
"fresh": {
@@ -2985,8 +3013,8 @@
"dev": true,
"optional": true,
"requires": {
- "bindings": "^1.5.0",
- "nan": "^2.12.1"
+ "bindings": "1.5.0",
+ "nan": "2.14.1"
}
},
"function-bind": {
@@ -2999,9 +3027,9 @@
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.2.tgz",
"integrity": "sha1-XN9518BdtAFZHf3oPjtwxRI+mkU=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "functions-have-names": "^1.2.0"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5",
+ "functions-have-names": "1.2.1"
}
},
"functions-have-names": {
@@ -3015,7 +3043,7 @@
"integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=",
"dev": true,
"requires": {
- "globule": "~0.1.0"
+ "globule": "0.1.0"
}
},
"generate-function": {
@@ -3024,7 +3052,7 @@
"integrity": "sha1-8GlhdpDBDIaOc7hGV0Z2T5fDR58=",
"dev": true,
"requires": {
- "is-property": "^1.0.2"
+ "is-property": "1.0.2"
}
},
"generate-object-property": {
@@ -3033,7 +3061,7 @@
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"dev": true,
"requires": {
- "is-property": "^1.0.0"
+ "is-property": "1.0.2"
}
},
"get-stdin": {
@@ -3053,7 +3081,7 @@
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
- "assert-plus": "^1.0.0"
+ "assert-plus": "1.0.0"
}
},
"glob": {
@@ -3062,12 +3090,12 @@
"integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=",
"dev": true,
"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"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.4",
+ "minimatch": "3.0.4",
+ "once": "1.3.3",
+ "path-is-absolute": "1.0.1"
},
"dependencies": {
"minimatch": {
@@ -3076,7 +3104,7 @@
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"dev": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
}
}
@@ -3087,8 +3115,8 @@
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"dev": true,
"requires": {
- "glob-parent": "^2.0.0",
- "is-glob": "^2.0.0"
+ "glob-parent": "2.0.0",
+ "is-glob": "2.0.1"
},
"dependencies": {
"is-extglob": {
@@ -3103,7 +3131,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
}
}
@@ -3114,7 +3142,7 @@
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"dev": true,
"requires": {
- "is-glob": "^2.0.0"
+ "is-glob": "2.0.1"
},
"dependencies": {
"is-extglob": {
@@ -3129,7 +3157,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
}
}
@@ -3140,12 +3168,12 @@
"integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=",
"dev": true,
"requires": {
- "glob": "^4.3.1",
- "glob2base": "^0.0.12",
- "minimatch": "^2.0.1",
- "ordered-read-streams": "^0.1.0",
- "through2": "^0.6.1",
- "unique-stream": "^1.0.0"
+ "glob": "4.5.3",
+ "glob2base": "0.0.12",
+ "minimatch": "2.0.10",
+ "ordered-read-streams": "0.1.0",
+ "through2": "0.6.5",
+ "unique-stream": "1.0.0"
},
"dependencies": {
"glob": {
@@ -3154,10 +3182,10 @@
"integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=",
"dev": true,
"requires": {
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^2.0.1",
- "once": "^1.3.0"
+ "inflight": "1.0.6",
+ "inherits": "2.0.4",
+ "minimatch": "2.0.10",
+ "once": "1.3.3"
}
},
"readable-stream": {
@@ -3166,10 +3194,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"through2": {
@@ -3178,8 +3206,8 @@
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
"requires": {
- "readable-stream": ">=1.0.33-1 <1.1.0-0",
- "xtend": ">=4.0.0 <4.1.0-0"
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.2"
}
}
}
@@ -3190,7 +3218,7 @@
"integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=",
"dev": true,
"requires": {
- "gaze": "^0.5.1"
+ "gaze": "0.5.2"
}
},
"glob2base": {
@@ -3199,7 +3227,7 @@
"integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=",
"dev": true,
"requires": {
- "find-index": "^0.1.1"
+ "find-index": "0.1.1"
}
},
"global": {
@@ -3207,8 +3235,8 @@
"resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
"integrity": "sha1-PnsQUXkAajI+1xqvyj6cV6XMZAY=",
"requires": {
- "min-document": "^2.19.0",
- "process": "^0.11.10"
+ "min-document": "2.19.0",
+ "process": "0.11.10"
}
},
"global-modules": {
@@ -3217,9 +3245,9 @@
"integrity": "sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=",
"dev": true,
"requires": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
+ "global-prefix": "1.0.2",
+ "is-windows": "1.0.2",
+ "resolve-dir": "1.0.1"
}
},
"global-prefix": {
@@ -3228,11 +3256,11 @@
"integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
"requires": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
+ "expand-tilde": "2.0.2",
+ "homedir-polyfill": "1.0.3",
+ "ini": "1.3.8",
+ "is-windows": "1.0.2",
+ "which": "1.3.1"
}
},
"globals": {
@@ -3247,9 +3275,9 @@
"integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=",
"dev": true,
"requires": {
- "glob": "~3.1.21",
- "lodash": "~1.0.1",
- "minimatch": "~0.2.11"
+ "glob": "3.1.21",
+ "lodash": "1.0.2",
+ "minimatch": "0.2.14"
},
"dependencies": {
"glob": {
@@ -3258,9 +3286,9 @@
"integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
"dev": true,
"requires": {
- "graceful-fs": "~1.2.0",
- "inherits": "1",
- "minimatch": "~0.2.11"
+ "graceful-fs": "1.2.3",
+ "inherits": "1.0.2",
+ "minimatch": "0.2.14"
}
},
"graceful-fs": {
@@ -3287,8 +3315,8 @@
"integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
"dev": true,
"requires": {
- "lru-cache": "2",
- "sigmund": "~1.0.0"
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
}
}
}
@@ -3299,7 +3327,7 @@
"integrity": "sha1-LX3XAr7aIus7/634gGltpthGMT8=",
"dev": true,
"requires": {
- "sparkles": "^1.0.0"
+ "sparkles": "1.0.1"
}
},
"graceful-fs": {
@@ -3308,7 +3336,7 @@
"integrity": "sha1-ADSUfOntaV7IqwuFS8kZ6Csf+u8=",
"dev": true,
"requires": {
- "natives": "^1.1.3"
+ "natives": "1.1.6"
}
},
"gulp": {
@@ -3317,19 +3345,19 @@
"integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=",
"dev": true,
"requires": {
- "archy": "^1.0.0",
- "chalk": "^1.0.0",
- "deprecated": "^0.0.1",
- "gulp-util": "^3.0.0",
- "interpret": "^1.0.0",
- "liftoff": "^2.1.0",
- "minimist": "^1.1.0",
- "orchestrator": "^0.3.0",
- "pretty-hrtime": "^1.0.0",
- "semver": "^4.1.0",
- "tildify": "^1.0.0",
- "v8flags": "^2.0.2",
- "vinyl-fs": "^0.3.0"
+ "archy": "1.0.0",
+ "chalk": "1.1.3",
+ "deprecated": "0.0.1",
+ "gulp-util": "3.0.8",
+ "interpret": "1.2.0",
+ "liftoff": "2.5.0",
+ "minimist": "1.2.5",
+ "orchestrator": "0.3.8",
+ "pretty-hrtime": "1.0.3",
+ "semver": "4.3.6",
+ "tildify": "1.2.0",
+ "v8flags": "2.1.1",
+ "vinyl-fs": "0.3.14"
}
},
"gulp-gzip": {
@@ -3338,8 +3366,8 @@
"integrity": "sha1-HrYkpKp1vtJ7vwxZpDsr6HLVeRQ=",
"dev": true,
"requires": {
- "clone": "~0.1.11",
- "event-stream": "~3.0.16"
+ "clone": "0.1.19",
+ "event-stream": "3.0.20"
},
"dependencies": {
"clone": {
@@ -3356,18 +3384,17 @@
"integrity": "sha1-VSxBIE5RAXZNenr0NqaWpcJ1pJM=",
"dev": true,
"requires": {
- "map-stream": ">=0.0.4"
+ "map-stream": "0.0.7"
}
},
"gulp-s3": {
"version": "github:pol-is/gulp-s3#847e2b372204b4ceeccb0e9b567f28ff00e7fa1d",
- "from": "github:pol-is/gulp-s3#master",
"dev": true,
"requires": {
- "async": "^3.2.1",
- "event-stream": "*",
- "gulp-util": "~2.2.6",
- "knox": "^0.9.2"
+ "async": "3.2.1",
+ "event-stream": "3.0.20",
+ "gulp-util": "2.2.20",
+ "knox": "0.9.2"
},
"dependencies": {
"ansi-regex": {
@@ -3388,11 +3415,11 @@
"integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=",
"dev": true,
"requires": {
- "ansi-styles": "^1.1.0",
- "escape-string-regexp": "^1.0.0",
- "has-ansi": "^0.1.0",
- "strip-ansi": "^0.3.0",
- "supports-color": "^0.2.0"
+ "ansi-styles": "1.1.0",
+ "escape-string-regexp": "1.0.5",
+ "has-ansi": "0.1.0",
+ "strip-ansi": "0.3.0",
+ "supports-color": "0.2.0"
}
},
"dateformat": {
@@ -3401,8 +3428,8 @@
"integrity": "sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1",
- "meow": "^3.3.0"
+ "get-stdin": "4.0.1",
+ "meow": "3.7.0"
}
},
"debug": {
@@ -3420,14 +3447,14 @@
"integrity": "sha1-1xRuVyiRC9jwR6awseVJvCLb1kw=",
"dev": true,
"requires": {
- "chalk": "^0.5.0",
- "dateformat": "^1.0.7-1.2.3",
- "lodash._reinterpolate": "^2.4.1",
- "lodash.template": "^2.4.1",
- "minimist": "^0.2.0",
- "multipipe": "^0.1.0",
- "through2": "^0.5.0",
- "vinyl": "^0.2.1"
+ "chalk": "0.5.1",
+ "dateformat": "1.0.12",
+ "lodash._reinterpolate": "2.4.1",
+ "lodash.template": "2.4.1",
+ "minimist": "0.2.1",
+ "multipipe": "0.1.2",
+ "through2": "0.5.1",
+ "vinyl": "0.2.3"
}
},
"has-ansi": {
@@ -3436,7 +3463,7 @@
"integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=",
"dev": true,
"requires": {
- "ansi-regex": "^0.2.0"
+ "ansi-regex": "0.2.1"
}
},
"knox": {
@@ -3445,11 +3472,11 @@
"integrity": "sha1-NzZZNmniTwJP2vcjtqHcSv2DmnE=",
"dev": true,
"requires": {
- "debug": "^1.0.2",
- "mime": "*",
- "once": "^1.3.0",
- "stream-counter": "^1.0.0",
- "xml2js": "^0.4.4"
+ "debug": "1.0.5",
+ "mime": "1.6.0",
+ "once": "1.3.3",
+ "stream-counter": "1.0.0",
+ "xml2js": "0.4.23"
}
},
"lodash._reinterpolate": {
@@ -3464,9 +3491,9 @@
"integrity": "sha1-LOEsXghNsKV92l5dHu659dF1o7Q=",
"dev": true,
"requires": {
- "lodash._escapehtmlchar": "~2.4.1",
- "lodash._reunescapedhtml": "~2.4.1",
- "lodash.keys": "~2.4.1"
+ "lodash._escapehtmlchar": "2.4.1",
+ "lodash._reunescapedhtml": "2.4.1",
+ "lodash.keys": "2.4.1"
}
},
"lodash.keys": {
@@ -3475,9 +3502,9 @@
"integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
"dev": true,
"requires": {
- "lodash._isnative": "~2.4.1",
- "lodash._shimkeys": "~2.4.1",
- "lodash.isobject": "~2.4.1"
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
}
},
"lodash.template": {
@@ -3486,13 +3513,13 @@
"integrity": "sha1-nmEQB+32KRKal0qzxIuBez4c8g0=",
"dev": true,
"requires": {
- "lodash._escapestringchar": "~2.4.1",
- "lodash._reinterpolate": "~2.4.1",
- "lodash.defaults": "~2.4.1",
- "lodash.escape": "~2.4.1",
- "lodash.keys": "~2.4.1",
- "lodash.templatesettings": "~2.4.1",
- "lodash.values": "~2.4.1"
+ "lodash._escapestringchar": "2.4.1",
+ "lodash._reinterpolate": "2.4.1",
+ "lodash.defaults": "2.4.1",
+ "lodash.escape": "2.4.1",
+ "lodash.keys": "2.4.1",
+ "lodash.templatesettings": "2.4.1",
+ "lodash.values": "2.4.1"
}
},
"lodash.templatesettings": {
@@ -3501,8 +3528,8 @@
"integrity": "sha1-6nbHXRHrhtTb6JqDiTu4YZKaxpk=",
"dev": true,
"requires": {
- "lodash._reinterpolate": "~2.4.1",
- "lodash.escape": "~2.4.1"
+ "lodash._reinterpolate": "2.4.1",
+ "lodash.escape": "2.4.1"
}
},
"minimist": {
@@ -3517,10 +3544,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"strip-ansi": {
@@ -3529,7 +3556,7 @@
"integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=",
"dev": true,
"requires": {
- "ansi-regex": "^0.2.1"
+ "ansi-regex": "0.2.1"
}
},
"supports-color": {
@@ -3544,8 +3571,8 @@
"integrity": "sha1-390BLrnHAOIyP9M084rGIqs3Lac=",
"dev": true,
"requires": {
- "readable-stream": "~1.0.17",
- "xtend": "~3.0.0"
+ "readable-stream": "1.0.34",
+ "xtend": "3.0.0"
}
},
"vinyl": {
@@ -3554,7 +3581,7 @@
"integrity": "sha1-vKk4IJWC7FpJrVOKAPofEl5RMlI=",
"dev": true,
"requires": {
- "clone-stats": "~0.0.1"
+ "clone-stats": "0.0.1"
}
},
"xtend": {
@@ -3571,9 +3598,9 @@
"integrity": "sha1-NhXJtZt8oUK/qEDFCqqZdayOeBY=",
"dev": true,
"requires": {
- "debug": "~2.2.0",
- "scp2": "~0.2.2",
- "through2": "~2.0.0"
+ "debug": "2.2.0",
+ "scp2": "0.2.2",
+ "through2": "2.0.5"
},
"dependencies": {
"asn1": {
@@ -3603,10 +3630,10 @@
"integrity": "sha1-aVxQvdTi+1xdNwsJHziNNwfikac=",
"dev": true,
"requires": {
- "graceful-fs": "^3.0.2",
- "inherits": "2",
- "minimatch": "^1.0.0",
- "once": "^1.3.0"
+ "graceful-fs": "3.0.12",
+ "inherits": "2.0.4",
+ "minimatch": "1.0.0",
+ "once": "1.3.3"
}
},
"lodash": {
@@ -3621,8 +3648,8 @@
"integrity": "sha1-4N0hILSeG3JM6NcUxSCCKpQ4V20=",
"dev": true,
"requires": {
- "lru-cache": "2",
- "sigmund": "~1.0.0"
+ "lru-cache": "2.7.3",
+ "sigmund": "1.0.1"
}
},
"ms": {
@@ -3637,10 +3664,10 @@
"integrity": "sha1-a2eYPCA1fO/QfwFlABoW1xDZEHg=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"scp2": {
@@ -3649,10 +3676,10 @@
"integrity": "sha1-A6caLOV6LfWtYF32dYxgXzifv1c=",
"dev": true,
"requires": {
- "async": "~0.9.0",
- "glob": "~4.0.6",
- "lodash": "~2.4.1",
- "ssh2": "~0.3.6"
+ "async": "0.9.2",
+ "glob": "4.0.6",
+ "lodash": "2.4.2",
+ "ssh2": "0.3.6"
}
},
"ssh2": {
@@ -3674,24 +3701,24 @@
"integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=",
"dev": true,
"requires": {
- "array-differ": "^1.0.0",
- "array-uniq": "^1.0.2",
- "beeper": "^1.0.0",
- "chalk": "^1.0.0",
- "dateformat": "^2.0.0",
- "fancy-log": "^1.1.0",
- "gulplog": "^1.0.0",
- "has-gulplog": "^0.1.0",
- "lodash._reescape": "^3.0.0",
- "lodash._reevaluate": "^3.0.0",
- "lodash._reinterpolate": "^3.0.0",
- "lodash.template": "^3.0.0",
- "minimist": "^1.1.0",
- "multipipe": "^0.1.2",
- "object-assign": "^3.0.0",
+ "array-differ": "1.0.0",
+ "array-uniq": "1.0.3",
+ "beeper": "1.1.1",
+ "chalk": "1.1.3",
+ "dateformat": "2.2.0",
+ "fancy-log": "1.3.3",
+ "gulplog": "1.0.0",
+ "has-gulplog": "0.1.0",
+ "lodash._reescape": "3.0.0",
+ "lodash._reevaluate": "3.0.0",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.template": "3.6.2",
+ "minimist": "1.2.5",
+ "multipipe": "0.1.2",
+ "object-assign": "3.0.0",
"replace-ext": "0.0.1",
- "through2": "^2.0.0",
- "vinyl": "^0.5.0"
+ "through2": "2.0.5",
+ "vinyl": "0.5.3"
}
},
"gulplog": {
@@ -3700,7 +3727,7 @@
"integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=",
"dev": true,
"requires": {
- "glogg": "^1.0.0"
+ "glogg": "1.0.2"
}
},
"har-schema": {
@@ -3713,8 +3740,8 @@
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
"integrity": "sha1-HvievT5JllV2de7ZiTEQ3DUPoIA=",
"requires": {
- "ajv": "^6.5.5",
- "har-schema": "^2.0.0"
+ "ajv": "6.12.2",
+ "har-schema": "2.0.0"
}
},
"has": {
@@ -3722,7 +3749,7 @@
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=",
"requires": {
- "function-bind": "^1.1.1"
+ "function-bind": "1.1.1"
}
},
"has-ansi": {
@@ -3731,7 +3758,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"has-flag": {
@@ -3746,7 +3773,7 @@
"integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=",
"dev": true,
"requires": {
- "sparkles": "^1.0.0"
+ "sparkles": "1.0.1"
}
},
"has-symbols": {
@@ -3760,9 +3787,9 @@
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
+ "get-value": "2.0.6",
+ "has-values": "1.0.0",
+ "isobject": "3.0.1"
}
},
"has-values": {
@@ -3771,8 +3798,8 @@
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
+ "is-number": "3.0.0",
+ "kind-of": "4.0.0"
},
"dependencies": {
"kind-of": {
@@ -3781,7 +3808,7 @@
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -3791,10 +3818,10 @@
"resolved": "https://registry.npmjs.org/history/-/history-1.17.0.tgz",
"integrity": "sha1-xUg8qlodH+oAoafY0ZuHQBZxHSk=",
"requires": {
- "deep-equal": "^1.0.0",
- "invariant": "^2.0.0",
- "query-string": "^3.0.0",
- "warning": "^2.0.0"
+ "deep-equal": "1.1.1",
+ "invariant": "2.2.4",
+ "query-string": "3.0.3",
+ "warning": "2.1.0"
},
"dependencies": {
"query-string": {
@@ -3802,7 +3829,7 @@
"resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz",
"integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=",
"requires": {
- "strict-uri-encode": "^1.0.0"
+ "strict-uri-encode": "1.1.0"
}
}
}
@@ -3817,7 +3844,7 @@
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
"integrity": "sha1-7OCsr3HWLClpwuxZ/v9CpLGoW0U=",
"requires": {
- "react-is": "^16.7.0"
+ "react-is": "16.13.1"
}
},
"home-or-tmp": {
@@ -3826,8 +3853,8 @@
"integrity": "sha1-S58eQIAMPlDGwn94FnavzOcfOYU=",
"dev": true,
"requires": {
- "os-tmpdir": "^1.0.1",
- "user-home": "^1.1.1"
+ "os-tmpdir": "1.0.2",
+ "user-home": "1.1.1"
}
},
"homedir-polyfill": {
@@ -3836,7 +3863,7 @@
"integrity": "sha1-dDKYzvTlrz4ZQWH7rcwhUdOgWOg=",
"dev": true,
"requires": {
- "parse-passwd": "^1.0.0"
+ "parse-passwd": "1.0.0"
}
},
"hosted-git-info": {
@@ -3856,12 +3883,12 @@
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
"integrity": "sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=",
"requires": {
- "domelementtype": "^1.3.1",
- "domhandler": "^2.3.0",
- "domutils": "^1.5.1",
- "entities": "^1.1.1",
- "inherits": "^2.0.1",
- "readable-stream": "^3.1.1"
+ "domelementtype": "1.3.1",
+ "domhandler": "2.4.2",
+ "domutils": "1.5.1",
+ "entities": "1.1.2",
+ "inherits": "2.0.4",
+ "readable-stream": "3.6.0"
},
"dependencies": {
"readable-stream": {
@@ -3869,9 +3896,9 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha1-M3u9o63AcGvT4CRCaihtS0sskZg=",
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "inherits": "2.0.4",
+ "string_decoder": "1.3.0",
+ "util-deprecate": "1.0.2"
}
},
"safe-buffer": {
@@ -3884,7 +3911,7 @@
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=",
"requires": {
- "safe-buffer": "~5.2.0"
+ "safe-buffer": "5.2.0"
}
}
}
@@ -3895,10 +3922,10 @@
"integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
"dev": true,
"requires": {
- "depd": "~1.1.2",
+ "depd": "1.1.2",
"inherits": "2.0.3",
"setprototypeof": "1.1.1",
- "statuses": ">= 1.5.0 < 2",
+ "statuses": "1.5.0",
"toidentifier": "1.0.0"
},
"dependencies": {
@@ -3915,9 +3942,9 @@
"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"
+ "assert-plus": "1.0.0",
+ "jsprim": "1.4.1",
+ "sshpk": "1.16.1"
}
},
"https-browserify": {
@@ -3936,7 +3963,7 @@
"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"
+ "safer-buffer": "2.1.2"
}
},
"ieee754": {
@@ -3963,7 +3990,7 @@
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
"dev": true,
"requires": {
- "repeating": "^2.0.0"
+ "repeating": "2.0.1"
}
},
"indexof": {
@@ -3977,8 +4004,8 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
- "once": "^1.3.0",
- "wrappy": "1"
+ "once": "1.3.3",
+ "wrappy": "1.0.2"
}
},
"inherits": {
@@ -4002,8 +4029,8 @@
"resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-1.0.4.tgz",
"integrity": "sha1-hJ9lc3Olz72BQc/dsBPfb2jG3zk=",
"requires": {
- "bowser": "^1.0.0",
- "inline-style-prefix-all": "^2.0.2"
+ "bowser": "1.9.4",
+ "inline-style-prefix-all": "2.0.2"
}
},
"inquirer": {
@@ -4012,19 +4039,19 @@
"integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
"dev": true,
"requires": {
- "ansi-escapes": "^1.1.0",
- "ansi-regex": "^2.0.0",
- "chalk": "^1.0.0",
- "cli-cursor": "^1.0.1",
- "cli-width": "^2.0.0",
- "figures": "^1.3.5",
- "lodash": "^4.3.0",
- "readline2": "^1.0.1",
- "run-async": "^0.1.0",
- "rx-lite": "^3.1.2",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.0",
- "through": "^2.3.6"
+ "ansi-escapes": "1.4.0",
+ "ansi-regex": "2.1.1",
+ "chalk": "1.1.3",
+ "cli-cursor": "1.0.2",
+ "cli-width": "2.2.1",
+ "figures": "1.7.0",
+ "lodash": "4.17.21",
+ "readline2": "1.0.1",
+ "run-async": "0.1.0",
+ "rx-lite": "3.1.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "through": "2.3.8"
}
},
"interpret": {
@@ -4038,7 +4065,7 @@
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha1-YQ88ksk1nOHbYW5TgAjSP/NRWOY=",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
},
"invert-kv": {
@@ -4059,8 +4086,8 @@
"integrity": "sha1-OV4a6EsR8mrReV5zwXN45IowFXY=",
"dev": true,
"requires": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
+ "is-relative": "1.0.0",
+ "is-windows": "1.0.2"
}
},
"is-accessor-descriptor": {
@@ -4069,7 +4096,7 @@
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -4078,7 +4105,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -4100,7 +4127,7 @@
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"requires": {
- "binary-extensions": "^1.0.0"
+ "binary-extensions": "1.13.1"
}
},
"is-buffer": {
@@ -4120,7 +4147,7 @@
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -4129,7 +4156,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -4145,9 +4172,9 @@
"integrity": "sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
+ "is-accessor-descriptor": "0.1.6",
+ "is-data-descriptor": "0.1.4",
+ "kind-of": "5.1.0"
},
"dependencies": {
"kind-of": {
@@ -4170,7 +4197,7 @@
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"dev": true,
"requires": {
- "is-primitive": "^2.0.0"
+ "is-primitive": "2.0.0"
}
},
"is-extendable": {
@@ -4197,7 +4224,7 @@
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
- "number-is-nan": "^1.0.0"
+ "number-is-nan": "1.0.1"
}
},
"is-glob": {
@@ -4206,7 +4233,7 @@
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
- "is-extglob": "^2.1.0"
+ "is-extglob": "2.1.1"
}
},
"is-integer": {
@@ -4215,7 +4242,7 @@
"integrity": "sha1-a96Bqs3feLZZtmKdYpytxRqIbVw=",
"dev": true,
"requires": {
- "is-finite": "^1.0.0"
+ "is-finite": "1.1.0"
}
},
"is-my-ip-valid": {
@@ -4230,11 +4257,11 @@
"integrity": "sha1-E0Wm/KPo2u/BDQ+ncGf1TO2v1Zo=",
"dev": true,
"requires": {
- "generate-function": "^2.0.0",
- "generate-object-property": "^1.1.0",
- "is-my-ip-valid": "^1.0.0",
- "jsonpointer": "^4.0.0",
- "xtend": "^4.0.0"
+ "generate-function": "2.3.1",
+ "generate-object-property": "1.2.0",
+ "is-my-ip-valid": "1.0.0",
+ "jsonpointer": "4.0.1",
+ "xtend": "4.0.2"
}
},
"is-number": {
@@ -4243,7 +4270,7 @@
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -4252,7 +4279,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -4263,7 +4290,7 @@
"integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
"dev": true,
"requires": {
- "isobject": "^3.0.1"
+ "isobject": "3.0.1"
}
},
"is-posix-bracket": {
@@ -4289,7 +4316,7 @@
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
"integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=",
"requires": {
- "has": "^1.0.3"
+ "has": "1.0.3"
}
},
"is-relative": {
@@ -4298,7 +4325,7 @@
"integrity": "sha1-obtpNc6MXboei5dUubLcwCDiJg0=",
"dev": true,
"requires": {
- "is-unc-path": "^1.0.0"
+ "is-unc-path": "1.0.0"
}
},
"is-resolvable": {
@@ -4322,7 +4349,7 @@
"resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
"integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=",
"requires": {
- "has-symbols": "^1.0.1"
+ "has-symbols": "1.0.1"
}
},
"is-typedarray": {
@@ -4336,7 +4363,7 @@
"integrity": "sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=",
"dev": true,
"requires": {
- "unc-path-regex": "^0.1.2"
+ "unc-path-regex": "0.1.2"
}
},
"is-utf8": {
@@ -4374,8 +4401,8 @@
"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
"integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
"requires": {
- "node-fetch": "^1.0.1",
- "whatwg-fetch": ">=0.10.0"
+ "node-fetch": "1.7.3",
+ "whatwg-fetch": "0.10.1"
}
},
"isstream": {
@@ -4394,21 +4421,12 @@
"integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk="
},
"js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=",
- "dev": true,
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "dependencies": {
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=",
- "dev": true
- }
+ "argparse": "1.0.10",
+ "esprima": "4.0.1"
}
},
"jsbn": {
@@ -4444,7 +4462,7 @@
"integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
"dev": true,
"requires": {
- "jsonify": "~0.0.0"
+ "jsonify": "0.0.0"
}
},
"json-stringify-safe": {
@@ -4489,14 +4507,13 @@
},
"knox": {
"version": "git://github.com/caremerge/knox.git#b1e031c209b3c17cab622a458e87728c1ee88cbd",
- "from": "git://github.com/caremerge/knox.git#b1e031c209b3c17cab622a458e87728c1ee88cbd",
"dev": true,
"requires": {
- "debug": "^2.2.0",
+ "debug": "2.6.9",
"mime": "1.4.0",
- "once": "^1.3.0",
- "stream-counter": "^1.0.0",
- "xml2js": "^0.4.4"
+ "once": "1.3.3",
+ "stream-counter": "1.0.0",
+ "xml2js": "0.4.23"
},
"dependencies": {
"mime": {
@@ -4519,7 +4536,7 @@
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": {
- "invert-kv": "^1.0.0"
+ "invert-kv": "1.0.0"
}
},
"leven": {
@@ -4534,8 +4551,8 @@
"integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2"
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2"
}
},
"liftoff": {
@@ -4544,14 +4561,14 @@
"integrity": "sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=",
"dev": true,
"requires": {
- "extend": "^3.0.0",
- "findup-sync": "^2.0.0",
- "fined": "^1.0.1",
- "flagged-respawn": "^1.0.0",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.0",
- "rechoir": "^0.6.2",
- "resolve": "^1.1.7"
+ "extend": "3.0.2",
+ "findup-sync": "2.0.0",
+ "fined": "1.2.0",
+ "flagged-respawn": "1.0.1",
+ "is-plain-object": "2.0.4",
+ "object.map": "1.0.1",
+ "rechoir": "0.6.2",
+ "resolve": "1.17.0"
}
},
"load-json-file": {
@@ -4560,11 +4577,11 @@
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
+ "graceful-fs": "4.2.8",
+ "parse-json": "2.2.0",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1",
+ "strip-bom": "2.0.0"
},
"dependencies": {
"graceful-fs": {
@@ -4579,7 +4596,7 @@
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
- "is-utf8": "^0.2.0"
+ "is-utf8": "0.2.1"
}
}
}
@@ -4590,10 +4607,10 @@
"integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
"dev": true,
"requires": {
- "big.js": "^3.1.3",
- "emojis-list": "^2.0.0",
- "json5": "^0.5.0",
- "object-assign": "^4.0.1"
+ "big.js": "3.2.0",
+ "emojis-list": "2.1.0",
+ "json5": "0.5.1",
+ "object-assign": "4.1.1"
},
"dependencies": {
"json5": {
@@ -4626,8 +4643,8 @@
"integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=",
"dev": true,
"requires": {
- "lodash._basecopy": "^3.0.0",
- "lodash.keys": "^3.0.0"
+ "lodash._basecopy": "3.0.1",
+ "lodash.keys": "3.1.2"
}
},
"lodash._basecopy": {
@@ -4642,8 +4659,8 @@
"integrity": "sha1-B3D/gBMa9uNPO1EXlqe6UhTmX/c=",
"dev": true,
"requires": {
- "lodash.isarguments": "^3.0.0",
- "lodash.isarray": "^3.0.0"
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
}
},
"lodash._basefor": {
@@ -4676,9 +4693,9 @@
"integrity": "sha1-g4pbri/aymOsIt7o4Z+k5taXCxE=",
"dev": true,
"requires": {
- "lodash._bindcallback": "^3.0.0",
- "lodash._isiterateecall": "^3.0.0",
- "lodash.restparam": "^3.0.0"
+ "lodash._bindcallback": "3.0.1",
+ "lodash._isiterateecall": "3.0.9",
+ "lodash.restparam": "3.6.1"
}
},
"lodash._escapehtmlchar": {
@@ -4687,7 +4704,7 @@
"integrity": "sha1-32fDu2t+jh6DGrSL+geVuSr+iZ0=",
"dev": true,
"requires": {
- "lodash._htmlescapes": "~2.4.1"
+ "lodash._htmlescapes": "2.4.1"
}
},
"lodash._escapestringchar": {
@@ -4738,8 +4755,8 @@
"integrity": "sha1-/2G5oBens699MObFPeKK+hm4dQo=",
"dev": true,
"requires": {
- "lodash._basefor": "^3.0.0",
- "lodash.keysin": "^3.0.0"
+ "lodash._basefor": "3.0.3",
+ "lodash.keysin": "3.0.8"
}
},
"lodash._reescape": {
@@ -4766,8 +4783,8 @@
"integrity": "sha1-dHxPxAED6zu4oJduVx96JlnpO6c=",
"dev": true,
"requires": {
- "lodash._htmlescapes": "~2.4.1",
- "lodash.keys": "~2.4.1"
+ "lodash._htmlescapes": "2.4.1",
+ "lodash.keys": "2.4.1"
},
"dependencies": {
"lodash.keys": {
@@ -4776,9 +4793,9 @@
"integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
"dev": true,
"requires": {
- "lodash._isnative": "~2.4.1",
- "lodash._shimkeys": "~2.4.1",
- "lodash.isobject": "~2.4.1"
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
}
}
}
@@ -4795,7 +4812,7 @@
"integrity": "sha1-bpzJZm/wgfC1psl4uD4kLmlJ0gM=",
"dev": true,
"requires": {
- "lodash._objecttypes": "~2.4.1"
+ "lodash._objecttypes": "2.4.1"
}
},
"lodash.assign": {
@@ -4804,9 +4821,9 @@
"integrity": "sha1-POnwI0tLIiPilrj6CsH+6OvKZPo=",
"dev": true,
"requires": {
- "lodash._baseassign": "^3.0.0",
- "lodash._createassigner": "^3.0.0",
- "lodash.keys": "^3.0.0"
+ "lodash._baseassign": "3.2.0",
+ "lodash._createassigner": "3.1.1",
+ "lodash.keys": "3.1.2"
}
},
"lodash.assignin": {
@@ -4819,6 +4836,11 @@
"resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
"integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU="
},
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8="
+ },
"lodash.debounce": {
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
@@ -4830,8 +4852,8 @@
"integrity": "sha1-p+iIXwXmiFEUS24SqPNngCa8TFQ=",
"dev": true,
"requires": {
- "lodash._objecttypes": "~2.4.1",
- "lodash.keys": "~2.4.1"
+ "lodash._objecttypes": "2.4.1",
+ "lodash.keys": "2.4.1"
},
"dependencies": {
"lodash.keys": {
@@ -4840,9 +4862,9 @@
"integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
"dev": true,
"requires": {
- "lodash._isnative": "~2.4.1",
- "lodash._shimkeys": "~2.4.1",
- "lodash.isobject": "~2.4.1"
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
}
}
}
@@ -4853,7 +4875,7 @@
"integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=",
"dev": true,
"requires": {
- "lodash._root": "^3.0.0"
+ "lodash._root": "3.0.1"
}
},
"lodash.filter": {
@@ -4894,7 +4916,7 @@
"integrity": "sha1-Wi5H/mmVPx7mMafrof5k0tBlWPU=",
"dev": true,
"requires": {
- "lodash._objecttypes": "~2.4.1"
+ "lodash._objecttypes": "2.4.1"
}
},
"lodash.keys": {
@@ -4903,9 +4925,9 @@
"integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
"dev": true,
"requires": {
- "lodash._getnative": "^3.0.0",
- "lodash.isarguments": "^3.0.0",
- "lodash.isarray": "^3.0.0"
+ "lodash._getnative": "3.9.1",
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
}
},
"lodash.keysin": {
@@ -4914,8 +4936,8 @@
"integrity": "sha1-IsRJPrvtsUJ5YqVLRFssinZ/tH8=",
"dev": true,
"requires": {
- "lodash.isarguments": "^3.0.0",
- "lodash.isarray": "^3.0.0"
+ "lodash.isarguments": "3.1.0",
+ "lodash.isarray": "3.0.4"
}
},
"lodash.map": {
@@ -4960,15 +4982,15 @@
"integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=",
"dev": true,
"requires": {
- "lodash._basecopy": "^3.0.0",
- "lodash._basetostring": "^3.0.0",
- "lodash._basevalues": "^3.0.0",
- "lodash._isiterateecall": "^3.0.0",
- "lodash._reinterpolate": "^3.0.0",
- "lodash.escape": "^3.0.0",
- "lodash.keys": "^3.0.0",
- "lodash.restparam": "^3.0.0",
- "lodash.templatesettings": "^3.0.0"
+ "lodash._basecopy": "3.0.1",
+ "lodash._basetostring": "3.0.1",
+ "lodash._basevalues": "3.0.0",
+ "lodash._isiterateecall": "3.0.9",
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0",
+ "lodash.keys": "3.1.2",
+ "lodash.restparam": "3.6.1",
+ "lodash.templatesettings": "3.1.1"
}
},
"lodash.templatesettings": {
@@ -4977,8 +4999,8 @@
"integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=",
"dev": true,
"requires": {
- "lodash._reinterpolate": "^3.0.0",
- "lodash.escape": "^3.0.0"
+ "lodash._reinterpolate": "3.0.0",
+ "lodash.escape": "3.2.0"
}
},
"lodash.values": {
@@ -4987,7 +5009,7 @@
"integrity": "sha1-q/UUQ2s8twUAFieXjLzzCxKA7qQ=",
"dev": true,
"requires": {
- "lodash.keys": "~2.4.1"
+ "lodash.keys": "2.4.1"
},
"dependencies": {
"lodash.keys": {
@@ -4996,9 +5018,9 @@
"integrity": "sha1-SN6kbfj/djKxDXBrissmWR4rNyc=",
"dev": true,
"requires": {
- "lodash._isnative": "~2.4.1",
- "lodash._shimkeys": "~2.4.1",
- "lodash.isobject": "~2.4.1"
+ "lodash._isnative": "2.4.1",
+ "lodash._shimkeys": "2.4.1",
+ "lodash.isobject": "2.4.1"
}
}
}
@@ -5014,7 +5036,7 @@
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha1-ce5R+nvkyuwaY4OffmgtgTLTDK8=",
"requires": {
- "js-tokens": "^3.0.0 || ^4.0.0"
+ "js-tokens": "4.0.0"
}
},
"loud-rejection": {
@@ -5023,8 +5045,8 @@
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
+ "currently-unhandled": "0.4.1",
+ "signal-exit": "3.0.3"
}
},
"lower-case": {
@@ -5044,7 +5066,7 @@
"integrity": "sha1-KbM/MSqo9UfEpeSQ9Wr87JkTOtY=",
"dev": true,
"requires": {
- "kind-of": "^6.0.2"
+ "kind-of": "6.0.3"
}
},
"map-cache": {
@@ -5071,7 +5093,7 @@
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
"dev": true,
"requires": {
- "object-visit": "^1.0.0"
+ "object-visit": "1.0.1"
}
},
"math-random": {
@@ -5092,8 +5114,8 @@
"integrity": "sha1-e8xrYp46Q+hx1+Kaymrop/FcuyA=",
"dev": true,
"requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
+ "errno": "0.1.7",
+ "readable-stream": "2.3.7"
},
"dependencies": {
"isarray": {
@@ -5108,13 +5130,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -5123,7 +5145,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -5134,16 +5156,16 @@
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"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"
+ "camelcase-keys": "2.1.0",
+ "decamelize": "1.2.0",
+ "loud-rejection": "1.6.0",
+ "map-obj": "1.0.1",
+ "minimist": "1.2.5",
+ "normalize-package-data": "2.5.0",
+ "object-assign": "4.1.1",
+ "read-pkg-up": "1.0.1",
+ "redent": "1.0.0",
+ "trim-newlines": "1.0.0"
},
"dependencies": {
"object-assign": {
@@ -5172,19 +5194,19 @@
"integrity": "sha1-cIWbyVyYQJUvNZoGij/En57PrCM=",
"dev": true,
"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"
+ "arr-diff": "4.0.0",
+ "array-unique": "0.3.2",
+ "braces": "2.3.2",
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "extglob": "2.0.4",
+ "fragment-cache": "0.2.1",
+ "kind-of": "6.0.3",
+ "nanomatch": "1.2.13",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
}
},
"mime": {
@@ -5211,7 +5233,7 @@
"resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
"integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
"requires": {
- "dom-walk": "^0.1.0"
+ "dom-walk": "0.1.2"
}
},
"minimatch": {
@@ -5220,7 +5242,7 @@
"integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=",
"dev": true,
"requires": {
- "brace-expansion": "^1.0.0"
+ "brace-expansion": "1.1.11"
}
},
"minimist": {
@@ -5235,8 +5257,8 @@
"integrity": "sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=",
"dev": true,
"requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
+ "for-in": "1.0.2",
+ "is-extendable": "1.0.1"
},
"dependencies": {
"is-extendable": {
@@ -5245,7 +5267,7 @@
"integrity": "sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=",
"dev": true,
"requires": {
- "is-plain-object": "^2.0.4"
+ "is-plain-object": "2.0.4"
}
}
}
@@ -5256,7 +5278,7 @@
"integrity": "sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=",
"dev": true,
"requires": {
- "minimist": "^1.2.5"
+ "minimist": "1.2.5"
}
},
"moment": {
@@ -5303,17 +5325,17 @@
"integrity": "sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=",
"dev": true,
"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-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
+ "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-windows": "1.0.2",
+ "kind-of": "6.0.3",
+ "object.pick": "1.3.0",
+ "regex-not": "1.0.2",
+ "snapdragon": "0.8.2",
+ "to-regex": "3.0.2"
}
},
"natives": {
@@ -5345,7 +5367,7 @@
"resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
"integrity": "sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=",
"requires": {
- "lower-case": "^1.1.1"
+ "lower-case": "1.1.4"
}
},
"node-fetch": {
@@ -5353,8 +5375,8 @@
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
"integrity": "sha1-mA9vcthSEaU0fGsrwYxbhMPrR+8=",
"requires": {
- "encoding": "^0.1.11",
- "is-stream": "^1.0.1"
+ "encoding": "0.1.12",
+ "is-stream": "1.1.0"
}
},
"node-libs-browser": {
@@ -5363,28 +5385,28 @@
"integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
"dev": true,
"requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.1.4",
- "buffer": "^4.9.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
+ "assert": "1.5.0",
+ "browserify-zlib": "0.1.4",
+ "buffer": "4.9.2",
+ "console-browserify": "1.2.0",
+ "constants-browserify": "1.0.0",
"crypto-browserify": "3.3.0",
- "domain-browser": "^1.1.1",
- "events": "^1.0.0",
+ "domain-browser": "1.2.0",
+ "events": "1.1.1",
"https-browserify": "0.0.1",
- "os-browserify": "^0.2.0",
+ "os-browserify": "0.2.1",
"path-browserify": "0.0.0",
- "process": "^0.11.0",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.0.5",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.3.1",
- "string_decoder": "^0.10.25",
- "timers-browserify": "^2.0.2",
+ "process": "0.11.10",
+ "punycode": "1.4.1",
+ "querystring-es3": "0.2.1",
+ "readable-stream": "2.3.7",
+ "stream-browserify": "2.0.2",
+ "stream-http": "2.8.3",
+ "string_decoder": "0.10.31",
+ "timers-browserify": "2.0.11",
"tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.10.3",
+ "url": "0.11.0",
+ "util": "0.10.4",
"vm-browserify": "0.0.4"
},
"dependencies": {
@@ -5406,13 +5428,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
},
"dependencies": {
"string_decoder": {
@@ -5421,7 +5443,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -5434,10 +5456,10 @@
"integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "hosted-git-info": "2.8.9",
+ "resolve": "1.17.0",
+ "semver": "4.3.6",
+ "validate-npm-package-license": "3.0.4"
}
},
"normalize-path": {
@@ -5446,7 +5468,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "remove-trailing-separator": "^1.0.1"
+ "remove-trailing-separator": "1.1.0"
}
},
"nth-check": {
@@ -5454,7 +5476,7 @@
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
"integrity": "sha1-sr0pXDfj3VijvwcAN2Zjuk2c8Fw=",
"requires": {
- "boolbase": "~1.0.0"
+ "boolbase": "1.0.0"
}
},
"number-is-nan": {
@@ -5479,9 +5501,9 @@
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
"dev": true,
"requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
+ "copy-descriptor": "0.1.1",
+ "define-property": "0.2.5",
+ "kind-of": "3.2.2"
},
"dependencies": {
"define-property": {
@@ -5490,7 +5512,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
},
"kind-of": {
@@ -5499,7 +5521,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -5514,8 +5536,8 @@
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
"integrity": "sha1-xdLof/nhGfeLegiEQVGeLuwVc7Y=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5"
}
},
"object-keys": {
@@ -5529,7 +5551,7 @@
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
- "isobject": "^3.0.0"
+ "isobject": "3.0.1"
}
},
"object.assign": {
@@ -5537,10 +5559,10 @@
"resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
"integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=",
"requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
+ "define-properties": "1.1.3",
+ "function-bind": "1.1.1",
+ "has-symbols": "1.0.1",
+ "object-keys": "1.1.1"
}
},
"object.defaults": {
@@ -5549,10 +5571,10 @@
"integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=",
"dev": true,
"requires": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
+ "array-each": "1.0.1",
+ "array-slice": "1.1.0",
+ "for-own": "1.0.0",
+ "isobject": "3.0.1"
}
},
"object.entries": {
@@ -5560,10 +5582,10 @@
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.1.tgz",
"integrity": "sha1-7hzwQVPeArsJP+wzaDkA9XzlOZs=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5",
+ "function-bind": "1.1.1",
+ "has": "1.0.3"
}
},
"object.map": {
@@ -5572,8 +5594,8 @@
"integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=",
"dev": true,
"requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
+ "for-own": "1.0.0",
+ "make-iterator": "1.0.1"
}
},
"object.omit": {
@@ -5582,8 +5604,8 @@
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"dev": true,
"requires": {
- "for-own": "^0.1.4",
- "is-extendable": "^0.1.1"
+ "for-own": "0.1.5",
+ "is-extendable": "0.1.1"
},
"dependencies": {
"for-own": {
@@ -5592,7 +5614,7 @@
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"requires": {
- "for-in": "^1.0.1"
+ "for-in": "1.0.2"
}
}
}
@@ -5603,7 +5625,7 @@
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
"dev": true,
"requires": {
- "isobject": "^3.0.1"
+ "isobject": "3.0.1"
}
},
"object.values": {
@@ -5611,10 +5633,10 @@
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz",
"integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5",
+ "function-bind": "1.1.1",
+ "has": "1.0.3"
}
},
"on-finished": {
@@ -5631,7 +5653,7 @@
"resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
"integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=",
"requires": {
- "wrappy": "1"
+ "wrappy": "1.0.2"
}
},
"onetime": {
@@ -5646,8 +5668,8 @@
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"dev": true,
"requires": {
- "minimist": "~0.0.1",
- "wordwrap": "~0.0.2"
+ "minimist": "0.0.10",
+ "wordwrap": "0.0.2"
},
"dependencies": {
"minimist": {
@@ -5664,12 +5686,12 @@
"integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=",
"dev": true,
"requires": {
- "deep-is": "~0.1.3",
- "fast-levenshtein": "~2.0.6",
- "levn": "~0.3.0",
- "prelude-ls": "~1.1.2",
- "type-check": "~0.3.2",
- "word-wrap": "~1.2.3"
+ "deep-is": "0.1.3",
+ "fast-levenshtein": "2.0.6",
+ "levn": "0.3.0",
+ "prelude-ls": "1.1.2",
+ "type-check": "0.3.2",
+ "word-wrap": "1.2.3"
}
},
"orchestrator": {
@@ -5678,9 +5700,9 @@
"integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=",
"dev": true,
"requires": {
- "end-of-stream": "~0.1.5",
- "sequencify": "~0.0.7",
- "stream-consume": "~0.1.0"
+ "end-of-stream": "0.1.5",
+ "sequencify": "0.0.7",
+ "stream-consume": "0.1.1"
}
},
"ordered-read-streams": {
@@ -5707,7 +5729,7 @@
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"requires": {
- "lcid": "^1.0.0"
+ "lcid": "1.0.0"
}
},
"os-tmpdir": {
@@ -5722,9 +5744,9 @@
"integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.4",
- "mkdirp": "^0.5.1",
- "object-assign": "^4.1.0"
+ "graceful-fs": "4.2.4",
+ "mkdirp": "0.5.5",
+ "object-assign": "4.1.1"
},
"dependencies": {
"graceful-fs": {
@@ -5753,9 +5775,9 @@
"integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=",
"dev": true,
"requires": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
+ "is-absolute": "1.0.0",
+ "map-cache": "0.2.2",
+ "path-root": "0.1.1"
}
},
"parse-glob": {
@@ -5764,10 +5786,10 @@
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"dev": true,
"requires": {
- "glob-base": "^0.3.0",
- "is-dotfile": "^1.0.0",
- "is-extglob": "^1.0.0",
- "is-glob": "^2.0.0"
+ "glob-base": "0.3.0",
+ "is-dotfile": "1.0.3",
+ "is-extglob": "1.0.0",
+ "is-glob": "2.0.1"
},
"dependencies": {
"is-extglob": {
@@ -5782,7 +5804,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "^1.0.0"
+ "is-extglob": "1.0.0"
}
}
}
@@ -5793,7 +5815,7 @@
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"dev": true,
"requires": {
- "error-ex": "^1.2.0"
+ "error-ex": "1.3.2"
}
},
"parse-node-version": {
@@ -5832,7 +5854,7 @@
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "pinkie-promise": "^2.0.0"
+ "pinkie-promise": "2.0.1"
}
},
"path-is-absolute": {
@@ -5858,7 +5880,7 @@
"integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=",
"dev": true,
"requires": {
- "path-root-regex": "^0.1.0"
+ "path-root-regex": "0.1.2"
}
},
"path-root-regex": {
@@ -5879,9 +5901,9 @@
"integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
+ "graceful-fs": "4.2.8",
+ "pify": "2.3.0",
+ "pinkie-promise": "2.0.1"
},
"dependencies": {
"graceful-fs": {
@@ -5898,7 +5920,7 @@
"integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
"dev": true,
"requires": {
- "through": "~2.3"
+ "through": "2.3.8"
}
},
"pbkdf2-compat": {
@@ -5930,7 +5952,7 @@
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
- "pinkie": "^2.0.0"
+ "pinkie": "2.0.4"
}
},
"pluralize": {
@@ -5991,7 +6013,7 @@
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
"integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=",
"requires": {
- "asap": "~2.0.3"
+ "asap": "2.0.6"
}
},
"prop-types": {
@@ -5999,9 +6021,9 @@
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
"integrity": "sha1-UsQedbjIfnK52TYOAga5ncv/psU=",
"requires": {
- "loose-envify": "^1.4.0",
- "object-assign": "^4.1.1",
- "react-is": "^16.8.1"
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "react-is": "16.13.1"
},
"dependencies": {
"object-assign": {
@@ -6017,7 +6039,7 @@
"integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=",
"dev": true,
"requires": {
- "forwarded": "~0.1.2",
+ "forwarded": "0.1.2",
"ipaddr.js": "1.9.1"
}
},
@@ -6053,8 +6075,8 @@
"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"
+ "object-assign": "4.1.1",
+ "strict-uri-encode": "1.1.0"
},
"dependencies": {
"object-assign": {
@@ -6081,10 +6103,10 @@
"resolved": "https://registry.npmjs.org/radium/-/radium-0.18.1.tgz",
"integrity": "sha1-oB25tMbmNk3jsC1Zdq3yjQuYNR0=",
"requires": {
- "array-find": "^1.0.0",
- "exenv": "^1.2.0",
- "inline-style-prefixer": "^1.0.3",
- "rimraf": "^2.4.0"
+ "array-find": "1.0.0",
+ "exenv": "1.2.2",
+ "inline-style-prefixer": "1.0.4",
+ "rimraf": "2.7.1"
}
},
"raf": {
@@ -6092,7 +6114,7 @@
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
"integrity": "sha1-B0LpmkplUvRF1z4+4DKK8P8e3jk=",
"requires": {
- "performance-now": "^2.1.0"
+ "performance-now": "2.1.0"
},
"dependencies": {
"performance-now": {
@@ -6108,9 +6130,9 @@
"integrity": "sha1-t3bvxZN1mE42xTey9RofCv8Noe0=",
"dev": true,
"requires": {
- "is-number": "^4.0.0",
- "kind-of": "^6.0.0",
- "math-random": "^1.0.1"
+ "is-number": "4.0.0",
+ "kind-of": "6.0.3",
+ "math-random": "1.0.4"
},
"dependencies": {
"is-number": {
@@ -6144,9 +6166,9 @@
"resolved": "https://registry.npmjs.org/react/-/react-15.3.1.tgz",
"integrity": "sha1-94UB7YwuxubjHDIjZS6X8TadK9Y=",
"requires": {
- "fbjs": "^0.8.4",
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.0"
+ "fbjs": "0.8.17",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1"
},
"dependencies": {
"object-assign": {
@@ -6166,9 +6188,9 @@
"resolved": "https://registry.npmjs.org/react-autosuggest/-/react-autosuggest-3.9.0.tgz",
"integrity": "sha1-KoAK/Gnea1WAFUlC5XYWiy65T7k=",
"requires": {
- "react-autowhatever": "^4.1.0",
- "react-redux": "^4.4.5",
- "redux": "^3.5.1"
+ "react-autowhatever": "4.3.0",
+ "react-redux": "4.4.10",
+ "redux": "3.7.2"
}
},
"react-autowhatever": {
@@ -6176,8 +6198,8 @@
"resolved": "https://registry.npmjs.org/react-autowhatever/-/react-autowhatever-4.3.0.tgz",
"integrity": "sha1-vxkZcm2dSMMKrr3kgnTrDupept8=",
"requires": {
- "react-themeable": "^1.0.1",
- "section-iterator": "^2.0.0"
+ "react-themeable": "1.1.0",
+ "section-iterator": "2.0.0"
}
},
"react-codemirror": {
@@ -6185,9 +6207,9 @@
"resolved": "https://registry.npmjs.org/react-codemirror/-/react-codemirror-0.2.6.tgz",
"integrity": "sha1-5x41cXzm7/rmjfHb8rWnW4SkT4Q=",
"requires": {
- "classnames": "^2.2.3",
- "codemirror": "^5.13.4",
- "lodash.debounce": "^4.0.4"
+ "classnames": "2.2.6",
+ "codemirror": "5.61.0",
+ "lodash.debounce": "4.0.8"
}
},
"react-datepicker": {
@@ -6195,10 +6217,10 @@
"resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-0.29.0.tgz",
"integrity": "sha1-y21/ZZQ9q15jCbyYR+GGooqXNGM=",
"requires": {
- "classnames": "^2.2.1",
- "moment": "^2.13.0",
- "react-onclickoutside": "^4.8.0",
- "tether": "^1.3.2"
+ "classnames": "2.2.6",
+ "moment": "2.25.3",
+ "react-onclickoutside": "4.9.0",
+ "tether": "1.4.7"
}
},
"react-deep-force-update": {
@@ -6217,7 +6239,7 @@
"resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-2.2.6.tgz",
"integrity": "sha1-OoBuEPLaa6v+pBNr5lEOibDXaQE=",
"requires": {
- "classnames": "^2.2.5"
+ "classnames": "2.2.6"
}
},
"react-fontawesome": {
@@ -6230,9 +6252,9 @@
"resolved": "https://registry.npmjs.org/react-grid-layout/-/react-grid-layout-0.13.9.tgz",
"integrity": "sha1-W6Kc3A5kIjYvRtmkkEfrsk4OKT4=",
"requires": {
- "lodash.isequal": "^4.0.0",
- "react-draggable": "^2.1.1",
- "react-resizable": "^1.4.0"
+ "lodash.isequal": "4.5.0",
+ "react-draggable": "2.2.6",
+ "react-resizable": "1.10.1"
}
},
"react-input-autosize": {
@@ -6240,7 +6262,7 @@
"resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz",
"integrity": "sha1-/KpwIFaOwga8BL429Oto5kfE2MI=",
"requires": {
- "prop-types": "^15.5.8"
+ "prop-types": "15.7.2"
}
},
"react-is": {
@@ -6253,8 +6275,8 @@
"resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.1.9.tgz",
"integrity": "sha1-SXy87seVbciAZbkqRwSRC334cps=",
"requires": {
- "babel-runtime": "^5.8.20",
- "react-mixin": "^1.7.0"
+ "babel-runtime": "5.8.38",
+ "react-mixin": "1.7.0"
}
},
"react-mixin": {
@@ -6262,8 +6284,8 @@
"resolved": "https://registry.npmjs.org/react-mixin/-/react-mixin-1.7.0.tgz",
"integrity": "sha1-OMIsPrAgZPCPLCWHimDaw+lW9Ew=",
"requires": {
- "object-assign": "^2.0.0",
- "smart-mixin": "^1.2.0"
+ "object-assign": "2.1.1",
+ "smart-mixin": "1.2.1"
},
"dependencies": {
"object-assign": {
@@ -6278,9 +6300,9 @@
"resolved": "https://registry.npmjs.org/react-motion/-/react-motion-0.5.2.tgz",
"integrity": "sha1-DdOmnkETFlZ5J5F8ZiZVG6BgcxY=",
"requires": {
- "performance-now": "^0.2.0",
- "prop-types": "^15.5.8",
- "raf": "^3.1.0"
+ "performance-now": "0.2.0",
+ "prop-types": "15.7.2",
+ "raf": "3.4.1"
}
},
"react-onclickoutside": {
@@ -6288,7 +6310,7 @@
"resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-4.9.0.tgz",
"integrity": "sha1-KQjDE24kQQK+peVDeoOKUo1dKZU=",
"requires": {
- "object-assign": "^4.0.1"
+ "object-assign": "4.1.1"
},
"dependencies": {
"object-assign": {
@@ -6304,8 +6326,8 @@
"integrity": "sha1-nb/Z2SdSjDqp9ETkVYw3gwq4wmo=",
"dev": true,
"requires": {
- "lodash": "^4.6.1",
- "react-deep-force-update": "^1.0.0"
+ "lodash": "4.17.21",
+ "react-deep-force-update": "1.1.2"
}
},
"react-redux": {
@@ -6313,12 +6335,12 @@
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-4.4.10.tgz",
"integrity": "sha1-rVe9HbAMLQqn25krNgzmPdC4DsU=",
"requires": {
- "create-react-class": "^15.5.1",
- "hoist-non-react-statics": "^3.3.0",
- "invariant": "^2.0.0",
- "lodash": "^4.17.11",
- "loose-envify": "^1.4.0",
- "prop-types": "^15.7.2"
+ "create-react-class": "15.6.3",
+ "hoist-non-react-statics": "3.3.2",
+ "invariant": "2.2.4",
+ "lodash": "4.17.15",
+ "loose-envify": "1.4.0",
+ "prop-types": "15.7.2"
},
"dependencies": {
"lodash": {
@@ -6333,8 +6355,8 @@
"resolved": "https://registry.npmjs.org/react-resizable/-/react-resizable-1.10.1.tgz",
"integrity": "sha1-8MLPHYOzRwuHZ2zm1rArvj9NjNQ=",
"requires": {
- "prop-types": "15.x",
- "react-draggable": "^4.0.3"
+ "prop-types": "15.7.2",
+ "react-draggable": "4.3.1"
},
"dependencies": {
"react-draggable": {
@@ -6342,8 +6364,8 @@
"resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.3.1.tgz",
"integrity": "sha1-+cDNzyJ57Ft5xltwzf2TYdgvqe4=",
"requires": {
- "classnames": "^2.2.5",
- "prop-types": "^15.6.0"
+ "classnames": "2.2.6",
+ "prop-types": "15.7.2"
}
}
}
@@ -6353,11 +6375,11 @@
"resolved": "https://registry.npmjs.org/react-router/-/react-router-2.6.0.tgz",
"integrity": "sha1-L9umq54Za+Z8JsG21CO1zqBW/tg=",
"requires": {
- "history": "^2.1.2",
- "hoist-non-react-statics": "^1.2.0",
- "invariant": "^2.2.1",
- "loose-envify": "^1.2.0",
- "warning": "^3.0.0"
+ "history": "2.1.2",
+ "hoist-non-react-statics": "1.2.0",
+ "invariant": "2.2.4",
+ "loose-envify": "1.4.0",
+ "warning": "3.0.0"
},
"dependencies": {
"history": {
@@ -6365,10 +6387,10 @@
"resolved": "https://registry.npmjs.org/history/-/history-2.1.2.tgz",
"integrity": "sha1-SqLeiXoOSGfkU5hDvm7Nsphr/ew=",
"requires": {
- "deep-equal": "^1.0.0",
- "invariant": "^2.0.0",
- "query-string": "^3.0.0",
- "warning": "^2.0.0"
+ "deep-equal": "1.1.1",
+ "invariant": "2.2.4",
+ "query-string": "3.0.3",
+ "warning": "2.1.0"
},
"dependencies": {
"warning": {
@@ -6376,7 +6398,7 @@
"resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz",
"integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
}
}
@@ -6391,7 +6413,7 @@
"resolved": "https://registry.npmjs.org/query-string/-/query-string-3.0.3.tgz",
"integrity": "sha1-ri4UtNBQcdTpuetIc8NbDc1C5jg=",
"requires": {
- "strict-uri-encode": "^1.0.0"
+ "strict-uri-encode": "1.1.0"
}
},
"warning": {
@@ -6399,7 +6421,7 @@
"resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
"integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
}
}
@@ -6409,9 +6431,9 @@
"resolved": "https://registry.npmjs.org/react-select/-/react-select-1.3.0.tgz",
"integrity": "sha1-GCitW/fz5CqDXH4tjLE7XCBxSHY=",
"requires": {
- "classnames": "^2.2.4",
- "prop-types": "^15.5.8",
- "react-input-autosize": "^2.1.2"
+ "classnames": "2.2.6",
+ "prop-types": "15.7.2",
+ "react-input-autosize": "2.2.2"
}
},
"react-sidebar": {
@@ -6424,8 +6446,8 @@
"resolved": "https://registry.npmjs.org/react-svg-pan-zoom/-/react-svg-pan-zoom-2.18.0.tgz",
"integrity": "sha1-HwM9nbHIK5u0lOIZYjcnb2lOesk=",
"requires": {
- "prop-types": "^15.6.2",
- "transformation-matrix": "^1.12.0"
+ "prop-types": "15.7.2",
+ "transformation-matrix": "1.15.3"
}
},
"react-tap-event-plugin": {
@@ -6433,7 +6455,7 @@
"resolved": "https://registry.npmjs.org/react-tap-event-plugin/-/react-tap-event-plugin-0.2.2.tgz",
"integrity": "sha1-T28leFFlT2wrHCE6HT/yGzU65OE=",
"requires": {
- "fbjs": "^0.2.1"
+ "fbjs": "0.2.1"
},
"dependencies": {
"fbjs": {
@@ -6441,9 +6463,9 @@
"resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.2.1.tgz",
"integrity": "sha1-YiBhYwpD4R+EUBe5BEqqZI7T9zE=",
"requires": {
- "core-js": "^1.0.0",
- "promise": "^7.0.3",
- "whatwg-fetch": "^0.9.0"
+ "core-js": "1.2.7",
+ "promise": "7.3.1",
+ "whatwg-fetch": "0.9.0"
}
},
"whatwg-fetch": {
@@ -6458,7 +6480,7 @@
"resolved": "https://registry.npmjs.org/react-themeable/-/react-themeable-1.1.0.tgz",
"integrity": "sha1-fURm3ZsrX6dQWHJ4JenxUro3mg4=",
"requires": {
- "object-assign": "^3.0.0"
+ "object-assign": "3.0.0"
}
},
"react-throttle": {
@@ -6466,11 +6488,11 @@
"resolved": "https://registry.npmjs.org/react-throttle/-/react-throttle-0.3.0.tgz",
"integrity": "sha1-i3HtlfBmAtHgv1F3vvC2nAnm1Lk=",
"requires": {
- "enzyme": "^2.3.0",
- "lodash": "^4.2.1",
- "react": "^15.0.2",
- "react-addons-test-utils": "^15.0.2",
- "react-dom": "^15.0.2"
+ "enzyme": "2.9.1",
+ "lodash": "4.17.21",
+ "react": "15.3.1",
+ "react-addons-test-utils": "15.6.2",
+ "react-dom": "15.6.2"
},
"dependencies": {
"object-assign": {
@@ -6483,10 +6505,10 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-15.6.2.tgz",
"integrity": "sha1-Qc+t9pO3V/rycIRDodH9WgK+9zA=",
"requires": {
- "fbjs": "^0.8.9",
- "loose-envify": "^1.1.0",
- "object-assign": "^4.1.0",
- "prop-types": "^15.5.10"
+ "fbjs": "0.8.17",
+ "loose-envify": "1.4.0",
+ "object-assign": "4.1.1",
+ "prop-types": "15.7.2"
}
}
}
@@ -6503,8 +6525,8 @@
"integrity": "sha1-4aQL0Krvxy6N/Xp82gmvhQZjl7s=",
"dev": true,
"requires": {
- "global": "^4.3.0",
- "react-proxy": "^1.1.7"
+ "global": "4.4.0",
+ "react-proxy": "1.1.8"
}
},
"react-vis": {
@@ -6512,24 +6534,24 @@
"resolved": "https://registry.npmjs.org/react-vis/-/react-vis-1.11.7.tgz",
"integrity": "sha1-kJkCrwAViJXRTaGt/h0NwARSKP8=",
"requires": {
- "d3-array": "^1.2.0",
- "d3-collection": "^1.0.3",
- "d3-color": "^1.0.3",
- "d3-contour": "^1.1.0",
- "d3-format": "^1.2.0",
- "d3-geo": "^1.6.4",
- "d3-hexbin": "^0.2.2",
- "d3-hierarchy": "^1.1.4",
- "d3-interpolate": "^1.1.4",
- "d3-sankey": "^0.7.1",
- "d3-scale": "^1.0.5",
- "d3-shape": "^1.1.0",
- "d3-voronoi": "^1.1.2",
- "deep-equal": "^1.0.1",
- "global": "^4.3.1",
+ "d3-array": "1.2.1",
+ "d3-collection": "1.0.4",
+ "d3-color": "1.0.3",
+ "d3-contour": "1.3.2",
+ "d3-format": "1.2.2",
+ "d3-geo": "1.9.1",
+ "d3-hexbin": "0.2.2",
+ "d3-hierarchy": "1.1.5",
+ "d3-interpolate": "1.1.6",
+ "d3-sankey": "0.7.1",
+ "d3-scale": "1.0.7",
+ "d3-shape": "1.2.0",
+ "d3-voronoi": "1.1.2",
+ "deep-equal": "1.1.1",
+ "global": "4.4.0",
"hoek": "4.2.1",
- "prop-types": "^15.5.8",
- "react-motion": "^0.5.2"
+ "prop-types": "15.7.2",
+ "react-motion": "0.5.2"
}
},
"read-pkg": {
@@ -6538,9 +6560,9 @@
"integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
"dev": true,
"requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
+ "load-json-file": "1.1.0",
+ "normalize-package-data": "2.5.0",
+ "path-type": "1.1.0"
}
},
"read-pkg-up": {
@@ -6549,8 +6571,8 @@
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
+ "find-up": "1.1.2",
+ "read-pkg": "1.1.0"
}
},
"readable-stream": {
@@ -6559,10 +6581,10 @@
"integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"readdirp": {
@@ -6571,9 +6593,9 @@
"integrity": "sha1-DodiKjMlqjPokihcr4tOhGUppSU=",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
- "micromatch": "^3.1.10",
- "readable-stream": "^2.0.2"
+ "graceful-fs": "4.2.4",
+ "micromatch": "3.1.10",
+ "readable-stream": "2.3.7"
},
"dependencies": {
"graceful-fs": {
@@ -6594,13 +6616,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -6609,7 +6631,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -6620,8 +6642,8 @@
"integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
"mute-stream": "0.0.5"
}
},
@@ -6632,9 +6654,9 @@
"dev": true,
"requires": {
"ast-types": "0.8.12",
- "esprima-fb": "~15001.1001.0-dev-harmony-fb",
- "private": "~0.1.5",
- "source-map": "~0.5.0"
+ "esprima-fb": "15001.1001.0-dev-harmony-fb",
+ "private": "0.1.8",
+ "source-map": "0.5.7"
},
"dependencies": {
"ast-types": {
@@ -6651,7 +6673,7 @@
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"dev": true,
"requires": {
- "resolve": "^1.1.6"
+ "resolve": "1.17.0"
}
},
"redbox-react": {
@@ -6660,8 +6682,8 @@
"integrity": "sha1-o+ASvMyKmBbAga/gZUsdY3lVgbo=",
"dev": true,
"requires": {
- "error-stack-parser": "^1.2.0",
- "object-assign": "^4.0.1"
+ "error-stack-parser": "1.3.6",
+ "object-assign": "4.1.1"
},
"dependencies": {
"object-assign": {
@@ -6678,8 +6700,8 @@
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
+ "indent-string": "2.1.0",
+ "strip-indent": "1.0.1"
}
},
"redux": {
@@ -6687,10 +6709,10 @@
"resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz",
"integrity": "sha1-BrcxIyFZAdJdBlvjQusCa8HIU3s=",
"requires": {
- "lodash": "^4.2.1",
- "lodash-es": "^4.2.1",
- "loose-envify": "^1.1.0",
- "symbol-observable": "^1.0.3"
+ "lodash": "4.17.21",
+ "lodash-es": "4.17.15",
+ "loose-envify": "1.4.0",
+ "symbol-observable": "1.2.0"
}
},
"redux-devtools": {
@@ -6698,10 +6720,10 @@
"resolved": "https://registry.npmjs.org/redux-devtools/-/redux-devtools-2.1.5.tgz",
"integrity": "sha1-cKMZWAl+4fqEbug/pjp3jxAvWac=",
"requires": {
- "react-json-tree": "^0.1.9",
- "react-mixin": "^1.7.0",
- "react-redux": "^3.0.0",
- "redux": "^2.0.0 || ^3.0.0"
+ "react-json-tree": "0.1.9",
+ "react-mixin": "1.7.0",
+ "react-redux": "3.1.2",
+ "redux": "3.7.2"
},
"dependencies": {
"hoist-non-react-statics": {
@@ -6714,8 +6736,8 @@
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-3.1.2.tgz",
"integrity": "sha1-KoiLEk6dARRIU2EqzuGfgdSYqDY=",
"requires": {
- "hoist-non-react-statics": "^1.0.3",
- "invariant": "^2.0.0"
+ "hoist-non-react-statics": "1.2.0",
+ "invariant": "2.2.4"
}
}
}
@@ -6733,7 +6755,7 @@
"resolved": "https://registry.npmjs.org/redux-router/-/redux-router-1.0.0.tgz",
"integrity": "sha1-PBZ240Qb7FD+jZJFfAF8tjaZM08=",
"requires": {
- "deep-equal": "^1.0.1"
+ "deep-equal": "1.1.1"
}
},
"redux-thunk": {
@@ -6753,12 +6775,12 @@
"integrity": "sha1-oORXxY69uuV1yfjNdRJ+k3VkNdg=",
"dev": true,
"requires": {
- "commoner": "~0.10.3",
- "defs": "~1.1.0",
- "esprima-fb": "~15001.1001.0-dev-harmony-fb",
- "private": "~0.1.5",
+ "commoner": "0.10.8",
+ "defs": "1.1.1",
+ "esprima-fb": "15001.1001.0-dev-harmony-fb",
+ "private": "0.1.8",
"recast": "0.10.33",
- "through": "~2.3.8"
+ "through": "2.3.8"
}
},
"regex-cache": {
@@ -6767,7 +6789,7 @@
"integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
"dev": true,
"requires": {
- "is-equal-shallow": "^0.1.3"
+ "is-equal-shallow": "0.1.3"
}
},
"regex-not": {
@@ -6776,8 +6798,8 @@
"integrity": "sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
+ "extend-shallow": "3.0.2",
+ "safe-regex": "1.1.0"
}
},
"regexp.prototype.flags": {
@@ -6785,8 +6807,8 @@
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
"integrity": "sha1-erqJs8E6ZFCdq888qNn7ub31y3U=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5"
}
},
"regexpu": {
@@ -6795,11 +6817,11 @@
"integrity": "sha1-5TTcmRqeWEYFDJjebX3UpVyeoW0=",
"dev": true,
"requires": {
- "esprima": "^2.6.0",
- "recast": "^0.10.10",
- "regenerate": "^1.2.1",
- "regjsgen": "^0.2.0",
- "regjsparser": "^0.1.4"
+ "esprima": "2.7.3",
+ "recast": "0.10.33",
+ "regenerate": "1.4.0",
+ "regjsgen": "0.2.0",
+ "regjsparser": "0.1.5"
},
"dependencies": {
"esprima": {
@@ -6822,7 +6844,7 @@
"integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=",
"dev": true,
"requires": {
- "jsesc": "~0.5.0"
+ "jsesc": "0.5.0"
}
},
"remove-trailing-separator": {
@@ -6849,7 +6871,7 @@
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
- "is-finite": "^1.0.0"
+ "is-finite": "1.1.0"
}
},
"replace-ext": {
@@ -6863,26 +6885,26 @@
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
"integrity": "sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=",
"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": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.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.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
+ "aws-sign2": "0.7.0",
+ "aws4": "1.9.1",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.8",
+ "extend": "3.0.2",
+ "forever-agent": "0.6.1",
+ "form-data": "2.3.3",
+ "har-validator": "5.1.3",
+ "http-signature": "1.2.0",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.27",
+ "oauth-sign": "0.9.0",
+ "performance-now": "2.1.0",
+ "qs": "6.5.2",
+ "safe-buffer": "5.1.2",
+ "tough-cookie": "2.5.0",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.4.0"
},
"dependencies": {
"performance-now": {
@@ -6898,8 +6920,8 @@
"integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=",
"dev": true,
"requires": {
- "caller-path": "^0.1.0",
- "resolve-from": "^1.0.0"
+ "caller-path": "0.1.0",
+ "resolve-from": "1.0.1"
}
},
"resolve": {
@@ -6908,7 +6930,7 @@
"integrity": "sha1-sllBtUloIxzC0bt2p5y38sC/hEQ=",
"dev": true,
"requires": {
- "path-parse": "^1.0.6"
+ "path-parse": "1.0.7"
}
},
"resolve-dir": {
@@ -6917,8 +6939,8 @@
"integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
"dev": true,
"requires": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
+ "expand-tilde": "2.0.2",
+ "global-modules": "1.0.0"
}
},
"resolve-from": {
@@ -6939,8 +6961,8 @@
"integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"requires": {
- "exit-hook": "^1.0.0",
- "onetime": "^1.0.0"
+ "exit-hook": "1.1.1",
+ "onetime": "1.1.0"
}
},
"ret": {
@@ -6955,7 +6977,7 @@
"integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=",
"dev": true,
"requires": {
- "align-text": "^0.1.1"
+ "align-text": "0.1.4"
}
},
"rimraf": {
@@ -6963,7 +6985,7 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
"integrity": "sha1-NXl/E6f9rcVmFCwp1PB8ytSD4+w=",
"requires": {
- "glob": "^7.1.3"
+ "glob": "7.1.6"
},
"dependencies": {
"glob": {
@@ -6971,12 +6993,12 @@
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
"integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=",
"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"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.4",
+ "minimatch": "3.0.4",
+ "once": "1.3.3",
+ "path-is-absolute": "1.0.1"
}
},
"minimatch": {
@@ -6984,7 +7006,7 @@
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
}
}
@@ -7001,7 +7023,7 @@
"integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
"dev": true,
"requires": {
- "once": "^1.3.0"
+ "once": "1.3.3"
}
},
"run-sequence": {
@@ -7010,7 +7032,7 @@
"integrity": "sha1-pdegnRs4vsjoxV3JQILTrmAWpiM=",
"dev": true,
"requires": {
- "chalk": "*"
+ "chalk": "1.1.3"
}
},
"rw": {
@@ -7035,7 +7057,7 @@
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
- "ret": "~0.1.10"
+ "ret": "0.1.15"
}
},
"safer-buffer": {
@@ -7055,10 +7077,10 @@
"integrity": "sha1-ZO50vDaF86TGKQ8tqMHjtO75Lo0=",
"dev": true,
"requires": {
- "async": "~0.9.0",
- "glob": "~7.0.3",
- "lodash": "~4.11.1",
- "ssh2": "~0.4.10"
+ "async": "0.9.2",
+ "glob": "7.0.6",
+ "lodash": "4.11.2",
+ "ssh2": "0.4.15"
},
"dependencies": {
"async": {
@@ -7073,12 +7095,12 @@
"integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=",
"dev": true,
"requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.2",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.4",
+ "minimatch": "3.0.4",
+ "once": "1.3.3",
+ "path-is-absolute": "1.0.1"
}
},
"lodash": {
@@ -7093,7 +7115,7 @@
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"dev": true,
"requires": {
- "brace-expansion": "^1.1.7"
+ "brace-expansion": "1.1.11"
}
}
}
@@ -7116,18 +7138,18 @@
"dev": true,
"requires": {
"debug": "2.6.9",
- "depd": "~1.1.2",
- "destroy": "~1.0.4",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
+ "depd": "1.1.2",
+ "destroy": "1.0.4",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "etag": "1.8.1",
"fresh": "0.5.2",
- "http-errors": "~1.7.2",
+ "http-errors": "1.7.2",
"mime": "1.6.0",
"ms": "2.1.1",
- "on-finished": "~2.3.0",
- "range-parser": "~1.2.1",
- "statuses": "~1.5.0"
+ "on-finished": "2.3.0",
+ "range-parser": "1.2.1",
+ "statuses": "1.5.0"
},
"dependencies": {
"ms": {
@@ -7150,9 +7172,9 @@
"integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
"dev": true,
"requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
+ "encodeurl": "1.0.2",
+ "escape-html": "1.0.3",
+ "parseurl": "1.3.3",
"send": "0.17.1"
}
},
@@ -7162,10 +7184,10 @@
"integrity": "sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=",
"dev": true,
"requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
+ "extend-shallow": "2.0.1",
+ "is-extendable": "0.1.1",
+ "is-plain-object": "2.0.4",
+ "split-string": "3.1.0"
},
"dependencies": {
"extend-shallow": {
@@ -7174,7 +7196,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -7255,14 +7277,14 @@
"integrity": "sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=",
"dev": true,
"requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
+ "base": "0.11.2",
+ "debug": "2.6.9",
+ "define-property": "0.2.5",
+ "extend-shallow": "2.0.1",
+ "map-cache": "0.2.2",
+ "source-map": "0.5.7",
+ "source-map-resolve": "0.5.3",
+ "use": "3.1.1"
},
"dependencies": {
"define-property": {
@@ -7271,7 +7293,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
},
"extend-shallow": {
@@ -7280,7 +7302,7 @@
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
- "is-extendable": "^0.1.0"
+ "is-extendable": "0.1.1"
}
}
}
@@ -7291,9 +7313,9 @@
"integrity": "sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=",
"dev": true,
"requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
+ "define-property": "1.0.0",
+ "isobject": "3.0.1",
+ "snapdragon-util": "3.0.1"
},
"dependencies": {
"define-property": {
@@ -7302,7 +7324,7 @@
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
- "is-descriptor": "^1.0.0"
+ "is-descriptor": "1.0.2"
}
},
"is-accessor-descriptor": {
@@ -7311,7 +7333,7 @@
"integrity": "sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-data-descriptor": {
@@ -7320,7 +7342,7 @@
"integrity": "sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=",
"dev": true,
"requires": {
- "kind-of": "^6.0.0"
+ "kind-of": "6.0.3"
}
},
"is-descriptor": {
@@ -7329,9 +7351,9 @@
"integrity": "sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=",
"dev": true,
"requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
+ "is-accessor-descriptor": "1.0.0",
+ "is-data-descriptor": "1.0.0",
+ "kind-of": "6.0.3"
}
}
}
@@ -7342,7 +7364,7 @@
"integrity": "sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=",
"dev": true,
"requires": {
- "kind-of": "^3.2.0"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -7351,7 +7373,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -7374,11 +7396,11 @@
"integrity": "sha1-GQhmvs51U+H48mei7oLGBrVQmho=",
"dev": true,
"requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
+ "atob": "2.1.2",
+ "decode-uri-component": "0.2.0",
+ "resolve-url": "0.2.1",
+ "source-map-url": "0.4.0",
+ "urix": "0.1.0"
}
},
"source-map-support": {
@@ -7396,7 +7418,7 @@
"integrity": "sha1-yLbBZ3l7pHQKjqMyUhYv8IWRsmY=",
"dev": true,
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
}
}
@@ -7419,8 +7441,8 @@
"integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
"dev": true,
"requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-expression-parse": "3.0.1",
+ "spdx-license-ids": "3.0.10"
}
},
"spdx-exceptions": {
@@ -7435,8 +7457,8 @@
"integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
"dev": true,
"requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "spdx-exceptions": "2.3.0",
+ "spdx-license-ids": "3.0.10"
}
},
"spdx-license-ids": {
@@ -7451,7 +7473,7 @@
"integrity": "sha1-Zwl8YB1pfOE2j0GPBs0gHPBSGlc=",
"dev": true,
"requires": {
- "through": "2"
+ "through": "2.3.8"
}
},
"split-string": {
@@ -7460,14 +7482,13 @@
"integrity": "sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=",
"dev": true,
"requires": {
- "extend-shallow": "^3.0.0"
+ "extend-shallow": "3.0.2"
}
},
"sprintf-js": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
- "dev": true
+ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
},
"ssh2": {
"version": "0.4.15",
@@ -7475,8 +7496,8 @@
"integrity": "sha1-B8b0EG2fe26m5N9jbGxT8fmBf/g=",
"dev": true,
"requires": {
- "readable-stream": "~1.0.0",
- "ssh2-streams": "~0.0.22"
+ "readable-stream": "1.0.34",
+ "ssh2-streams": "0.0.23"
},
"dependencies": {
"readable-stream": {
@@ -7485,10 +7506,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
}
}
@@ -7499,9 +7520,9 @@
"integrity": "sha1-ru8wgxu1/Er2qj9tCiYaQTUxYSs=",
"dev": true,
"requires": {
- "asn1": "~0.2.0",
- "readable-stream": "~1.0.0",
- "streamsearch": "~0.1.2"
+ "asn1": "0.2.4",
+ "readable-stream": "1.0.34",
+ "streamsearch": "0.1.2"
},
"dependencies": {
"readable-stream": {
@@ -7510,10 +7531,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
}
}
@@ -7523,15 +7544,15 @@
"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",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
+ "asn1": "0.2.4",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.2",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.2",
+ "getpass": "0.1.7",
+ "jsbn": "0.1.1",
+ "safer-buffer": "2.1.2",
+ "tweetnacl": "0.14.5"
},
"dependencies": {
"asn1": {
@@ -7539,7 +7560,7 @@
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=",
"requires": {
- "safer-buffer": "~2.1.0"
+ "safer-buffer": "2.1.2"
}
}
}
@@ -7562,8 +7583,8 @@
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
+ "define-property": "0.2.5",
+ "object-copy": "0.1.0"
},
"dependencies": {
"define-property": {
@@ -7572,7 +7593,7 @@
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
- "is-descriptor": "^0.1.0"
+ "is-descriptor": "0.1.6"
}
}
}
@@ -7589,8 +7610,8 @@
"integrity": "sha1-h1IdOKRKp+6RzhzSpH3wy0ndZgs=",
"dev": true,
"requires": {
- "inherits": "~2.0.1",
- "readable-stream": "^2.0.2"
+ "inherits": "2.0.4",
+ "readable-stream": "2.3.7"
},
"dependencies": {
"isarray": {
@@ -7605,13 +7626,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -7620,7 +7641,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -7631,7 +7652,7 @@
"integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
"dev": true,
"requires": {
- "duplexer": "~0.1.1"
+ "duplexer": "0.1.1"
}
},
"stream-consume": {
@@ -7652,11 +7673,11 @@
"integrity": "sha1-stJCRpKIpaJ+xP6JM6z2I95lFPw=",
"dev": true,
"requires": {
- "builtin-status-codes": "^3.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.3.6",
- "to-arraybuffer": "^1.0.0",
- "xtend": "^4.0.0"
+ "builtin-status-codes": "3.0.0",
+ "inherits": "2.0.4",
+ "readable-stream": "2.3.7",
+ "to-arraybuffer": "1.0.1",
+ "xtend": "4.0.2"
},
"dependencies": {
"isarray": {
@@ -7671,13 +7692,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -7686,7 +7707,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -7708,9 +7729,9 @@
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
}
},
"string.prototype.trimend": {
@@ -7718,8 +7739,8 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
"integrity": "sha1-hYEqa4R6wAInD1gIFGBkyZX7aRM=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5"
}
},
"string.prototype.trimleft": {
@@ -7727,9 +7748,9 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz",
"integrity": "sha1-RAiqLl1t3QyagHObCH+8BnwDs8w=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5",
- "string.prototype.trimstart": "^1.0.0"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5",
+ "string.prototype.trimstart": "1.0.1"
}
},
"string.prototype.trimright": {
@@ -7737,9 +7758,9 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz",
"integrity": "sha1-x28c7zDyG7rYr+uNsVEUls+w8qM=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5",
- "string.prototype.trimend": "^1.0.0"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5",
+ "string.prototype.trimend": "1.0.1"
}
},
"string.prototype.trimstart": {
@@ -7747,8 +7768,8 @@
"resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
"integrity": "sha1-FK9tnzSwU/fPyJty+PLuFLkDmlQ=",
"requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "define-properties": "1.1.3",
+ "es-abstract": "1.17.5"
}
},
"string_decoder": {
@@ -7775,7 +7796,7 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "^2.0.0"
+ "ansi-regex": "2.1.1"
}
},
"strip-bom": {
@@ -7784,8 +7805,8 @@
"integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=",
"dev": true,
"requires": {
- "first-chunk-stream": "^1.0.0",
- "is-utf8": "^0.2.0"
+ "first-chunk-stream": "1.0.0",
+ "is-utf8": "0.2.1"
}
},
"strip-indent": {
@@ -7794,7 +7815,7 @@
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
- "get-stdin": "^4.0.1"
+ "get-stdin": "4.0.1"
}
},
"strip-json-comments": {
@@ -7833,12 +7854,12 @@
"integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=",
"dev": true,
"requires": {
- "ajv": "^4.7.0",
- "ajv-keywords": "^1.0.0",
- "chalk": "^1.1.1",
- "lodash": "^4.0.0",
+ "ajv": "4.11.8",
+ "ajv-keywords": "1.5.1",
+ "chalk": "1.1.3",
+ "lodash": "4.17.21",
"slice-ansi": "0.0.4",
- "string-width": "^2.0.0"
+ "string-width": "2.1.1"
},
"dependencies": {
"ajv": {
@@ -7847,8 +7868,8 @@
"integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
"dev": true,
"requires": {
- "co": "^4.6.0",
- "json-stable-stringify": "^1.0.1"
+ "co": "4.6.0",
+ "json-stable-stringify": "1.0.1"
}
},
"ansi-regex": {
@@ -7869,8 +7890,8 @@
"integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "is-fullwidth-code-point": "2.0.0",
+ "strip-ansi": "4.0.0"
}
},
"strip-ansi": {
@@ -7879,7 +7900,7 @@
"integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "3.0.0"
}
}
}
@@ -7913,8 +7934,8 @@
"integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
"dev": true,
"requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
+ "readable-stream": "2.3.7",
+ "xtend": "4.0.2"
},
"dependencies": {
"isarray": {
@@ -7929,13 +7950,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -7944,7 +7965,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
}
}
@@ -7955,7 +7976,7 @@
"integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=",
"dev": true,
"requires": {
- "os-homedir": "^1.0.0"
+ "os-homedir": "1.0.2"
}
},
"time-stamp": {
@@ -7970,7 +7991,7 @@
"integrity": "sha1-gAsfPu4nLlvFPuRloE0OgEwxIR8=",
"dev": true,
"requires": {
- "setimmediate": "^1.0.4"
+ "setimmediate": "1.0.5"
}
},
"title-case": {
@@ -7978,8 +7999,8 @@
"resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz",
"integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=",
"requires": {
- "no-case": "^2.2.0",
- "upper-case": "^1.0.3"
+ "no-case": "2.3.2",
+ "upper-case": "1.1.3"
}
},
"to-arraybuffer": {
@@ -8000,7 +8021,7 @@
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
"dev": true,
"requires": {
- "kind-of": "^3.0.2"
+ "kind-of": "3.2.2"
},
"dependencies": {
"kind-of": {
@@ -8009,7 +8030,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "^1.1.5"
+ "is-buffer": "1.1.6"
}
}
}
@@ -8020,10 +8041,10 @@
"integrity": "sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=",
"dev": true,
"requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
+ "define-property": "2.0.2",
+ "extend-shallow": "3.0.2",
+ "regex-not": "1.0.2",
+ "safe-regex": "1.1.0"
}
},
"to-regex-range": {
@@ -8032,8 +8053,8 @@
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
"requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
+ "is-number": "3.0.0",
+ "repeat-string": "1.6.1"
}
},
"toidentifier": {
@@ -8047,8 +8068,8 @@
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
"integrity": "sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=",
"requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "psl": "1.8.0",
+ "punycode": "2.1.1"
}
},
"transformation-matrix": {
@@ -8091,7 +8112,7 @@
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"requires": {
- "safe-buffer": "^5.0.1"
+ "safe-buffer": "5.1.2"
}
},
"tweetnacl": {
@@ -8111,7 +8132,7 @@
"integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
"dev": true,
"requires": {
- "prelude-ls": "~1.1.2"
+ "prelude-ls": "1.1.2"
}
},
"type-is": {
@@ -8121,7 +8142,7 @@
"dev": true,
"requires": {
"media-typer": "0.3.0",
- "mime-types": "~2.1.24"
+ "mime-types": "2.1.27"
}
},
"typedarray": {
@@ -8141,10 +8162,10 @@
"integrity": "sha1-RhLAx7qu4rp8SH3kkErhIgefLKg=",
"dev": true,
"requires": {
- "async": "~0.2.6",
- "source-map": "~0.5.1",
- "uglify-to-browserify": "~1.0.0",
- "yargs": "~3.10.0"
+ "async": "0.2.10",
+ "source-map": "0.5.7",
+ "uglify-to-browserify": "1.0.2",
+ "yargs": "3.10.0"
},
"dependencies": {
"async": {
@@ -8171,9 +8192,9 @@
"integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=",
"dev": true,
"requires": {
- "camelcase": "^1.0.2",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
"window-size": "0.1.0"
}
}
@@ -8197,10 +8218,10 @@
"integrity": "sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=",
"dev": true,
"requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
+ "arr-union": "3.1.0",
+ "get-value": "2.0.6",
+ "is-extendable": "0.1.1",
+ "set-value": "2.0.1"
}
},
"unique-stream": {
@@ -8221,8 +8242,8 @@
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
"dev": true,
"requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
+ "has-value": "0.3.1",
+ "isobject": "3.0.1"
},
"dependencies": {
"has-value": {
@@ -8231,9 +8252,9 @@
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
"dev": true,
"requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
+ "get-value": "2.0.6",
+ "has-values": "0.1.4",
+ "isobject": "2.1.0"
},
"dependencies": {
"isobject": {
@@ -8271,7 +8292,7 @@
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
"requires": {
- "punycode": "^2.1.0"
+ "punycode": "2.1.1"
}
},
"urix": {
@@ -8349,7 +8370,7 @@
"integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
"dev": true,
"requires": {
- "user-home": "^1.1.1"
+ "user-home": "1.1.1"
}
},
"validate-npm-package-license": {
@@ -8358,8 +8379,8 @@
"integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "spdx-correct": "3.1.1",
+ "spdx-expression-parse": "3.0.1"
}
},
"vary": {
@@ -8373,9 +8394,9 @@
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"requires": {
- "assert-plus": "^1.0.0",
+ "assert-plus": "1.0.0",
"core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
+ "extsprintf": "1.3.0"
}
},
"victory": {
@@ -8383,9 +8404,9 @@
"resolved": "https://registry.npmjs.org/victory/-/victory-0.21.5.tgz",
"integrity": "sha1-8xxhI/Yg13fzzYe/yc9bwq9zhHA=",
"requires": {
- "victory-chart": "^21.6.1",
- "victory-core": "^17.2.5",
- "victory-pie": "^11.4.2"
+ "victory-chart": "21.6.2",
+ "victory-core": "17.2.7",
+ "victory-pie": "11.4.2"
}
},
"victory-chart": {
@@ -8393,9 +8414,9 @@
"resolved": "https://registry.npmjs.org/victory-chart/-/victory-chart-21.6.2.tgz",
"integrity": "sha1-dibzkhIqwROGzrLG0s6rGdKJXFI=",
"requires": {
- "d3-voronoi": "^1.1.2",
- "lodash": "^4.17.4",
- "victory-core": "^17.1.0"
+ "d3-voronoi": "1.1.2",
+ "lodash": "4.17.15",
+ "victory-core": "17.2.7"
},
"dependencies": {
"lodash": {
@@ -8410,12 +8431,12 @@
"resolved": "https://registry.npmjs.org/victory-core/-/victory-core-17.2.7.tgz",
"integrity": "sha1-uYsjWI/xACg8qJI3L4xxXO9TR1E=",
"requires": {
- "d3-ease": "^1.0.0",
- "d3-interpolate": "^1.1.1",
- "d3-scale": "^1.0.0",
- "d3-shape": "^1.2.0",
- "d3-timer": "^1.0.0",
- "lodash": "^4.17.4"
+ "d3-ease": "1.0.3",
+ "d3-interpolate": "1.1.6",
+ "d3-scale": "1.0.7",
+ "d3-shape": "1.2.0",
+ "d3-timer": "1.0.7",
+ "lodash": "4.17.15"
},
"dependencies": {
"lodash": {
@@ -8430,9 +8451,9 @@
"resolved": "https://registry.npmjs.org/victory-pie/-/victory-pie-11.4.2.tgz",
"integrity": "sha1-MzciaWvqK5c/y1QgGXchxbAhCd4=",
"requires": {
- "d3-shape": "^1.0.0",
- "lodash": "^4.17.4",
- "victory-core": "^17.0.0"
+ "d3-shape": "1.2.0",
+ "lodash": "4.17.15",
+ "victory-core": "17.2.7"
},
"dependencies": {
"lodash": {
@@ -8448,8 +8469,8 @@
"integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=",
"dev": true,
"requires": {
- "clone": "^1.0.0",
- "clone-stats": "^0.0.1",
+ "clone": "1.0.4",
+ "clone-stats": "0.0.1",
"replace-ext": "0.0.1"
}
},
@@ -8459,14 +8480,14 @@
"integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=",
"dev": true,
"requires": {
- "defaults": "^1.0.0",
- "glob-stream": "^3.1.5",
- "glob-watcher": "^0.0.6",
- "graceful-fs": "^3.0.0",
- "mkdirp": "^0.5.0",
- "strip-bom": "^1.0.0",
- "through2": "^0.6.1",
- "vinyl": "^0.4.0"
+ "defaults": "1.0.3",
+ "glob-stream": "3.1.18",
+ "glob-watcher": "0.0.6",
+ "graceful-fs": "3.0.12",
+ "mkdirp": "0.5.5",
+ "strip-bom": "1.0.0",
+ "through2": "0.6.5",
+ "vinyl": "0.4.6"
},
"dependencies": {
"clone": {
@@ -8481,10 +8502,10 @@
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
"isarray": "0.0.1",
- "string_decoder": "~0.10.x"
+ "string_decoder": "0.10.31"
}
},
"through2": {
@@ -8493,8 +8514,8 @@
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
"dev": true,
"requires": {
- "readable-stream": ">=1.0.33-1 <1.1.0-0",
- "xtend": ">=4.0.0 <4.1.0-0"
+ "readable-stream": "1.0.34",
+ "xtend": "4.0.2"
}
},
"vinyl": {
@@ -8503,8 +8524,8 @@
"integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=",
"dev": true,
"requires": {
- "clone": "^0.2.0",
- "clone-stats": "^0.0.1"
+ "clone": "0.2.0",
+ "clone-stats": "0.0.1"
}
}
}
@@ -8523,7 +8544,7 @@
"resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz",
"integrity": "sha1-ISINnGOvx3qMkhEeARr3Bc4MaQE=",
"requires": {
- "loose-envify": "^1.0.0"
+ "loose-envify": "1.4.0"
}
},
"watchpack": {
@@ -8532,9 +8553,9 @@
"integrity": "sha1-Yuqkq15bo1/fwBgnVibjwPXj+ws=",
"dev": true,
"requires": {
- "async": "^0.9.0",
- "chokidar": "^1.0.0",
- "graceful-fs": "^4.1.2"
+ "async": "0.9.2",
+ "chokidar": "1.7.0",
+ "graceful-fs": "4.2.4"
},
"dependencies": {
"async": {
@@ -8557,21 +8578,21 @@
"integrity": "sha1-T/MfU9sDM55VFkqdRo7gMklo/pg=",
"dev": true,
"requires": {
- "acorn": "^3.0.0",
- "async": "^1.3.0",
- "clone": "^1.0.2",
- "enhanced-resolve": "~0.9.0",
- "interpret": "^0.6.4",
- "loader-utils": "^0.2.11",
- "memory-fs": "~0.3.0",
- "mkdirp": "~0.5.0",
- "node-libs-browser": "^0.7.0",
- "optimist": "~0.6.0",
- "supports-color": "^3.1.0",
- "tapable": "~0.1.8",
- "uglify-js": "~2.7.3",
- "watchpack": "^0.2.1",
- "webpack-core": "~0.6.9"
+ "acorn": "3.3.0",
+ "async": "1.5.2",
+ "clone": "1.0.4",
+ "enhanced-resolve": "0.9.1",
+ "interpret": "0.6.6",
+ "loader-utils": "0.2.17",
+ "memory-fs": "0.3.0",
+ "mkdirp": "0.5.5",
+ "node-libs-browser": "0.7.0",
+ "optimist": "0.6.1",
+ "supports-color": "3.2.3",
+ "tapable": "0.1.10",
+ "uglify-js": "2.7.5",
+ "watchpack": "0.2.9",
+ "webpack-core": "0.6.9"
},
"dependencies": {
"acorn": {
@@ -8598,7 +8619,7 @@
"integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
"dev": true,
"requires": {
- "has-flag": "^1.0.0"
+ "has-flag": "1.0.0"
}
}
}
@@ -8609,8 +8630,8 @@
"integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=",
"dev": true,
"requires": {
- "source-list-map": "~0.1.7",
- "source-map": "~0.4.1"
+ "source-list-map": "0.1.8",
+ "source-map": "0.4.4"
},
"dependencies": {
"source-map": {
@@ -8619,7 +8640,7 @@
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
- "amdefine": ">=0.0.4"
+ "amdefine": "1.0.1"
}
}
}
@@ -8630,11 +8651,11 @@
"integrity": "sha1-+PwRIM47T8VoDO7LQ9d3lmshEF4=",
"dev": true,
"requires": {
- "memory-fs": "~0.4.1",
- "mime": "^1.5.0",
- "path-is-absolute": "^1.0.0",
- "range-parser": "^1.0.3",
- "time-stamp": "^2.0.0"
+ "memory-fs": "0.4.1",
+ "mime": "1.6.0",
+ "path-is-absolute": "1.0.1",
+ "range-parser": "1.2.1",
+ "time-stamp": "2.2.0"
},
"dependencies": {
"isarray": {
@@ -8649,8 +8670,8 @@
"integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
"dev": true,
"requires": {
- "errno": "^0.1.3",
- "readable-stream": "^2.0.1"
+ "errno": "0.1.7",
+ "readable-stream": "2.3.7"
}
},
"readable-stream": {
@@ -8659,13 +8680,13 @@
"integrity": "sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=",
"dev": true,
"requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.4",
+ "isarray": "1.0.0",
+ "process-nextick-args": "2.0.1",
+ "safe-buffer": "5.1.2",
+ "string_decoder": "1.1.1",
+ "util-deprecate": "1.0.2"
}
},
"string_decoder": {
@@ -8674,7 +8695,7 @@
"integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
"dev": true,
"requires": {
- "safe-buffer": "~5.1.0"
+ "safe-buffer": "5.1.2"
}
},
"time-stamp": {
@@ -8692,9 +8713,9 @@
"dev": true,
"requires": {
"ansi-html": "0.0.7",
- "html-entities": "^1.2.0",
- "querystring": "^0.2.0",
- "strip-ansi": "^3.0.0"
+ "html-entities": "1.3.1",
+ "querystring": "0.2.0",
+ "strip-ansi": "3.0.1"
}
},
"whatwg-fetch": {
@@ -8708,7 +8729,7 @@
"integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "isexe": "2.0.0"
}
},
"window-size": {
@@ -8740,7 +8761,7 @@
"integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
"dev": true,
"requires": {
- "mkdirp": "^0.5.1"
+ "mkdirp": "0.5.5"
}
},
"xml2js": {
@@ -8749,8 +8770,8 @@
"integrity": "sha1-oMaVFnUkIesqx1juTUzPWIQ+rGY=",
"dev": true,
"requires": {
- "sax": ">=0.6.0",
- "xmlbuilder": "~11.0.0"
+ "sax": "1.2.4",
+ "xmlbuilder": "11.0.1"
}
},
"xmlbuilder": {
@@ -8782,12 +8803,12 @@
"integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=",
"dev": true,
"requires": {
- "camelcase": "^1.2.1",
- "cliui": "^2.1.0",
- "decamelize": "^1.0.0",
- "os-locale": "^1.4.0",
- "window-size": "^0.1.2",
- "y18n": "^3.2.0"
+ "camelcase": "1.2.1",
+ "cliui": "2.1.0",
+ "decamelize": "1.2.0",
+ "os-locale": "1.4.0",
+ "window-size": "0.1.4",
+ "y18n": "3.2.1"
},
"dependencies": {
"camelcase": {
@@ -8797,6 +8818,11 @@
"dev": true
}
}
+ },
+ "yargs-parser": {
+ "version": "21.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz",
+ "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA=="
}
}
}
diff --git a/client-report/package.json b/client-report/package.json
index a4e58ba42c..1886b08b84 100644
--- a/client-report/package.json
+++ b/client-report/package.json
@@ -6,8 +6,9 @@
"clean": "rimraf dist",
"build:webpack": "NODE_ENV=production webpack --config webpack.config.js",
"build": "npm run clean && npm run build:webpack",
+ "convict": "6.0.0",
"deploy:preprod": "gulp deployPreprod",
- "deploy:prod": "gulp deploy_TO_PRODUCTION",
+ "deploy:prod": "POLIS_ROOT=/app/ gulp deploy_TO_PRODUCTION",
"start": "node dev-server.js",
"lint": "eslint src",
"postinstall": "npm run build"
@@ -45,12 +46,14 @@
},
"dependencies": {
"color": "^0.7.3",
+ "convict": "6.0.0",
"d3": "^4.6.0",
"d3-contour": "^1.1.1",
"d3-scale-chromatic": "^1.1.1",
"history": "^1.12.5",
"hull.js": "^0.2.10",
"jquery": "^2.1.4",
+ "js-yaml": "3.14.0",
"lodash": "4.17.21",
"moment": "^2.14.1",
"moment-range": "^2.2.0",
@@ -81,6 +84,7 @@
"svg-text-wrap": "0.0.1",
"title-case": "^2.1.0",
"victory": "^0.21.3",
- "whatwg-fetch": "^0.10.1"
+ "whatwg-fetch": "^0.10.1",
+ "yargs-parser": "^21.0.0"
}
}
diff --git a/client-report/polis.config.template.js b/client-report/polis.config.template.js
deleted file mode 100644
index 495655bf76..0000000000
--- a/client-report/polis.config.template.js
+++ /dev/null
@@ -1,18 +0,0 @@
-module.exports = {
-
- //SERVICE_URL: 'http://localhost:5000',
- SERVICE_URL: 'https://preprod.pol.is',
-
- UPLOADER: 'local', // alt: s3, scp
-
- // Uploader settings: local
- LOCAL_OUTPUT_PATH: './build',
-
- // Uploader settings: s3
- S3_BUCKET_PROD: 'pol.is',
- S3_BUCKET_PREPROD: 'preprod.pol.is',
-
- // Uploader settings: scp
- SCP_SUBDIR_PREPROD: 'preprod',
- SCP_SUBDIR_PROD: 'prod',
-};
diff --git a/client-report/server.js b/client-report/server.js
index 415fdb884a..e9f3a1cdc8 100644
--- a/client-report/server.js
+++ b/client-report/server.js
@@ -3,8 +3,11 @@
var path = require("path");
var express = require("express");
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
var app = express();
-app.set('port', process.env.PORT || 8080);
+app.set('port', config.get('port') || 8080);
app.use('/data', express.static('data'))
app.use('/dist', express.static('dist'))
diff --git a/config/Dockerfile b/config/Dockerfile
new file mode 100644
index 0000000000..1508770741
--- /dev/null
+++ b/config/Dockerfile
@@ -0,0 +1,7 @@
+FROM busybox
+
+WORKDIR /config
+
+COPY . .
+
+CMD echo "copied config files"
diff --git a/config/README.md b/config/README.md
new file mode 100644
index 0000000000..baa35c3e1b
--- /dev/null
+++ b/config/README.md
@@ -0,0 +1,16 @@
+# Configuration files and variables for polis
+* Currently, configuration variables live in many different files.
+* The goal is to use [`node-convict`](https://github.com/mozilla/node-convict) to manage configurations
+* The defaults for all variables in `config/schema.yaml` are currently for development builds.
+* Configurations for backend services (e.g. `server` & `math` are mounted onto a docker volume (`/app/config`) so that they can be updated and reread without a full restart.
+ - Resolved configuration variables are also written to `export_config.json` so that they can be easily used by `clojure`, `python`, etc.
+* Configurations for front-end services (e.g. `client-admin`, `client-participation` & `client-report`) are copied into each directory with the `config/copy_config.sh` script. Running `make init` in the root directory will install a git hook that will automatically run `config/copy_config.sh` before each commit.
+* Some config variables seem to be redundant and will be merged later:
+ - `primary_polis_url` & `SERVICE_URL`
+* Some config variables can not be easily be managed by `node-convict`:
+ - `GIT_HASH`
+* Work in progress:
+ - Build server and config from scratch
+ - Test whether docker config volume will override `server/config` directory
+ - Write code to read json config into math
+ - Write code to allow math to run in docker or locally
diff --git a/config/config.js b/config/config.js
new file mode 100644
index 0000000000..6908014715
--- /dev/null
+++ b/config/config.js
@@ -0,0 +1,55 @@
+// Copyright (C) 2012-present, The Authors. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
+
+"use strict";
+
+console.log('starting config.js')
+
+const convict = require('convict');
+const fs = require('fs');
+const yaml = require('js-yaml');
+
+convict.addParser({ extension: ['yml', 'yaml'], parse: yaml.safeLoad });
+
+// for additional validation options, use the following:
+// convict.addFormat(require('convict-format-with-validator').ipaddress);
+
+'use strict';
+
+// Define a schema
+
+try {
+ // the next line only works with docker-compose
+ console.log('reading schema')
+ let fileContents = fs.readFileSync('/app/config/schema.yaml', 'utf8');
+ let schema = yaml.safeLoad(fileContents);
+ var config = convict(schema);
+} catch (e) {
+ console.log(e);
+}
+
+console.log('default aws_region:' + config.get('aws_region'));
+
+// Load environment dependent configuration
+var env = config.get('env');
+config.loadFile('/app/config/' + env + '.yaml');
+var now = new Date();
+console.log('config aws_region:' + config.get('aws_region') + " @ " + now.toUTCString());
+
+const path = '/app/config/config_private.yaml';
+
+try {
+ if (fs.existsSync(path)) {
+ config.loadFile(path);
+ }
+} catch(err) {
+ console.error(err)
+}
+
+// Perform validation
+config.validate({allowed: 'strict'});
+
+module.exports = config;
+
+
+console.log('finishing config.js')
+
diff --git a/config/development.yaml b/config/development.yaml
new file mode 100644
index 0000000000..56a4b49f03
--- /dev/null
+++ b/config/development.yaml
@@ -0,0 +1,22 @@
+# Precedence order (https://www.npmjs.com/package/convict)
+# When merging configuration values from different sources, Convict follows precedence rules. The order, from lowest to highest, for config.loadFile(file) and config.load(json) is:
+
+# Default value
+# File or json set in function argument
+# Environment variables (only used when env property is set in schema)
+# Command line arguments (only used when arg property is set in schema)
+
+# for easy json/yaml conversion: https://www.json2yaml.com/
+
+aws_region: us-north-14
+
+# aws_access_key_id:
+# doc: aws_access_key_id
+# default: NA
+# env: AWS_ACCESS_KEY_ID
+# sensitive: true
+# aws_secret_access_key:
+# doc: aws_secret_access_key
+# default: NA
+# env: AWS_SECRET_ACCESS_KEY
+# sensitive: true
diff --git a/config/env_all_to_be_deleted.yaml b/config/env_all_to_be_deleted.yaml
new file mode 100644
index 0000000000..cec6a094f3
--- /dev/null
+++ b/config/env_all_to_be_deleted.yaml
@@ -0,0 +1,282 @@
+database_url:
+ doc: database_url
+ default: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev
+ env: DATABASE_URL
+
+webserver_username:
+ doc: webserver_username
+ default: ws-user
+ env: WEBSERVER_USERNAME
+
+webserver_pass:
+ doc: webserver_pass
+ default: ws-passPOSTGRES_DB=polis-dev
+ env: WEBSERVER_PASS
+
+postgres_password:
+ doc: postgres_password
+ default: oiPorg3Nrz0yqDLE
+ env: POSTGRES_PASSWORD
+
+postgres_user:
+ doc: postgres_user
+ default: postgres# For admin functionality, fill this out
+ env: POSTGRES_USER
+
+admin_emails:
+ doc: admin_emails
+ default: []
+ env: ADMIN_EMAILS
+
+admin_email_data_export:
+ doc: admin_email_data_export
+ default: ""
+ env: ADMIN_EMAIL_DATA_EXPORT
+
+admin_email_data_export_test:
+ doc: admin_email_data_export_test
+ default: ""
+ env: ADMIN_EMAIL_DATA_EXPORT_TEST
+
+admin_email_email_test:
+ doc: admin_email_email_test
+ default: ""
+ env: ADMIN_EMAIL_EMAIL_TEST
+
+admin_uids:
+ doc: admin_uids
+ default: []
+ env: ADMIN_UIDS
+
+
+database_for_reads_name:
+ doc: database_for_reads_name
+ default: DATABASE_URL
+ env: DATABASE_FOR_READS_NAME
+
+database_url:
+ doc: database_url
+ default: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev
+ env: DATABASE_URL
+
+
+webserver_username:
+ doc: webserver_username
+ default: ws-user
+ env: WEBSERVER_USERNAME
+
+webserver_pass:
+ doc: webserver_pass
+ default: ws-pass
+ env: WEBSERVER_PASS
+
+stripe_secret_key:
+ doc: stripe_secret_key
+ default: sk_test_NFBDEThkpHCYBzXPJuBlY8TW
+ env: STRIPE_SECRET_KEY
+
+
+dev_mode:
+ doc: dev_mode
+ default: true
+ env: DEV_MODE
+
+disable_intercom:
+ doc: disable_intercom
+ default: true
+ env: DISABLE_INTERCOM
+
+domain_override:
+ doc: domain_override
+ default: localhost:5000
+ env: DOMAIN_OVERRIDE
+
+# Options: prod, preprod, dev
+math_env:
+ doc: math_env ex. prod, preprod, dev
+ default: dev
+ env: MATH_ENV
+
+port:
+ doc: port
+ default: 5000
+ env: PORT
+
+
+should_use_translation_api:
+ doc: should_use_translation_api
+ default: false
+ env: SHOULD_USE_TRANSLATION_API
+
+google_credentials_base64:
+ doc: google_credentials_base64
+ default: xxxxxxxxxxxxxxxxxxxxxxx...
+ env: GOOGLE_CREDENTIALS_BASE64
+
+google_creds_stringified:
+ doc: google_creds_stringified
+ default: xxxxxxxxxxxxxxxxxxxxxxx...
+ env: GOOGLE_CREDS_STRINGIFIED
+
+
+static_files_admindash_port:
+ doc: static_files_admindash_port
+ default: 8080
+ env: STATIC_FILES_ADMINDASH_PORT
+
+static_files_host:
+ doc: static_files_host
+ default: file-server
+ env: STATIC_FILES_HOST
+
+static_files_port:
+ doc: static_files_port
+ default: 8080
+ env: STATIC_FILES_PORT
+
+
+aws_region:
+ doc: aws_region
+ default: us-east-1
+ env: AWS_REGION
+
+
+# Options: maildev, aws-ses, mailgun
+# Example: `aws-ses,mailgun` would try sending via AWS SES first, and fallback to Mailgun on error.
+email_transport_types:
+ doc: email_transport_types ex. maildev, aws-ses, mailgun
+ default: maildev
+ env: EMAIL_TRANSPORT_TYPES
+
+polis_from_address:
+ doc: polis_from_address
+ default: "Example "
+ env: POLIS_FROM_ADDRESS
+
+database_url:
+ doc: database_url
+ default: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev
+ env: DATABASE_URL
+
+webserver_username:
+ doc: webserver_username
+ default: ws-user
+ env: WEBSERVER_USERNAME
+
+webserver_pass:
+ doc: webserver_pass
+ default: ws-passPOSTGRES_DB=polis-dev
+ env: WEBSERVER_PASS
+
+postgres_password:
+ doc: postgres_password
+ default: oiPorg3Nrz0yqDLE
+ env: POSTGRES_PASSWORD
+
+postgres_user:
+ doc: postgres_user
+ default: postgres# For admin functionality, fill this out
+ env: POSTGRES_USER
+
+admin_emails:
+ doc: admin_emails
+ default: []
+ env: ADMIN_EMAILS
+
+admin_email_data_export:
+ doc: admin_email_data_export
+ default: ""
+ env: ADMIN_EMAIL_DATA_EXPORT
+
+admin_email_data_export_test:
+ doc: admin_email_data_export_test
+ default: ""
+ env: ADMIN_EMAIL_DATA_EXPORT_TEST
+
+admin_email_email_test:
+ doc: admin_email_email_test
+ default: ""
+ env: ADMIN_EMAIL_EMAIL_TEST
+
+admin_uids:
+ doc: admin_uids
+ default: []
+ env: ADMIN_UIDS
+
+
+database_for_reads_name:
+ doc: database_for_reads_name
+ default: DATABASE_URL
+ env: DATABASE_FOR_READS_NAME
+
+database_url:
+ doc: database_url
+ default: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev
+ env: DATABASE_URL
+
+
+webserver_username:
+ doc: webserver_username
+ default: ws-user
+ env: WEBSERVER_USERNAME
+
+webserver_pass:
+ doc: webserver_pass
+ default: ws-pass
+ env: WEBSERVER_PASS
+
+stripe_secret_key:
+ doc: stripe_secret_key
+ default: sk_test_NFBDEThkpHCYBzXPJuBlY8TW
+ env: STRIPE_SECRET_KEY
+
+
+dev_mode:
+ doc: dev_mode
+ default: true
+ env: DEV_MODE
+
+disable_intercom:
+ doc: disable_intercom
+ default: true
+ env: DISABLE_INTERCOM
+
+domain_override:
+ doc: domain_override
+ default: localhost:5000
+ env: DOMAIN_OVERRIDE
+
+# Options: prod, preprod, dev
+math_env:
+ doc: math_env
+ default: dev
+ env: MATH_ENV
+
+port:
+ doc: port
+ default: 5000
+ env: PORT
+
+
+
+static_files_admindash_port:
+ doc: static_files_admindash_port
+ default: 8080
+ env: STATIC_FILES_ADMINDASH_PORT
+
+static_files_host:
+ doc: static_files_host
+ default: file-server
+ env: STATIC_FILES_HOST
+
+static_files_port:
+ doc: static_files_port
+ default: 8080
+ env: STATIC_FILES_PORT
+
+
+aws_region:
+ doc: aws_region
+ default: us-east-1
+ env: AWS_REGION
+
diff --git a/config/export_config.js b/config/export_config.js
new file mode 100644
index 0000000000..3bb17095ac
--- /dev/null
+++ b/config/export_config.js
@@ -0,0 +1,13 @@
+// Copyright (C) 2012-present, The Authors. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License, version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see .
+
+"use strict";
+
+let POLIS_ROOT = process.env.POLIS_ROOT
+
+var config = require(POLIS_ROOT + '/config/config.js');
+const fs = require('fs');
+
+console.log('export_config aws_region:' + config.get('aws_region'));
+
+let data = JSON.stringify(config.getProperties(), null, 2);
+fs.writeFileSync('export_config.json', data);
diff --git a/config/merge_config_yaml_files.ipynb b/config/merge_config_yaml_files.ipynb
new file mode 100644
index 0000000000..b690afea31
--- /dev/null
+++ b/config/merge_config_yaml_files.ipynb
@@ -0,0 +1,461 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 38,
+ "id": "26416144",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import yaml\n",
+ "\n",
+ "import subprocess\n",
+ "from collections import defaultdict, OrderedDict\n",
+ "\n",
+ "\n",
+ "def parse_preserving_duplicates(src):\n",
+ " # We deliberately define a fresh class inside the function,\n",
+ " # because add_constructor is a class method and we don't want to\n",
+ " # mutate pyyaml classes.\n",
+ " class PreserveDuplicatesLoader(yaml.loader.Loader):\n",
+ " pass\n",
+ "\n",
+ " def map_constructor(loader, node, deep=False):\n",
+ " \"\"\"Walk the mapping, recording any duplicate keys.\n",
+ "\n",
+ " \"\"\"\n",
+ " mapping = defaultdict(list)\n",
+ " for key_node, value_node in node.value:\n",
+ " key = loader.construct_object(key_node, deep=deep)\n",
+ " value = loader.construct_object(value_node, deep=deep)\n",
+ "\n",
+ " mapping[key].append(value)\n",
+ "\n",
+ " return mapping\n",
+ "\n",
+ " PreserveDuplicatesLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, map_constructor)\n",
+ " return yaml.load(src, PreserveDuplicatesLoader)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "id": "d642dcfc",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "finding duplicate keys in schema.yaml\n",
+ "number of keys: 68\n",
+ "no duplicates found\n",
+ "\n",
+ "For comparison with the next file:\n",
+ "key: webserver_pass\n",
+ " value: 8a7157439f50\n",
+ "key: admin_emails\n",
+ " value: []\n",
+ "key: admin_uids\n",
+ " value: []\n",
+ "\n",
+ "finding duplicate keys in env_all.yaml\n",
+ "key: webserver_pass\n",
+ " set of values: {'ws-pass', 'ws-passPOSTGRES_DB=polis-dev'}\n",
+ "key: admin_emails\n",
+ " unhashable value: {key_dict['default'][0]}\n",
+ "key: admin_emails\n",
+ " unhashable value: {key_dict['default'][0]}\n",
+ "key: admin_uids\n",
+ " unhashable value: {key_dict['default'][0]}\n",
+ "key: admin_uids\n",
+ " unhashable value: {key_dict['default'][0]}\n",
+ "number of keys: 26\n",
+ "\n",
+ "schema key: 00documentation\n",
+ "schema key: admin_email_data_export\n",
+ " schema value: \n",
+ " grep result:ADMIN_EMAIL_DATA_EXPORT=\"\"\n",
+ " grep result:\n",
+ "schema key: admin_email_data_export_test\n",
+ " schema value: \n",
+ " grep result:ADMIN_EMAIL_DATA_EXPORT_TEST=\"\"\n",
+ " grep result:\n",
+ "schema key: admin_email_email_test\n",
+ " schema value: \n",
+ " grep result:ADMIN_EMAIL_EMAIL_TEST=\"\"\n",
+ " grep result:\n",
+ "schema key: admin_emails\n",
+ " schema value: []\n",
+ " grep result:ADMIN_EMAILS=[]\n",
+ " grep result:\n",
+ "schema key: admin_uids\n",
+ " schema value: []\n",
+ " grep result:ADMIN_UIDS=[]\n",
+ " grep result:\n",
+ "schema key: akismet_antispam_api_key\n",
+ "schema key: akismet_root_url\n",
+ "schema key: aws_access_key_id\n",
+ "schema key: aws_region\n",
+ " schema value: us-east-1\n",
+ " grep result:AWS_REGION=us-east-1\n",
+ " grep result:\n",
+ "schema key: aws_s3_api_version\n",
+ "schema key: aws_secret_access_key\n",
+ "schema key: aws_ses_api_version\n",
+ "schema key: backfill_comment_lang_detection\n",
+ "schema key: cache_math_results\n",
+ "schema key: client_participation_port\n",
+ "schema key: database_for_reads_url\n",
+ "schema key: database_url\n",
+ " schema value: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev\n",
+ " grep result:DATABASE_URL=postgres\n",
+ " grep result: export DATABASE_URL=postgres\n",
+ " grep result:export DATABASE_URL=postgres\n",
+ " grep result:DATABASE_URL=postgres\n",
+ " grep result:\n",
+ "schema key: dev_mode\n",
+ " schema value: True\n",
+ " grep result:DEV_MODE=true\n",
+ " grep result: issues, you'll want to run with `export DEV_MODE=true`.\n",
+ " grep result:export DEV_MODE=true\n",
+ " grep result:\n",
+ "schema key: disable_intercom\n",
+ " schema value: True\n",
+ " grep result:DISABLE_INTERCOM=true\n",
+ " grep result:export DISABLE_INTERCOM=true\n",
+ " grep result: DISABLE_INTERCOM\n",
+ " grep result: DISABLE_INTERCOM\n",
+ " grep result:\n",
+ "schema key: disable_plans\n",
+ " schema value: True\n",
+ " grep result: DISABLE_PLANS\n",
+ " grep result:\n",
+ "schema key: domainWhitelist\n",
+ "schema key: domain_override\n",
+ " schema value: \n",
+ " grep result:DOMAIN_OVERRIDE=localhost\n",
+ " grep result:export DOMAIN_OVERRIDE=localhost\n",
+ " grep result:export DOMAIN_OVERRIDE=localhost\n",
+ " grep result:\n",
+ "schema key: domain_whitelist_item_01\n",
+ "schema key: domain_whitelist_item_02\n",
+ "schema key: domain_whitelist_item_03\n",
+ "schema key: domain_whitelist_item_04\n",
+ "schema key: domain_whitelist_item_05\n",
+ "schema key: domain_whitelist_item_06\n",
+ "schema key: domain_whitelist_item_07\n",
+ "schema key: domain_whitelist_item_08\n",
+ "schema key: email_transport_types\n",
+ " schema value: maildev\n",
+ " grep result:EMAIL_TRANSPORT_TYPES=maildev\n",
+ " grep result: echo EMAIL_TRANSPORT_TYPES=mailgun,aws-ses,nonexistent,maildev >> server/docker-dev.env\n",
+ " grep result:\n",
+ "schema key: encryption_password_00001\n",
+ "schema key: env\n",
+ " schema value: development\n",
+ " grep result: \"build\n",
+ " grep result: \"build\n",
+ " grep result: \"build\n",
+ " grep result:# export NODE_ENV=production\n",
+ " grep result:# export NODE_ENV=development\n",
+ " grep result: NODE_ENV\n",
+ " grep result:\n",
+ "schema key: fb_app_id\n",
+ " schema value: 661042417336977\n",
+ " grep result: FB_APP_ID\n",
+ " grep result: FB_APP_ID\n",
+ " grep result:\n",
+ "schema key: google_api_key\n",
+ "schema key: google_creds_stringified\n",
+ " schema value: X\n",
+ " grep result:# GOOGLE_CREDS_STRINGIFIED=xxxxxxxxxxxxxxxxxxxxxxx...\n",
+ " grep result:heroku config\n",
+ " grep result:heroku config\n",
+ " grep result:\n",
+ "schema key: intercom_access_token\n",
+ "schema key: local_output_path\n",
+ " schema value: ./build\n",
+ " grep result: LOCAL_OUTPUT_PATH\n",
+ " grep result: LOCAL_OUTPUT_PATH\n",
+ " grep result: LOCAL_OUTPUT_PATH\n",
+ " grep result:\n",
+ "schema key: mailgun_api_key\n",
+ "schema key: math_env\n",
+ " schema value: dev\n",
+ " grep result:MATH_ENV=dev\n",
+ " grep result:echo \"export MATH_ENV=prod\"\n",
+ " grep result:\n",
+ "schema key: maxmind_licensekey\n",
+ "schema key: maxmind_userid\n",
+ "schema key: polis_from_address\n",
+ " schema value: \n",
+ " grep result:POLIS_FROM_ADDRESS=\"Example \"\n",
+ " grep result:\n",
+ "schema key: polis_slack_app_client_id\n",
+ "schema key: polis_slack_app_client_secret\n",
+ "schema key: port\n",
+ " schema value: 5000\n",
+ " grep result:ADMIN_EMAIL_DATA_EXPORT=\"\"\n",
+ " grep result:PORT=5000\n",
+ " grep result:STATIC_FILES_ADMINDASH_PORT=8080\n",
+ " grep result:STATIC_FILES_PORT=8080\n",
+ " grep result:export STATIC_FILES_PORT=5001\n",
+ " grep result:export STATIC_FILES_ADMINDASH_PORT=5002\n",
+ " grep result:export PORT=5000\n",
+ " grep result:export STATIC_FILES_PORT=5001\n",
+ " grep result:export STATIC_FILES_ADMINDASH_PORT=5002\n",
+ " grep result:export PORT=5000\n",
+ " grep result: PORT\n",
+ " grep result:\n",
+ "schema key: primary_polis_url\n",
+ "schema key: run_periodic_export_tests\n",
+ "schema key: s3_bucket_preprod\n",
+ " schema value: preprod.pol.is\n",
+ " grep result: S3_BUCKET_PREPROD\n",
+ " grep result: S3_BUCKET_PREPROD\n",
+ " grep result: S3_BUCKET_PREPROD\n",
+ " grep result:\n",
+ "schema key: s3_bucket_prod\n",
+ " schema value: pol.is\n",
+ " grep result: S3_BUCKET_PROD\n",
+ " grep result: S3_BUCKET_PROD\n",
+ " grep result: S3_BUCKET_PROD\n",
+ " grep result:\n",
+ "schema key: scp_subdir_preprod\n",
+ " schema value: preprod\n",
+ " grep result: SCP_SUBDIR_PREPROD\n",
+ " grep result: SCP_SUBDIR_PREPROD\n",
+ " grep result: SCP_SUBDIR_PREPROD\n",
+ " grep result:\n",
+ "schema key: scp_subdir_prod\n",
+ " schema value: prod\n",
+ " grep result: SCP_SUBDIR_PROD\n",
+ " grep result: SCP_SUBDIR_PROD\n",
+ " grep result: SCP_SUBDIR_PROD\n",
+ " grep result:\n",
+ "schema key: service_hostname\n",
+ " schema value: undefined\n",
+ " grep result: //SERVICE_HOSTNAME\n",
+ " grep result: SERVICE_HOSTNAME\n",
+ " grep result:\n",
+ "schema key: service_url\n",
+ " schema value: http://localhost:5000\n",
+ " grep result: //SERVICE_URL\n",
+ " grep result: SERVICE_URL\n",
+ " grep result:console.log(\"SERVICE_URL\n",
+ " grep result:This shell script file should contain a line like `export SERVICE_URL=https\n",
+ " grep result:#export SERVICE_URL=https\n",
+ " grep result:export SERVICE_URL=http\n",
+ " grep result:#export SERVICE_URL=https\n",
+ " grep result:export SERVICE_URL=http\n",
+ " grep result: //SERVICE_URL\n",
+ " grep result: SERVICE_URL\n",
+ " grep result:console.log(\"SERVICE_URL\n",
+ " grep result: //SERVICE_URL\n",
+ " grep result: SERVICE_URL\n",
+ " grep result:\n",
+ "schema key: should_use_translation_api\n",
+ " schema value: False\n",
+ " grep result:SHOULD_USE_TRANSLATION_API=false\n",
+ " grep result:1. Configure `SHOULD_USE_TRANSLATION_API=true` within `server/docker-dev.env`\n",
+ " grep result: echo SHOULD_USE_TRANSLATION_API=true >> server/docker-dev.env\n",
+ " grep result:\n",
+ "schema key: slack_api_token\n",
+ "schema key: static_files_admindash_port\n",
+ " schema value: 8080\n",
+ " grep result:STATIC_FILES_ADMINDASH_PORT=8080\n",
+ " grep result:export STATIC_FILES_ADMINDASH_PORT=5002\n",
+ " grep result:export STATIC_FILES_ADMINDASH_PORT=5002\n",
+ " grep result:\n",
+ "schema key: static_files_host\n",
+ " schema value: file-server\n",
+ " grep result:STATIC_FILES_HOST=file-server\n",
+ " grep result:export STATIC_FILES_HOST=localhost\n",
+ " grep result:export STATIC_FILES_HOST=localhost\n",
+ " grep result:\n",
+ "schema key: static_files_port\n",
+ " schema value: 8080\n",
+ " grep result:STATIC_FILES_PORT=8080\n",
+ " grep result:export STATIC_FILES_PORT=5001\n",
+ " grep result:export STATIC_FILES_PORT=5001\n",
+ " grep result:\n",
+ "schema key: static_files_report_port\n",
+ "schema key: stripe_client_id\n",
+ "schema key: stripe_secret_key\n",
+ " schema value: sk_test_NFBDEThkpHCYBzXPJuBlY8TW\n",
+ " grep result:STRIPE_SECRET_KEY=sk_test_NFBDEThkpHCYBzXPJuBlY8TW\n",
+ " grep result:export STRIPE_SECRET_KEY=sk_test_NFBDEThkpHCYBzXPJuBlY8TW\n",
+ " grep result:\n",
+ "schema key: twitter_consumer_key\n",
+ "schema key: twitter_consumer_secret\n",
+ "schema key: uploader\n",
+ " schema value: local\n",
+ " grep result: UPLOADER\n",
+ " grep result: UPLOADER\n",
+ " grep result: UPLOADER\n",
+ " grep result:\n",
+ "schema key: webserver_pass\n",
+ " schema value: 8a7157439f50\n",
+ " grep result:WEBSERVER_PASS=ws-pass\n",
+ " grep result:WEBSERVER_PASS=ws-pass\n",
+ " grep result:\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "schema key: webserver_username\n",
+ " schema value: f4c19337e502\n",
+ " grep result:WEBSERVER_USERNAME=ws-user\n",
+ " grep result:WEBSERVER_USERNAME=ws-user\n",
+ " grep result:\n"
+ ]
+ }
+ ],
+ "source": [
+ "file = \"schema.yaml\"\n",
+ "with open(file) as src:\n",
+ " data = parse_preserving_duplicates(src)\n",
+ "print(f\"finding duplicate keys in {file}\")\n",
+ "count = 0\n",
+ "for key in data.keys():\n",
+ " if len(data[key]) > 1: \n",
+ " count += 1\n",
+ " print(f\"key: {key}\")\n",
+ " print(f\"value:\\n{data[key]}\")\n",
+ "print(f\"number of keys: {len(data)}\")\n",
+ "if count == 0:\n",
+ " print(\"no duplicates found\")\n",
+ " \n",
+ "print(\"\\nFor comparison with the next file:\")\n",
+ "keys = [\n",
+ " 'webserver_pass',\n",
+ " 'admin_emails',\n",
+ " 'admin_uids']\n",
+ "for key in keys:\n",
+ " print(f\"key: {key}\")\n",
+ " print(f\" value: {data[key][0]['default'][0]}\")\n",
+ "print()\n",
+ "with open(file) as src:\n",
+ " data = yaml.safe_load(src)\n",
+ "\n",
+ "file = \"env_all_to_be_deleted.yaml\"\n",
+ "with open(file) as src:\n",
+ " data = parse_preserving_duplicates(src)\n",
+ "print(f\"finding duplicate keys in {file}\")\n",
+ "for key in data.keys():\n",
+ " if len(data[key]) > 1: \n",
+ " value_set = set()\n",
+ " for key_dict in data[key]:\n",
+ " try:\n",
+ " value_set.add(key_dict['default'][0])\n",
+ " except TypeError:\n",
+ " print(f\"key: {key}\")\n",
+ " print(\" unhashable value: {key_dict['default'][0]}\")\n",
+ " if len(value_set) > 1:\n",
+ " print(f\"key: {key}\")\n",
+ " print(f\" set of values: {value_set}\")\n",
+ "print(f\"number of keys: {len(data)}\")\n",
+ "\n",
+ "file = \"schema.yaml\"\n",
+ "sorted_file = \"schema_sorted.yaml\"\n",
+ "with open(file) as src:\n",
+ " data = yaml.safe_load(src)\n",
+ "sorted_data = {}\n",
+ "for key in sorted(data.keys()):\n",
+ " sorted_data[key] = data[key]\n",
+ "with open(sorted_file, \"w\") as dest:\n",
+ " yaml.dump(sorted_data, dest)\n",
+ "\n",
+ "print()\n",
+ "polis_path = \"/Users/crkrenn/code/polis_dir/polis\" \n",
+ "for key in list(sorted(data.keys())):\n",
+ " result = subprocess.run(\n",
+ " [\"grep\", \"-R\", \n",
+ " \"-e\", data[key]['env']+':', \n",
+ " \"-e\", data[key]['env']+'=', \n",
+ " polis_path],\n",
+ " capture_output=True)\n",
+ " print(f\"schema key: {key}\")\n",
+ " if not result.returncode:\n",
+ " print(f\" schema value: {data[key]['default']}\")\n",
+ " result_stdout = result.stdout.decode(\"utf-8\")\n",
+ " result_stdout_list = result_stdout.split('\\n')\n",
+ " for result_stdout in result_stdout_list:\n",
+ " try:\n",
+ " result_stdout = result_stdout.split(':')[1]\n",
+ " except IndexError:\n",
+ " pass\n",
+ " print( \" grep result:\" + result_stdout)\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "b9bd9442",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[defaultdict(list,\n",
+ " {'doc': ['webserver_pass'],\n",
+ " 'default': ['ws-passPOSTGRES_DB=polis-dev'],\n",
+ " 'env': ['WEBSERVER_PASS']}),\n",
+ " defaultdict(list,\n",
+ " {'doc': ['webserver_pass'],\n",
+ " 'default': ['ws-pass'],\n",
+ " 'env': ['WEBSERVER_PASS']}),\n",
+ " defaultdict(list,\n",
+ " {'doc': ['webserver_pass'],\n",
+ " 'default': ['ws-passPOSTGRES_DB=polis-dev'],\n",
+ " 'env': ['WEBSERVER_PASS']}),\n",
+ " defaultdict(list,\n",
+ " {'doc': ['webserver_pass'],\n",
+ " 'default': ['ws-pass'],\n",
+ " 'env': ['WEBSERVER_PASS']})]"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data['webserver_pass']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "6aba1ae1",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.8"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/config/merge_config_yaml_files.py b/config/merge_config_yaml_files.py
new file mode 100644
index 0000000000..d9ae07f82b
--- /dev/null
+++ b/config/merge_config_yaml_files.py
@@ -0,0 +1,128 @@
+# ---
+# jupyter:
+# jupytext:
+# text_representation:
+# extension: .py
+# format_name: light
+# format_version: '1.5'
+# jupytext_version: 1.13.6
+# kernelspec:
+# display_name: Python 3
+# language: python
+# name: python3
+# ---
+
+# +
+import yaml
+
+import subprocess
+from collections import defaultdict, OrderedDict
+
+
+def parse_preserving_duplicates(src):
+ # We deliberately define a fresh class inside the function,
+ # because add_constructor is a class method and we don't want to
+ # mutate pyyaml classes.
+ class PreserveDuplicatesLoader(yaml.loader.Loader):
+ pass
+
+ def map_constructor(loader, node, deep=False):
+ """Walk the mapping, recording any duplicate keys.
+
+ """
+ mapping = defaultdict(list)
+ for key_node, value_node in node.value:
+ key = loader.construct_object(key_node, deep=deep)
+ value = loader.construct_object(value_node, deep=deep)
+
+ mapping[key].append(value)
+
+ return mapping
+
+ PreserveDuplicatesLoader.add_constructor(yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, map_constructor)
+ return yaml.load(src, PreserveDuplicatesLoader)
+
+
+# +
+file = "schema.yaml"
+with open(file) as src:
+ data = parse_preserving_duplicates(src)
+print(f"finding duplicate keys in {file}")
+count = 0
+for key in data.keys():
+ if len(data[key]) > 1:
+ count += 1
+ print(f"key: {key}")
+ print(f"value:\n{data[key]}")
+print(f"number of keys: {len(data)}")
+if count == 0:
+ print("no duplicates found")
+
+print("\nFor comparison with the next file:")
+keys = [
+ 'webserver_pass',
+ 'admin_emails',
+ 'admin_uids']
+for key in keys:
+ print(f"key: {key}")
+ print(f" value: {data[key][0]['default'][0]}")
+print()
+with open(file) as src:
+ data = yaml.safe_load(src)
+
+file = "env_all_to_be_deleted.yaml"
+with open(file) as src:
+ data = parse_preserving_duplicates(src)
+print(f"finding duplicate keys in {file}")
+for key in data.keys():
+ if len(data[key]) > 1:
+ value_set = set()
+ for key_dict in data[key]:
+ try:
+ value_set.add(key_dict['default'][0])
+ except TypeError:
+ print(f"key: {key}")
+ print(" unhashable value: {key_dict['default'][0]}")
+ if len(value_set) > 1:
+ print(f"key: {key}")
+ print(f" set of values: {value_set}")
+print(f"number of keys: {len(data)}")
+
+file = "schema.yaml"
+sorted_file = "schema_sorted.yaml"
+with open(file) as src:
+ data = yaml.safe_load(src)
+sorted_data = {}
+for key in sorted(data.keys()):
+ sorted_data[key] = data[key]
+with open(sorted_file, "w") as dest:
+ yaml.dump(sorted_data, dest)
+
+print()
+polis_path = "/Users/crkrenn/code/polis_dir/polis"
+for key in list(sorted(data.keys())):
+ result = subprocess.run(
+ ["grep", "-R",
+ "-e", data[key]['env']+'.*:',
+ "-e", data[key]['env']+'.*=',
+ "-e", key+'.*=',
+ polis_path],
+ capture_output=True)
+ print(f"schema key: {key}")
+ if not result.returncode:
+ print(f" schema value: {data[key]['default']}")
+ result_stdout = result.stdout.decode("utf-8")
+ result_stdout_list = result_stdout.split('\n')
+ for result_stdout in result_stdout_list:
+ try:
+ result_stdout = result_stdout.split(':')[1]
+ except IndexError:
+ pass
+ print( " grep result:" + result_stdout)
+
+
+# -
+
+data['webserver_pass']
+
+
diff --git a/config/package.json b/config/package.json
new file mode 100644
index 0000000000..2ddf7e3698
--- /dev/null
+++ b/config/package.json
@@ -0,0 +1,16 @@
+{
+ "name": "polisconfig",
+ "version": "1.0.0",
+ "description": "",
+ "main": "export_config.js",
+ "scripts": {
+ "start": "node export_config.js",
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "convict": "6.0.0",
+ "js-yaml": "3.14.0"
+ }
+}
diff --git a/config/schema.yaml b/config/schema.yaml
new file mode 100644
index 0000000000..2fe8dc8a6b
--- /dev/null
+++ b/config/schema.yaml
@@ -0,0 +1,314 @@
+00documentation:
+ default:
+ - Precedence order (https://www.npmjs.com/package/convict)
+ - .
+ - When merging configuration values from different sources,
+ - Convict follows precedence rules. The order, from lowest to highest, for
+ - config.loadFile(file) and config.load(json) is
+ - .
+ - Default value
+ - File or json set in function argument
+ - Environment variables (only used when env property is set in schema)
+ - Command line arguments (only used when arg property is set in schema)
+ - .
+ - For easy json/yaml conversion: https://www.json2yaml.com/
+ - .
+ - NOTE: Please be careful when chosing defaults for undefined
+ - environment variables. "undefined" is recommended
+ - .
+ - The defaults for all variables below are currently for development builds.
+ doc: 00documentation
+ env: 00DOCUMENTATION
+admin_email_data_export:
+ default: ''
+ doc: admin_email_data_export
+ env: ADMIN_EMAIL_DATA_EXPORT
+admin_email_data_export_test:
+ default: ''
+ doc: admin_email_data_export_test
+ env: ADMIN_EMAIL_DATA_EXPORT_TEST
+admin_email_email_test:
+ default: ''
+ doc: admin_email_email_test
+ env: ADMIN_EMAIL_EMAIL_TEST
+admin_emails:
+ default: []
+ doc: admin_emails
+ env: ADMIN_EMAILS
+admin_uids:
+ default: []
+ doc: admin_uids
+ env: ADMIN_UIDS
+akismet_antispam_api_key:
+ default: ''
+ doc: akismet_antispam_api_key (ex. a1a11111aa11)
+ env: AKISMET_ANTISPAM_API_KEY
+ format: String
+akismet_root_url:
+ default: https://pol.is
+ doc: akismet_root_url
+ env: AKISMET_ROOT_URL
+aws_access_key_id:
+ default: undefined
+ doc: aws_access_key_id
+ env: AWS_ACCESS_KEY_ID
+ sensitive: true
+ tag: api
+aws_region:
+ default: us-east-1
+ doc: aws_region
+ env: AWS_REGION
+aws_s3_api_version:
+ default: 2006-03-01
+ doc: aws_s3_api_version
+ env: AWS_S3_API_VERSION
+aws_secret_access_key:
+ default: undefined
+ doc: aws_secret_access_key
+ env: AWS_SECRET_ACCESS_KEY
+ sensitive: true
+aws_ses_api_version:
+ default: 2010-12-01
+ doc: aws_s3_api_version
+ env: AWS_S3_API_VERSION
+backfill_comment_lang_detection:
+ default: false
+ doc: backfill_comment_lang_detection
+ env: BACKFILL_COMMENT_LANG_DETECTION
+cache_math_results:
+ default: false
+ doc: cache_math_results
+ env: CACHE_MATH_RESULTS
+client_participation_port:
+ default: 5001
+ doc: Note that this must match the participation client port specified in polisServer
+ instance
+ env: CLIENT_PARTICIPATION_PORT
+database_for_reads_url:
+ default: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev
+ doc: database_for_reads_url (often is the same as database_url)
+ env: DATABASE_FOR_READS_URL
+database_url:
+ default: postgres://postgres:oiPorg3Nrz0yqDLE@postgres:5432/polis-dev
+ doc: database_url
+ env: DATABASE_URL
+dev_mode:
+ default: true
+ doc: dev_mode
+ env: DEV_MODE
+disable_intercom:
+ default: true
+ doc: disable_intercom
+ env: DISABLE_INTERCOM
+disable_plans:
+ default: true
+ doc: disable_plans
+ env: DISABLE_PLANS
+domainWhitelist:
+ default:
+ - ^localhost$
+ - ^192\\.168\\.1\\.141$
+ - ^192\\.168\\.1\\.140$
+ - ^pol\\.is
+ - .+\\.pol\\.is$
+ - ^xip\\.io$
+ - .+\\.xip\\.io$
+ doc: domainWhitelist
+ env: DOMAIN_WHITELIST
+domain_override:
+ default: ''
+ doc: domain_override
+ env: DOMAIN_OVERRIDE
+domain_whitelist_item_01:
+ default: ''
+ doc: domain_whitelist_item_01
+ env: DOMAIN_WHITELIST_ITEM_01
+domain_whitelist_item_02:
+ default: ''
+ doc: domain_whitelist_item_02
+ env: DOMAIN_WHITELIST_ITEM_02
+domain_whitelist_item_03:
+ default: ''
+ doc: domain_whitelist_item_03
+ env: DOMAIN_WHITELIST_ITEM_03
+domain_whitelist_item_04:
+ default: ''
+ doc: domain_whitelist_item_04
+ env: DOMAIN_WHITELIST_ITEM_04
+domain_whitelist_item_05:
+ default: ''
+ doc: domain_whitelist_item_05
+ env: DOMAIN_WHITELIST_ITEM_05
+domain_whitelist_item_06:
+ default: ''
+ doc: domain_whitelist_item_06
+ env: DOMAIN_WHITELIST_ITEM_06
+domain_whitelist_item_07:
+ default: ''
+ doc: domain_whitelist_item_07
+ env: DOMAIN_WHITELIST_ITEM_07
+domain_whitelist_item_08:
+ default: ''
+ doc: domain_whitelist_item_08
+ env: DOMAIN_WHITELIST_ITEM_08
+email_transport_types:
+ default: maildev
+ doc:
+ - email_transport_types - maildev, aws-ses, mailgun
+ - ex. `aws-ses,mailgun` would try sending via AWS SES first, and fallback to Mailgun
+ on error.
+ - cypress-tests.yml uses - EMAIL_TRANSPORT_TYPES=mailgun,aws-ses,nonexistent,maildev
+ env: EMAIL_TRANSPORT_TYPES
+encryption_password_00001:
+ default: c9336642-2024-43a8-99cd-77ee38e82a9c
+ doc: encryption_password_00001
+ env: ENCRYPTION_PASSWORD_00001
+env:
+ default: development
+ doc: The application environment
+ env: NODE_ENV
+ format:
+ - production
+ - development
+ - test
+fb_app_id:
+ default: 661042417336977
+ doc: must register with facebook and get a facebook app id to use the facebook auth
+ features
+ env: FB_APP_ID
+google_api_key:
+ default: undefined
+ doc: google_api_key
+ env: GOOGLE_API_KEY
+google_creds_stringified:
+ default: X
+ doc: google_creds_stringified
+ env: GOOGLE_CREDS_STRINGIFIED
+intercom_access_token:
+ default: undefined
+ doc: intercom_access_token
+ env: INTERCOM_ACCESS_TOKEN
+local_output_path:
+ default: ./build
+ doc: Uploader settings local
+ env: LOCAL_OUTPUT_PATH
+mailgun_api_key:
+ default: undefined
+ doc: mailgun_api_key
+ env: MAILGUN_API_KEY
+math_env:
+ default: dev
+ doc: math_env
+ env: MATH_ENV
+maxmind_licensekey:
+ default: undefined
+ doc: maxmind_licensekey
+ env: MAXMIND_LICENSEKEY
+maxmind_userid:
+ default: undefined
+ doc: maxmind_userid
+ env: MAXMIND_USERID
+polis_from_address:
+ default: "Example "
+ doc: polis_from_address
+ env: POLIS_FROM_ADDRESS
+polis_slack_app_client_id:
+ default: X
+ doc: polis_slack_app_client_id
+ env: POLIS_SLACK_APP_CLIENT_ID
+polis_slack_app_client_secret:
+ default: X
+ doc: polis_slack_app_client_secret
+ env: POLIS_SLACK_APP_CLIENT_SECRET
+port:
+ default: undefined
+ doc: port
+ env: PORT
+primary_polis_url:
+ default: undefined
+ doc: primary_polis_url
+ env: PRIMARY_POLIS_URL
+run_periodic_export_tests:
+ default: false
+ doc: run_periodic_export_tests
+ env: RUN_PERIODIC_EXPORT_TESTS
+s3_bucket_preprod:
+ default: preprod.pol.is
+ doc: uploader settings s3
+ env: S3_BUCKET_PREPROD
+s3_bucket_prod:
+ default: pol.is
+ doc: uploader settings s3
+ env: S3_BUCKET_PROD
+scp_subdir_preprod:
+ default: preprod
+ doc: uploader settings scp
+ env: SCP_SUBDIR_PREPROD
+scp_subdir_prod:
+ default: prod
+ doc: uploader settings scp
+ env: SCP_SUBDIR_PROD
+service_hostname:
+ default: undefined
+ doc: service_hostname
+ env: SERVICE_HOSTNAME
+service_url:
+ default: undefined
+ doc: Point to a polisServer instance (local recommended for dev)
+ env: SERVICE_URL
+should_use_translation_api:
+ default: false
+ doc: should_use_translation_api
+ env: SHOULD_USE_TRANSLATION_API
+slack_api_token:
+ default: undefined
+ doc: slack_api_token
+ env: SLACK_API_TOKEN
+static_files_admindash_port:
+ default: 8080
+ doc: static_files_admindash_port
+ env: STATIC_FILES_ADMINDASH_PORT
+static_files_host:
+ default: file-server
+ doc: static_files_host
+ env: STATIC_FILES_HOST
+static_files_port:
+ default: 8080
+ doc: static_files_port
+ env: STATIC_FILES_PORT
+static_files_report_port:
+ default: 8080
+ doc: static_files_report_port
+ env: STATIC_FILES_REPORT_PORT
+stripe_client_id:
+ default: undefined
+ doc: stripe_client_id
+ env: STRIPE_CLIENT_ID
+stripe_secret_key:
+ default: sk_test_NFBDEThkpHCYBzXPJuBlY8TW
+ doc: stripe_secret_key
+ env: STRIPE_SECRET_KEY
+twitter_consumer_key:
+ default: undefined
+ doc: twitter_consumer_key
+ env: TWITTER_CONSUMER_KEY
+twitter_consumer_secret:
+ default: undefined
+ doc: twitter_consumer_secret
+ env: TWITTER_CONSUMER_SECRET
+uploader:
+ default: local
+ doc: uploader for compiled static javascript
+ env: UPLOADER
+ format:
+ - local
+ - s3
+ - scp
+webserver_pass:
+ default: 8a7157439f50
+ doc: webserver_pass
+ env: WEBSERVER_PASS
+webserver_username:
+ default: f4c19337e502
+ doc: webserver_username
+ env: WEBSERVER_USERNAME
diff --git a/docker-compose.yml b/docker-compose.yml
index cffa3436f3..bd4fe1a525 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,3 +1,5 @@
+# @TTD: sort networks/volumes consistently (network first)
+
# before running docker-compose up for the first time,
# either do a pull:
# docker-compose pull
@@ -13,12 +15,16 @@
# to stop:
# docker-compose down
+## TODO: add config container
+
version: "3.1"
services:
server:
container_name: polis-server
env_file: ./server/docker-dev.env
+ environment:
+ - POLIS_ROOT=/app/
image: compdem/polis-server:${TAG}
build:
context: ./server
@@ -28,6 +34,8 @@ services:
- "file-server"
networks:
- "polis-net"
+ volumes:
+ - "config:/app/config"
ports:
- "5000:5000"
- "9229:9229"
@@ -40,6 +48,8 @@ services:
- "postgres"
build:
context: ./math
+ volumes:
+ - "config:/config"
networks:
- "polis-net"
@@ -47,6 +57,8 @@ services:
container_name: polis-postgres
env_file: ./server/docker-db-dev.env
image: compdem/polis-postgres:${TAG}
+ depends_on:
+ - "config"
restart: always
build:
context: ./server
@@ -55,6 +67,7 @@ services:
- "polis-net"
volumes:
- "backups:/backups"
+ - "config:/config"
- "postgres:/var/lib/postgresql/data"
nginx-proxy:
@@ -69,6 +82,8 @@ services:
- "server"
networks:
- "polis-net"
+ volumes:
+ - "config:/config"
ports:
- "80:80"
- "443:443"
@@ -85,12 +100,16 @@ services:
- "client-report"
networks:
- "polis-net"
+ volumes:
+ - "config:/config"
ports:
- "8080:8080"
client-participation:
container_name: polis-client-participation
image: compdem/polis-client-participation:${TAG}
+ depends_on:
+ - "config"
build:
context: ./client-participation
args:
@@ -99,6 +118,8 @@ services:
client-admin:
container_name: polis-client-admin
image: compdem/polis-client-admin:${TAG}
+ depends_on:
+ - "config"
build:
context: ./client-admin
args:
@@ -107,6 +128,8 @@ services:
client-report:
container_name: polis-client-report
image: compdem/polis-client-report:${TAG}
+ depends_on:
+ - "config"
build:
context: ./client-report
args:
@@ -122,9 +145,19 @@ services:
# SMTP port
- "25:25"
+ config:
+ build:
+ context: ./config
+ dockerfile: Dockerfile
+ volumes:
+ - "config:/config"
+
networks:
polis-net:
volumes:
backups:
postgres:
+ config:
+ # We hardcode this machine name so it won't vary depending on git dir name.
+ name: polis_config
diff --git a/server/app.ts b/server/app.ts
index 67d6ef0a58..bebf97b18b 100644
--- a/server/app.ts
+++ b/server/app.ts
@@ -16,6 +16,9 @@ const app = express();
// See: https://expressjs.com/en/guide/behind-proxies.html
app.set("trust proxy", "uniquelocal");
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
var helpersInitialized = new Promise(function (resolve, reject) {
resolve(server.initializePolisHelpers());
@@ -1959,9 +1962,9 @@ helpersInitialized.then(
app.get(/^\/[^(api\/)]?.*/, proxy);
}
- app.listen(process.env.PORT);
+ app.listen(config.get('port'));
- winston.log("info", "started on port " + process.env.PORT);
+ winston.log("info", "started on port " + config.get('port'));
},
function (err) {
console.error("failed to init server");
diff --git a/server/package-lock.json b/server/package-lock.json
index 0cc41b1f41..7a9a4a4433 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -1284,6 +1284,15 @@
"bluebird": "^3.1.1"
}
},
+ "convict": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/convict/-/convict-6.0.0.tgz",
+ "integrity": "sha512-osfPkv5yjVoZqrTWBXuh/ABGpFoaJplbt0WXr0CodR4CSWt8UnzY4PSUyRz/+5BX5YUtWcToG29Kr0B6xhdIMg==",
+ "requires": {
+ "lodash.clonedeep": "^4.5.0",
+ "yargs-parser": "^18.1.3"
+ }
+ },
"core-util-is": {
"version": "1.0.2",
"resolved": false,
@@ -3858,6 +3867,22 @@
"resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz",
"integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc="
},
+ "js-yaml": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "dependencies": {
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ }
+ }
+ },
"jsbn": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
diff --git a/server/package.json b/server/package.json
index be9ffe222d..2e9e36b6d1 100644
--- a/server/package.json
+++ b/server/package.json
@@ -32,12 +32,14 @@
"bluebird": "3.5.0",
"boolean": "^0.1.3",
"connect-timeout": "1.9.0",
+ "convict": "6.0.0",
"eslint": "2.13.1",
"express": "3.21.2",
"fb": "1.0.2",
"http-proxy": "1.18.1",
"intercom-client": "2.11.2",
"intercom.io": "1.5.0",
+ "js-yaml": "3.14.0",
"lru-cache": "3.0.0",
"mimelib": "0.2.19",
"nodemailer": "^6.4.16",
diff --git a/server/src/comment.ts b/server/src/comment.ts
index ee046ccc10..5ae76d750d 100644
--- a/server/src/comment.ts
+++ b/server/src/comment.ts
@@ -44,7 +44,10 @@ type UidToSocialInfo = {
[key: string]: any;
};
-const useTranslateApi = isTrue(process.env.SHOULD_USE_TRANSLATION_API);
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
+const useTranslateApi = isTrue(config.get('should_use_translation_api'));
let translateClient: any = null;
if (useTranslateApi) {
// Tell translation library where to find credentials, and write them to disk.
diff --git a/server/src/db/pg-query.ts b/server/src/db/pg-query.ts
index e45a098088..761ecaa3da 100644
--- a/server/src/db/pg-query.ts
+++ b/server/src/db/pg-query.ts
@@ -6,6 +6,9 @@ import { isDevMode } from "../config";
import { yell } from "../log";
import { MPromise } from "../utils/metered";
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
// # DB Connections
//
// heroku pg standard plan has 120 connections
@@ -18,13 +21,13 @@ import { MPromise } from "../utils/metered";
//
// Note we use native
const usingReplica =
- process.env.DATABASE_URL !==
+config.get('database_url') !==
process.env[process.env.DATABASE_FOR_READS_NAME as string];
const poolSize = isDevMode() ? 2 : usingReplica ? 3 : 12;
// not sure how many of these config options we really need anymore
const pgConnection = Object.assign(
- parsePgConnectionString(process.env.DATABASE_URL || ""),
+ parsePgConnectionString(config.get('database_url') || ""),
{
max: poolSize,
isReadOnly: false,
diff --git a/server/src/email/senders.ts b/server/src/email/senders.ts
index 972d1f4217..c662a31ca2 100644
--- a/server/src/email/senders.ts
+++ b/server/src/email/senders.ts
@@ -11,9 +11,12 @@ import AWS from "aws-sdk";
import nodemailer from "nodemailer";
import mg from "nodemailer-mailgun-transport";
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
// https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-region.html
// v2 docs, since we use v2 in our package.json: "aws:sdk": "2.78.0"
-AWS.config.update({ region: process.env.AWS_REGION });
+AWS.config.update({ region: config.get('aws_region') });
function sendTextEmailWithBackup(
sender: any,
@@ -22,7 +25,7 @@ function sendTextEmailWithBackup(
text: any
) {
const transportTypes = process.env.EMAIL_TRANSPORT_TYPES
- ? process.env.EMAIL_TRANSPORT_TYPES.split(",")
+ ? config.get('email_transport_types').split(",")
: ["aws-ses", "mailgun"];
if (transportTypes.length < 2) {
new Error("No backup email transport available.");
@@ -51,7 +54,7 @@ function getMailOptions(transportType: any) {
// This forces fake credentials if envvars unset, so error is caught
// in auth and failover works without crashing server process.
// TODO: Suppress error thrown by mailgun library when unset.
- api_key: process.env.MAILGUN_API_KEY || "unset-value",
+ api_key: config.get('mailgun_api_key') || "unset-value",
domain: process.env.MAILGUN_DOMAIN || "unset-value",
},
};
@@ -72,7 +75,7 @@ function sendTextEmail(
recipient: any,
subject: any,
text: any,
- transportTypes = process.env.EMAIL_TRANSPORT_TYPES,
+ transportTypes = config.get('email_transport_types'),
priority = 1
) {
// Exit if empty string passed.
diff --git a/server/src/server.ts b/server/src/server.ts
index 859baaff3d..4238bdbae7 100644
--- a/server/src/server.ts
+++ b/server/src/server.ts
@@ -2,6 +2,9 @@
"use strict";
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
import akismetLib from "akismet";
import AWS from "aws-sdk";
import badwords from "badwords/object";
@@ -74,10 +77,10 @@ import {
Assignment,
} from "./d";
-AWS.config.update({ region: process.env.AWS_REGION });
-const devMode = isTrue(process.env.DEV_MODE);
+AWS.config.update({ region: config.get('aws_region') });
+const devMode = isTrue(config.get('dev_mode'));
const s3Client = new AWS.S3({ apiVersion: "2006-03-01" });
-const stripe = require("stripe")(process.env.STRIPE_SECRET_KEY);
+const stripe = require("stripe")(config.get('stripe_secret_key'));
const yell = Log.yell;
// Property 'Client' does not exist on type '{ query: (...args: any[]) => void; query_readOnly:
// (...args: any[]) => void; queryP: (...args: any[]) => Promise; queryP_metered:
@@ -116,7 +119,7 @@ import SQL from "./db/sql";
// End of re-import
// # Slack setup
-var web = new WebClient(process.env.SLACK_API_TOKEN);
+var web = new WebClient(config.get('slack_api_token'));
// const winston = require("winston");
// # notifications
const winston = console;
@@ -129,9 +132,9 @@ const resolveWith = (x: { body?: { user_id: string } }) => {
};
const intercomClient =
- !isTrue(process.env.DISABLE_INTERCOM) && process.env.INTERCOM_ACCESS_TOKEN
+ !isTrue(config.get('disable_intercom')) && config.get('intercom_access_token')
? new IntercomOfficial.Client({
- token: process.env.INTERCOM_ACCESS_TOKEN,
+ token: config.get('intercom_access_token'),
})
: {
leads: {
@@ -186,15 +189,15 @@ Promise.onPossiblyUnhandledRejection(function (err: { stack: any }) {
// throw err; // not throwing since we're printing stack traces anyway
});
-const adminEmailDataExport = process.env.ADMIN_EMAIL_DATA_EXPORT || "";
-const adminEmailDataExportTest = process.env.ADMIN_EMAIL_DATA_EXPORT_TEST || "";
-const adminEmailEmailTest = process.env.ADMIN_EMAIL_EMAIL_TEST || "";
+const adminEmailDataExport = config.get('admin_email_data_export') || "";
+const adminEmailDataExportTest = config.get('admin_email_data_export_test') || "";
+const adminEmailEmailTest = config.get('admin_email_email_test') || "";
-const admin_emails = process.env.ADMIN_EMAILS
- ? JSON.parse(process.env.ADMIN_EMAILS)
+const admin_emails = config.get('admin_emails').length !== 0
+ ? JSON.parse(config.get('admin_emails'))
: [];
-const polisDevs = process.env.ADMIN_UIDS
- ? JSON.parse(process.env.ADMIN_UIDS)
+const polisDevs = config.get('admin_uids').length !== 0
+ ? JSON.parse(config.get('admin_uids'))
: [];
function isPolisDev(uid?: any) {
console.log("polisDevs", polisDevs);
@@ -240,11 +243,11 @@ setInterval(function () {
// state: '3(#0/!~'
// });
// // END GITHUB OAUTH2
-const POLIS_FROM_ADDRESS = process.env.POLIS_FROM_ADDRESS;
+const POLIS_FROM_ADDRESS = config.get('polis_from_address');
const akismet = akismetLib.client({
blog: "https://pol.is", // required: your root level url
- apiKey: process.env.AKISMET_ANTISPAM_API_KEY,
+ apiKey: config.get('akismet_antispam_api_key'),
});
akismet.verifyKey(function (err: any, verified: any) {
@@ -747,7 +750,7 @@ function initializePolisHelpers() {
const detectLanguage = Comment.detectLanguage;
- if (isTrue(process.env.BACKFILL_COMMENT_LANG_DETECTION)) {
+ if (isTrue(config.get('backfill_comment_lang_detection'))) {
pgQueryP("select tid, txt, zid from comments where lang is null;", []).then(
// Argument of type '(comments: string | any[]) => void' is not assignable to parameter of type '(value: unknown) => void | PromiseLike'.
// Types of parameters 'comments' and 'value' are incompatible.
@@ -1383,14 +1386,14 @@ function initializePolisHelpers() {
let whitelistedDomains = [
"pol.is",
- process.env.DOMAIN_WHITELIST_ITEM_01,
- process.env.DOMAIN_WHITELIST_ITEM_02,
- process.env.DOMAIN_WHITELIST_ITEM_03,
- process.env.DOMAIN_WHITELIST_ITEM_04,
- process.env.DOMAIN_WHITELIST_ITEM_05,
- process.env.DOMAIN_WHITELIST_ITEM_06,
- process.env.DOMAIN_WHITELIST_ITEM_07,
- process.env.DOMAIN_WHITELIST_ITEM_08,
+ config.get('domain_whitelist_item_01'),
+ config.get('domain_whitelist_item_02'),
+ config.get('domain_whitelist_item_03'),
+ config.get('domain_whitelist_item_04'),
+ config.get('domain_whitelist_item_05'),
+ config.get('domain_whitelist_item_06'),
+ config.get('domain_whitelist_item_07'),
+ config.get('domain_whitelist_item_08'),
"localhost:5001",
"localhost:5002",
"canvas.instructure.com", // LTI
@@ -1595,7 +1598,7 @@ function initializePolisHelpers() {
}
res.status(200).json({});
}
- let pcaCacheSize = process.env.CACHE_MATH_RESULTS === "true" ? 300 : 1;
+ let pcaCacheSize = config.get('cache_math_results') === "true" ? 300 : 1;
let pcaCache = new LruCache({
max: pcaCacheSize,
});
@@ -1895,7 +1898,7 @@ function initializePolisHelpers() {
return pgQueryP_readOnly(
"select * from math_main where zid = ($1) and math_env = ($2);",
- [zid, process.env.MATH_ENV]
+ [zid, config.get('math_env')]
// Argument of type '(rows: string | any[]) => Promise | null' is not assignable to parameter of type '(value: unknown) => any'.
// Types of parameters 'rows' and 'value' are incompatible.
// Type 'unknown' is not assignable to type 'string | any[]'.
@@ -1910,7 +1913,7 @@ function initializePolisHelpers() {
INFO("mathpoll related; after cache miss, unable to find data for", {
zid,
math_tick,
- math_env: process.env.MATH_ENV,
+ math_env: config.get('math_env'),
});
return null;
}
@@ -2151,7 +2154,7 @@ function initializePolisHelpers() {
) {
let zid = req.p.zid;
let uid = req.p.uid;
- let math_env = process.env.MATH_ENV;
+ let math_env = config.get('math_env');
let math_update_type = req.p.math_update_type;
isModerator(zid, uid).then((hasPermission: any) => {
@@ -2192,7 +2195,7 @@ function initializePolisHelpers() {
}
) {
let rid = req.p.rid;
- let math_env = process.env.MATH_ENV;
+ let math_env = config.get('math_env');
let math_tick = req.p.math_tick;
console.log(req.p);
@@ -2298,9 +2301,9 @@ function initializePolisHelpers() {
);
}
if (
- process.env.RUN_PERIODIC_EXPORT_TESTS &&
+ config.get('run_periodic_export_tests') &&
!devMode &&
- process.env.MATH_ENV === "preprod"
+ config.get('math_env') === "preprod"
) {
let runExportTest = () => {
let math_env = "prod";
@@ -2351,7 +2354,7 @@ function initializePolisHelpers() {
getUserInfoForUid2(req.p.uid)
.then((user: { email: any }) => {
return doAddDataExportTask(
- process.env.MATH_ENV,
+ config.get('math_env'),
user.email,
req.p.zid,
req.p.unixTimestamp * 1000,
@@ -2375,7 +2378,7 @@ function initializePolisHelpers() {
) {
var url = s3Client.getSignedUrl("getObject", {
Bucket: "polis-datadump",
- Key: process.env.MATH_ENV + "/" + req.p.filename,
+ Key: config.get('math_env') + "/" + req.p.filename,
Expires: 60 * 60 * 24 * 7,
});
res.redirect(url);
@@ -2389,7 +2392,7 @@ function initializePolisHelpers() {
math_tick = math_tick || -1;
return pgQueryP_readOnly(
"select * from math_bidtopid where zid = ($1) and math_env = ($2);",
- [zid, process.env.MATH_ENV]
+ [zid, config.get('math_env')]
// Argument of type '(rows: string | any[]) => any' is not assignable to parameter of type '(value: unknown) => any'.
// Types of parameters 'rows' and 'value' are incompatible.
// Type 'unknown' is not assignable to type 'string | any[]'.
@@ -2721,14 +2724,14 @@ function initializePolisHelpers() {
// const state = req.p.state;
console.log("handle_POST_auth_slack_redirect_uri 1");
- console.log(process.env.POLIS_SLACK_APP_CLIENT_ID);
+ console.log(config.get('polis_slack_app_client_id'));
request
.get(
"https://slack.com/api/oauth.access?" +
querystring.stringify({
- client_id: process.env.POLIS_SLACK_APP_CLIENT_ID,
- client_secret: process.env.POLIS_SLACK_APP_CLIENT_SECRET,
+ client_id: config.get('polis_slack_app_client_id'),
+ client_secret: config.get('polis_slack_app_client_secret'),
code: code,
redirect_uri:
getServerNameWithProtocol(req) +
@@ -3745,8 +3748,8 @@ Feel free to reply to this email if you need help.`;
);
}
function populateGeoIpInfo(zid: any, uid?: any, ipAddress?: string | null) {
- var userId = process.env.MAXMIND_USERID;
- var licenseKey = process.env.MAXMIND_LICENSEKEY;
+ var userId = config.get('maxmind_userid');
+ var licenseKey = config.get('maxmind_licensekey');
var url = "https://geoip.maxmind.com/geoip/v2.1/city/";
var contentType =
@@ -5026,7 +5029,7 @@ Email verified! You can close this tab or hit the back button.
let server = "http://localhost:5000";
if (!devMode) {
- server = "https://" + process.env.PRIMARY_POLIS_URL;
+ server = "https://" + config.get('primary_polis_url');
}
return server + "/" + path + "?" + paramsToStringSortedByName(params);
}
@@ -5044,7 +5047,7 @@ Email verified! You can close this tab or hit the back button.
let server = "http://localhost:5000";
if (!devMode) {
- server = "https://" + process.env.PRIMARY_POLIS_URL;
+ server = "https://" + config.get('primary_polis_url');
}
return server + "/" + path + "?" + paramsToStringSortedByName(params);
}
@@ -11632,7 +11635,7 @@ Email verified! You can close this tab or hit the back button.
};
}
) {
- var stripe_client_id = process.env.STRIPE_CLIENT_ID;
+ var stripe_client_id = config.get('stripe_client_id');
var stripeUrl =
"https://connect.stripe.com/oauth/authorize?response_type=code&client_id=" +
@@ -11682,9 +11685,9 @@ Email verified! You can close this tab or hit the back button.
url: "https://connect.stripe.com/oauth/token",
form: {
grant_type: "authorization_code",
- client_id: process.env.STRIPE_CLIENT_ID,
+ client_id: config.get('stripe_client_id'),
code: code,
- client_secret: process.env.STRIPE_SECRET_KEY,
+ client_secret: config.get('stripe_secret_key'),
},
},
function (err: any, r: any, body: string) {
@@ -12152,8 +12155,8 @@ Email verified! You can close this tab or hit the back button.
}
) {
if (
- req.p.webserver_pass !== process.env.WEBSERVER_PASS ||
- req.p.webserver_username !== process.env.WEBSERVER_USERNAME
+ req.p.webserver_pass !== config.get('webserver_pass') ||
+ req.p.webserver_username !== config.get('webserver_username')
) {
return fail(res, 403, "polis_err_notifyTeam_auth");
}
@@ -12185,13 +12188,13 @@ Email verified! You can close this tab or hit the back button.
}
) {
if (
- req.p.webserver_pass !== process.env.WEBSERVER_PASS ||
- req.p.webserver_username !== process.env.WEBSERVER_USERNAME
+ req.p.webserver_pass !== config.get('webserver_pass') ||
+ req.p.webserver_username !== config.get('webserver_username')
) {
return fail(res, 403, "polis_err_sending_export_link_to_email_auth");
}
- const domain = process.env.PRIMARY_POLIS_URL;
+ const domain = config.get('primary_polis_url');
const email = req.p.email;
const subject =
"Polis data export for conversation pol.is/" + req.p.conversation_id;
@@ -12231,8 +12234,8 @@ Thanks for using Polis!
// Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
// Type 'undefined' is not assignable to type 'string'.ts(2345)
// @ts-ignore
- process.env.TWITTER_CONSUMER_KEY, //'your application consumer key',
- process.env.TWITTER_CONSUMER_SECRET, //'your application secret',
+ config.get('twitter_consumer_key'), //'your application consumer key',
+ config.get('twitter_consumer_secret'), //'your application secret',
"1.0A",
null,
"HMAC-SHA1"
@@ -12300,8 +12303,8 @@ Thanks for using Polis!
// Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
// Type 'undefined' is not assignable to type 'string'.ts(2345)
// @ts-ignore
- process.env.TWITTER_CONSUMER_KEY, //'your application consumer key',
- process.env.TWITTER_CONSUMER_SECRET, //'your application secret',
+ config.get('twitter_consumer_key'), //'your application consumer key',
+ config.get('twitter_consumer_secret'), //'your application secret',
"1.0A",
null,
"HMAC-SHA1"
@@ -12363,8 +12366,8 @@ Thanks for using Polis!
// Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
// Type 'undefined' is not assignable to type 'string'.ts(2345)
// @ts-ignore
- process.env.TWITTER_CONSUMER_KEY, //'your application consumer key',
- process.env.TWITTER_CONSUMER_SECRET, //'your application secret',
+ config.get('twitter_consumer_key'), //'your application consumer key',
+ config.get('twitter_consumer_secret'), //'your application secret',
"1.0A",
null,
"HMAC-SHA1"
@@ -12421,8 +12424,8 @@ Thanks for using Polis!
// Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
// Type 'undefined' is not assignable to type 'string'.ts(2345)
// @ts-ignore
- process.env.TWITTER_CONSUMER_KEY, //'your application consumer key',
- process.env.TWITTER_CONSUMER_SECRET, //'your application secret',
+ config.get('twitter_consumer_key'), //'your application consumer key',
+ config.get('twitter_consumer_secret'), //'your application secret',
"1.0A",
null,
"HMAC-SHA1"
@@ -12461,8 +12464,8 @@ Thanks for using Polis!
// let oauth = new OAuth.OAuth(
// 'https://api.twitter.com/oauth/request_token', // null
// 'https://api.twitter.com/oauth/access_token', // null
- // process.env.TWITTER_CONSUMER_KEY, //'your application consumer key',
- // process.env.TWITTER_CONSUMER_SECRET, //'your application secret',
+ // config.get('twitter_consumer_key'), //'your application consumer key',
+ // config.get('twitter_consumer_secret'), //'your application secret',
// '1.0A',
// null,
// 'HMAC-SHA1'
@@ -12503,8 +12506,8 @@ Thanks for using Polis!
// Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
// Type 'undefined' is not assignable to type 'string'.ts(2345)
// @ts-ignore
- process.env.TWITTER_CONSUMER_KEY, //'your application consumer key',
- process.env.TWITTER_CONSUMER_SECRET, //'your application secret',
+ config.get('twitter_consumer_key'), //'your application consumer key',
+ config.get('twitter_consumer_secret'), //'your application secret',
"1.0A",
null,
"HMAC-SHA1"
@@ -13556,7 +13559,7 @@ Thanks for using Polis!
}
function geoCodeWithGoogleApi(locationString: string) {
- let googleApiKey = process.env.GOOGLE_API_KEY;
+ let googleApiKey = config.get('google_api_key');
let address = encodeURI(locationString);
return new Promise(function (
@@ -16478,7 +16481,7 @@ CREATE TABLE slack_user_invites (
let hostname = buildStaticHostname(req, res);
if (!hostname) {
let host = req?.headers?.host || "";
- let re = new RegExp(process.env.SERVICE_HOSTNAME + "$");
+ let re = new RegExp(config.get('service_hostname') + "$");
if (host.match(re)) {
// don't alert for this, it's probably DNS related
// TODO_SEO what should we return?
@@ -16507,7 +16510,7 @@ CREATE TABLE slack_user_invites (
// // });
// getStaticFile("./unsupportedBrowser.html", res);
// } else {
- let port = process.env.STATIC_FILES_PORT;
+ let port = config.get('static_files_port');
// set the host header too, since S3 will look at that (or the routing proxy will patch up the request.. not sure which)
if (req && req.headers && req.headers.host) req.headers.host = hostname;
routingProxy.web(req, res, {
@@ -16521,7 +16524,7 @@ CREATE TABLE slack_user_invites (
function buildStaticHostname(req: { headers?: { host: string } }, res: any) {
if (devMode || domainOverride) {
- return process.env.STATIC_FILES_HOST;
+ return config.get('static_files_host');
} else {
let origin = req?.headers?.host;
// Element implicitly has an 'any' type because expression of type 'string' can't be used to index type '{ "pol.is": string; "embed.pol.is": string; "survey.pol.is": string; "preprod.pol.is": string; }'.
@@ -16531,7 +16534,7 @@ CREATE TABLE slack_user_invites (
if (hasWhitelistMatches(origin || "")) {
// Use the prod bucket for non pol.is domains
return (
- whitelistedBuckets["pol.is"] + "." + process.env.STATIC_FILES_HOST
+ whitelistedBuckets["pol.is"] + "." + config.get('static_files_host')
);
} else {
console.error(
@@ -16546,7 +16549,7 @@ CREATE TABLE slack_user_invites (
// No index signature with a parameter of type 'string' was found on type '{ "pol.is": string; "embed.pol.is": string; "survey.pol.is": string; "preprod.pol.is": string; }'.ts(7053)
// @ts-ignore
origin = whitelistedBuckets[origin || ""];
- return origin + "." + process.env.STATIC_FILES_HOST;
+ return origin + "." + config.get('static_files_host');
}
}
@@ -16715,9 +16718,9 @@ CREATE TABLE slack_user_invites (
}
// serve up index.html in response to anything starting with a number
- let hostname = process.env.STATIC_FILES_HOST;
- let portForParticipationFiles = process.env.STATIC_FILES_PORT;
- let portForAdminFiles = process.env.STATIC_FILES_ADMINDASH_PORT;
+ let hostname = config.get('static_files_host');
+ let portForParticipationFiles = config.get('static_files_port');
+ let portForAdminFiles = config.get('static_files_admindash_port');
let fetchUnsupportedBrowserPage = makeFileFetcher(
hostname,
portForParticipationFiles,
diff --git a/server/src/session.ts b/server/src/session.ts
index 4e3e266825..da70165984 100644
--- a/server/src/session.ts
+++ b/server/src/session.ts
@@ -3,9 +3,12 @@ import LruCache from "lru-cache";
import pg from "./db/pg-query";
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
function encrypt(text: string | null) {
const algorithm = "aes-256-ctr";
- const password = process.env.ENCRYPTION_PASSWORD_00001;
+ const password = config.get('encryption_password_00001');
//
// TODO replace deprecated createCipher method with current createCipheriv method
//
@@ -41,7 +44,7 @@ function encrypt(text: string | null) {
function decrypt(text: string) {
const algorithm = "aes-256-ctr";
- const password = process.env.ENCRYPTION_PASSWORD_00001;
+ const password = config.get('encryption_password_00001');
//
// TODO replace deprecated createDecipher method with current createDecipheriv method
//
diff --git a/server/src/utils/cookies.ts b/server/src/utils/cookies.ts
index 3e948e06bf..00471f7d2e 100644
--- a/server/src/utils/cookies.ts
+++ b/server/src/utils/cookies.ts
@@ -16,6 +16,9 @@ type Req = {
cookies: { [x: string]: any };
};
+let POLIS_ROOT = process.env.POLIS_ROOT
+var config = require(POLIS_ROOT + 'config/config.js');
+
const COOKIES = {
COOKIE_TEST: "ct",
HAS_EMAIL: "e",
@@ -167,7 +170,7 @@ function setCookieTestCookie(req: any, res: any, setOnPolisDomain: any) {
function shouldSetCookieOnPolisDomain(req: Req) {
// FIXME domainOverride
- let setOnPolisDomain = !(process.env.DOMAIN_OVERRIDE || null);
+ let setOnPolisDomain = !(config.get('domain_override') || null);
let origin = req?.headers?.origin || "";
if (setOnPolisDomain && origin.match(/^http:\/\/localhost:[0-9]{4}/)) {
setOnPolisDomain = false;