From 9e1203f8a22e303f2a7c2d21ea87aa99d131655c Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Sat, 16 Dec 2017 18:04:11 +0000 Subject: [PATCH 01/11] Write functions --- election.js | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/election.js b/election.js index 776f3a1..6bf06e0 100644 --- a/election.js +++ b/election.js @@ -6,14 +6,24 @@ * 1 - Convert candidates object to array */ function candidatesObjToArray(candidates) { - + var array = Object.keys(candidates).map(function (key) { + return candidates[key]; + }); + return array; } /** * 2 - Remove any voters who have voted for more than 2 people, or have voted for the same person twice. */ function filterInvalidVoters(voters) { - + var validVoters = voters.filter(function(person) { + if (person.votingCard.length <= 2) { + if (person.votingCard[0] != person.votingCard[1]) { + return person; + } + } + }); + return validVoters; } /** @@ -21,7 +31,17 @@ function filterInvalidVoters(voters) { * the right vote counts for half of the left vote. */ function runElection(voters, candidates) { - + var score = 1; + voters.forEach(function(voter) { + for (var i = 1; i < 5; i++) { + if (voter.votingCard[0] === i) { + candidates[i].numVotes += score; + } else if (voter.votingCard[1] === i) { + candidates[i].numVotes += score/2; + } + } + }) + return candidates; } /** @@ -30,7 +50,20 @@ function runElection(voters, candidates) { * Desired return value: {name: "Tamara Faiza", age: 46, party: "Pizza Party", numVotes: 3} */ function getWinner(candidates) { - + var arr = Object.keys(candidates).map(function ( key ) { return candidates[key].numVotes }); + var maxVote = Math.max.apply(null,arr); + var count = 0; + for (candidate in candidates) { + if (candidates[candidate].numVotes === maxVote) { + count += 1; + var winner = candidates[candidate]; + } + } + if (count === 1) { + return winner; + } else { + return null; + } } /** @@ -38,7 +71,12 @@ function getWinner(candidates) { * he/she received */ function winnerMessage(winner) { - + if (winner === null) { + return "The election was a draw"; + } else { + // return (`winner.${name} + has won the election with + winner.${numVotes} + votes`); + return (winner.name + ' has won the election with ' + winner.numVotes + ' votes!'); + } } // A sample population of a small number of voters, stored as an array From dedeb8b1f7b3b59e82f55a281cd451976ca86806 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Thu, 4 Jan 2018 11:18:00 +0000 Subject: [PATCH 02/11] Do part 2, ex 1-2 --- election-part2.js | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/election-part2.js b/election-part2.js index 2a4f15f..5626ef7 100644 --- a/election-part2.js +++ b/election-part2.js @@ -9,13 +9,27 @@ const { /** * 1 - Write a Voter class modelling a member of the population who votes in the election. - */ + */ + class Voter { + constructor(name,age,votingCard) { + this.name = name; + this.age = age; + this.votingCard = votingCard; + } + }; /** * 2 - Write a Candidate class modelling a candidate in the election. Candidates are also voters (they can vote for themselves, or anyone else). * However they have some extra properties. */ +class Candidate extends Voter { + constructor(name,age,votingCard,party,numVotes) { + super(name,age,votingCard); + this.party = party; + this.numVotes = numVotes; + } +}; /** @@ -25,11 +39,23 @@ const { // Include your votingPopulation array here. -let votingPopulation = []; +let votingPopulation = [ + new Voter('Jane Finnegan', 19, [1, 3]), + new Voter('Norman Beracha', 35, [3, 4]), + new Voter('Wei Li', 19, [1, 2]), + new Voter('Sam MacKinnon', 59, [1, 4]), + new Voter('Clay Roderick', 54,[3, 4]), + new Voter('Nour al-Din', 32,[4, 1]) +]; // Include your candidates array here. -let candidates = []; +let candidates = [ + new Candidate('Tamara Faiza', 46, [1,1], 'Pizza Party', 0), + new Candidate('Aylin Duke', 39, [2,2], 'Foam Party', 0), + new Candidate('Clay Roderick', 54, [3,4], 'Flat Earth Party', 0), + new Candidate('Nour al-Din', 32, [4,1], 'Pizza Party', 0) +]; let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); From 0bbeb9b28a1f63d27d87f0b00e77b1ad579a27dc Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Fri, 5 Jan 2018 11:13:34 +0000 Subject: [PATCH 03/11] Do ex 3-4 --- election-part2.js | 43 +++++++++++++++++++++++++++++++++---------- election.js | 2 +- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/election-part2.js b/election-part2.js index 5626ef7..55c7e87 100644 --- a/election-part2.js +++ b/election-part2.js @@ -27,7 +27,7 @@ class Candidate extends Voter { constructor(name,age,votingCard,party,numVotes) { super(name,age,votingCard); this.party = party; - this.numVotes = numVotes; + this.numVotes = 0; } }; @@ -35,6 +35,26 @@ class Candidate extends Voter { /** * 3 - Write an Election class which models the election. */ + class Election { + constructor(validVoters,candidates) { + this.validVoters = validVoters; + this.candidates = candidates; + this.winner = ''; + }; + + runElection() { + this.candidates = runElection(this.validVoters, this.candidates); + } + + getWinner() { + this.winner = getWinner(this.candidates); + }; + + printWinnerMessage() { + return winnerMessage(this.winner); + } + + } @@ -50,20 +70,23 @@ let votingPopulation = [ // Include your candidates array here. -let candidates = [ - new Candidate('Tamara Faiza', 46, [1,1], 'Pizza Party', 0), - new Candidate('Aylin Duke', 39, [2,2], 'Foam Party', 0), - new Candidate('Clay Roderick', 54, [3,4], 'Flat Earth Party', 0), - new Candidate('Nour al-Din', 32, [4,1], 'Pizza Party', 0) -]; +let candidates = { + 1: new Candidate('Tamara Faiza', 46, [1,1], 'Pizza Party'), + 2: new Candidate('Aylin Duke', 39, [2,2], 'Foam Party'), + 3: new Candidate('Clay Roderick', 54, [3,4], 'Flat Earth Party'), + 4: new Candidate('Nour al-Din', 32, [4,1], 'Pizza Party') +}; -let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); +let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); let validVoters = filterInvalidVoters(allVoters); let election = new Election(validVoters, candidates); election.runElection(); // Example of how runElection() can be called. - -console.log(election.printWinnerMessage()); // Example of how the winner message can be printed. +// console.log(election.candidates); +election.getWinner(); +// console.log(election.winner); +console.log(election.printWinnerMessage()); +// Example of how the winner message can be printed. diff --git a/election.js b/election.js index 6bf06e0..86e39e9 100644 --- a/election.js +++ b/election.js @@ -33,7 +33,7 @@ function filterInvalidVoters(voters) { function runElection(voters, candidates) { var score = 1; voters.forEach(function(voter) { - for (var i = 1; i < 5; i++) { + for (var i = 0; i < 4; i++) { if (voter.votingCard[0] === i) { candidates[i].numVotes += score; } else if (voter.votingCard[1] === i) { From 66e12f13b0fe0eb958c84dfd37d646dc106ba426 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Sat, 6 Jan 2018 18:30:38 +0000 Subject: [PATCH 04/11] Add lists to index.html --- bundle.js | 251 +++++++++++ index.html | 22 +- package-lock.json | 1025 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 3 + 4 files changed, 1261 insertions(+), 40 deletions(-) create mode 100644 bundle.js diff --git a/bundle.js b/bundle.js new file mode 100644 index 0000000..9de7159 --- /dev/null +++ b/bundle.js @@ -0,0 +1,251 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - - +
+
+
+
+
+

List of Candidates

+
    + +
+
+
+

List of Voters

+
    + +
+
+
+ +
+ diff --git a/package-lock.json b/package-lock.json index e37f059..a4fb5b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,15 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "JSONStream": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz", + "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=", + "requires": { + "jsonparse": "1.3.1", + "through": "2.3.8" + } + }, "abab": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -13,8 +22,7 @@ "acorn": { "version": "4.0.13", "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "dev": true + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=" }, "acorn-globals": { "version": "3.1.0", @@ -25,6 +33,21 @@ "acorn": "4.0.13" } }, + "acorn5-object-spread": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/acorn5-object-spread/-/acorn5-object-spread-5.0.0.tgz", + "integrity": "sha1-kidVtOnf2lgeJmTxd9ySGATSwdQ=", + "requires": { + "acorn": "5.3.0" + }, + "dependencies": { + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" + } + } + }, "ajv": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.1.tgz", @@ -124,6 +147,21 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-filter": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", + "integrity": "sha1-fajPLiZijtcygDWB/SH2fKzS7uw=" + }, + "array-map": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz", + "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI=" + }, + "array-reduce": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/array-reduce/-/array-reduce-0.0.0.tgz", + "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=" + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", @@ -142,6 +180,24 @@ "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", "dev": true }, + "asn1.js": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.2.tgz", + "integrity": "sha512-b/OsSjvWEo8Pi8H0zsDd2P6Uqo2TK2pH8gNLSJtNLM2Db0v2QaAZ0pBQJXVjAn4gBuugeVDr7s63ZogpUIwWDg==", + "requires": { + "bn.js": "4.11.8", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "requires": { + "util": "0.10.3" + } + }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", @@ -154,6 +210,14 @@ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, + "astw": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/astw/-/astw-2.2.0.tgz", + "integrity": "sha1-e9QXhNMkk5h66yOba04cV6hzuRc=", + "requires": { + "acorn": "4.0.13" + } + }, "async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", @@ -409,8 +473,12 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + }, + "base64-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha512-dwVUVIXsBZXwTuwnXI9RK8sBmgq09NDHzyR9SAph9eqk76gKK2JSQmZARC2zRC81JC2QTtxD0ARU5qTS25gIGw==" }, "bcrypt-pbkdf": { "version": "1.0.1", @@ -422,6 +490,11 @@ "tweetnacl": "0.14.5" } }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + }, "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", @@ -435,7 +508,6 @@ "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -452,15 +524,149 @@ "repeat-element": "1.1.2" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + }, + "browser-pack": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.0.2.tgz", + "integrity": "sha1-+GzWzvT1MAyOY+B6TVEvZfv/RTE=", + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "defined": "1.0.0", + "through2": "2.0.3", + "umd": "3.0.1" + } + }, "browser-resolve": { "version": "1.11.2", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", - "dev": true, "requires": { "resolve": "1.1.7" } }, + "browserify": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-15.0.0.tgz", + "integrity": "sha512-dERxjzl4yacUzaB4XVVXDFFHARzDr6tLRhjqpE/NJUv0SkS3QVmZKiYTiKEQZhQ2HygCL02FUzSS5r3sY/SlTg==", + "requires": { + "JSONStream": "1.3.2", + "assert": "1.4.1", + "browser-pack": "6.0.2", + "browser-resolve": "1.11.2", + "browserify-zlib": "0.2.0", + "buffer": "5.0.8", + "cached-path-relative": "1.0.1", + "concat-stream": "1.5.2", + "console-browserify": "1.1.0", + "constants-browserify": "1.0.0", + "crypto-browserify": "3.12.0", + "defined": "1.0.0", + "deps-sort": "2.0.0", + "domain-browser": "1.1.7", + "duplexer2": "0.1.4", + "events": "1.1.1", + "glob": "7.1.2", + "has": "1.0.1", + "htmlescape": "1.1.1", + "https-browserify": "1.0.0", + "inherits": "2.0.3", + "insert-module-globals": "7.0.1", + "labeled-stream-splicer": "2.0.0", + "module-deps": "5.0.0", + "os-browserify": "0.3.0", + "parents": "1.0.1", + "path-browserify": "0.0.0", + "process": "0.11.10", + "punycode": "1.4.1", + "querystring-es3": "0.2.1", + "read-only-stream": "2.0.0", + "readable-stream": "2.3.3", + "resolve": "1.1.7", + "shasum": "1.0.2", + "shell-quote": "1.6.1", + "stream-browserify": "2.0.1", + "stream-http": "2.7.2", + "string_decoder": "1.0.3", + "subarg": "1.0.0", + "syntax-error": "1.3.0", + "through2": "2.0.3", + "timers-browserify": "1.4.2", + "tty-browserify": "0.0.0", + "url": "0.11.0", + "util": "0.10.3", + "vm-browserify": "0.0.4", + "xtend": "4.0.1" + } + }, + "browserify-aes": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", + "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "requires": { + "buffer-xor": "1.0.3", + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "browserify-cipher": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "requires": { + "browserify-aes": "1.1.1", + "browserify-des": "1.0.0", + "evp_bytestokey": "1.0.3" + } + }, + "browserify-des": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "requires": { + "cipher-base": "1.0.4", + "des.js": "1.0.0", + "inherits": "2.0.3" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "4.11.8", + "randombytes": "2.0.5" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "elliptic": "6.4.0", + "inherits": "2.0.3", + "parse-asn1": "5.1.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "requires": { + "pako": "1.0.6" + } + }, "bser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", @@ -470,12 +676,36 @@ "node-int64": "0.4.0" } }, + "buffer": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.0.8.tgz", + "integrity": "sha512-xXvjQhVNz50v2nPeoOsNqWCLGfiv4ji/gXZM28jnVwdLJxH4mFyqgqCKfaK9zf1KUbG6zTkjLOy7ou+jSMarGA==", + "requires": { + "base64-js": "1.2.1", + "ieee754": "1.1.8" + } + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" + }, + "cached-path-relative": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.1.tgz", + "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=" + }, "callsites": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", @@ -523,6 +753,15 @@ "integrity": "sha512-uTGIPNx/nSpBdsF6xnseRXLLtfr9VLqkz8ZqHXr3Y7b6SftyRxBGjwMtJj1OhNbmlc1wZzLNAlAcvyIiE8a6ZA==", "dev": true }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -571,6 +810,24 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, + "combine-source-map": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.7.2.tgz", + "integrity": "sha1-CHAxKFazB6h8xKxIbzqaYq7MwJ4=", + "requires": { + "convert-source-map": "1.1.3", + "inline-source-map": "0.6.2", + "lodash.memoize": "3.0.4", + "source-map": "0.5.7" + }, + "dependencies": { + "convert-source-map": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz", + "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=" + } + } + }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", @@ -583,8 +840,50 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.2.tgz", + "integrity": "sha1-cIl4Yk2FavQaWnQd790mHadSwmY=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.0.6", + "typedarray": "0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "0.10.31", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "requires": { + "date-now": "0.1.4" + } + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "content-type-parser": { "version": "1.0.2", @@ -607,8 +906,40 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "create-ecdh": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "requires": { + "bn.js": "4.11.8", + "elliptic": "6.4.0" + } + }, + "create-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "requires": { + "cipher-base": "1.0.4", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "sha.js": "2.4.9" + } + }, + "create-hmac": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "requires": { + "cipher-base": "1.0.4", + "create-hash": "1.1.3", + "inherits": "2.0.3", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } }, "cross-spawn": { "version": "5.1.0", @@ -641,6 +972,24 @@ } } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "1.0.0", + "browserify-sign": "4.0.4", + "create-ecdh": "4.0.0", + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "diffie-hellman": "5.0.2", + "inherits": "2.0.3", + "pbkdf2": "3.0.14", + "public-encrypt": "4.0.0", + "randombytes": "2.0.5", + "randomfill": "1.0.3" + } + }, "cssom": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", @@ -665,6 +1014,11 @@ "assert-plus": "1.0.0" } }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -695,12 +1049,37 @@ "strip-bom": "2.0.0" } }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "deps-sort": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.0.tgz", + "integrity": "sha1-CRckkC6EZYJg65EHSMzNGvbiH7U=", + "requires": { + "JSONStream": "1.3.2", + "shasum": "1.0.2", + "subarg": "1.0.0", + "through2": "2.0.3" + } + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "detect-indent": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", @@ -710,12 +1089,52 @@ "repeating": "2.0.1" } }, + "detective": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-5.0.1.tgz", + "integrity": "sha512-dP38zI4CR5OQDahCcBIrskhscv+5x+7+fHipBdOK9gpXc8LKrSAv4fz7IQVpcwdLDU38aA2E9qsGLRZ4L5GTpg==", + "requires": { + "acorn": "5.3.0", + "acorn5-object-spread": "5.0.0", + "defined": "1.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.3.0.tgz", + "integrity": "sha512-Yej+zOJ1Dm/IMZzzj78OntP/r3zHEaKcyNoU2lAaxPtrseM6rF0xwqoz5Q5ysAiED9hTjI2hgtvLXitlCN1/Ug==" + } + } + }, "diff": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.4.0.tgz", "integrity": "sha512-QpVuMTEoJMF7cKzi6bvWhRulU1fZqZnvyVQgNhPaxxuTYwyjn/j1v9falseQ/uXWwPnO56RBfwtg4h/EQXmucA==", "dev": true }, + "diffie-hellman": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "requires": { + "bn.js": "4.11.8", + "miller-rabin": "4.0.1", + "randombytes": "2.0.5" + } + }, + "domain-browser": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "2.3.3" + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -726,6 +1145,20 @@ "jsbn": "0.1.1" } }, + "elliptic": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0", + "hash.js": "1.1.3", + "hmac-drbg": "1.0.1", + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", @@ -789,6 +1222,20 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, + "events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "1.3.4", + "safe-buffer": "5.1.1" + } + }, "exec-sh": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.1.tgz", @@ -966,8 +1413,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.1.3", @@ -1873,6 +2319,11 @@ } } }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -1898,7 +2349,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -1990,6 +2440,14 @@ "har-schema": "2.0.0" } }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.1" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", @@ -2005,6 +2463,23 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "hash-base": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "requires": { + "inherits": "2.0.3" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "2.0.3", + "minimalistic-assert": "1.0.0" + } + }, "hawk": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", @@ -2017,6 +2492,16 @@ "sntp": "2.1.0" } }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "requires": { + "hash.js": "1.1.3", + "minimalistic-assert": "1.0.0", + "minimalistic-crypto-utils": "1.0.1" + } + }, "hoek": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", @@ -2048,6 +2533,11 @@ "whatwg-encoding": "1.0.3" } }, + "htmlescape": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz", + "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=" + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -2059,23 +2549,37 @@ "sshpk": "1.13.1" } }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" + }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "dev": true }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -2084,8 +2588,30 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "inline-source-map": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz", + "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=", + "requires": { + "source-map": "0.5.7" + } + }, + "insert-module-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.0.1.tgz", + "integrity": "sha1-wDv04BywhtW15azorQr+eInWOMM=", + "requires": { + "JSONStream": "1.3.2", + "combine-source-map": "0.7.2", + "concat-stream": "1.5.2", + "is-buffer": "1.1.6", + "lexical-scope": "1.2.0", + "process": "0.11.10", + "through2": "2.0.3", + "xtend": "4.0.1" + } }, "invariant": { "version": "2.2.2", @@ -2111,8 +2637,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-builtin-module": { "version": "1.0.0", @@ -2228,8 +2753,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -2752,8 +3276,12 @@ "jsonify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "dev": true + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=" + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=" }, "jsprim": { "version": "1.4.1", @@ -2776,6 +3304,23 @@ "is-buffer": "1.1.6" } }, + "labeled-stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.0.tgz", + "integrity": "sha1-pS4dE4AkwAuGscDJH2d5GLiuClk=", + "requires": { + "inherits": "2.0.3", + "isarray": "0.0.1", + "stream-splicer": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", @@ -2808,6 +3353,14 @@ "type-check": "0.3.2" } }, + "lexical-scope": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lexical-scope/-/lexical-scope-1.2.0.tgz", + "integrity": "sha1-/Ope3HBKSzqHls3KQZw6CvryLfQ=", + "requires": { + "astw": "2.2.0" + } + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -2845,6 +3398,11 @@ "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", "dev": true }, + "lodash.memoize": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz", + "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -2879,6 +3437,26 @@ "tmpl": "1.0.4" } }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "requires": { + "hash-base": "3.0.4", + "inherits": "2.0.3" + }, + "dependencies": { + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + } + } + }, "mem": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", @@ -2915,6 +3493,15 @@ "regex-cache": "0.4.4" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "4.11.8", + "brorand": "1.1.0" + } + }, "mime-db": { "version": "1.30.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", @@ -2936,11 +3523,20 @@ "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", "dev": true }, + "minimalistic-assert": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -2960,6 +3556,40 @@ "minimist": "0.0.8" } }, + "module-deps": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-5.0.0.tgz", + "integrity": "sha512-zY4rkAha0iU068imX1eim6wqQhEZ94jvGlgwQ8pGoCX5ZVuBUJ5O2QegZlxp7ADNXW67ja4LCuVLJfPRdoEjhw==", + "requires": { + "JSONStream": "1.3.2", + "browser-resolve": "1.11.2", + "cached-path-relative": "1.0.1", + "concat-stream": "1.6.0", + "defined": "1.0.0", + "detective": "5.0.1", + "duplexer2": "0.1.4", + "inherits": "2.0.3", + "parents": "1.0.1", + "readable-stream": "2.3.3", + "resolve": "1.1.7", + "stream-combiner2": "1.1.1", + "subarg": "1.0.0", + "through2": "2.0.3", + "xtend": "4.0.1" + }, + "dependencies": { + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + } + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3065,7 +3695,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1.0.2" } @@ -3102,6 +3731,11 @@ } } }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" + }, "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -3152,6 +3786,31 @@ "p-limit": "1.1.0" } }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" + }, + "parents": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz", + "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=", + "requires": { + "path-platform": "0.11.15" + } + }, + "parse-asn1": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "requires": { + "asn1.js": "4.9.2", + "browserify-aes": "1.1.1", + "create-hash": "1.1.3", + "evp_bytestokey": "1.0.3", + "pbkdf2": "3.0.14" + } + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -3179,6 +3838,11 @@ "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", "dev": true }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" + }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", @@ -3188,8 +3852,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "2.0.1", @@ -3203,6 +3866,11 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, + "path-platform": { + "version": "0.11.15", + "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz", + "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=" + }, "path-type": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", @@ -3222,6 +3890,18 @@ } } }, + "pbkdf2": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", + "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "requires": { + "create-hash": "1.1.3", + "create-hmac": "1.1.6", + "ripemd160": "2.0.1", + "safe-buffer": "5.1.1", + "sha.js": "2.4.9" + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -3285,6 +3965,16 @@ "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, "prr": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", @@ -3297,11 +3987,22 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, + "public-encrypt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "requires": { + "bn.js": "4.11.8", + "browserify-rsa": "4.0.1", + "create-hash": "1.1.3", + "parse-asn1": "5.1.0", + "randombytes": "2.0.5" + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { "version": "6.5.1", @@ -3309,6 +4010,16 @@ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "dev": true }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -3350,6 +4061,31 @@ } } }, + "randombytes": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha512-8T7Zn1AhMsQ/HI1SjcCfT/t4ii3eAqco3yOcSzS4mozsOz69lHLsoMXmF9nZgnFanYscnSlUSgs8uZyKzpE6kg==", + "requires": { + "safe-buffer": "5.1.1" + } + }, + "randomfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.3.tgz", + "integrity": "sha512-YL6GrhrWoic0Eq8rXVbMptH7dAxCs0J+mh5Y0euNekPPYaxEmdVGim6GdoxoRzKW2yJoU8tueifS7mYxvcFDEQ==", + "requires": { + "randombytes": "2.0.5", + "safe-buffer": "5.1.1" + } + }, + "read-only-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz", + "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=", + "requires": { + "readable-stream": "2.3.3" + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -3392,6 +4128,20 @@ } } }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, "regenerator-runtime": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", @@ -3479,8 +4229,7 @@ "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" }, "right-align": { "version": "0.1.3", @@ -3501,11 +4250,19 @@ "glob": "7.1.2" } }, + "ripemd160": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "requires": { + "hash-base": "2.0.2", + "inherits": "2.0.3" + } + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "sane": { "version": "2.2.0", @@ -3549,6 +4306,34 @@ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, + "sha.js": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz", + "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==", + "requires": { + "inherits": "2.0.3", + "safe-buffer": "5.1.1" + } + }, + "shasum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz", + "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=", + "requires": { + "json-stable-stringify": "0.0.1", + "sha.js": "2.4.9" + }, + "dependencies": { + "json-stable-stringify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz", + "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=", + "requires": { + "jsonify": "0.0.0" + } + } + } + }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -3564,6 +4349,17 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "shell-quote": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.6.1.tgz", + "integrity": "sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c=", + "requires": { + "array-filter": "0.0.1", + "array-map": "0.0.0", + "array-reduce": "0.0.0", + "jsonify": "0.0.0" + } + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -3594,8 +4390,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" }, "source-map-support": { "version": "0.4.18", @@ -3649,6 +4444,45 @@ "tweetnacl": "0.14.5" } }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, + "stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=", + "requires": { + "duplexer2": "0.1.4", + "readable-stream": "2.3.3" + } + }, + "stream-http": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha512-c0yTD2rbQzXtSsFSVhtpvY/vS6u066PcXOX9kBB3mSO76RiUQzL340uJkGBWnlBg4/HZzqiUXtaVA7wcRcJgEw==", + "requires": { + "builtin-status-codes": "3.0.0", + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "to-arraybuffer": "1.0.1", + "xtend": "4.0.1" + } + }, + "stream-splicer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.0.tgz", + "integrity": "sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -3677,6 +4511,14 @@ } } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", @@ -3715,6 +4557,21 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "subarg": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz", + "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=", + "requires": { + "minimist": "1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + } + } + }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -3730,6 +4587,14 @@ "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, + "syntax-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.3.0.tgz", + "integrity": "sha1-HtkmbE1AvnXcVb+bsct3Biu5bKE=", + "requires": { + "acorn": "4.0.13" + } + }, "test-exclude": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", @@ -3749,12 +4614,39 @@ "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "requires": { + "readable-stream": "2.3.3", + "xtend": "4.0.1" + } + }, + "timers-browserify": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz", + "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=", + "requires": { + "process": "0.11.10" + } + }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" + }, "to-fast-properties": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", @@ -3782,6 +4674,11 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -3807,6 +4704,11 @@ "prelude-ls": "1.1.2" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "uglify-js": { "version": "2.8.29", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", @@ -3841,6 +4743,47 @@ "dev": true, "optional": true }, + "umd": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.1.tgz", + "integrity": "sha1-iuVW4RAR9jwllnCKiDclnwGz1g4=" + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } + } + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "uuid": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", @@ -3868,6 +4811,14 @@ "extsprintf": "1.3.0" } }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "requires": { + "indexof": "0.0.1" + } + }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", @@ -4001,8 +4952,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "2.3.0", @@ -4024,8 +4974,7 @@ "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", - "dev": true + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "y18n": { "version": "3.2.1", diff --git a/package.json b/package.json index 1cdc1a8..54ee068 100644 --- a/package.json +++ b/package.json @@ -21,5 +21,8 @@ "homepage": "https://github.com/CodeYourFuture/cyf-election#readme", "devDependencies": { "jest": "^21.2.1" + }, + "dependencies": { + "browserify": "^15.0.0" } } From 14b41c5d00e2befab595500402d188b14058ddd1 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Sat, 6 Jan 2018 19:33:25 +0000 Subject: [PATCH 05/11] Add styles --- assets/style.css | 77 ++++++++++++++++++++++++++++++++++++++++++++++++ index.html | 48 ++++++++++++++++++------------ 2 files changed, 106 insertions(+), 19 deletions(-) create mode 100644 assets/style.css diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 0000000..db2e0ed --- /dev/null +++ b/assets/style.css @@ -0,0 +1,77 @@ +html, +body { + margin: 0; + padding: 0; + font-weight: normal; + font-size: 18px; + line-height: 28px; + color: #000000; + background-color: #ffffff; +} + +body{ + position: relative; +} + +/*.container { + min-height: 100%; + display: flex; + flex-direction: column; +}*/ + +.header { + display:flex; + justify-content: space-between; + padding: 1rem; + color: #000000; + background-color: #9BA8D1; + width: 100%; +} + +.header p { + font-size: 1.4rem; + padding-right: 3rem; + padding-left: 3rem; +} + +.lists { + display: flex; + justify-content: center; +} + +.list-section { + margin-right: 5rem; + padding: 2rem; +} + +.list-section:last-child{ + margin-right: 0; +} + +.run { + display: block; + margin: 0 auto; + font-size: 1.3rem; + padding: 0.5rem 0.7rem; + color: #ffffff; + background-color: #5E667F; + border-radius: 0.5rem; +} + +.winner-message { + font-size: 1.7rem; + color: #BF1929; + padding: 1.2rem; +/* border: #BF1929 solid 1px;*/ +} +/* +.footer { + position: absolute; + bottom: 0; + left: 50%; + transform: translate(-50%); + padding: 1rem; + color: #000000; + background-color: #9BA8D1; + width: 100%; +}*/ \ No newline at end of file diff --git a/index.html b/index.html index f7f688a..88b0feb 100644 --- a/index.html +++ b/index.html @@ -1,25 +1,35 @@ + CYF Election Project + -
-
-
-
-
-

