diff --git a/parties/.meteor/packages b/parties/.meteor/packages index 16dfb42..aaa0c7b 100644 --- a/parties/.meteor/packages +++ b/parties/.meteor/packages @@ -4,26 +4,25 @@ # 'meteor add' and 'meteor remove' will edit this file for you, # but you can also edit it by hand. -meteor-base@1.5.1 # Packages every Meteor app needs to have -mobile-experience@1.1.0 # Packages for a great mobile UX -mongo@1.12.0 # The database Meteor supports right now +meteor-base@1.5.2-beta300.6 # Packages every Meteor app needs to have +mobile-experience@1.1.1-beta300.6 # Packages for a great mobile UX +mongo@2.0.0-beta300.6 # The database Meteor supports right now blaze-html-templates # Compile .html files into Meteor Blaze views jquery # Wrapper package for npm-installed jquery -reactive-var@1.0.11 # Reactive variable for tracker -tracker@1.2.0 # Meteor's client-side reactive programming library +reactive-var@1.0.13-beta300.6 # Reactive variable for tracker +tracker@1.3.3-beta300.6 # Meteor's client-side reactive programming library -standard-minifier-css@1.7.3 # CSS minifier run for production mode -standard-minifier-js@2.6.1 # JS minifier run for production mode -es5-shim@4.8.0 # ECMAScript 5 compatibility for older browsers -ecmascript@0.15.3 # Enable ECMAScript2015+ syntax in app code -typescript@4.3.5 # Enable TypeScript syntax in .ts and .tsx modules -shell-server@0.5.0 # Server-side component of the `meteor shell` command -session@1.2.0 -check@1.3.1 -audit-argument-checks@1.0.7 -email@2.1.1 -accounts-facebook@1.3.3 -accounts-twitter@1.5.0 -d3 -accounts-password@2.0.0 -accounts-ui@1.4.0 +standard-minifier-css@1.9.3-beta300.6 # CSS minifier run for production mode +standard-minifier-js@3.0.0-beta300.6 # JS minifier run for production mode +es5-shim@4.8.1-beta300.6 # ECMAScript 5 compatibility for older browsers +ecmascript@0.16.8-beta300.6 # Enable ECMAScript2015+ syntax in app code +typescript@5.3.3-beta300.6 # Enable TypeScript syntax in .ts and .tsx modules +shell-server@0.6.0-beta300.6 # Server-side component of the `meteor shell` command +session@1.2.2-beta300.6 +check@1.3.3-beta300.6 +audit-argument-checks@1.0.8-beta300.6 +email@3.0.0-beta300.6 +accounts-facebook@1.3.4-beta300.6 +accounts-twitter@1.5.1-beta300.6 +accounts-password@3.0.0-beta300.6 +accounts-ui@1.4.3-beta300.6 diff --git a/parties/.meteor/release b/parties/.meteor/release index 7760dfe..ecc41d1 100644 --- a/parties/.meteor/release +++ b/parties/.meteor/release @@ -1 +1 @@ -METEOR@2.3.5 +METEOR@3.0-beta.6 diff --git a/parties/.meteor/versions b/parties/.meteor/versions index f255834..1edea0f 100644 --- a/parties/.meteor/versions +++ b/parties/.meteor/versions @@ -1,101 +1,101 @@ -accounts-base@2.0.1 -accounts-facebook@1.3.3 -accounts-oauth@1.3.0 -accounts-password@2.0.0 -accounts-twitter@1.5.0 -accounts-ui@1.4.0 -accounts-ui-unstyled@1.5.0 -allow-deny@1.1.0 -audit-argument-checks@1.0.7 -autoupdate@1.7.0 -babel-compiler@7.7.0 -babel-runtime@1.5.0 -base64@1.0.12 -binary-heap@1.0.11 -blaze@2.5.0 -blaze-html-templates@1.2.1 -blaze-tools@1.1.2 -boilerplate-generator@1.7.1 -caching-compiler@1.2.2 -caching-html-compiler@1.2.0 -callback-hook@1.3.1 -check@1.3.1 -d3@1.0.0 -ddp@1.4.0 -ddp-client@2.5.0 -ddp-common@1.4.0 -ddp-rate-limiter@1.1.0 -ddp-server@2.4.1 -diff-sequence@1.1.1 -dynamic-import@0.7.1 -ecmascript@0.15.3 -ecmascript-runtime@0.7.0 -ecmascript-runtime-client@0.11.1 -ecmascript-runtime-server@0.10.1 -ejson@1.1.1 -email@2.1.1 -es5-shim@4.8.0 -facebook-oauth@1.9.1 -fetch@0.1.1 -geojson-utils@1.0.10 -hot-code-push@1.0.4 -html-tools@1.1.2 -htmljs@1.1.1 -http@2.0.0 -id-map@1.1.1 -inter-process-messaging@0.1.1 +accounts-base@3.0.0-beta300.6 +accounts-facebook@1.3.4-beta300.6 +accounts-oauth@1.4.3-beta300.6 +accounts-password@3.0.0-beta300.6 +accounts-twitter@1.5.1-beta300.6 +accounts-ui@1.4.3-beta300.6 +accounts-ui-unstyled@1.7.1-beta300.6 +allow-deny@2.0.0-beta300.6 +audit-argument-checks@1.0.8-beta300.6 +autoupdate@2.0.0-beta300.6 +babel-compiler@7.11.0-beta300.6 +babel-runtime@1.5.2-beta300.6 +base64@1.0.13-beta300.6 +binary-heap@1.0.12-beta300.6 +blaze@3.0.0-alpha300.17 +blaze-html-templates@3.0.0-alpha300.17 +blaze-tools@2.0.0-alpha300.17 +boilerplate-generator@2.0.0-beta300.6 +caching-compiler@2.0.0-beta300.6 +caching-html-compiler@2.0.0-alpha300.17 +callback-hook@1.6.0-beta300.6 +check@1.3.3-beta300.6 +core-runtime@1.0.0-beta300.6 +ddp@1.4.2-beta300.6 +ddp-client@3.0.0-beta300.6 +ddp-common@1.4.1-beta300.6 +ddp-rate-limiter@1.2.1-beta300.6 +ddp-server@3.0.0-beta300.6 +diff-sequence@1.1.3-beta300.6 +dynamic-import@0.7.4-beta300.6 +ecmascript@0.16.8-beta300.6 +ecmascript-runtime@0.8.2-beta300.6 +ecmascript-runtime-client@0.12.2-beta300.6 +ecmascript-runtime-server@0.11.1-beta300.6 +ejson@1.1.4-beta300.6 +email@3.0.0-beta300.6 +es5-shim@4.8.1-beta300.6 +facebook-oauth@1.11.3-beta300.6 +facts-base@1.0.2-beta300.6 +fetch@0.1.4-beta300.6 +geojson-utils@1.0.12-beta300.6 +hot-code-push@1.0.5-beta300.6 +html-tools@2.0.0-alpha300.17 +htmljs@2.0.0-alpha300.17 +http@1.4.4 +id-map@1.2.0-beta300.6 +inter-process-messaging@0.1.2-beta300.6 jquery@3.0.0 -launch-screen@1.3.0 -less@3.0.2 -localstorage@1.2.0 -logging@1.2.0 -meteor@1.9.3 -meteor-base@1.5.1 -minifier-css@1.5.4 -minifier-js@2.6.1 -minimongo@1.7.0 -mobile-experience@1.1.0 -mobile-status-bar@1.1.0 -modern-browsers@0.1.5 -modules@0.16.0 -modules-runtime@0.12.0 -mongo@1.12.0 -mongo-decimal@0.1.2 -mongo-dev-server@1.1.0 -mongo-id@1.0.8 -npm-mongo@3.9.1 -oauth@2.0.0 -oauth1@1.4.1 -oauth2@1.3.1 -observe-sequence@1.0.19 -ordered-dict@1.1.0 -promise@0.12.0 -random@1.2.0 -rate-limit@1.0.9 -react-fast-refresh@0.1.1 -reactive-dict@1.3.0 -reactive-var@1.0.11 -reload@1.3.1 -retry@1.1.0 -routepolicy@1.1.1 -service-configuration@1.1.0 -session@1.2.0 -sha@1.0.9 -shell-server@0.5.0 -socket-stream-client@0.4.0 -spacebars@1.2.0 -spacebars-compiler@1.2.1 -standard-minifier-css@1.7.3 -standard-minifier-js@2.6.1 -templating@1.4.1 -templating-compiler@1.4.1 -templating-runtime@1.5.0 -templating-tools@1.2.0 -tracker@1.2.0 -twitter-oauth@1.3.0 -typescript@4.3.5 -ui@1.0.13 -underscore@1.0.10 +launch-screen@1.3.1-beta300.6 +less@4.1.1-beta300.6 +localstorage@1.2.1-beta300.6 +logging@1.3.3-beta300.6 +meteor@2.0.0-beta300.6 +meteor-base@1.5.2-beta300.6 +minifier-css@2.0.0-beta300.6 +minifier-js@3.0.0-beta300.6 +minimongo@2.0.0-beta300.6 +mobile-experience@1.1.1-beta300.6 +mobile-status-bar@1.1.1-beta300.6 +modern-browsers@0.1.10-beta300.6 +modules@0.19.1-beta300.6 +modules-runtime@0.13.2-beta300.6 +mongo@2.0.0-beta300.6 +mongo-decimal@0.1.4-beta300.6 +mongo-dev-server@1.1.1-beta300.6 +mongo-id@1.0.9-beta300.6 +npm-mongo@4.16.1-beta300.6 +oauth@3.0.0-beta300.6 +oauth1@1.5.2-beta300.6 +oauth2@1.3.3-beta300.6 +observe-sequence@2.0.0-alpha300.17 +ordered-dict@1.2.0-beta300.6 +promise@1.0.0-beta300.6 +random@1.2.2-beta300.6 +rate-limit@1.1.2-beta300.6 +react-fast-refresh@0.2.8-beta300.6 +reactive-dict@1.3.2-beta300.6 +reactive-var@1.0.13-beta300.6 +reload@1.3.2-beta300.6 +retry@1.1.1-beta300.6 +routepolicy@1.1.2-beta300.6 +service-configuration@1.3.2-beta300.6 +session@1.2.2-beta300.6 +sha@1.0.10-beta300.6 +shell-server@0.6.0-beta300.6 +socket-stream-client@0.5.2-beta300.6 +spacebars@2.0.0-alpha300.17 +spacebars-compiler@2.0.0-alpha300.17 +standard-minifier-css@1.9.3-beta300.6 +standard-minifier-js@3.0.0-beta300.6 +templating@1.4.4-alpha300.17 +templating-compiler@2.0.0-alpha300.17 +templating-runtime@2.0.0-alpha300.17 +templating-tools@2.0.0-alpha300.17 +tracker@1.3.3-beta300.6 +twitter-oauth@1.3.4-beta300.6 +typescript@5.3.3-beta300.6 +underscore@1.0.14-beta300.6 url@1.3.2 -webapp@1.11.1 -webapp-hashing@1.1.0 +webapp@2.0.0-beta300.6 +webapp-hashing@1.1.2-beta300.6 diff --git a/parties/client/main.js b/parties/client/main.js index f5cb7f8..e913f26 100644 --- a/parties/client/main.js +++ b/parties/client/main.js @@ -1,11 +1,12 @@ -import { Meteor } from 'meteor/meteor'; -import { Template } from 'meteor/templating'; -import { Tracker } from 'meteor/tracker'; -import { Session } from 'meteor/session'; -import $ from 'jquery'; -import { Parties, displayName, attending } from '../imports/model' - -import './main.html'; +import { Meteor } from "meteor/meteor"; +import { Template } from "meteor/templating"; +import { Tracker } from "meteor/tracker"; +import { Session } from "meteor/session"; +import d3 from "d3"; +import $ from "jquery"; +import { Parties, displayName, attending } from "../imports/model"; +import _ from "lodash"; +import "./main.html"; // All Tomorrow's Parties -- client @@ -16,12 +17,10 @@ Meteor.subscribe("parties"); Meteor.startup(function () { Tracker.autorun(function () { const selected = Session.get("selected"); - if (! selected || ! Parties.findOne(selected)) { + if (!selected || !Parties.findOne(selected)) { const party = Parties.findOne(); - if (party) - Session.set("selected", party._id); - else - Session.set("selected", null); + if (party) Session.set("selected", party._id); + else Session.set("selected", null); } }); }); @@ -38,43 +37,43 @@ Template.details.helpers({ }, creatorName: function () { const owner = Meteor.users.findOne(this.owner); - if (owner._id === Meteor.userId()) - return "me"; + if (owner._id === Meteor.userId()) return "me"; return displayName(owner); }, canRemove: function () { return this.owner === Meteor.userId() && attending(this) === 0; }, maybeChosen: function (what) { - const myRsvp = _.find(this.rsvps, function (r) { - return r.user === Meteor.userId(); - }) || {}; + const myRsvp = + _.find(this.rsvps, function (r) { + return r.user === Meteor.userId(); + }) || {}; return what == myRsvp.rsvp ? "chosen btn-inverse" : ""; - } + }, }); Template.details.events({ - 'click .rsvp_yes': function () { - Meteor.call("rsvp", Session.get("selected"), "yes"); + "click .rsvp_yes": async function () { + await Meteor.callAsync("rsvp", Session.get("selected"), "yes"); return false; }, - 'click .rsvp_maybe': function () { - Meteor.call("rsvp", Session.get("selected"), "maybe"); + "click .rsvp_maybe": async function () { + await Meteor.callAsync("rsvp", Session.get("selected"), "maybe"); return false; }, - 'click .rsvp_no': function () { - Meteor.call("rsvp", Session.get("selected"), "no"); + "click .rsvp_no": async function () { + await Meteor.callAsync("rsvp", Session.get("selected"), "no"); return false; }, - 'click .invite': function () { + "click .invite": function () { openInviteDialog(); return false; }, - 'click .remove': function () { + "click .remove": function () { Parties.remove(this._id); return false; - } + }, }); /////////////////////////////////////////////////////////////////////////////// @@ -88,10 +87,12 @@ Template.attendance.helpers({ outstandingInvitations: function () { const party = Parties.findOne(this._id); - return Meteor.users.find({$and: [ - {_id: {$in: party.invited}}, // they're invited - {_id: {$nin: _.pluck(party.rsvps, 'user')}} // but haven't RSVP'd - ]}); + return Meteor.users.find({ + $and: [ + { _id: { $in: party.invited } }, // they're invited + { _id: { $nin: _.pluck(party.rsvps, "user") } }, // but haven't RSVP'd + ], + }); }, invitationName: function () { @@ -103,12 +104,12 @@ Template.attendance.helpers({ }, nobody: function () { - return ! this.public && (this.rsvps.length + this.invited.length === 0); + return !this.public && this.rsvps.length + this.invited.length === 0; }, canInvite: function () { - return ! this.public && this.owner === Meteor.userId(); - } + return !this.public && this.owner === Meteor.userId(); + }, }); /////////////////////////////////////////////////////////////////////////////// @@ -123,24 +124,25 @@ const coordsRelativeToElement = function (element, event) { }; Template.map.events({ - 'mousedown circle, mousedown text': function (event, template) { + "mousedown circle, mousedown text": function (event, template) { Session.set("selected", event.currentTarget.id); }, - 'dblclick .map': function (event, template) { - if (! Meteor.userId()) // must be logged in to create events + "dblclick .map": function (event, template) { + if (!Meteor.userId()) + // must be logged in to create events return; const coords = coordsRelativeToElement(event.currentTarget, event); openCreateDialog(coords.x / 500, coords.y / 500); - } + }, }); Template.map.onRendered(function () { const self = this; self.node = self.find("svg"); - if (! self.handle) { + if (!self.handle) { self.handle = Tracker.autorun(function () { - const selected = Session.get('selected'); + const selected = Session.get("selected"); const selectedParty = selected && Parties.findOne(selected); const radius = function (party) { return 10 + Math.sqrt(attending(party)) * 10; @@ -148,54 +150,82 @@ Template.map.onRendered(function () { // Draw a circle for each party const updateCircles = (group) => { - group.attr("id", function (party) { return party._id; }) - .attr("cx", function (party) { return party.x * 500; }) - .attr("cy", function (party) { return party.y * 500; }) + group + .attr("id", function (party) { + return party._id; + }) + .attr("cx", function (party) { + return party.x * 500; + }) + .attr("cy", function (party) { + return party.y * 500; + }) .attr("r", radius) .attr("class", function (party) { return party.public ? "public" : "private"; }) - .style('opacity', function (party) { + .style("opacity", function (party) { return selected === party._id ? 1 : 0.6; }); }; - const circles = d3.select(self.node).select(".circles").selectAll("circle") - .data(Parties.find().fetch(), function (party) { return party._id; }); + const circles = d3 + .select(self.node) + .select(".circles") + .selectAll("circle") + .data(Parties.find().fetch(), function (party) { + return party._id; + }); + const t = d3.transition().duration(250).ease(d3.easeLinear); updateCircles(circles.enter().append("circle")); - updateCircles(circles.transition().duration(250).ease("cubic-out")); + updateCircles(circles.transition(t)); circles.exit().transition().duration(250).attr("r", 0).remove(); // Label each with the current attendance count const updateLabels = (group) => { - group.attr("id", function (party) { return party._id; }) - .text(function (party) {return attending(party) || '';}) - .attr("x", function (party) { return party.x * 500; }) - .attr("y", function (party) { return party.y * 500 + radius(party)/2 }) - .style('font-size', function (party) { + group + .attr("id", function (party) { + return party._id; + }) + .text(function (party) { + return attending(party) || ""; + }) + .attr("x", function (party) { + return party.x * 500; + }) + .attr("y", function (party) { + return party.y * 500 + radius(party) / 2; + }) + .style("font-size", function (party) { return radius(party) * 1.25 + "px"; }); }; - const labels = d3.select(self.node).select(".labels").selectAll("text") - .data(Parties.find().fetch(), function (party) { return party._id; }); - + const labels = d3 + .select(self.node) + .select(".labels") + .selectAll("text") + .data(Parties.find().fetch(), function (party) { + return party._id; + }); updateLabels(labels.enter().append("text")); - updateLabels(labels.transition().duration(250).ease("cubic-out")); + updateLabels(labels.transition(t)); labels.exit().remove(); // Draw a dashed circle around the currently selected party, if any - const callout = d3.select(self.node).select("circle.callout") - .transition().duration(250).ease("cubic-out"); + const callout = d3 + .select(self.node) + .select("circle.callout") + .transition(t); if (selectedParty) - callout.attr("cx", selectedParty.x * 500) + callout + .attr("cx", selectedParty.x * 500) .attr("cy", selectedParty.y * 500) .attr("r", radius(selectedParty) + 10) .attr("class", "callout") - .attr("display", ''); - else - callout.attr("display", 'none'); + .attr("display", ""); + else callout.attr("display", "none"); }); } }); @@ -208,7 +238,7 @@ Template.map.onDestroyed = function () { // Create Party dialog const openCreateDialog = function (x, y) { - Session.set("createCoords", {x: x, y: y}); + Session.set("createCoords", { x: x, y: y }); Session.set("createError", null); Session.set("showCreateDialog", true); }; @@ -216,44 +246,45 @@ const openCreateDialog = function (x, y) { Template.page.helpers({ showCreateDialog: function () { return Session.get("showCreateDialog"); - } + }, }); Template.createDialog.events({ - 'click .save': function (event, template) { + "click .save": async function (event, template) { const title = template.find(".title").value; const description = template.find(".description").value; const isPublic = !template.find(".private").checked; const coords = Session.get("createCoords"); if (title.length && description.length) { - const id = Meteor.call('createParty', { + const id = await Meteor.callAsync("createParty", { title: title, description: description, x: coords.x, y: coords.y, - public: isPublic + public: isPublic, }); Session.set("selected", id); - if (! isPublic && Meteor.users.find().count() > 1) - openInviteDialog(); + if (!isPublic && Meteor.users.find().count() > 1) openInviteDialog(); Session.set("showCreateDialog", false); } else { - Session.set("createError", - "It needs a title and a description, or why bother?"); + Session.set( + "createError", + "It needs a title and a description, or why bother?" + ); } }, - 'click .cancel': function () { + "click .cancel": function () { Session.set("showCreateDialog", false); - } + }, }); Template.createDialog.helpers({ error: function () { return Session.get("createError"); - } + }, }); /////////////////////////////////////////////////////////////////////////////// @@ -266,29 +297,29 @@ const openInviteDialog = function () { Template.page.helpers({ showInviteDialog: function () { return Session.get("showInviteDialog"); - } + }, }); Template.inviteDialog.events({ - 'click .invite': function (event, template) { - Meteor.call('invite', Session.get("selected"), this._id); + "click .invite": async function (event, template) { + await Meteor.callAsync("invite", Session.get("selected"), this._id); }, - 'click .done': function (event, template) { + "click .done": function (event, template) { Session.set("showInviteDialog", false); return false; - } + }, }); Template.inviteDialog.helpers({ uninvited: function () { const party = Parties.findOne(Session.get("selected")); - if (! party) - return []; // party hasn't loaded yet - return Meteor.users.find({$nor: [{_id: {$in: party.invited}}, - {_id: party.owner}]}); + if (!party) return []; // party hasn't loaded yet + return Meteor.users.find({ + $nor: [{ _id: { $in: party.invited } }, { _id: party.owner }], + }); }, displayName: function () { return displayName(this); - } -}); \ No newline at end of file + }, +}); diff --git a/parties/imports/model.js b/parties/imports/model.js index 92e503e..b10f0bc 100644 --- a/parties/imports/model.js +++ b/parties/imports/model.js @@ -1,7 +1,7 @@ -import { Meteor } from 'meteor/meteor'; -import { Mongo } from 'meteor/mongo'; -import { check, Match } from 'meteor/check'; -import _ from 'lodash' +import { Meteor } from "meteor/meteor"; +import { Mongo } from "meteor/mongo"; +import { check, Match } from "meteor/check"; +import _ from "lodash"; // All Tomorrow's Parties -- data model // Loaded on both the client and the server @@ -24,11 +24,12 @@ Parties.allow({ return false; // no cowboy inserts -- use createParty method }, update: function (userId, party, fields, modifier) { - if (userId !== party.owner) - return false; // not the owner + if (userId !== party.owner) return false; // not the owner const allowed = ["title", "description", "x", "y"]; - if ([fields, allowed].reduce((a, b) => a.filter(c => !b.includes(c))).length) + if ( + [fields, allowed].reduce((a, b) => a.filter((c) => !b.includes(c))).length + ) return false; // tried to write to forbidden field // A good improvement would be to validate the type of the new @@ -39,11 +40,11 @@ Parties.allow({ remove: function (userId, party) { // You can only remove parties that you created and nobody is going to. return party.owner === userId && attending(party) === 0; - } + }, }); export const attending = function (party) { - return (_.groupBy(party.rsvps, 'rsvp').yes || []).length; + return (_.groupBy(party.rsvps, "rsvp").yes || []).length; }; const NonEmptyString = Match.Where(function (x) { @@ -58,7 +59,7 @@ const Coordinate = Match.Where(function (x) { Meteor.methods({ // options should include: title, description, x, y, public - createParty: function (options) { + createParty: async function (options) { check(options, { title: NonEmptyString, description: NonEmptyString, @@ -71,106 +72,115 @@ Meteor.methods({ throw new Meteor.Error(413, "Title too long"); if (options.description.length > 1000) throw new Meteor.Error(413, "Description too long"); - if (! this.userId) - throw new Meteor.Error(403, "You must be logged in"); + if (!this.userId) throw new Meteor.Error(403, "You must be logged in"); - return Parties.insert({ + return await Parties.insertAsync({ owner: this.userId, x: options.x, y: options.y, title: options.title, description: options.description, - public: !! options.public, + public: !!options.public, invited: [], - rsvps: [] + rsvps: [], }); }, - invite: function (partyId, userId) { + invite: async function (partyId, userId) { check(partyId, String); check(userId, String); - const party = Parties.findOne(partyId); - if (! party || party.owner !== this.userId) + const party = await Parties.findOneAsync(partyId); + if (!party || party.owner !== this.userId) throw new Meteor.Error(404, "No such party"); if (party.public) - throw new Meteor.Error(400, - "That party is public. No need to invite people."); - if (userId !== party.owner && ! _.contains(party.invited, userId)) { - Parties.update(partyId, { $addToSet: { invited: userId } }); - - const from = contactEmail(Meteor.users.findOne(this.userId)); - const to = contactEmail(Meteor.users.findOne(userId)); + throw new Meteor.Error( + 400, + "That party is public. No need to invite people." + ); + if (userId !== party.owner && !_.contains(party.invited, userId)) { + await Parties.updateAsync(partyId, { $addToSet: { invited: userId } }); + + const from = contactEmail(await Meteor.users.findOneAsync(this.userId)); + const to = contactEmail(await Meteor.users.findOneAsync(userId)); if (Meteor.isServer && to) { // This code only runs on the server. If you didn't want clients // to be able to see it, you could move it to a separate file. - Email.send({ + await Email.sendAsync({ from: "noreply@example.com", to: to, replyTo: from || undefined, subject: "PARTY: " + party.title, text: -"Hey, I just invited you to '" + party.title + "' on All Tomorrow's Parties." + -"\n\nCome check it out: " + Meteor.absoluteUrl() + "\n" + "Hey, I just invited you to '" + + party.title + + "' on All Tomorrow's Parties." + + "\n\nCome check it out: " + + Meteor.absoluteUrl() + + "\n", }); } } }, - rsvp: function (partyId, rsvp) { + rsvp: async function (partyId, rsvp) { check(partyId, String); check(rsvp, String); - if (! this.userId) + if (!this.userId) throw new Meteor.Error(403, "You must be logged in to RSVP"); - if (!['yes', 'no', 'maybe'].includes(rsvp)) + if (!["yes", "no", "maybe"].includes(rsvp)) throw new Meteor.Error(400, "Invalid RSVP"); - const party = Parties.findOne(partyId); - if (! party) - throw new Meteor.Error(404, "No such party"); - if (! party.public && party.owner !== this.userId && - !party.invited?.includes(this.userId)) + const party = await Parties.findOneAsync(partyId); + if (!party) throw new Meteor.Error(404, "No such party"); + if ( + !party.public && + party.owner !== this.userId && + !party.invited?.includes(this.userId) + ) // private, but let's not tell this to the user throw new Meteor.Error(403, "No such party"); - const rsvpIndex = party.rsvps.map(rsvps => rsvps.user).indexOf(this.userId); + const rsvpIndex = party.rsvps + .map((rsvps) => rsvps.user) + .indexOf(this.userId); if (rsvpIndex !== -1) { // update existing rsvp entry if (Meteor.isServer) { // update the appropriate rsvp entry with $ - Parties.update( - {_id: partyId, "rsvps.user": this.userId}, - {$set: {"rsvps.$.rsvp": rsvp}}); + await Parties.updateAsync( + { _id: partyId, "rsvps.user": this.userId }, + { $set: { "rsvps.$.rsvp": rsvp } } + ); } else { // minimongo doesn't yet support $ in modifier. as a temporary // workaround, make a modifier that uses an index. this is // safe on the client since there's only one thread. - let modifier = {$set: {}}; + let modifier = { $set: {} }; modifier.$set["rsvps." + rsvpIndex + ".rsvp"] = rsvp; - Parties.update(partyId, modifier); + await Parties.updateAsync(partyId, modifier); } // Possible improvement: send email to the other people that are // coming to the party. } else { // add new rsvp entry - Parties.update(partyId, - {$push: {rsvps: {user: this.userId, rsvp: rsvp}}}); + await Parties.updateAsync(partyId, { + $push: { rsvps: { user: this.userId, rsvp: rsvp } }, + }); } - } + }, }); /////////////////////////////////////////////////////////////////////////////// // Users export const displayName = function (user) { - if (user.profile?.name) - return user.profile.name; + if (user.profile?.name) return user.profile.name; return user.emails[0].address; }; export const contactEmail = function (user) { - if (user.emails?.length) - return user.emails[0].address; + if (user.emails?.length) return user.emails[0].address; if (user.services?.facebook && user.services?.facebook.email) return user.services.facebook.email; return null; diff --git a/parties/package-lock.json b/parties/package-lock.json index 5b715dd..e200f76 100644 --- a/parties/package-lock.json +++ b/parties/package-lock.json @@ -97,6 +97,11 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -112,6 +117,269 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "requires": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + } + }, + "d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "requires": { + "internmap": "1 - 2" + } + }, + "d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==" + }, + "d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + } + }, + "d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "requires": { + "d3-path": "1 - 3" + } + }, + "d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==" + }, + "d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "requires": { + "d3-array": "^3.2.0" + } + }, + "d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "requires": { + "delaunator": "5" + } + }, + "d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==" + }, + "d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + } + }, + "d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "requires": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + } + }, + "d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==" + }, + "d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "requires": { + "d3-dsv": "1 - 3" + } + }, + "d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==" + }, + "d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "requires": { + "d3-array": "2.5.0 - 3" + } + }, + "d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==" + }, + "d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "requires": { + "d3-color": "1 - 3" + } + }, + "d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==" + }, + "d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==" + }, + "d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==" + }, + "d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==" + }, + "d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "requires": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + } + }, + "d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "requires": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + } + }, + "d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==" + }, + "d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "requires": { + "d3-path": "^3.1.0" + } + }, + "d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "requires": { + "d3-array": "2 - 3" + } + }, + "d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "requires": { + "d3-time": "1 - 3" + } + }, + "d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==" + }, + "d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "requires": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + } + }, + "d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "requires": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + } + }, "debug": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", @@ -120,6 +388,14 @@ "ms": "2.1.2" } }, + "delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "requires": { + "robust-predicates": "^3.0.2" + } + }, "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", @@ -185,6 +461,14 @@ "debug": "4" } }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -199,6 +483,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==" + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -278,7 +567,8 @@ "dependencies": { "asn1.js": { "version": "5.4.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -288,13 +578,15 @@ "dependencies": { "bn.js": { "version": "4.12.0", - "bundled": true + "resolved": false, + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, "assert": { "version": "2.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", "requires": { "es6-object-assign": "^1.1.0", "is-nan": "^1.2.1", @@ -304,23 +596,28 @@ }, "available-typed-arrays": { "version": "1.0.4", - "bundled": true + "resolved": false, + "integrity": "sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA==" }, "base64-js": { "version": "1.5.1", - "bundled": true + "resolved": false, + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, "bn.js": { "version": "5.2.0", - "bundled": true + "resolved": false, + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" }, "brorand": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "browserify-aes": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -332,7 +629,8 @@ }, "browserify-cipher": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -341,7 +639,8 @@ }, "browserify-des": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -351,7 +650,8 @@ }, "browserify-rsa": { "version": "4.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -359,7 +659,8 @@ }, "browserify-sign": { "version": "4.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -374,14 +675,16 @@ }, "browserify-zlib": { "version": "0.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "requires": { "pako": "~1.0.5" } }, "buffer": { "version": "6.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "requires": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -389,15 +692,18 @@ }, "buffer-xor": { "version": "1.0.3", - "bundled": true + "resolved": false, + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, "builtin-status-codes": { "version": "3.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, "call-bind": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "requires": { "function-bind": "^1.1.1", "get-intrinsic": "^1.0.2" @@ -405,7 +711,8 @@ }, "cipher-base": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -413,15 +720,18 @@ }, "console-browserify": { "version": "1.2.0", - "bundled": true + "resolved": false, + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, "constants-browserify": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "create-ecdh": { "version": "4.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -429,13 +739,15 @@ "dependencies": { "bn.js": { "version": "4.12.0", - "bundled": true + "resolved": false, + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, "create-hash": { "version": "1.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -446,7 +758,8 @@ }, "create-hmac": { "version": "1.1.7", - "bundled": true, + "resolved": false, + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -458,7 +771,8 @@ }, "crypto-browserify": { "version": "3.12.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -475,14 +789,16 @@ }, "define-properties": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "requires": { "object-keys": "^1.0.12" } }, "des.js": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -490,7 +806,8 @@ }, "diffie-hellman": { "version": "5.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -499,17 +816,20 @@ "dependencies": { "bn.js": { "version": "4.12.0", - "bundled": true + "resolved": false, + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, "domain-browser": { "version": "4.19.0", - "bundled": true + "resolved": false, + "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==" }, "elliptic": { "version": "6.5.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "requires": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -522,13 +842,15 @@ "dependencies": { "bn.js": { "version": "4.12.0", - "bundled": true + "resolved": false, + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, "es-abstract": { "version": "1.18.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", "requires": { "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", @@ -550,7 +872,8 @@ }, "es-to-primitive": { "version": "1.2.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -559,15 +882,18 @@ }, "es6-object-assign": { "version": "1.1.0", - "bundled": true + "resolved": false, + "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" }, "events": { "version": "3.3.0", - "bundled": true + "resolved": false, + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" }, "evp_bytestokey": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -575,15 +901,18 @@ }, "foreach": { "version": "2.0.5", - "bundled": true + "resolved": false, + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, "function-bind": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "get-intrinsic": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", @@ -592,22 +921,26 @@ }, "has": { "version": "1.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "requires": { "function-bind": "^1.1.1" } }, "has-bigints": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" }, "has-symbols": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" }, "hash-base": { "version": "3.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -616,7 +949,8 @@ }, "hash.js": { "version": "1.1.7", - "bundled": true, + "resolved": false, + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -624,7 +958,8 @@ }, "hmac-drbg": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -633,49 +968,59 @@ }, "https-browserify": { "version": "1.0.0", - "bundled": true + "resolved": false, + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "ieee754": { "version": "1.2.1", - "bundled": true + "resolved": false, + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "inherits": { "version": "2.0.4", - "bundled": true + "resolved": false, + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "is-arguments": { "version": "1.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", "requires": { "call-bind": "^1.0.0" } }, "is-bigint": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==" }, "is-boolean-object": { "version": "1.1.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", "requires": { "call-bind": "^1.0.2" } }, "is-callable": { "version": "1.2.3", - "bundled": true + "resolved": false, + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==" }, "is-date-object": { "version": "1.0.4", - "bundled": true + "resolved": false, + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==" }, "is-generator-function": { "version": "1.0.9", - "bundled": true + "resolved": false, + "integrity": "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==" }, "is-nan": { "version": "1.3.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -683,15 +1028,18 @@ }, "is-negative-zero": { "version": "2.0.1", - "bundled": true + "resolved": false, + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" }, "is-number-object": { "version": "1.0.5", - "bundled": true + "resolved": false, + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==" }, "is-regex": { "version": "1.1.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", "requires": { "call-bind": "^1.0.2", "has-symbols": "^1.0.2" @@ -699,18 +1047,21 @@ }, "is-string": { "version": "1.0.6", - "bundled": true + "resolved": false, + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==" }, "is-symbol": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { "has-symbols": "^1.0.2" } }, "is-typed-array": { "version": "1.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug==", "requires": { "available-typed-arrays": "^1.0.2", "call-bind": "^1.0.2", @@ -721,7 +1072,8 @@ }, "md5.js": { "version": "1.3.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -730,7 +1082,8 @@ }, "miller-rabin": { "version": "4.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -738,25 +1091,30 @@ "dependencies": { "bn.js": { "version": "4.12.0", - "bundled": true + "resolved": false, + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, "minimalistic-assert": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "minimalistic-crypto-utils": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "object-inspect": { "version": "1.10.3", - "bundled": true + "resolved": false, + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==" }, "object-is": { "version": "1.1.5", - "bundled": true, + "resolved": false, + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -764,11 +1122,13 @@ }, "object-keys": { "version": "1.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { "version": "4.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "requires": { "call-bind": "^1.0.0", "define-properties": "^1.1.3", @@ -778,15 +1138,18 @@ }, "os-browserify": { "version": "0.3.0", - "bundled": true + "resolved": false, + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, "pako": { "version": "1.0.11", - "bundled": true + "resolved": false, + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parse-asn1": { "version": "5.1.6", - "bundled": true, + "resolved": false, + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -797,11 +1160,13 @@ }, "path-browserify": { "version": "1.0.1", - "bundled": true + "resolved": false, + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" }, "pbkdf2": { "version": "3.1.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -812,11 +1177,13 @@ }, "process": { "version": "0.11.10", - "bundled": true + "resolved": false, + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "public-encrypt": { "version": "4.0.3", - "bundled": true, + "resolved": false, + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -828,32 +1195,38 @@ "dependencies": { "bn.js": { "version": "4.12.0", - "bundled": true + "resolved": false, + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" } } }, "punycode": { "version": "2.1.1", - "bundled": true + "resolved": false, + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "querystring": { "version": "0.2.0", - "bundled": true + "resolved": false, + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", - "bundled": true + "resolved": false, + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "randombytes": { "version": "2.1.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { "safe-buffer": "^5.1.0" } }, "randomfill": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -861,7 +1234,8 @@ }, "readable-stream": { "version": "3.6.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -870,7 +1244,8 @@ }, "ripemd160": { "version": "2.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -878,19 +1253,23 @@ }, "safe-buffer": { "version": "5.2.1", - "bundled": true + "resolved": false, + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, "safer-buffer": { "version": "2.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "setimmediate": { "version": "1.0.5", - "bundled": true + "resolved": false, + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "sha.js": { "version": "2.4.11", - "bundled": true, + "resolved": false, + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -898,7 +1277,8 @@ }, "stream-browserify": { "version": "3.0.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "requires": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -906,7 +1286,8 @@ }, "stream-http": { "version": "3.2.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.4", @@ -916,7 +1297,8 @@ }, "string.prototype.trimend": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -924,7 +1306,8 @@ }, "string.prototype.trimstart": { "version": "1.0.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -932,25 +1315,29 @@ }, "string_decoder": { "version": "1.3.0", - "bundled": true, + "resolved": false, + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "requires": { "safe-buffer": "~5.2.0" } }, "timers-browserify": { "version": "2.0.12", - "bundled": true, + "resolved": false, + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "requires": { "setimmediate": "^1.0.4" } }, "tty-browserify": { "version": "0.0.1", - "bundled": true + "resolved": false, + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, "unbox-primitive": { "version": "1.0.1", - "bundled": true, + "resolved": false, + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", "requires": { "function-bind": "^1.1.1", "has-bigints": "^1.0.1", @@ -960,7 +1347,8 @@ }, "url": { "version": "0.11.0", - "bundled": true, + "resolved": false, + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -968,13 +1356,15 @@ "dependencies": { "punycode": { "version": "1.3.2", - "bundled": true + "resolved": false, + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" } } }, "util": { "version": "0.12.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -986,15 +1376,18 @@ }, "util-deprecate": { "version": "1.0.2", - "bundled": true + "resolved": false, + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "vm-browserify": { "version": "1.1.2", - "bundled": true + "resolved": false, + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "which-boxed-primitive": { "version": "1.0.2", - "bundled": true, + "resolved": false, + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -1005,7 +1398,8 @@ }, "which-typed-array": { "version": "1.1.4", - "bundled": true, + "resolved": false, + "integrity": "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==", "requires": { "available-typed-arrays": "^1.0.2", "call-bind": "^1.0.0", @@ -1018,7 +1412,8 @@ }, "xtend": { "version": "4.0.2", - "bundled": true + "resolved": false, + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" } } }, @@ -1141,11 +1536,26 @@ "glob": "^7.1.3" } }, + "robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", diff --git a/parties/package.json b/parties/package.json index 7c46fb8..e81d668 100644 --- a/parties/package.json +++ b/parties/package.json @@ -11,6 +11,7 @@ "@babel/runtime": "^7.15.3", "bcrypt": "^5.0.1", "bootstrap": "^3.4.1", + "d3": "^7.9.0", "jquery": "^3.6.0", "lodash": "^4.17.21", "meteor-node-stubs": "^1.1.0"