List of Candidates

-
    - -
-
-
-

List of Voters

-
    - -
-
-
- -
+
+
+

CYF project

+

Election

+
+
+
+
+

List of Candidates

+
    + +
+
+
+

List of Voters

+
    + +
+
+
+ +

+
+ +
From 23f0cfc758e75a09487f13b133f42e94e812b363 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Sat, 6 Jan 2018 20:01:29 +0000 Subject: [PATCH 06/11] Add button --- assets/style.css | 32 ++++++++++++++++++++------------ bundle.js | 9 ++++++++- index.html | 2 +- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/assets/style.css b/assets/style.css index db2e0ed..fff5a4d 100644 --- a/assets/style.css +++ b/assets/style.css @@ -9,9 +9,6 @@ body { background-color: #ffffff; } -body{ - position: relative; -} /*.container { min-height: 100%; @@ -30,10 +27,18 @@ body{ .header p { font-size: 1.4rem; - padding-right: 3rem; + padding-right: 5rem; padding-left: 3rem; } +.header .code { + color: #F52034; +} + +/*.content { + flex: 1; +}*/ + .lists { display: flex; justify-content: center; @@ -59,18 +64,21 @@ body{ } .winner-message { + margin-top: 3rem; + padding: 1.2rem; + text-align: center; font-size: 1.7rem; color: #BF1929; - padding: 1.2rem; + text-transform: uppercase; + /* border: #BF1929 solid 1px;*/ } -/* -.footer { - position: absolute; - bottom: 0; - left: 50%; - transform: translate(-50%); - padding: 1rem; + +/*.footer { + margin-top: auto; + display: flex; + justify-content: center; + padding: 1rem 0rem; color: #000000; background-color: #9BA8D1; width: 100%; diff --git a/bundle.js b/bundle.js index 9de7159..d0e280d 100644 --- a/bundle.js +++ b/bundle.js @@ -125,10 +125,17 @@ function createVotersList(votersArray) { createVotersList(votingPopulation); +//Add event listener on button +var runButton = document.querySelector('.run'); +var messageP = document.querySelector('.winner-message'); - +runButton.addEventListener("click", function handler() { + // election.runElection(); + messageP.innerHTML = election.printWinnerMessage(); + this.removeEventListener("click", handler); +}); },{"./election":2}],2:[function(require,module,exports){ diff --git a/index.html b/index.html index 88b0feb..1fb61c2 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@
-

CYF project

+

< CODE > YOUR FUTURE project

Election

From 8959d4aa09b65ed0ab7686ef8a7f36e34da5655c Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Sat, 6 Jan 2018 20:36:47 +0000 Subject: [PATCH 07/11] Fix mistakes in previous data --- bundle.js | 16 +++++++++------- election.js | 4 +++- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/bundle.js b/bundle.js index d0e280d..7261f53 100644 --- a/bundle.js +++ b/bundle.js @@ -65,8 +65,9 @@ let votingPopulation = [ new Voter('Norman Beracha', 35, [3, 4]), new Voter('Wei Li', 19, [1, 2]), new Voter('Sam MacKinnon', 59, [1, 4]), - new Voter('Clay Roderick', 54,[3, 4]), - new Voter('Nour al-Din', 32,[4, 1]) + new Voter('Salome Kadek', 22, [2,1,3]) + // new Voter('Clay Roderick', 54,[3, 4]), + // new Voter('Nour al-Din', 32,[4, 1]) ]; @@ -85,11 +86,11 @@ let validVoters = filterInvalidVoters(allVoters); let election = new Election(validVoters, candidates); -election.runElection(); // Example of how runElection() can be called. +// election.runElection(); // Example of how runElection() can be called. // console.log(election.candidates); -election.getWinner(); +// election.getWinner(); // console.log(election.winner); -console.log(election.printWinnerMessage()); +// console.log(election.printWinnerMessage()); // Example of how the winner message can be printed. @@ -132,7 +133,8 @@ var messageP = document.querySelector('.winner-message'); runButton.addEventListener("click", function handler() { - // election.runElection(); + election.runElection(); + election.getWinner(); messageP.innerHTML = election.printWinnerMessage(); this.removeEventListener("click", handler); }); @@ -174,7 +176,7 @@ function filterInvalidVoters(voters) { function runElection(voters, candidates) { var score = 1; voters.forEach(function(voter) { - for (var i = 0; i < 4; i++) { + for (var i = 1; i < 5; i++) { if (voter.votingCard[0] === i) { candidates[i].numVotes += score; } else if (voter.votingCard[1] === i) { diff --git a/election.js b/election.js index 86e39e9..45d59de 100644 --- a/election.js +++ b/election.js @@ -33,7 +33,7 @@ function filterInvalidVoters(voters) { function runElection(voters, candidates) { var score = 1; voters.forEach(function(voter) { - for (var i = 0; i < 4; i++) { + for (var i = 1; i < 5; i++) { if (voter.votingCard[0] === i) { candidates[i].numVotes += score; } else if (voter.votingCard[1] === i) { @@ -105,6 +105,8 @@ candidates = runElection(validVoters, candidates); let winner = getWinner(candidates); + + module.exports = { candidatesObjToArray, filterInvalidVoters, From b26628e9e56780f166b72854e79b897db43dc375 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Fri, 12 Jan 2018 14:14:38 +0000 Subject: [PATCH 08/11] Do election part3 --- bundle.js | 136 ++++++++++++++++++++++++++++++++++------------ election-part2.js | 11 ++++ 2 files changed, 113 insertions(+), 34 deletions(-) diff --git a/bundle.js b/bundle.js index 7261f53..f7e494c 100644 --- a/bundle.js +++ b/bundle.js @@ -25,9 +25,10 @@ const { * However they have some extra properties. */ class Candidate extends Voter { - constructor(name,age,votingCard,party,numVotes) { + constructor(name,age,votingCard,party,id) { super(name,age,votingCard); this.party = party; + this.id = id; this.numVotes = 0; } }; @@ -45,6 +46,7 @@ class Candidate extends Voter { runElection() { this.candidates = runElection(this.validVoters, this.candidates); + this.getWinner(); } getWinner() { @@ -57,34 +59,102 @@ class Candidate extends Voter { } +const fetchElectionData = function(){ + const dataJSON = 'http://www.mocky.io/v2/5a55224b2d000088425b1ed8'; + fetch(dataJSON) + .then(response => response.json()) + .then(data => getData(data)) + // .then(() => arrayToObject(candidatesArr,'id')) + // .then((candidatesArr) => getCandidatesObj(candidatesArr)) + .then(() => updateVariables()) + .then(() => createCandidatesList(candidates)) + .then(() => createVotersList(votingPopulation)) + .then(() => runElectionButton()) + .catch(err => console.log(err)) +} + +fetchElectionData(); + +let votingPopulation = []; +let candidates = []; +let allVoters; +let validVoters; +let election; + +const getData = function(allData) { + allData.voters.forEach(function(person) { + votingPopulation.push(new Voter(person.name,person.age,person.votingCard)); + }); + allData.candidates.forEach(function(person){ + candidates.push(new Candidate(person.name,person.age,person.votingCard,person.party,person.id)); + }); + // console.log(candidates); + // console.log(votingPopulation); +}; + +// const arrayToObject = (arr, keyField) => +// Object.assign({}, ...arr.map(item => ({[item[keyField]]: item}))); + +// const getCandidatesObj = (candidatesArr) => +// let candidates = arrayToObject(candidatesArr,'id') +// console.log(candidates); + + + + + + + // CREATE HTML INTERFACE // Include your votingPopulation array here. -let votingPopulation = [ - new Voter('Jane Finnegan', 19, [1, 3]), - new Voter('Norman Beracha', 35, [3, 4]), - new Voter('Wei Li', 19, [1, 2]), - new Voter('Sam MacKinnon', 59, [1, 4]), - new Voter('Salome Kadek', 22, [2,1,3]) - // new Voter('Clay Roderick', 54,[3, 4]), - // new Voter('Nour al-Din', 32,[4, 1]) -]; +// let votingPopulation = [ +// new Voter('Jane Finnegan', 19, [1, 3]), +// new Voter('Norman Beracha', 35, [3, 4]), +// new Voter('Wei Li', 19, [1, 2]), +// new Voter('Sam MacKinnon', 59, [1, 4]), +// new Voter('Salome Kadek', 22, [2,1,3]) +// ]; // Include your candidates array here. -let candidates = { - 1: new Candidate('Tamara Faiza', 46, [1,1], 'Pizza Party'), - 2: new Candidate('Aylin Duke', 39, [2,2], 'Foam Party'), - 3: new Candidate('Clay Roderick', 54, [3,4], 'Flat Earth Party'), - 4: new Candidate('Nour al-Din', 32, [4,1], 'Pizza Party') -}; +// let candidates = { +// 1: new Candidate('Tamara Faiza', 46, [1,1], 'Pizza Party'), +// 2: new Candidate('Aylin Duke', 39, [2,2], 'Foam Party'), +// 3: new Candidate('Clay Roderick', 54, [3,4], 'Flat Earth Party'), +// 4: new Candidate('Nour al-Din', 32, [4,1], 'Pizza Party') +// }; -let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); +// let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); -let validVoters = filterInvalidVoters(allVoters); -let election = new Election(validVoters, candidates); +// let allVoters = votingPopulation.concat(candidates); + +// let validVoters = filterInvalidVoters(allVoters); + +// let election = new Election(validVoters, candidates); + + +const updateVariables = function() { + allVoters = votingPopulation.concat(candidates); + validVoters = filterInvalidVoters(allVoters); + election = new Election(validVoters, candidates); + console.log(election); + // console.log(allVoters); +} + +// const createValidVoters = function() { +// let validVoters = filterInvalidVoters(allVoters); +// console.log(validVoters); +// return validVoters; +// } + +// const createElection = function() { +// let election = new Election(validVoters, candidates); +// console.log(election); +// return election; + // election.runElection(); // Example of how runElection() can be called. // console.log(election.candidates); @@ -96,16 +166,13 @@ let election = new Election(validVoters, candidates); - - // CREATE HTML INTERFACE - // Create list of candidates -function createCandidatesList(candidatesObj) { +const createCandidatesList = (candidatesObj) => { var classC = document.querySelector('.candidates'); for (candidate in candidatesObj) { - var li = document.createElement('li'); + let li = document.createElement('li'); li.setAttribute('class', 'candidate'); - var text = document.createTextNode(candidatesObj[candidate].name); + let text = document.createTextNode(candidatesObj[candidate].name); li.appendChild(text); classC.appendChild(li); }; @@ -113,12 +180,12 @@ function createCandidatesList(candidatesObj) { createCandidatesList(candidates); // Create lists of voters -function createVotersList(votersArray) { - var classV = document.querySelector('.voters'); +const createVotersList = (votersArray) => { + let classV = document.querySelector('.voters'); votersArray.forEach(function(voter) { - var li = document.createElement('li'); + let li = document.createElement('li'); li.setAttribute('class', 'voter'); - var text = document.createTextNode(voter.name); + let text = document.createTextNode(voter.name); li.appendChild(text); classV.appendChild(li); }); @@ -127,17 +194,18 @@ createVotersList(votingPopulation); //Add event listener on button - -var runButton = document.querySelector('.run'); -var messageP = document.querySelector('.winner-message'); +const runElectionButton = function() { +let runButton = document.querySelector('.run'); +let messageP = document.querySelector('.winner-message'); runButton.addEventListener("click", function handler() { election.runElection(); - election.getWinner(); + // election.getWinner(); messageP.innerHTML = election.printWinnerMessage(); this.removeEventListener("click", handler); }); +}; },{"./election":2}],2:[function(require,module,exports){ @@ -176,7 +244,7 @@ function filterInvalidVoters(voters) { function runElection(voters, candidates) { var score = 1; voters.forEach(function(voter) { - for (var i = 1; i < 5; i++) { + for (var i = 0; i < validVoters.length; i++) { if (voter.votingCard[0] === i) { candidates[i].numVotes += score; } else if (voter.votingCard[1] === i) { diff --git a/election-part2.js b/election-part2.js index 55c7e87..36510a7 100644 --- a/election-part2.js +++ b/election-part2.js @@ -7,6 +7,17 @@ const { winnerMessage, } = require('./election'); + +const fetchElectionData = function(){ + const dataJSON = 'http://www.mocky.io/v2/5a55224b2d000088425b1ed8'; + return fetch(dataJSON) + .then(response => response.json()) + .then(data => console.log(data)) + .catch(err => console.log(err)) +} + +fetchElectionData(); + /** * 1 - Write a Voter class modelling a member of the population who votes in the election. */ From c9f2c8dc969717c3fdb676e9ef5278c01a2eb943 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Fri, 12 Jan 2018 14:33:12 +0000 Subject: [PATCH 09/11] Fix the mistake in runElection --- bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundle.js b/bundle.js index f7e494c..b445e4b 100644 --- a/bundle.js +++ b/bundle.js @@ -244,7 +244,7 @@ function filterInvalidVoters(voters) { function runElection(voters, candidates) { var score = 1; voters.forEach(function(voter) { - for (var i = 0; i < validVoters.length; i++) { + for (var i = 0; i < candidates.length; i++) { if (voter.votingCard[0] === i) { candidates[i].numVotes += score; } else if (voter.votingCard[1] === i) { From 4768d576ed7bafd16b520c5ffcd23f0864757dac Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Fri, 12 Jan 2018 15:58:23 +0000 Subject: [PATCH 10/11] change runelection function so it works properly --- bundle.js | 53 +++++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/bundle.js b/bundle.js index b445e4b..fd54786 100644 --- a/bundle.js +++ b/bundle.js @@ -69,7 +69,7 @@ const fetchElectionData = function(){ .then(() => updateVariables()) .then(() => createCandidatesList(candidates)) .then(() => createVotersList(votingPopulation)) - .then(() => runElectionButton()) + // .then(() => runElectionButton()) .catch(err => console.log(err)) } @@ -140,7 +140,7 @@ const updateVariables = function() { allVoters = votingPopulation.concat(candidates); validVoters = filterInvalidVoters(allVoters); election = new Election(validVoters, candidates); - console.log(election); + // console.log(allVoters); } @@ -177,7 +177,7 @@ const createCandidatesList = (candidatesObj) => { classC.appendChild(li); }; }; -createCandidatesList(candidates); +// createCandidatesList(candidates); // Create lists of voters const createVotersList = (votersArray) => { @@ -190,7 +190,8 @@ const createVotersList = (votersArray) => { classV.appendChild(li); }); }; -createVotersList(votingPopulation); +// createVotersList(votingPopulation); + //Add event listener on button @@ -201,12 +202,16 @@ let messageP = document.querySelector('.winner-message'); runButton.addEventListener("click", function handler() { election.runElection(); + console.log(candidates); // election.getWinner(); messageP.innerHTML = election.printWinnerMessage(); this.removeEventListener("click", handler); + }); }; +runElectionButton(); + },{"./election":2}],2:[function(require,module,exports){ /** @@ -244,11 +249,11 @@ function filterInvalidVoters(voters) { function runElection(voters, candidates) { var score = 1; voters.forEach(function(voter) { - for (var i = 0; i < candidates.length; i++) { + for (var i = 1; i <= candidates.length; i++) { if (voter.votingCard[0] === i) { - candidates[i].numVotes += score; + candidates[i-1].numVotes += score; // candidate 1 in the array will have index 0,thats why } else if (voter.votingCard[1] === i) { - candidates[i].numVotes += score/2; + candidates[i-1].numVotes += score/2; } } }) @@ -291,30 +296,30 @@ function winnerMessage(winner) { } // A sample population of a small number of voters, stored as an array -let votingPopulation = [ - {name: 'Jane Finnegan', age: 19, votingCard: [1,3]}, - {name: 'Norman Beracha', age: 35, votingCard: [3,4]}, - {name: 'Salome Kadek', age: 22, votingCard: [2,1,3]}, - {name: 'Wei Li', age: 19, votingCard: [1,2]}, - {name: 'Sam MacKinnon', age: 59, votingCard: [1,4]} -]; +// let votingPopulation = [ +// {name: 'Jane Finnegan', age: 19, votingCard: [1,3]}, +// {name: 'Norman Beracha', age: 35, votingCard: [3,4]}, +// {name: 'Salome Kadek', age: 22, votingCard: [2,1,3]}, +// {name: 'Wei Li', age: 19, votingCard: [1,2]}, +// {name: 'Sam MacKinnon', age: 59, votingCard: [1,4]} +// ]; // The election candidates, stored as an object where each object key is the candidate ID, and the object // value is the candidate object itself. -let candidates = { - 1: {name: 'Tamara Faiza', age: 46, votingCard: [1,1], party: 'Pizza Party', numVotes: 0}, - 2: {name: 'Aylin Duke', age: 39, votingCard: [2,2], party: 'Foam Party', numVotes: 0}, - 3: {name: 'Clay Roderick', age: 54, votingCard: [3,4], party: 'Flat Earth Party', numVotes: 0}, - 4: {name: 'Nour al-Din', age: 32, votingCard: [4,1], party: 'Pizza Party', numVotes: 0} -}; +// let candidates = { +// 1: {name: 'Tamara Faiza', age: 46, votingCard: [1,1], party: 'Pizza Party', numVotes: 0}, +// 2: {name: 'Aylin Duke', age: 39, votingCard: [2,2], party: 'Foam Party', numVotes: 0}, +// 3: {name: 'Clay Roderick', age: 54, votingCard: [3,4], party: 'Flat Earth Party', numVotes: 0}, +// 4: {name: 'Nour al-Din', age: 32, votingCard: [4,1], party: 'Pizza Party', numVotes: 0} +// }; -let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); +// let allVoters = votingPopulation.concat(candidatesObjToArray(candidates)); -let validVoters = filterInvalidVoters(allVoters); +// let validVoters = filterInvalidVoters(allVoters); -candidates = runElection(validVoters, candidates); +// candidates = runElection(validVoters, candidates); -let winner = getWinner(candidates); +// let winner = getWinner(candidates); module.exports = { candidatesObjToArray, From 3c3f4ea9a67750a1bf980a6337772065c6eb8e72 Mon Sep 17 00:00:00 2001 From: OlenaKashuba Date: Sat, 20 Jan 2018 13:47:32 +0000 Subject: [PATCH 11/11] Change http to https --- bundle.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bundle.js b/bundle.js index fd54786..a4ad7cd 100644 --- a/bundle.js +++ b/bundle.js @@ -60,7 +60,7 @@ class Candidate extends Voter { } const fetchElectionData = function(){ - const dataJSON = 'http://www.mocky.io/v2/5a55224b2d000088425b1ed8'; + const dataJSON = 'https://www.mocky.io/v2/5a55224b2d000088425b1ed8'; fetch(dataJSON) .then(response => response.json()) .then(data => getData(data))