From fcd859e08f16063b4a48e7338d81aa080d337244 Mon Sep 17 00:00:00 2001 From: karaok Date: Thu, 5 Nov 2020 16:13:38 +0000 Subject: [PATCH] Update and build dist --- js/dist/admin.js | 2 +- js/dist/admin.js.map | 2 +- js/dist/forum.js | 2 +- js/dist/forum.js.map | 2 +- js/package-lock.json | 1323 +++++++++++++++--------------------------- js/package.json | 6 +- 6 files changed, 485 insertions(+), 852 deletions(-) diff --git a/js/dist/admin.js b/js/dist/admin.js index 3adbd58..091563f 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,2 +1,2 @@ -module.exports=function(t){var n={};function a(s){if(n[s])return n[s].exports;var e=n[s]={i:s,l:!1,exports:{}};return t[s].call(e.exports,e,e.exports,a),e.l=!0,e.exports}return a.m=t,a.c=n,a.d=function(t,n,s){a.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:s})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,n){if(1&n&&(t=a(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(a.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var e in t)a.d(s,e,function(n){return t[n]}.bind(null,e));return s},a.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(n,"a",n),n},a.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},a.p="",a(a.s=26)}([function(t,n){t.exports=flarum.core.compat.Model},function(t,n){t.exports=flarum.core.compat["components/Button"]},function(t,n,a){"use strict";function s(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}a.d(n,"a",(function(){return s}))},function(t,n){t.exports=flarum.core.compat["components/Alert"]},function(t,n){t.exports=flarum.core.compat["helpers/punctuateSeries"]},function(t,n,a){"use strict";a.d(n,"a",(function(){return c}));var s=a(2),e=a(9),i=a.n(e),r=a(1),o=a.n(r),p=a(3),d=a.n(p),l=a(4),u=a.n(l),c=function(t){function n(){return t.apply(this,arguments)||this}Object(s.a)(n,t);var a=n.prototype;return a.init=function(){if(this.address=this.props.address,this.post=this.props.post,this.user=this.props.user||this.post&&this.post.user(),!this.user&&this.address){var t=app.store.getBy("banned_ips","address",this.address);t&&(this.user=t.user())}this.banOptions=[],(this.post&&this.post.ipAddress()||this.address)&&this.banOptions.push("only"),this.user&&this.banOptions.push("all"),this.banOption=m.prop(this.banOptions[0]),this.reason=m.prop(""),this.otherUsers={},this.loading=!1},a.className=function(){return"Modal--medium"},a.title=function(){return app.translator.trans("fof-ban-ips.lib.modal.title")},a.content=function(){var t=this,n=this.otherUsers[this.banOption()],a=n&&n.map((function(t){return t&&t.displayName()||app.translator.trans("core.lib.username.deleted_text")}));return m("div",{className:"Modal-body"},m("p",null,app.translator.trans("fof-ban-ips.lib.modal.ban_ip_confirmation")),m("div",{className:"Form-group"},this.banOptions.map((function(n){return m("div",null,m("input",{type:"radio",name:"ban-option",id:"ban-option-"+n,checked:t.banOption()===n,onclick:t.banOption.bind(t,n)})," ",m("label",{htmlFor:"ban-option-"+n},app.translator.trans("fof-ban-ips.forum.modal.ban_options_"+n+"_ip",{user:t.user,ip:t.address||t.post&&t.post.ipAddress()})))}))),m("div",{className:"Form-group"},m("label",{className:"label"},app.translator.trans("fof-ban-ips.lib.modal.reason_label")),m("input",{type:"text",className:"FormControl",bidi:this.reason})),n?n.length?d.a.component({children:app.translator.transChoice("fof-ban-ips.lib.modal.ban_ip_users",a.length,{users:u()(a)}),dismissible:!1}):d.a.component({children:app.translator.trans("fof-ban-ips.forum.modal.ban_ip_no_users"),dismissible:!1,type:"success"}):"",n&&m("br",null),m("div",{className:"Form-group"},m(o.a,{className:"Button Button--primary",type:"submit",loading:this.loading},a?app.translator.trans("fof-ban-ips.lib.modal.ban_button"):app.translator.trans("fof-ban-ips.lib.modal.check_button"))))},a.onsubmit=function(t){var n=this;if(t.preventDefault(),this.loading=!0,void 0===this.otherUsers[this.banOption()])return this.getOtherUsers();var a={reason:this.reason(),userId:this.user.id()};"only"===this.banOption()?(a.address=this.post.ipAddress(),app.store.createRecord("banned_ips").save(a).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this))):"all"===this.banOption()&&app.request({data:{data:{attributes:a}},url:""+app.forum.attribute("apiUrl")+this.user.apiEndpoint()+"/ban",method:"POST",errorHandler:this.onerror.bind(this)}).then((function(t){return app.store.pushPayload(t).forEach(n.done.bind(n))})).then(this.hide.bind(this)).catch((function(){})).then(this.loaded.bind(this))},a.getOtherUsers=function(){var t=this,n={};"only"===this.banOption()&&(n.ip=this.address||this.post.ipAddress()),app.request({data:n,url:app.forum.attribute("apiUrl")+"/fof/ban-ips/check-users/"+this.user.id(),method:"GET",errorHandler:this.onerror.bind(this)}).then((function(n){t.otherUsers[t.banOption()]=n.data.map((function(t){return app.store.pushObject(t)})).filter((function(t){return 0===t.bannedIPs().length})),t.loading=!1})).catch((function(){})).then(this.loaded.bind(this))},a.done=function(t){var n={type:"banned_ips",id:t.id()};this.post&&(this.post.data.relationships.banned_ip={data:n}),this.user.data.relationships.banned_ips||(this.user.data.relationships.banned_ips={data:[]}),this.user.data.relationships.banned_ips.data.push(n),this.user.data.attributes.isBanned=!0,app.store.pushObject(this.user.data)},n}(i.a)},function(t,n){t.exports=flarum.core.compat.extend},function(t,n,a){"use strict";a.d(n,"a",(function(){return l}));var s=a(2),e=a(1),i=a.n(e),r=a(3),o=a.n(r),p=a(4),d=a.n(p),l=(a(8),function(t){function n(){return t.apply(this,arguments)||this}Object(s.a)(n,t);var a=n.prototype;return a.title=function(){return app.translator.trans("fof-ban-ips.lib.modal.unban_title")},a.content=function(){var t=this,n=this.otherUsers[this.banOption()],a=n&&n.map((function(t){return t&&t.displayName()||app.translator.trans("core.lib.username.deleted_text")}));return this.bannedIPs?m("div",{className:"Modal-body"},o.a.component({children:app.translator.trans("fof-ban-ips.lib.modal.unbanned_ips",{ips:d()(this.bannedIPs)}),dismissible:!1,type:"success"})):m("div",{className:"Modal-body"},m("p",null,app.translator.trans("fof-ban-ips.lib.modal.unban_ip_confirmation")),m("div",{className:"Form-group"},this.banOptions.map((function(n){return m("div",null,m("input",{type:"radio",name:"ban-option",id:"ban-option-"+n,checked:t.banOption()===n,onclick:t.banOption.bind(t,n)})," ",m("label",{htmlFor:"ban-option-"+n},app.translator.trans("fof-ban-ips.lib.modal.unban_options_"+n+"_ip",{user:t.user,ip:t.address||t.post&&t.post.ipAddress()})))}))),n?n.length?o.a.component({children:app.translator.transChoice("fof-ban-ips.lib.modal.unban_ip_users",a.length,{users:d()(a)}),dismissible:!1}):o.a.component({children:app.translator.trans("fof-ban-ips.lib.modal.unban_ip_no_users"),dismissible:!1,type:"success"}):"",n&&m("br",null),m("div",{className:"Form-group"},m(i.a,{className:"Button Button--primary",type:"submit",loading:this.loading},a?app.translator.trans("fof-ban-ips.lib.modal.unban_button"):app.translator.trans("fof-ban-ips.lib.modal.check_button"))))},a.onsubmit=function(t){if(t.preventDefault(),this.loading=!0,void 0===this.otherUsers[this.banOption()])return this.getOtherUsers();var n={};if("only"===this.banOption()){n.address=this.address||this.post.ipAddress();var a=this.post?this.post.bannedIP():app.store.getBy("banned_ips","address",this.address);a.delete().then(this.done.bind(this,a)).catch(this.onerror.bind(this)).then(this.hide.bind(this))}else"all"===this.banOption()&&app.request({data:{data:{attributes:n}},url:""+app.forum.attribute("apiUrl")+this.user.apiEndpoint()+"/unban",method:"POST",errorHandler:this.onerror.bind(this)}).then(this.done.bind(this)).catch(this.onerror.bind(this)).then(this.hide.bind(this))},a.getOtherUsers=function(){var t=this,n={};"only"===this.banOption()&&(n.ip=this.address||this.post.ipAddress(),n.skipValidation=!0);var a=app.forum.attribute("apiUrl")+"/fof/ban-ips/check-users";this.user&&(a+="/"+this.user.id()),app.request({data:n,url:a,method:"GET",errorHandler:this.onerror.bind(this)}).then((function(n){var a=app.store.pushPayload(n);t.otherUsers[t.banOption()]=a.filter((function(t){return 1===t.bannedIPs().length})),t.loading=!1,m.lazyRedraw()})).catch((function(){})).then(this.loaded.bind(this))},a.done=function(t){this.loading=!1,this.post&&delete this.post.data.relationships.banned_ip,!this.user||this.user.data.relationships||t?this.user&&t instanceof app.store.models.banned_ips&&(this.user.data.relationships.banned_ips={data:this.user.data.relationships.banned_ips.data.filter((function(n){return n.id!==t.id()}))},this.user.data.attributes.isBanned=0!==this.user.data.relationships.banned_ips.data.length):(this.user.data.relationships.banned_ips.data=[],this.user.data.attributes.isBanned=!1),t&&Array.isArray(t.data)&&(this.bannedIPs=t.data.map((function(t){return t.attributes.address})),this.loading=!1,m.lazyRedraw())},a.hide=function(){t.prototype.hide.call(this),this.props.redraw||location.reload()},n}(a(5).a))},function(t,n){t.exports=flarum.core.compat["helpers/username"]},function(t,n){t.exports=flarum.core.compat["components/Modal"]},function(t,n,a){"use strict";a.d(n,"a",(function(){return o}));var s=a(2),e=a(0),i=a.n(e),r=a(12),o=function(t){function n(){return t.apply(this,arguments)||this}return Object(s.a)(n,t),n.prototype.apiEndpoint=function(){return"/fof/ban-ips"+(this.exists?"/"+this.id():"")},n}(a.n(r)()(i.a,{creator:i.a.hasOne("creator"),user:i.a.hasOne("user"),address:i.a.attribute("address"),reason:i.a.attribute("reason"),createdAt:i.a.attribute("createdAt",i.a.transformDate),deletedAt:i.a.attribute("deletedAt",i.a.transformDate)}))},function(t,n,a){"use strict";function s(){return(s=Object.assign||function(t){for(var n=1;n (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\n\n return (\n
\n

{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}

\n\n
\n {this.banOptions.map((key) => (\n
\n \n  \n \n
\n ))}\n
\n\n
\n \n \n
\n\n {otherUsersBanned\n ? otherUsersBanned.length\n ? Alert.component({\n children: app.translator.transChoice('fof-ban-ips.lib.modal.ban_ip_users', usernames.length, {\n users: punctuateSeries(usernames),\n }),\n dismissible: false,\n })\n : Alert.component({\n children: app.translator.trans('fof-ban-ips.forum.modal.ban_ip_no_users'),\n dismissible: false,\n type: 'success',\n })\n : ''}\n\n {otherUsersBanned &&
}\n\n
\n \n
\n
\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {\n reason: this.reason(),\n userId: this.user.id(),\n };\n\n if (this.banOption() === 'only') {\n attrs.address = this.post.ipAddress();\n\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this));\n } else if (this.banOption() === 'all') {\n app.request({\n data: {\n data: {\n attributes: attrs,\n },\n },\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/ban`,\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => app.store.pushPayload(res).forEach(this.done.bind(this)))\n .then(this.hide.bind(this))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n }\n\n getOtherUsers() {\n const data = {};\n\n if (this.banOption() === 'only') data.ip = this.address || this.post.ipAddress();\n\n app.request({\n data,\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users/${this.user.id()}`,\n method: 'GET',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => {\n this.otherUsers[this.banOption()] = res.data.map((e) => app.store.pushObject(e)).filter((e) => e.bannedIPs().length === 0);\n this.loading = false;\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n done(bannedIP) {\n const obj = {\n type: 'banned_ips',\n id: bannedIP.id(),\n };\n\n if (this.post) {\n this.post.data.relationships.banned_ip = {\n data: obj,\n };\n }\n\n if (!this.user.data.relationships.banned_ips)\n this.user.data.relationships.banned_ips = {\n data: [],\n };\n\n this.user.data.relationships.banned_ips.data.push(obj);\n this.user.data.attributes.isBanned = true;\n\n app.store.pushObject(this.user.data);\n }\n}\n","module.exports = flarum.core.compat['extend'];","import Button from 'flarum/components/Button';\nimport Alert from 'flarum/components/Alert';\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\nimport username from 'flarum/helpers/username';\n\nimport BanIPModal from './BanIPModal';\n\nexport default class UnbanIPModal extends BanIPModal {\n title() {\n return app.translator.trans('fof-ban-ips.lib.modal.unban_title');\n }\n\n content() {\n const otherUsers = this.otherUsers[this.banOption()];\n const usernames = otherUsers && otherUsers.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\n\n if (this.bannedIPs) {\n return (\n
\n {Alert.component({\n children: app.translator.trans('fof-ban-ips.lib.modal.unbanned_ips', { ips: punctuateSeries(this.bannedIPs) }),\n dismissible: false,\n type: 'success',\n })}\n
\n );\n }\n\n return (\n
\n

{app.translator.trans('fof-ban-ips.lib.modal.unban_ip_confirmation')}

\n\n
\n {this.banOptions.map((key) => (\n
\n \n  \n \n
\n ))}\n
\n\n {otherUsers\n ? otherUsers.length\n ? Alert.component({\n children: app.translator.transChoice('fof-ban-ips.lib.modal.unban_ip_users', usernames.length, {\n users: punctuateSeries(usernames),\n }),\n dismissible: false,\n })\n : Alert.component({\n children: app.translator.trans('fof-ban-ips.lib.modal.unban_ip_no_users'),\n dismissible: false,\n type: 'success',\n })\n : ''}\n\n {otherUsers &&
}\n\n
\n \n
\n
\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {};\n\n if (this.banOption() === 'only') {\n attrs.address = this.address || this.post.ipAddress();\n\n const bannedIP = this.post ? this.post.bannedIP() : app.store.getBy('banned_ips', 'address', this.address);\n\n bannedIP.delete().then(this.done.bind(this, bannedIP)).catch(this.onerror.bind(this)).then(this.hide.bind(this));\n } else if (this.banOption() === 'all') {\n app.request({\n data: {\n data: {\n attributes: attrs,\n },\n },\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/unban`,\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then(this.done.bind(this))\n .catch(this.onerror.bind(this))\n .then(this.hide.bind(this));\n }\n }\n\n getOtherUsers() {\n const data = {};\n\n if (this.banOption() === 'only') {\n data.ip = this.address || this.post.ipAddress();\n data.skipValidation = true;\n }\n\n let url = `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`;\n\n if (this.user) url += `/${this.user.id()}`;\n\n app.request({\n data,\n url: url,\n method: 'GET',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => {\n const data = app.store.pushPayload(res);\n\n this.otherUsers[this.banOption()] = data.filter((e) => e.bannedIPs().length === 1);\n this.loading = false;\n\n m.lazyRedraw();\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n done(bannedIP) {\n this.loading = false;\n\n if (this.post) delete this.post.data.relationships.banned_ip;\n\n if (this.user && !this.user.data.relationships && !bannedIP) {\n this.user.data.relationships.banned_ips.data = [];\n this.user.data.attributes.isBanned = false;\n } else if (this.user && bannedIP instanceof app.store.models.banned_ips) {\n this.user.data.relationships.banned_ips = {\n data: this.user.data.relationships.banned_ips.data.filter((e) => e.id !== bannedIP.id()),\n };\n this.user.data.attributes.isBanned = this.user.data.relationships.banned_ips.data.length !== 0;\n }\n\n if (bannedIP && Array.isArray(bannedIP.data)) {\n this.bannedIPs = bannedIP.data.map((b) => b.attributes.address);\n this.loading = false;\n\n m.lazyRedraw();\n }\n }\n\n hide() {\n super.hide();\n\n if (!this.props.redraw) {\n location.reload();\n }\n }\n}\n","module.exports = flarum.core.compat['helpers/username'];","module.exports = flarum.core.compat['components/Modal'];","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class BannedIP extends mixin(Model, {\n creator: Model.hasOne('creator'),\n user: Model.hasOne('user'),\n address: Model.attribute('address'),\n reason: Model.attribute('reason'),\n createdAt: Model.attribute('createdAt', Model.transformDate),\n deletedAt: Model.attribute('deletedAt', Model.transformDate),\n}) {\n apiEndpoint() {\n return `/fof/ban-ips${this.exists ? `/${this.id()}` : ''}`;\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = flarum.core.compat['utils/mixin'];","import BanIPModal from './components/BanIPModal';\nimport UnbanIPModal from './components/UnbanIPModal';\nimport BannedIP from './models/BannedIP';\n\nexport default {\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\n 'fof/ban-ips/components/UnbanIPModal': UnbanIPModal,\n 'fof/ban-ips/models/BannedIP': BannedIP,\n};\n","module.exports = flarum.core;","module.exports = flarum.core.compat['components/PermissionGrid'];","module.exports = flarum.core.compat['components/AdminNav'];","module.exports = flarum.core.compat['components/AdminLinkButton'];","module.exports = flarum.core.compat['components/LoadingIndicator'];","module.exports = flarum.core.compat['components/Placeholder'];","module.exports = flarum.core.compat['components/Page'];","module.exports = flarum.core.compat['Component'];","import Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport Alert from 'flarum/components/Alert';\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\nimport username from 'flarum/helpers/username';\n\nexport default class BanIPModal extends Modal {\n init() {\n this.address = m.prop('');\n this.reason = m.prop('');\n\n this.usersBanned = {};\n\n this.loading = false;\n }\n\n className() {\n return 'Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-ban-ips.lib.modal.title');\n }\n\n content() {\n const usersBanned = this.usersBanned[this.address()];\n const usernames = usersBanned && usersBanned.map(username);\n\n return (\n
\n

{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}

\n\n
\n \n \n
\n\n
\n \n \n
\n\n {usersBanned\n ? usersBanned.length\n ? Alert.component({\n children: app.translator.transChoice('fof-ban-ips.lib.modal.ban_ip_users', usernames.length, {\n users: punctuateSeries(usernames),\n }),\n dismissible: false,\n })\n : Alert.component({\n children: app.translator.trans('fof-ban-ips.admin.modal.ban_ip_no_users'),\n dismissible: false,\n type: 'success',\n })\n : ''}\n\n {usersBanned &&
}\n\n
\n \n {usernames\n ? app.translator.trans('fof-ban-ips.lib.modal.ban_button')\n : app.translator.trans('fof-ban-ips.lib.modal.check_button')}\n \n
\n
\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (!this.address()) return;\n\n this.loading = true;\n\n if (typeof this.usersBanned[this.address()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {\n address: this.address(),\n reason: this.reason(),\n };\n\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this), this.onerror.bind(this), this.loaded.bind(this));\n }\n\n getOtherUsers() {\n const data = {\n ip: this.address(),\n };\n\n app.request({\n data,\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`,\n method: 'GET',\n })\n .then((res) => {\n this.usersBanned[this.address()] = res.data.map((e) => app.store.pushObject(e));\n\n m.lazyRedraw();\n })\n .then(this.loaded.bind(this))\n .catch((e) => {\n this.onerror(e);\n this.loading = false;\n });\n }\n}\n","import Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport Alert from 'flarum/components/Alert';\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\nimport username from 'flarum/helpers/username';\n\nexport default class ChangeReasonModal extends Modal {\n init() {\n this.item = this.props.item;\n\n this.reason = m.prop(this.item.reason());\n }\n\n className() {\n return 'Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-ban-ips.admin.modal.update_title');\n }\n\n content() {\n return (\n
\n
\n \n \n
\n\n
\n \n
\n
\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n if (!this.reason()) return;\n\n this.loading = true;\n\n this.item\n .save({\n reason: this.reason(),\n })\n .then(this.hide.bind(this))\n .catch(this.onerror.bind(this))\n .then(this.loaded.bind(this));\n }\n}\n","import Component from 'flarum/Component';\nimport Button from 'flarum/components/Button';\nimport username from 'flarum/helpers/username';\n\nimport UnbanIPModal from '../../common/components/UnbanIPModal';\nimport ChangeReasonModal from './ChangeReasonModal';\n\nexport default class SettingsPageItem extends Component {\n init() {\n this.item = this.props.bannedIP;\n }\n\n view() {\n return (\n \n {this.item.id()}\n {username(this.item.creator())}\n {this.item.user() && username(this.item.user())}\n {this.item.address()}\n {this.item.reason()}\n {this.item.createdAt().toLocaleDateString()}\n \n
\n {Button.component({\n className: 'Button Button--warning',\n icon: 'fas fa-pencil-alt',\n disabled: this.item.creator() !== app.session.user,\n onclick: () => app.modal.show(new ChangeReasonModal({ item: this.item })),\n })}\n {Button.component({\n className: 'Button Button--danger',\n icon: 'fas fa-times',\n onclick: () => app.modal.show(new UnbanIPModal({ address: this.item.address(), redraw: true })),\n })}\n
\n \n \n );\n }\n}\n","import Button from 'flarum/components/Button';\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\nimport Placeholder from 'flarum/components/Placeholder';\nimport Page from 'flarum/components/Page';\n\nimport BanIPModal from './BanIPModal';\nimport SettingsPageItem from './SettingsPageItem';\n\nexport default class SettingsPage extends Page {\n init() {\n super.init();\n\n this.loading = true;\n\n this.page = 0;\n this.pageSize = 20;\n }\n\n config(isInitialized) {\n super.config(...arguments);\n\n if (isInitialized) return;\n\n this.refresh();\n }\n\n view() {\n let next, prev;\n\n if (this.nextResults === true) {\n next = Button.component({\n className: 'Button Button--PageList-next',\n icon: 'fas fa-angle-right',\n onclick: this.loadNext.bind(this),\n });\n }\n\n if (this.prevResults === true) {\n prev = Button.component({\n className: 'Button Button--PageList-prev',\n icon: 'fas fa-angle-left',\n onclick: this.loadPrev.bind(this),\n });\n }\n\n return (\n
\n
\n
\n

{app.translator.trans('fof-ban-ips.admin.nav.desc')}

\n {Button.component({\n className: 'Button Button--primary',\n icon: 'fas fa-plus',\n children: app.translator.trans('fof-ban-ips.admin.page.create_button'),\n onclick: () => app.modal.show(new BanIPModal()),\n })}\n
\n
\n
\n
\n
\n {this.loading ? (\n LoadingIndicator.component()\n ) : app.store.all('banned_ips').length ? (\n \n \n \n \n \n \n \n \n \n \n \n \n {app.store\n .all('banned_ips')\n .slice(this.page, this.page + this.pageSize)\n .map((bannedIP) => SettingsPageItem.component({ bannedIP }))}\n \n
#{app.translator.trans('fof-ban-ips.admin.page.creator_label')}{app.translator.trans('fof-ban-ips.admin.page.user_label')}{app.translator.trans('fof-ban-ips.admin.page.address_label')}{app.translator.trans('fof-ban-ips.admin.page.reason_label')}{app.translator.trans('fof-ban-ips.admin.page.date_label')}\n
\n ) : (\n
{Placeholder.component({ text: app.translator.trans('fof-ban-ips.admin.empty_text') })}
\n )}\n
\n
\n
\n {next}\n {prev}\n
\n
\n );\n }\n\n refresh() {\n return this.loadResults().then(this.parseResults.bind(this));\n }\n\n /**\n * Load a new page of Pages results.\n *\n * @param {Integer} page number.\n * @return {Promise}\n */\n loadResults() {\n const offset = this.page * this.pageSize;\n\n return app.store.find('fof/ban-ips', { page: { offset, limit: this.pageSize } });\n }\n\n /**\n * Load the next page of results.\n *\n * @public\n */\n loadNext() {\n if (this.nextResults === true) {\n this.page++;\n this.refresh();\n }\n }\n\n /**\n * Load the previous page of results.\n *\n * @public\n */\n loadPrev() {\n if (this.prevResults === true) {\n this.page--;\n this.refresh();\n }\n }\n\n /**\n * Parse results and append them to the page list.\n *\n * @param {Page[]} results\n * @return {Page[]}\n */\n parseResults(results) {\n this.loading = false;\n\n this.nextResults = !!results.payload.links.next;\n this.prevResults = !!results.payload.links.prev;\n\n m.lazyRedraw();\n }\n}\n","import compat from '../common/compat';\n\nimport BanIPModal from './components/BanIPModal';\nimport ChangeReasonModal from './components/ChangeReasonModal';\nimport SettingsPage from './components/SettingsPage';\nimport SettingsPageItem from './components/SettingsPageItem';\n\nexport default Object.assign(compat, {\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\n 'fof/ban-ips/components/ChangeReasonModal': ChangeReasonModal,\n 'fof/ban-ips/components/SettingsPage': SettingsPage,\n 'fof/ban-ips/components/SettingsPageItem': SettingsPageItem,\n});\n","import Model from 'flarum/Model';\n\nimport BannedIP from '../common/models/BannedIP';\nimport addPermissions from './addPermissions';\nimport addSettingsPage from './addSettingsPage';\n\napp.initializers.add('fof/ban-ips', () => {\n app.store.models.banned_ips = BannedIP;\n\n app.store.models.users.prototype.bannedIPs = Model.hasMany('banned_ips');\n\n addPermissions();\n addSettingsPage();\n});\n\n// Expose compat API\nimport extCompat from './compat';\nimport { compat } from '@flarum/core/admin';\n\nObject.assign(compat, extCompat);\n","import { extend } from 'flarum/extend';\nimport PermissionGrid from 'flarum/components/PermissionGrid';\n\nexport default () => {\n extend(PermissionGrid.prototype, 'moderateItems', (items) => {\n items.add('viewBannedIPList', {\n icon: 'fas fa-gavel',\n label: app.translator.trans('fof-ban-ips.admin.permissions.view_banned_ip_list_label'),\n permission: 'fof.ban-ips.viewBannedIPList',\n });\n\n items.add('banIP', {\n icon: 'fas fa-gavel',\n label: app.translator.trans('fof-ban-ips.admin.permissions.ban_ip_label'),\n permission: 'fof.ban-ips.banIP',\n });\n });\n};\n","import { extend } from 'flarum/extend';\nimport AdminNav from 'flarum/components/AdminNav';\nimport AdminLinkButton from 'flarum/components/AdminLinkButton';\n\nimport SettingsPage from './components/SettingsPage';\n\nexport default () => {\n app.routes['fof-ban-ips'] = { path: '/fof/ban-ips', component: SettingsPage.component() };\n\n app.extensionSettings['fof-ban-ips'] = () => m.route(app.route('fof-ban-ips'));\n\n extend(AdminNav.prototype, 'items', (items) => {\n items.add(\n 'fof-ban-ips',\n AdminLinkButton.component({\n href: app.route('fof-ban-ips'),\n icon: 'fas fa-gavel',\n children: app.translator.trans('fof-ban-ips.admin.nav.title'),\n description: app.translator.trans('fof-ban-ips.admin.nav.desc'),\n })\n );\n });\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@fof/ban-ips/webpack/bootstrap","webpack://@fof/ban-ips/external \"flarum.core.compat['Model']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Button']\"","webpack://@fof/ban-ips/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Alert']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['helpers/punctuateSeries']\"","webpack://@fof/ban-ips/./src/common/components/BanIPModal.js","webpack://@fof/ban-ips/external \"flarum.core.compat['utils/Stream']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['extend']\"","webpack://@fof/ban-ips/./src/common/components/UnbanIPModal.js","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Modal']\"","webpack://@fof/ban-ips/./src/common/models/BannedIP.js","webpack://@fof/ban-ips/external \"flarum.core.compat['helpers/username']\"","webpack://@fof/ban-ips/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/ban-ips/external \"flarum.core.compat['utils/mixin']\"","webpack://@fof/ban-ips/./src/common/compat.js","webpack://@fof/ban-ips/external \"flarum.core\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/PermissionGrid']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/AdminNav']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/AdminLinkButton']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/LoadingIndicator']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Placeholder']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Page']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['Component']\"","webpack://@fof/ban-ips/./src/admin/components/BanIPModal.js","webpack://@fof/ban-ips/./src/admin/components/ChangeReasonModal.js","webpack://@fof/ban-ips/./src/admin/components/SettingsPageItem.js","webpack://@fof/ban-ips/./src/admin/components/SettingsPage.js","webpack://@fof/ban-ips/./src/admin/compat.js","webpack://@fof/ban-ips/./src/admin/index.js","webpack://@fof/ban-ips/./src/admin/addPermissions.js","webpack://@fof/ban-ips/./src/admin/addSettingsPage.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_inheritsLoose","subClass","superClass","constructor","__proto__","BanIPModal","oninit","vnode","this","address","attrs","post","user","bannedIP","app","store","getBy","banOptions","ipAddress","push","banOption","Stream","reason","otherUsers","loading","className","title","translator","trans","content","otherUsersBanned","usernames","map","u","displayName","type","id","checked","onclick","htmlFor","ip","bidi","length","Alert","component","dismissible","transChoice","users","punctuateSeries","onsubmit","e","preventDefault","getOtherUsers","userId","createRecord","save","then","hide","onerror","loaded","request","body","data","attributes","url","forum","attribute","apiEndpoint","method","errorHandler","res","pushPayload","forEach","done","params","pushObject","filter","bannedIPs","obj","relationships","banned_ip","banned_ips","isBanned","Modal","UnbanIPModal","ips","skipValidation","redraw","models","Array","isArray","b","location","reload","BannedIP","exists","mixin","Model","creator","hasOne","createdAt","transformDate","deletedAt","_extends","assign","target","arguments","source","apply","usersBanned","username","required","pattern","disabled","ChangeReasonModal","item","SettingsPageItem","view","toLocaleDateString","Button","icon","session","modal","show","Component","SettingsPage","page","pageSize","oncreate","refresh","next","prev","nextResults","loadNext","prevResults","loadPrev","LoadingIndicator","all","style","width","textAlign","slice","Placeholder","text","loadResults","parseResults","offset","find","limit","results","payload","links","Page","initializers","add","hasMany","extend","PermissionGrid","items","label","permission","routes","path","extensionSettings","route","set","AdminNav","AdminLinkButton","href","description","extCompat"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 27);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['components/Button'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","module.exports = flarum.core.compat['components/Alert'];","module.exports = flarum.core.compat['helpers/punctuateSeries'];","import Modal from 'flarum/components/Modal';\r\nimport Button from 'flarum/components/Button';\r\nimport Alert from 'flarum/components/Alert';\r\nimport Stream from 'flarum/utils/Stream';\r\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\r\n\r\nexport default class BanIPModal extends Modal {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.address = this.attrs.address;\r\n this.post = this.attrs.post;\r\n this.user = this.attrs.user || (this.post && this.post.user());\r\n\r\n if (!this.user && this.address) {\r\n const bannedIP = app.store.getBy('banned_ips', 'address', this.address);\r\n\r\n if (bannedIP) this.user = bannedIP.user();\r\n }\r\n\r\n this.banOptions = [];\r\n\r\n if ((this.post && this.post.ipAddress()) || this.address) this.banOptions.push('only');\r\n if (this.user) this.banOptions.push('all');\r\n\r\n this.banOption = Stream(this.banOptions[0]);\r\n this.reason = Stream('');\r\n\r\n this.otherUsers = {};\r\n\r\n this.loading = false;\r\n }\r\n\r\n className() {\r\n return 'Modal--medium';\r\n }\r\n\r\n title() {\r\n return app.translator.trans('fof-ban-ips.lib.modal.title');\r\n }\r\n\r\n content() {\r\n const otherUsersBanned = this.otherUsers[this.banOption()];\r\n const usernames =\r\n otherUsersBanned && otherUsersBanned.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\r\n\r\n return (\r\n
\r\n

{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}

\r\n\r\n
\r\n {this.banOptions.map((key) => (\r\n
\r\n \r\n  \r\n \r\n
\r\n ))}\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n {otherUsersBanned\r\n ? otherUsersBanned.length\r\n ? Alert.component({\r\n dismissible: false,\r\n }, app.translator.transChoice('fof-ban-ips.lib.modal.ban_ip_users', usernames.length, {\r\n users: punctuateSeries(usernames),\r\n }))\r\n : Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.forum.modal.ban_ip_no_users'))\r\n : ''}\r\n\r\n {otherUsersBanned &&
}\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onsubmit(e) {\r\n e.preventDefault();\r\n\r\n this.loading = true;\r\n\r\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\r\n\r\n const attrs = {\r\n reason: this.reason(),\r\n userId: this.user.id(),\r\n };\r\n\r\n if (this.banOption() === 'only') {\r\n attrs.address = this.post.ipAddress();\r\n\r\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this));\r\n } else if (this.banOption() === 'all') {\r\n app.request({\r\n body: {\r\n data: {\r\n attributes: attrs,\r\n },\r\n },\r\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/ban`,\r\n method: 'POST',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then((res) => app.store.pushPayload(res).forEach(this.done.bind(this)))\r\n .then(this.hide.bind(this))\r\n .catch(() => { })\r\n .then(this.loaded.bind(this));\r\n }\r\n }\r\n\r\n getOtherUsers() {\r\n const data = {};\r\n\r\n if (this.banOption() === 'only') data.ip = this.address || this.post.ipAddress();\r\n\r\n app.request({\r\n params: data,\r\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users/${this.user.id()}`,\r\n method: 'GET',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then((res) => {\r\n this.otherUsers[this.banOption()] = res.data.map((e) => app.store.pushObject(e)).filter((e) => e.bannedIPs().length === 0);\r\n this.loading = false;\r\n })\r\n .catch(() => { })\r\n .then(this.loaded.bind(this));\r\n }\r\n\r\n done(bannedIP) {\r\n const obj = {\r\n type: 'banned_ips',\r\n id: bannedIP.id(),\r\n };\r\n\r\n if (this.post) {\r\n this.post.data.relationships.banned_ip = {\r\n data: obj,\r\n };\r\n }\r\n\r\n if (!this.user.data.relationships.banned_ips)\r\n this.user.data.relationships.banned_ips = {\r\n data: [],\r\n };\r\n\r\n this.user.data.relationships.banned_ips.data.push(obj);\r\n this.user.data.attributes.isBanned = true;\r\n\r\n app.store.pushObject(this.user.data);\r\n }\r\n}\r\n","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['extend'];","import Button from 'flarum/components/Button';\r\nimport Alert from 'flarum/components/Alert';\r\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\r\nimport username from 'flarum/helpers/username';\r\n\r\nimport BanIPModal from './BanIPModal';\r\n\r\nexport default class UnbanIPModal extends BanIPModal {\r\n title() {\r\n return app.translator.trans('fof-ban-ips.lib.modal.unban_title');\r\n }\r\n\r\n content() {\r\n const otherUsers = this.otherUsers[this.banOption()];\r\n const usernames = otherUsers && otherUsers.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\r\n\r\n if (this.bannedIPs) {\r\n return (\r\n
\r\n {Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.lib.modal.unbanned_ips', { ips: punctuateSeries(this.bannedIPs) }))}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

{app.translator.trans('fof-ban-ips.lib.modal.unban_ip_confirmation')}

\r\n\r\n
\r\n {this.banOptions.map((key) => (\r\n
\r\n \r\n  \r\n \r\n
\r\n ))}\r\n
\r\n\r\n {otherUsers\r\n ? otherUsers.length\r\n ? Alert.component({\r\n dismissible: false,\r\n }, app.translator.transChoice('fof-ban-ips.lib.modal.unban_ip_users', usernames.length, {\r\n users: punctuateSeries(usernames),\r\n }))\r\n : Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.lib.modal.unban_ip_no_users'))\r\n : ''}\r\n\r\n {otherUsers &&
}\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onsubmit(e) {\r\n e.preventDefault();\r\n\r\n this.loading = true;\r\n\r\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\r\n\r\n const attrs = {};\r\n\r\n if (this.banOption() === 'only') {\r\n attrs.address = this.address || this.post.ipAddress();\r\n\r\n const bannedIP = this.post ? this.post.bannedIP() : app.store.getBy('banned_ips', 'address', this.address);\r\n\r\n bannedIP.delete().then(this.done.bind(this, bannedIP)).catch(this.onerror.bind(this)).then(this.hide.bind(this));\r\n } else if (this.banOption() === 'all') {\r\n app.request({\r\n body: {\r\n data: {\r\n attributes: attrs,\r\n },\r\n },\r\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/unban`,\r\n method: 'POST',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then(this.done.bind(this))\r\n .catch(this.onerror.bind(this))\r\n .then(this.hide.bind(this));\r\n }\r\n }\r\n\r\n getOtherUsers() {\r\n const data = {};\r\n\r\n if (this.banOption() === 'only') {\r\n data.ip = this.address || this.post.ipAddress();\r\n data.skipValidation = true;\r\n }\r\n\r\n let url = `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`;\r\n\r\n if (this.user) url += `/${this.user.id()}`;\r\n\r\n app.request({\r\n params: data,\r\n url: url,\r\n method: 'GET',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then((res) => {\r\n const data = app.store.pushPayload(res);\r\n\r\n this.otherUsers[this.banOption()] = data.filter((e) => e.bannedIPs().length === 1);\r\n this.loading = false;\r\n\r\n m.redraw();\r\n })\r\n .catch(() => { })\r\n .then(this.loaded.bind(this));\r\n }\r\n\r\n done(bannedIP) {\r\n this.loading = false;\r\n\r\n if (this.post) delete this.post.data.relationships.banned_ip;\r\n\r\n if (this.user && !this.user.data.relationships && !bannedIP) {\r\n this.user.data.relationships.banned_ips.data = [];\r\n this.user.data.attributes.isBanned = false;\r\n } else if (this.user && bannedIP instanceof app.store.models.banned_ips) {\r\n this.user.data.relationships.banned_ips = {\r\n data: this.user.data.relationships.banned_ips.data.filter((e) => e.id !== bannedIP.id()),\r\n };\r\n this.user.data.attributes.isBanned = this.user.data.relationships.banned_ips.data.length !== 0;\r\n }\r\n\r\n if (bannedIP && Array.isArray(bannedIP.data)) {\r\n this.bannedIPs = bannedIP.data.map((b) => b.attributes.address);\r\n this.loading = false;\r\n\r\n m.redraw();\r\n }\r\n }\r\n\r\n hide() {\r\n super.hide();\r\n\r\n if (!this.attrs.redraw) {\r\n location.reload();\r\n }\r\n }\r\n}\r\n","module.exports = flarum.core.compat['components/Modal'];","import Model from 'flarum/Model';\r\nimport mixin from 'flarum/utils/mixin';\r\n\r\nexport default class BannedIP extends mixin(Model, {\r\n creator: Model.hasOne('creator'),\r\n user: Model.hasOne('user'),\r\n address: Model.attribute('address'),\r\n reason: Model.attribute('reason'),\r\n createdAt: Model.attribute('createdAt', Model.transformDate),\r\n deletedAt: Model.attribute('deletedAt', Model.transformDate),\r\n}) {\r\n apiEndpoint() {\r\n return `/fof/ban-ips${this.exists ? `/${this.id()}` : ''}`;\r\n }\r\n}\r\n","module.exports = flarum.core.compat['helpers/username'];","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = flarum.core.compat['utils/mixin'];","import BanIPModal from './components/BanIPModal';\r\nimport UnbanIPModal from './components/UnbanIPModal';\r\nimport BannedIP from './models/BannedIP';\r\n\r\nexport default {\r\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\r\n 'fof/ban-ips/components/UnbanIPModal': UnbanIPModal,\r\n 'fof/ban-ips/models/BannedIP': BannedIP,\r\n};\r\n","module.exports = flarum.core;","module.exports = flarum.core.compat['components/PermissionGrid'];","module.exports = flarum.core.compat['components/AdminNav'];","module.exports = flarum.core.compat['components/AdminLinkButton'];","module.exports = flarum.core.compat['components/LoadingIndicator'];","module.exports = flarum.core.compat['components/Placeholder'];","module.exports = flarum.core.compat['components/Page'];","module.exports = flarum.core.compat['Component'];","import Modal from 'flarum/components/Modal';\r\nimport Button from 'flarum/components/Button';\r\nimport Alert from 'flarum/components/Alert';\r\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\r\nimport username from 'flarum/helpers/username';\r\nimport Stream from 'flarum/utils/Stream';\r\n\r\nexport default class BanIPModal extends Modal {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.address = Stream('');\r\n this.reason = Stream('');\r\n\r\n this.usersBanned = {};\r\n\r\n this.loading = false;\r\n }\r\n\r\n className() {\r\n return 'Modal--medium';\r\n }\r\n\r\n title() {\r\n return app.translator.trans('fof-ban-ips.lib.modal.title');\r\n }\r\n\r\n content() {\r\n const usersBanned = this.usersBanned[this.address()];\r\n const usernames = usersBanned && usersBanned.map(username);\r\n\r\n return (\r\n
\r\n

{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}

\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n {usersBanned\r\n ? usersBanned.length\r\n ? Alert.component({\r\n dismissible: false,\r\n }, app.translator.transChoice('fof-ban-ips.lib.modal.ban_ip_users', usernames.length, {\r\n users: punctuateSeries(usernames),\r\n }))\r\n : Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.admin.modal.ban_ip_no_users'))\r\n : ''}\r\n\r\n {usersBanned &&
}\r\n\r\n
\r\n \r\n {usernames\r\n ? app.translator.trans('fof-ban-ips.lib.modal.ban_button')\r\n : app.translator.trans('fof-ban-ips.lib.modal.check_button')}\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onsubmit(e) {\r\n e.preventDefault();\r\n\r\n if (!this.address()) return;\r\n\r\n this.loading = true;\r\n\r\n if (typeof this.usersBanned[this.address()] === 'undefined') return this.getOtherUsers();\r\n\r\n const attrs = {\r\n address: this.address(),\r\n reason: this.reason(),\r\n };\r\n\r\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this), this.onerror.bind(this), this.loaded.bind(this));\r\n }\r\n\r\n getOtherUsers() {\r\n const data = {\r\n ip: this.address(),\r\n };\r\n\r\n app.request({\r\n params: data,\r\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`,\r\n method: 'GET',\r\n })\r\n .then((res) => {\r\n this.usersBanned[this.address()] = res.data.map((e) => app.store.pushObject(e));\r\n\r\n m.redraw();\r\n })\r\n .then(this.loaded.bind(this))\r\n .catch((e) => {\r\n this.onerror(e);\r\n this.loading = false;\r\n });\r\n }\r\n}\r\n","import Modal from 'flarum/components/Modal';\r\nimport Button from 'flarum/components/Button';\r\nimport Stream from 'flarum/utils/Stream';\r\n\r\nexport default class ChangeReasonModal extends Modal {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.item = this.attrs.item;\r\n\r\n this.reason = Stream(this.item.reason());\r\n }\r\n\r\n className() {\r\n return 'Modal--medium';\r\n }\r\n\r\n title() {\r\n return app.translator.trans('fof-ban-ips.admin.modal.update_title');\r\n }\r\n\r\n content() {\r\n return (\r\n
\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onsubmit(e) {\r\n e.preventDefault();\r\n\r\n if (!this.reason()) return;\r\n\r\n this.loading = true;\r\n\r\n this.item\r\n .save({\r\n reason: this.reason(),\r\n })\r\n .then(this.hide.bind(this))\r\n .catch(this.onerror.bind(this))\r\n .then(this.loaded.bind(this));\r\n }\r\n}\r\n","import Component from 'flarum/Component';\r\nimport Button from 'flarum/components/Button';\r\nimport username from 'flarum/helpers/username';\r\n\r\nimport UnbanIPModal from '../../common/components/UnbanIPModal';\r\nimport ChangeReasonModal from './ChangeReasonModal';\r\n\r\nexport default class SettingsPageItem extends Component {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.item = this.attrs.bannedIP;\r\n }\r\n\r\n view() {\r\n return (\r\n \r\n {this.item.id()}\r\n {username(this.item.creator())}\r\n {this.item.user() && username(this.item.user())}\r\n {this.item.address()}\r\n {this.item.reason()}\r\n {this.item.createdAt().toLocaleDateString()}\r\n \r\n
\r\n {Button.component({\r\n className: 'Button Button--warning',\r\n icon: 'fas fa-pencil-alt',\r\n disabled: this.item.creator() !== app.session.user,\r\n onclick: () => app.modal.show(ChangeReasonModal, { item: this.item }),\r\n })}\r\n {Button.component({\r\n className: 'Button Button--danger',\r\n icon: 'fas fa-times',\r\n onclick: () => app.modal.show(UnbanIPModal, { address: this.item.address(), redraw: true }),\r\n })}\r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n","import Button from 'flarum/components/Button';\r\nimport LoadingIndicator from 'flarum/components/LoadingIndicator';\r\nimport Placeholder from 'flarum/components/Placeholder';\r\nimport Page from 'flarum/components/Page';\r\n\r\nimport BanIPModal from './BanIPModal';\r\nimport SettingsPageItem from './SettingsPageItem';\r\n\r\nexport default class SettingsPage extends Page {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.loading = true;\r\n\r\n this.page = 0;\r\n this.pageSize = 20;\r\n }\r\n\r\n oncreate(vnode) {\r\n super.oncreate(vnode)\r\n\r\n this.refresh();\r\n }\r\n\r\n view() {\r\n let next, prev;\r\n\r\n if (this.nextResults === true) {\r\n next = Button.component({\r\n className: 'Button Button--PageList-next',\r\n icon: 'fas fa-angle-right',\r\n onclick: this.loadNext.bind(this),\r\n });\r\n }\r\n\r\n if (this.prevResults === true) {\r\n prev = Button.component({\r\n className: 'Button Button--PageList-prev',\r\n icon: 'fas fa-angle-left',\r\n onclick: this.loadPrev.bind(this),\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

{app.translator.trans('fof-ban-ips.admin.nav.desc')}

\r\n {Button.component({\r\n className: 'Button Button--primary',\r\n icon: 'fas fa-plus',\r\n onclick: () => app.modal.show(BanIPModal),\r\n }, app.translator.trans('fof-ban-ips.admin.page.create_button'))}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.loading ? (\r\n LoadingIndicator.component()\r\n ) : app.store.all('banned_ips').length ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {app.store\r\n .all('banned_ips')\r\n .slice(this.page, this.page + this.pageSize)\r\n .map((bannedIP) => SettingsPageItem.component({ bannedIP }))}\r\n \r\n
#{app.translator.trans('fof-ban-ips.admin.page.creator_label')}{app.translator.trans('fof-ban-ips.admin.page.user_label')}{app.translator.trans('fof-ban-ips.admin.page.address_label')}{app.translator.trans('fof-ban-ips.admin.page.reason_label')}{app.translator.trans('fof-ban-ips.admin.page.date_label')}\r\n
\r\n ) : (\r\n
{Placeholder.component({ text: app.translator.trans('fof-ban-ips.admin.empty_text') })}
\r\n )}\r\n
\r\n
\r\n
\r\n {next}\r\n {prev}\r\n
\r\n
\r\n );\r\n }\r\n\r\n refresh() {\r\n return this.loadResults().then(this.parseResults.bind(this));\r\n }\r\n\r\n /**\r\n * Load a new page of Pages results.\r\n *\r\n * @param {Integer} page number.\r\n * @return {Promise}\r\n */\r\n loadResults() {\r\n const offset = this.page * this.pageSize;\r\n\r\n return app.store.find('fof/ban-ips', { page: { offset, limit: this.pageSize } });\r\n }\r\n\r\n /**\r\n * Load the next page of results.\r\n *\r\n * @public\r\n */\r\n loadNext() {\r\n if (this.nextResults === true) {\r\n this.page++;\r\n this.refresh();\r\n }\r\n }\r\n\r\n /**\r\n * Load the previous page of results.\r\n *\r\n * @public\r\n */\r\n loadPrev() {\r\n if (this.prevResults === true) {\r\n this.page--;\r\n this.refresh();\r\n }\r\n }\r\n\r\n /**\r\n * Parse results and append them to the page list.\r\n *\r\n * @param {Page[]} results\r\n * @return {Page[]}\r\n */\r\n parseResults(results) {\r\n this.loading = false;\r\n\r\n this.nextResults = !!results.payload.links.next;\r\n this.prevResults = !!results.payload.links.prev;\r\n\r\n m.redraw();\r\n }\r\n}\r\n","import compat from '../common/compat';\r\n\r\nimport BanIPModal from './components/BanIPModal';\r\nimport ChangeReasonModal from './components/ChangeReasonModal';\r\nimport SettingsPage from './components/SettingsPage';\r\nimport SettingsPageItem from './components/SettingsPageItem';\r\n\r\nexport default Object.assign(compat, {\r\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\r\n 'fof/ban-ips/components/ChangeReasonModal': ChangeReasonModal,\r\n 'fof/ban-ips/components/SettingsPage': SettingsPage,\r\n 'fof/ban-ips/components/SettingsPageItem': SettingsPageItem,\r\n});\r\n","import Model from 'flarum/Model';\r\n\r\nimport BannedIP from '../common/models/BannedIP';\r\nimport addPermissions from './addPermissions';\r\nimport addSettingsPage from './addSettingsPage';\r\n\r\napp.initializers.add('fof/ban-ips', () => {\r\n app.store.models.banned_ips = BannedIP;\r\n\r\n app.store.models.users.prototype.bannedIPs = Model.hasMany('banned_ips');\r\n\r\n addPermissions();\r\n addSettingsPage();\r\n});\r\n\r\n// Expose compat API\r\nimport extCompat from './compat';\r\nimport { compat } from '@flarum/core/admin';\r\n\r\nObject.assign(compat, extCompat);\r\n","import { extend } from 'flarum/extend';\r\nimport PermissionGrid from 'flarum/components/PermissionGrid';\r\n\r\nexport default () => {\r\n extend(PermissionGrid.prototype, 'moderateItems', (items) => {\r\n items.add('viewBannedIPList', {\r\n icon: 'fas fa-gavel',\r\n label: app.translator.trans('fof-ban-ips.admin.permissions.view_banned_ip_list_label'),\r\n permission: 'fof.ban-ips.viewBannedIPList',\r\n });\r\n\r\n items.add('banIP', {\r\n icon: 'fas fa-gavel',\r\n label: app.translator.trans('fof-ban-ips.admin.permissions.ban_ip_label'),\r\n permission: 'fof.ban-ips.banIP',\r\n });\r\n });\r\n};\r\n","import { extend } from 'flarum/extend';\r\nimport AdminNav from 'flarum/components/AdminNav';\r\nimport AdminLinkButton from 'flarum/components/AdminLinkButton';\r\n\r\nimport SettingsPage from './components/SettingsPage';\r\n\r\nexport default () => {\r\n app.routes['fof-ban-ips'] = { path: '/fof/ban-ips', component: SettingsPage };\r\n\r\n app.extensionSettings['fof-ban-ips'] = () => m.route.set(app.route('fof-ban-ips'));\r\n\r\n extend(AdminNav.prototype, 'items', (items) => {\r\n items.add(\r\n 'fof-ban-ips',\r\n AdminLinkButton.component({\r\n href: app.route('fof-ban-ips'),\r\n icon: 'fas fa-gavel',\r\n description: app.translator.trans('fof-ban-ips.admin.nav.desc'),\r\n }, app.translator.trans('fof-ban-ips.admin.nav.title'))\r\n );\r\n });\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index 27c628c..627c6ba 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,2 +1,2 @@ -module.exports=function(t){var n={};function a(s){if(n[s])return n[s].exports;var e=n[s]={i:s,l:!1,exports:{}};return t[s].call(e.exports,e,e.exports,a),e.l=!0,e.exports}return a.m=t,a.c=n,a.d=function(t,n,s){a.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:s})},a.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.t=function(t,n){if(1&n&&(t=a(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var s=Object.create(null);if(a.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var e in t)a.d(s,e,function(n){return t[n]}.bind(null,e));return s},a.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return a.d(n,"a",n),n},a.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},a.p="",a(a.s=27)}([function(t,n){t.exports=flarum.core.compat.Model},function(t,n){t.exports=flarum.core.compat["components/Button"]},function(t,n,a){"use strict";function s(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}a.d(n,"a",(function(){return s}))},function(t,n){t.exports=flarum.core.compat["components/Alert"]},function(t,n){t.exports=flarum.core.compat["helpers/punctuateSeries"]},function(t,n,a){"use strict";a.d(n,"a",(function(){return c}));var s=a(2),e=a(9),r=a.n(e),i=a(1),o=a.n(i),p=a(3),d=a.n(p),u=a(4),l=a.n(u),c=function(t){function n(){return t.apply(this,arguments)||this}Object(s.a)(n,t);var a=n.prototype;return a.init=function(){if(this.address=this.props.address,this.post=this.props.post,this.user=this.props.user||this.post&&this.post.user(),!this.user&&this.address){var t=app.store.getBy("banned_ips","address",this.address);t&&(this.user=t.user())}this.banOptions=[],(this.post&&this.post.ipAddress()||this.address)&&this.banOptions.push("only"),this.user&&this.banOptions.push("all"),this.banOption=m.prop(this.banOptions[0]),this.reason=m.prop(""),this.otherUsers={},this.loading=!1},a.className=function(){return"Modal--medium"},a.title=function(){return app.translator.trans("fof-ban-ips.lib.modal.title")},a.content=function(){var t=this,n=this.otherUsers[this.banOption()],a=n&&n.map((function(t){return t&&t.displayName()||app.translator.trans("core.lib.username.deleted_text")}));return m("div",{className:"Modal-body"},m("p",null,app.translator.trans("fof-ban-ips.lib.modal.ban_ip_confirmation")),m("div",{className:"Form-group"},this.banOptions.map((function(n){return m("div",null,m("input",{type:"radio",name:"ban-option",id:"ban-option-"+n,checked:t.banOption()===n,onclick:t.banOption.bind(t,n)})," ",m("label",{htmlFor:"ban-option-"+n},app.translator.trans("fof-ban-ips.forum.modal.ban_options_"+n+"_ip",{user:t.user,ip:t.address||t.post&&t.post.ipAddress()})))}))),m("div",{className:"Form-group"},m("label",{className:"label"},app.translator.trans("fof-ban-ips.lib.modal.reason_label")),m("input",{type:"text",className:"FormControl",bidi:this.reason})),n?n.length?d.a.component({children:app.translator.transChoice("fof-ban-ips.lib.modal.ban_ip_users",a.length,{users:l()(a)}),dismissible:!1}):d.a.component({children:app.translator.trans("fof-ban-ips.forum.modal.ban_ip_no_users"),dismissible:!1,type:"success"}):"",n&&m("br",null),m("div",{className:"Form-group"},m(o.a,{className:"Button Button--primary",type:"submit",loading:this.loading},a?app.translator.trans("fof-ban-ips.lib.modal.ban_button"):app.translator.trans("fof-ban-ips.lib.modal.check_button"))))},a.onsubmit=function(t){var n=this;if(t.preventDefault(),this.loading=!0,void 0===this.otherUsers[this.banOption()])return this.getOtherUsers();var a={reason:this.reason(),userId:this.user.id()};"only"===this.banOption()?(a.address=this.post.ipAddress(),app.store.createRecord("banned_ips").save(a).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this))):"all"===this.banOption()&&app.request({data:{data:{attributes:a}},url:""+app.forum.attribute("apiUrl")+this.user.apiEndpoint()+"/ban",method:"POST",errorHandler:this.onerror.bind(this)}).then((function(t){return app.store.pushPayload(t).forEach(n.done.bind(n))})).then(this.hide.bind(this)).catch((function(){})).then(this.loaded.bind(this))},a.getOtherUsers=function(){var t=this,n={};"only"===this.banOption()&&(n.ip=this.address||this.post.ipAddress()),app.request({data:n,url:app.forum.attribute("apiUrl")+"/fof/ban-ips/check-users/"+this.user.id(),method:"GET",errorHandler:this.onerror.bind(this)}).then((function(n){t.otherUsers[t.banOption()]=n.data.map((function(t){return app.store.pushObject(t)})).filter((function(t){return 0===t.bannedIPs().length})),t.loading=!1})).catch((function(){})).then(this.loaded.bind(this))},a.done=function(t){var n={type:"banned_ips",id:t.id()};this.post&&(this.post.data.relationships.banned_ip={data:n}),this.user.data.relationships.banned_ips||(this.user.data.relationships.banned_ips={data:[]}),this.user.data.relationships.banned_ips.data.push(n),this.user.data.attributes.isBanned=!0,app.store.pushObject(this.user.data)},n}(r.a)},function(t,n){t.exports=flarum.core.compat.extend},function(t,n,a){"use strict";a.d(n,"a",(function(){return u}));var s=a(2),e=a(1),r=a.n(e),i=a(3),o=a.n(i),p=a(4),d=a.n(p),u=(a(8),function(t){function n(){return t.apply(this,arguments)||this}Object(s.a)(n,t);var a=n.prototype;return a.title=function(){return app.translator.trans("fof-ban-ips.lib.modal.unban_title")},a.content=function(){var t=this,n=this.otherUsers[this.banOption()],a=n&&n.map((function(t){return t&&t.displayName()||app.translator.trans("core.lib.username.deleted_text")}));return this.bannedIPs?m("div",{className:"Modal-body"},o.a.component({children:app.translator.trans("fof-ban-ips.lib.modal.unbanned_ips",{ips:d()(this.bannedIPs)}),dismissible:!1,type:"success"})):m("div",{className:"Modal-body"},m("p",null,app.translator.trans("fof-ban-ips.lib.modal.unban_ip_confirmation")),m("div",{className:"Form-group"},this.banOptions.map((function(n){return m("div",null,m("input",{type:"radio",name:"ban-option",id:"ban-option-"+n,checked:t.banOption()===n,onclick:t.banOption.bind(t,n)})," ",m("label",{htmlFor:"ban-option-"+n},app.translator.trans("fof-ban-ips.lib.modal.unban_options_"+n+"_ip",{user:t.user,ip:t.address||t.post&&t.post.ipAddress()})))}))),n?n.length?o.a.component({children:app.translator.transChoice("fof-ban-ips.lib.modal.unban_ip_users",a.length,{users:d()(a)}),dismissible:!1}):o.a.component({children:app.translator.trans("fof-ban-ips.lib.modal.unban_ip_no_users"),dismissible:!1,type:"success"}):"",n&&m("br",null),m("div",{className:"Form-group"},m(r.a,{className:"Button Button--primary",type:"submit",loading:this.loading},a?app.translator.trans("fof-ban-ips.lib.modal.unban_button"):app.translator.trans("fof-ban-ips.lib.modal.check_button"))))},a.onsubmit=function(t){if(t.preventDefault(),this.loading=!0,void 0===this.otherUsers[this.banOption()])return this.getOtherUsers();var n={};if("only"===this.banOption()){n.address=this.address||this.post.ipAddress();var a=this.post?this.post.bannedIP():app.store.getBy("banned_ips","address",this.address);a.delete().then(this.done.bind(this,a)).catch(this.onerror.bind(this)).then(this.hide.bind(this))}else"all"===this.banOption()&&app.request({data:{data:{attributes:n}},url:""+app.forum.attribute("apiUrl")+this.user.apiEndpoint()+"/unban",method:"POST",errorHandler:this.onerror.bind(this)}).then(this.done.bind(this)).catch(this.onerror.bind(this)).then(this.hide.bind(this))},a.getOtherUsers=function(){var t=this,n={};"only"===this.banOption()&&(n.ip=this.address||this.post.ipAddress(),n.skipValidation=!0);var a=app.forum.attribute("apiUrl")+"/fof/ban-ips/check-users";this.user&&(a+="/"+this.user.id()),app.request({data:n,url:a,method:"GET",errorHandler:this.onerror.bind(this)}).then((function(n){var a=app.store.pushPayload(n);t.otherUsers[t.banOption()]=a.filter((function(t){return 1===t.bannedIPs().length})),t.loading=!1,m.lazyRedraw()})).catch((function(){})).then(this.loaded.bind(this))},a.done=function(t){this.loading=!1,this.post&&delete this.post.data.relationships.banned_ip,!this.user||this.user.data.relationships||t?this.user&&t instanceof app.store.models.banned_ips&&(this.user.data.relationships.banned_ips={data:this.user.data.relationships.banned_ips.data.filter((function(n){return n.id!==t.id()}))},this.user.data.attributes.isBanned=0!==this.user.data.relationships.banned_ips.data.length):(this.user.data.relationships.banned_ips.data=[],this.user.data.attributes.isBanned=!1),t&&Array.isArray(t.data)&&(this.bannedIPs=t.data.map((function(t){return t.attributes.address})),this.loading=!1,m.lazyRedraw())},a.hide=function(){t.prototype.hide.call(this),this.props.redraw||location.reload()},n}(a(5).a))},function(t,n){t.exports=flarum.core.compat["helpers/username"]},function(t,n){t.exports=flarum.core.compat["components/Modal"]},function(t,n,a){"use strict";a.d(n,"a",(function(){return o}));var s=a(2),e=a(0),r=a.n(e),i=a(12),o=function(t){function n(){return t.apply(this,arguments)||this}return Object(s.a)(n,t),n.prototype.apiEndpoint=function(){return"/fof/ban-ips"+(this.exists?"/"+this.id():"")},n}(a.n(i)()(r.a,{creator:r.a.hasOne("creator"),user:r.a.hasOne("user"),address:r.a.attribute("address"),reason:r.a.attribute("reason"),createdAt:r.a.attribute("createdAt",r.a.transformDate),deletedAt:r.a.attribute("deletedAt",r.a.transformDate)}))},function(t,n,a){"use strict";function s(){return(s=Object.assign||function(t){for(var n=1;n (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\n\n return (\n
\n

{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}

\n\n
\n {this.banOptions.map((key) => (\n
\n \n  \n \n
\n ))}\n
\n\n
\n \n \n
\n\n {otherUsersBanned\n ? otherUsersBanned.length\n ? Alert.component({\n children: app.translator.transChoice('fof-ban-ips.lib.modal.ban_ip_users', usernames.length, {\n users: punctuateSeries(usernames),\n }),\n dismissible: false,\n })\n : Alert.component({\n children: app.translator.trans('fof-ban-ips.forum.modal.ban_ip_no_users'),\n dismissible: false,\n type: 'success',\n })\n : ''}\n\n {otherUsersBanned &&
}\n\n
\n \n
\n
\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {\n reason: this.reason(),\n userId: this.user.id(),\n };\n\n if (this.banOption() === 'only') {\n attrs.address = this.post.ipAddress();\n\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this));\n } else if (this.banOption() === 'all') {\n app.request({\n data: {\n data: {\n attributes: attrs,\n },\n },\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/ban`,\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => app.store.pushPayload(res).forEach(this.done.bind(this)))\n .then(this.hide.bind(this))\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n }\n\n getOtherUsers() {\n const data = {};\n\n if (this.banOption() === 'only') data.ip = this.address || this.post.ipAddress();\n\n app.request({\n data,\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users/${this.user.id()}`,\n method: 'GET',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => {\n this.otherUsers[this.banOption()] = res.data.map((e) => app.store.pushObject(e)).filter((e) => e.bannedIPs().length === 0);\n this.loading = false;\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n done(bannedIP) {\n const obj = {\n type: 'banned_ips',\n id: bannedIP.id(),\n };\n\n if (this.post) {\n this.post.data.relationships.banned_ip = {\n data: obj,\n };\n }\n\n if (!this.user.data.relationships.banned_ips)\n this.user.data.relationships.banned_ips = {\n data: [],\n };\n\n this.user.data.relationships.banned_ips.data.push(obj);\n this.user.data.attributes.isBanned = true;\n\n app.store.pushObject(this.user.data);\n }\n}\n","module.exports = flarum.core.compat['extend'];","import Button from 'flarum/components/Button';\nimport Alert from 'flarum/components/Alert';\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\nimport username from 'flarum/helpers/username';\n\nimport BanIPModal from './BanIPModal';\n\nexport default class UnbanIPModal extends BanIPModal {\n title() {\n return app.translator.trans('fof-ban-ips.lib.modal.unban_title');\n }\n\n content() {\n const otherUsers = this.otherUsers[this.banOption()];\n const usernames = otherUsers && otherUsers.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\n\n if (this.bannedIPs) {\n return (\n
\n {Alert.component({\n children: app.translator.trans('fof-ban-ips.lib.modal.unbanned_ips', { ips: punctuateSeries(this.bannedIPs) }),\n dismissible: false,\n type: 'success',\n })}\n
\n );\n }\n\n return (\n
\n

{app.translator.trans('fof-ban-ips.lib.modal.unban_ip_confirmation')}

\n\n
\n {this.banOptions.map((key) => (\n
\n \n  \n \n
\n ))}\n
\n\n {otherUsers\n ? otherUsers.length\n ? Alert.component({\n children: app.translator.transChoice('fof-ban-ips.lib.modal.unban_ip_users', usernames.length, {\n users: punctuateSeries(usernames),\n }),\n dismissible: false,\n })\n : Alert.component({\n children: app.translator.trans('fof-ban-ips.lib.modal.unban_ip_no_users'),\n dismissible: false,\n type: 'success',\n })\n : ''}\n\n {otherUsers &&
}\n\n
\n \n
\n
\n );\n }\n\n onsubmit(e) {\n e.preventDefault();\n\n this.loading = true;\n\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\n\n const attrs = {};\n\n if (this.banOption() === 'only') {\n attrs.address = this.address || this.post.ipAddress();\n\n const bannedIP = this.post ? this.post.bannedIP() : app.store.getBy('banned_ips', 'address', this.address);\n\n bannedIP.delete().then(this.done.bind(this, bannedIP)).catch(this.onerror.bind(this)).then(this.hide.bind(this));\n } else if (this.banOption() === 'all') {\n app.request({\n data: {\n data: {\n attributes: attrs,\n },\n },\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/unban`,\n method: 'POST',\n errorHandler: this.onerror.bind(this),\n })\n .then(this.done.bind(this))\n .catch(this.onerror.bind(this))\n .then(this.hide.bind(this));\n }\n }\n\n getOtherUsers() {\n const data = {};\n\n if (this.banOption() === 'only') {\n data.ip = this.address || this.post.ipAddress();\n data.skipValidation = true;\n }\n\n let url = `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`;\n\n if (this.user) url += `/${this.user.id()}`;\n\n app.request({\n data,\n url: url,\n method: 'GET',\n errorHandler: this.onerror.bind(this),\n })\n .then((res) => {\n const data = app.store.pushPayload(res);\n\n this.otherUsers[this.banOption()] = data.filter((e) => e.bannedIPs().length === 1);\n this.loading = false;\n\n m.lazyRedraw();\n })\n .catch(() => {})\n .then(this.loaded.bind(this));\n }\n\n done(bannedIP) {\n this.loading = false;\n\n if (this.post) delete this.post.data.relationships.banned_ip;\n\n if (this.user && !this.user.data.relationships && !bannedIP) {\n this.user.data.relationships.banned_ips.data = [];\n this.user.data.attributes.isBanned = false;\n } else if (this.user && bannedIP instanceof app.store.models.banned_ips) {\n this.user.data.relationships.banned_ips = {\n data: this.user.data.relationships.banned_ips.data.filter((e) => e.id !== bannedIP.id()),\n };\n this.user.data.attributes.isBanned = this.user.data.relationships.banned_ips.data.length !== 0;\n }\n\n if (bannedIP && Array.isArray(bannedIP.data)) {\n this.bannedIPs = bannedIP.data.map((b) => b.attributes.address);\n this.loading = false;\n\n m.lazyRedraw();\n }\n }\n\n hide() {\n super.hide();\n\n if (!this.props.redraw) {\n location.reload();\n }\n }\n}\n","module.exports = flarum.core.compat['helpers/username'];","module.exports = flarum.core.compat['components/Modal'];","import Model from 'flarum/Model';\nimport mixin from 'flarum/utils/mixin';\n\nexport default class BannedIP extends mixin(Model, {\n creator: Model.hasOne('creator'),\n user: Model.hasOne('user'),\n address: Model.attribute('address'),\n reason: Model.attribute('reason'),\n createdAt: Model.attribute('createdAt', Model.transformDate),\n deletedAt: Model.attribute('deletedAt', Model.transformDate),\n}) {\n apiEndpoint() {\n return `/fof/ban-ips${this.exists ? `/${this.id()}` : ''}`;\n }\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = flarum.core.compat['utils/mixin'];","import BanIPModal from './components/BanIPModal';\nimport UnbanIPModal from './components/UnbanIPModal';\nimport BannedIP from './models/BannedIP';\n\nexport default {\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\n 'fof/ban-ips/components/UnbanIPModal': UnbanIPModal,\n 'fof/ban-ips/models/BannedIP': BannedIP,\n};\n","module.exports = flarum.core;","module.exports = flarum.core.compat['utils/PostControls'];","module.exports = flarum.core.compat['utils/UserControls'];","module.exports = flarum.core.compat['models/User'];","module.exports = flarum.core.compat['components/Badge'];","import Model from 'flarum/Model';\n\nimport addBanIPControl from './addBanIPControl';\nimport BannedIP from '../common/models/BannedIP';\nimport addBannedBadge from './addBannedBadge';\n\napp.initializers.add('fof/ban-ips', () => {\n app.store.models.posts.prototype.canBanIP = Model.attribute('canBanIP');\n app.store.models.posts.prototype.ipAddress = Model.attribute('ipAddress');\n app.store.models.posts.prototype.bannedIP = Model.hasOne('banned_ip');\n\n app.store.models.users.prototype.canBanIP = Model.attribute('canBanIP');\n app.store.models.users.prototype.isBanned = Model.attribute('isBanned');\n app.store.models.users.prototype.bannedIPs = Model.hasMany('banned_ips');\n\n app.store.models.banned_ips = BannedIP;\n\n addBanIPControl();\n addBannedBadge();\n});\n\n// Expose compat API\nimport extCompat from '../common/compat';\nimport { compat } from '@flarum/core/forum';\n\nObject.assign(compat, extCompat);\n","import { extend } from 'flarum/extend';\nimport PostControls from 'flarum/utils/PostControls';\nimport UserControls from 'flarum/utils/UserControls';\nimport Button from 'flarum/components/Button';\n\nimport BanIPModal from '../common/components/BanIPModal';\nimport UnbanIPModal from '../common/components/UnbanIPModal';\n\nexport default () => {\n extend(PostControls, 'userControls', function (items, post) {\n if (!post || !post.user()) return;\n\n const isBanned = post.user().isBanned();\n const prefix = isBanned ? 'un' : '';\n\n // Removes ability to ban thyself and also does permission check.\n if (!post.canBanIP() || post.isHidden() || post.user() === app.session.user || post.contentType() !== 'comment') return;\n\n items.add(\n `${prefix}ban`,\n Button.component({\n children: app.translator.trans(`fof-ban-ips.forum.${prefix}ban_ip_button`),\n icon: 'fas fa-gavel',\n onclick: () => app.modal.show(isBanned ? new UnbanIPModal({ post }) : new BanIPModal({ post })),\n })\n );\n });\n\n extend(UserControls, 'moderationControls', function (items, user) {\n if (!user.canBanIP() || user === app.session.user) return;\n\n const isBanned = user.isBanned();\n const prefix = isBanned ? 'un' : '';\n\n items.add(\n `${prefix}ban`,\n Button.component({\n children: app.translator.trans(`fof-ban-ips.forum.user_controls.${prefix}ban_button`),\n icon: 'fas fa-gavel',\n onclick: () => app.modal.show(isBanned ? new UnbanIPModal({ user }) : new BanIPModal({ user })),\n })\n );\n });\n};\n","import { extend } from 'flarum/extend';\nimport User from 'flarum/models/User';\nimport Badge from 'flarum/components/Badge';\n\nexport default () => {\n extend(User.prototype, 'badges', function (items) {\n if (this.isBanned()) {\n items.add(\n 'banned',\n Badge.component({\n icon: 'fas fa-gavel',\n type: 'banned',\n label: app.translator.trans('fof-ban-ips.forum.user_badge.banned_tooltip'),\n })\n );\n }\n });\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@fof/ban-ips/webpack/bootstrap","webpack://@fof/ban-ips/external \"flarum.core.compat['Model']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Button']\"","webpack://@fof/ban-ips/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Alert']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['helpers/punctuateSeries']\"","webpack://@fof/ban-ips/./src/common/components/BanIPModal.js","webpack://@fof/ban-ips/external \"flarum.core.compat['utils/Stream']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['extend']\"","webpack://@fof/ban-ips/./src/common/components/UnbanIPModal.js","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Modal']\"","webpack://@fof/ban-ips/./src/common/models/BannedIP.js","webpack://@fof/ban-ips/external \"flarum.core.compat['helpers/username']\"","webpack://@fof/ban-ips/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/ban-ips/external \"flarum.core.compat['utils/mixin']\"","webpack://@fof/ban-ips/./src/common/compat.js","webpack://@fof/ban-ips/external \"flarum.core\"","webpack://@fof/ban-ips/external \"flarum.core.compat['utils/PostControls']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['utils/UserControls']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['models/User']\"","webpack://@fof/ban-ips/external \"flarum.core.compat['components/Badge']\"","webpack://@fof/ban-ips/./src/forum/index.js","webpack://@fof/ban-ips/./src/forum/addBanIPControl.js","webpack://@fof/ban-ips/./src/forum/addBannedBadge.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_inheritsLoose","subClass","superClass","constructor","__proto__","BanIPModal","oninit","vnode","this","address","attrs","post","user","bannedIP","app","store","getBy","banOptions","ipAddress","push","banOption","Stream","reason","otherUsers","loading","className","title","translator","trans","content","otherUsersBanned","usernames","map","u","displayName","type","id","checked","onclick","htmlFor","ip","bidi","length","Alert","component","dismissible","transChoice","users","punctuateSeries","onsubmit","e","preventDefault","getOtherUsers","userId","createRecord","save","then","hide","onerror","loaded","request","body","data","attributes","url","forum","attribute","apiEndpoint","method","errorHandler","res","pushPayload","forEach","done","params","pushObject","filter","bannedIPs","obj","relationships","banned_ip","banned_ips","isBanned","Modal","UnbanIPModal","ips","skipValidation","redraw","models","Array","isArray","b","location","reload","BannedIP","exists","mixin","Model","creator","hasOne","createdAt","transformDate","deletedAt","_extends","assign","target","arguments","source","apply","initializers","add","posts","canBanIP","hasMany","extend","PostControls","items","prefix","isHidden","session","contentType","Button","icon","modal","show","UserControls","User","Badge","label","extCompat"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 28);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['components/Button'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","module.exports = flarum.core.compat['components/Alert'];","module.exports = flarum.core.compat['helpers/punctuateSeries'];","import Modal from 'flarum/components/Modal';\r\nimport Button from 'flarum/components/Button';\r\nimport Alert from 'flarum/components/Alert';\r\nimport Stream from 'flarum/utils/Stream';\r\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\r\n\r\nexport default class BanIPModal extends Modal {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.address = this.attrs.address;\r\n this.post = this.attrs.post;\r\n this.user = this.attrs.user || (this.post && this.post.user());\r\n\r\n if (!this.user && this.address) {\r\n const bannedIP = app.store.getBy('banned_ips', 'address', this.address);\r\n\r\n if (bannedIP) this.user = bannedIP.user();\r\n }\r\n\r\n this.banOptions = [];\r\n\r\n if ((this.post && this.post.ipAddress()) || this.address) this.banOptions.push('only');\r\n if (this.user) this.banOptions.push('all');\r\n\r\n this.banOption = Stream(this.banOptions[0]);\r\n this.reason = Stream('');\r\n\r\n this.otherUsers = {};\r\n\r\n this.loading = false;\r\n }\r\n\r\n className() {\r\n return 'Modal--medium';\r\n }\r\n\r\n title() {\r\n return app.translator.trans('fof-ban-ips.lib.modal.title');\r\n }\r\n\r\n content() {\r\n const otherUsersBanned = this.otherUsers[this.banOption()];\r\n const usernames =\r\n otherUsersBanned && otherUsersBanned.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\r\n\r\n return (\r\n
\r\n

{app.translator.trans('fof-ban-ips.lib.modal.ban_ip_confirmation')}

\r\n\r\n
\r\n {this.banOptions.map((key) => (\r\n
\r\n \r\n  \r\n \r\n
\r\n ))}\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n {otherUsersBanned\r\n ? otherUsersBanned.length\r\n ? Alert.component({\r\n dismissible: false,\r\n }, app.translator.transChoice('fof-ban-ips.lib.modal.ban_ip_users', usernames.length, {\r\n users: punctuateSeries(usernames),\r\n }))\r\n : Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.forum.modal.ban_ip_no_users'))\r\n : ''}\r\n\r\n {otherUsersBanned &&
}\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onsubmit(e) {\r\n e.preventDefault();\r\n\r\n this.loading = true;\r\n\r\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\r\n\r\n const attrs = {\r\n reason: this.reason(),\r\n userId: this.user.id(),\r\n };\r\n\r\n if (this.banOption() === 'only') {\r\n attrs.address = this.post.ipAddress();\r\n\r\n app.store.createRecord('banned_ips').save(attrs).then(this.hide.bind(this)).catch(this.onerror.bind(this)).then(this.loaded.bind(this));\r\n } else if (this.banOption() === 'all') {\r\n app.request({\r\n body: {\r\n data: {\r\n attributes: attrs,\r\n },\r\n },\r\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/ban`,\r\n method: 'POST',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then((res) => app.store.pushPayload(res).forEach(this.done.bind(this)))\r\n .then(this.hide.bind(this))\r\n .catch(() => { })\r\n .then(this.loaded.bind(this));\r\n }\r\n }\r\n\r\n getOtherUsers() {\r\n const data = {};\r\n\r\n if (this.banOption() === 'only') data.ip = this.address || this.post.ipAddress();\r\n\r\n app.request({\r\n params: data,\r\n url: `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users/${this.user.id()}`,\r\n method: 'GET',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then((res) => {\r\n this.otherUsers[this.banOption()] = res.data.map((e) => app.store.pushObject(e)).filter((e) => e.bannedIPs().length === 0);\r\n this.loading = false;\r\n })\r\n .catch(() => { })\r\n .then(this.loaded.bind(this));\r\n }\r\n\r\n done(bannedIP) {\r\n const obj = {\r\n type: 'banned_ips',\r\n id: bannedIP.id(),\r\n };\r\n\r\n if (this.post) {\r\n this.post.data.relationships.banned_ip = {\r\n data: obj,\r\n };\r\n }\r\n\r\n if (!this.user.data.relationships.banned_ips)\r\n this.user.data.relationships.banned_ips = {\r\n data: [],\r\n };\r\n\r\n this.user.data.relationships.banned_ips.data.push(obj);\r\n this.user.data.attributes.isBanned = true;\r\n\r\n app.store.pushObject(this.user.data);\r\n }\r\n}\r\n","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['extend'];","import Button from 'flarum/components/Button';\r\nimport Alert from 'flarum/components/Alert';\r\nimport punctuateSeries from 'flarum/helpers/punctuateSeries';\r\nimport username from 'flarum/helpers/username';\r\n\r\nimport BanIPModal from './BanIPModal';\r\n\r\nexport default class UnbanIPModal extends BanIPModal {\r\n title() {\r\n return app.translator.trans('fof-ban-ips.lib.modal.unban_title');\r\n }\r\n\r\n content() {\r\n const otherUsers = this.otherUsers[this.banOption()];\r\n const usernames = otherUsers && otherUsers.map((u) => (u && u.displayName()) || app.translator.trans('core.lib.username.deleted_text'));\r\n\r\n if (this.bannedIPs) {\r\n return (\r\n
\r\n {Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.lib.modal.unbanned_ips', { ips: punctuateSeries(this.bannedIPs) }))}\r\n
\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

{app.translator.trans('fof-ban-ips.lib.modal.unban_ip_confirmation')}

\r\n\r\n
\r\n {this.banOptions.map((key) => (\r\n
\r\n \r\n  \r\n \r\n
\r\n ))}\r\n
\r\n\r\n {otherUsers\r\n ? otherUsers.length\r\n ? Alert.component({\r\n dismissible: false,\r\n }, app.translator.transChoice('fof-ban-ips.lib.modal.unban_ip_users', usernames.length, {\r\n users: punctuateSeries(usernames),\r\n }))\r\n : Alert.component({\r\n dismissible: false,\r\n type: 'success',\r\n }, app.translator.trans('fof-ban-ips.lib.modal.unban_ip_no_users'))\r\n : ''}\r\n\r\n {otherUsers &&
}\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n\r\n onsubmit(e) {\r\n e.preventDefault();\r\n\r\n this.loading = true;\r\n\r\n if (typeof this.otherUsers[this.banOption()] === 'undefined') return this.getOtherUsers();\r\n\r\n const attrs = {};\r\n\r\n if (this.banOption() === 'only') {\r\n attrs.address = this.address || this.post.ipAddress();\r\n\r\n const bannedIP = this.post ? this.post.bannedIP() : app.store.getBy('banned_ips', 'address', this.address);\r\n\r\n bannedIP.delete().then(this.done.bind(this, bannedIP)).catch(this.onerror.bind(this)).then(this.hide.bind(this));\r\n } else if (this.banOption() === 'all') {\r\n app.request({\r\n body: {\r\n data: {\r\n attributes: attrs,\r\n },\r\n },\r\n url: `${app.forum.attribute('apiUrl')}${this.user.apiEndpoint()}/unban`,\r\n method: 'POST',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then(this.done.bind(this))\r\n .catch(this.onerror.bind(this))\r\n .then(this.hide.bind(this));\r\n }\r\n }\r\n\r\n getOtherUsers() {\r\n const data = {};\r\n\r\n if (this.banOption() === 'only') {\r\n data.ip = this.address || this.post.ipAddress();\r\n data.skipValidation = true;\r\n }\r\n\r\n let url = `${app.forum.attribute('apiUrl')}/fof/ban-ips/check-users`;\r\n\r\n if (this.user) url += `/${this.user.id()}`;\r\n\r\n app.request({\r\n params: data,\r\n url: url,\r\n method: 'GET',\r\n errorHandler: this.onerror.bind(this),\r\n })\r\n .then((res) => {\r\n const data = app.store.pushPayload(res);\r\n\r\n this.otherUsers[this.banOption()] = data.filter((e) => e.bannedIPs().length === 1);\r\n this.loading = false;\r\n\r\n m.redraw();\r\n })\r\n .catch(() => { })\r\n .then(this.loaded.bind(this));\r\n }\r\n\r\n done(bannedIP) {\r\n this.loading = false;\r\n\r\n if (this.post) delete this.post.data.relationships.banned_ip;\r\n\r\n if (this.user && !this.user.data.relationships && !bannedIP) {\r\n this.user.data.relationships.banned_ips.data = [];\r\n this.user.data.attributes.isBanned = false;\r\n } else if (this.user && bannedIP instanceof app.store.models.banned_ips) {\r\n this.user.data.relationships.banned_ips = {\r\n data: this.user.data.relationships.banned_ips.data.filter((e) => e.id !== bannedIP.id()),\r\n };\r\n this.user.data.attributes.isBanned = this.user.data.relationships.banned_ips.data.length !== 0;\r\n }\r\n\r\n if (bannedIP && Array.isArray(bannedIP.data)) {\r\n this.bannedIPs = bannedIP.data.map((b) => b.attributes.address);\r\n this.loading = false;\r\n\r\n m.redraw();\r\n }\r\n }\r\n\r\n hide() {\r\n super.hide();\r\n\r\n if (!this.attrs.redraw) {\r\n location.reload();\r\n }\r\n }\r\n}\r\n","module.exports = flarum.core.compat['components/Modal'];","import Model from 'flarum/Model';\r\nimport mixin from 'flarum/utils/mixin';\r\n\r\nexport default class BannedIP extends mixin(Model, {\r\n creator: Model.hasOne('creator'),\r\n user: Model.hasOne('user'),\r\n address: Model.attribute('address'),\r\n reason: Model.attribute('reason'),\r\n createdAt: Model.attribute('createdAt', Model.transformDate),\r\n deletedAt: Model.attribute('deletedAt', Model.transformDate),\r\n}) {\r\n apiEndpoint() {\r\n return `/fof/ban-ips${this.exists ? `/${this.id()}` : ''}`;\r\n }\r\n}\r\n","module.exports = flarum.core.compat['helpers/username'];","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = flarum.core.compat['utils/mixin'];","import BanIPModal from './components/BanIPModal';\r\nimport UnbanIPModal from './components/UnbanIPModal';\r\nimport BannedIP from './models/BannedIP';\r\n\r\nexport default {\r\n 'fof/ban-ips/components/BanIPModal': BanIPModal,\r\n 'fof/ban-ips/components/UnbanIPModal': UnbanIPModal,\r\n 'fof/ban-ips/models/BannedIP': BannedIP,\r\n};\r\n","module.exports = flarum.core;","module.exports = flarum.core.compat['utils/PostControls'];","module.exports = flarum.core.compat['utils/UserControls'];","module.exports = flarum.core.compat['models/User'];","module.exports = flarum.core.compat['components/Badge'];","import Model from 'flarum/Model';\r\n\r\nimport addBanIPControl from './addBanIPControl';\r\nimport BannedIP from '../common/models/BannedIP';\r\nimport addBannedBadge from './addBannedBadge';\r\n\r\napp.initializers.add('fof/ban-ips', () => {\r\n app.store.models.posts.prototype.canBanIP = Model.attribute('canBanIP');\r\n app.store.models.posts.prototype.ipAddress = Model.attribute('ipAddress');\r\n app.store.models.posts.prototype.bannedIP = Model.hasOne('banned_ip');\r\n\r\n app.store.models.users.prototype.canBanIP = Model.attribute('canBanIP');\r\n app.store.models.users.prototype.isBanned = Model.attribute('isBanned');\r\n app.store.models.users.prototype.bannedIPs = Model.hasMany('banned_ips');\r\n\r\n app.store.models.banned_ips = BannedIP;\r\n\r\n addBanIPControl();\r\n addBannedBadge();\r\n});\r\n\r\n// Expose compat API\r\nimport extCompat from '../common/compat';\r\nimport { compat } from '@flarum/core/forum';\r\n\r\nObject.assign(compat, extCompat);\r\n","import { extend } from 'flarum/extend';\r\nimport PostControls from 'flarum/utils/PostControls';\r\nimport UserControls from 'flarum/utils/UserControls';\r\nimport Button from 'flarum/components/Button';\r\n\r\nimport BanIPModal from '../common/components/BanIPModal';\r\nimport UnbanIPModal from '../common/components/UnbanIPModal';\r\n\r\nexport default () => {\r\n extend(PostControls, 'userControls', function (items, post) {\r\n if (!post || !post.user()) return;\r\n\r\n const isBanned = post.user().isBanned();\r\n const prefix = isBanned ? 'un' : '';\r\n\r\n // Removes ability to ban thyself and also does permission check.\r\n if (!post.canBanIP() || post.isHidden() || post.user() === app.session.user || post.contentType() !== 'comment') return;\r\n\r\n items.add(\r\n `${prefix}ban`,\r\n Button.component({\r\n icon: 'fas fa-gavel',\r\n onclick: () => app.modal.show(isBanned ? UnbanIPModal : BanIPModal, { post }),\r\n }, app.translator.trans(`fof-ban-ips.forum.${prefix}ban_ip_button`))\r\n );\r\n });\r\n\r\n extend(UserControls, 'moderationControls', function (items, user) {\r\n if (!user.canBanIP() || user === app.session.user) return;\r\n\r\n const isBanned = user.isBanned();\r\n const prefix = isBanned ? 'un' : '';\r\n\r\n items.add(\r\n `${prefix}ban`,\r\n Button.component({\r\n icon: 'fas fa-gavel',\r\n onclick: () => app.modal.show(isBanned ? UnbanIPModal : BanIPModal, { post }),\r\n }, app.translator.trans(`fof-ban-ips.forum.user_controls.${prefix}ban_button`))\r\n );\r\n });\r\n};\r\n","import { extend } from 'flarum/extend';\r\nimport User from 'flarum/models/User';\r\nimport Badge from 'flarum/components/Badge';\r\n\r\nexport default () => {\r\n extend(User.prototype, 'badges', function (items) {\r\n if (this.isBanned()) {\r\n items.add(\r\n 'banned',\r\n Badge.component({\r\n icon: 'fas fa-gavel',\r\n type: 'banned',\r\n label: app.translator.trans('fof-ban-ips.forum.user_badge.banned_tooltip'),\r\n })\r\n );\r\n }\r\n });\r\n};\r\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/package-lock.json b/js/package-lock.json index c0fc976..928137c 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -801,6 +801,11 @@ "to-fast-properties": "^2.0.0" } }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" + }, "@webassemblyjs/ast": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", @@ -969,14 +974,14 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" }, "ajv": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", - "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -990,9 +995,9 @@ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" }, "ajv-keywords": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", - "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==" + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, "ansi-regex": { "version": "4.1.0", @@ -1008,22 +1013,13 @@ } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "optional": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "aproba": { @@ -1052,13 +1048,21 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" }, "asn1.js": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", - "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "assert": { @@ -1093,7 +1097,8 @@ "async-each": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "optional": true }, "atob": { "version": "2.1.2", @@ -1101,14 +1106,66 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "babel-loader": { - "version": "8.0.6", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", - "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", "requires": { - "find-cache-dir": "^2.0.0", - "loader-utils": "^1.0.2", - "mkdirp": "^0.5.1", - "pify": "^4.0.1" + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + } } }, "balanced-match": { @@ -1177,18 +1234,10 @@ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" }, "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" - }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "optional": true }, "bluebird": { "version": "3.7.2", @@ -1196,9 +1245,9 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" }, "brace-expansion": { "version": "1.1.11", @@ -1282,20 +1331,46 @@ "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "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.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } } }, "browserify-zlib": { @@ -1400,22 +1475,54 @@ } }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "optional": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } } }, "chownr": { @@ -1594,12 +1701,19 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", - "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", "requires": { "bn.js": "^4.1.0", - "elliptic": "^6.0.0" + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "create-hash": { @@ -1739,6 +1853,13 @@ "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "domain-browser": { @@ -1763,9 +1884,9 @@ "integrity": "sha512-xXLNstRdVsisPF3pL3H9TVZo2XkMILfqtD6RiWIUmDK2sFX1Bjwqmd8LBp0Kuo2FgKO63JXPoEVGm8WyYdwP0Q==" }, "elliptic": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", - "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -1774,6 +1895,13 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "emoji-regex": { @@ -1782,9 +1910,9 @@ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" }, "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" }, "end-of-stream": { "version": "1.4.4", @@ -1795,9 +1923,9 @@ } }, "enhanced-resolve": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", - "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", "requires": { "graceful-fs": "^4.1.2", "memory-fs": "^0.5.0", @@ -1838,11 +1966,18 @@ } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } } }, "estraverse": { @@ -1856,9 +1991,9 @@ "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" }, "events": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", - "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" }, "evp_bytestokey": { "version": "1.0.3", @@ -1869,20 +2004,6 @@ "safe-buffer": "^5.1.1" } }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2029,12 +2150,6 @@ "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==" }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -2149,502 +2264,16 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", - "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.4", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "bundled": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.3", - "bundled": true, - "optional": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.3", - "bundled": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.3", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.8", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - } - }, - "readable-stream": { - "version": "2.3.7", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "optional": true - } - } + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "optional": true }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -2664,22 +2293,12 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "optional": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-glob": "^4.0.1" } }, "global-modules": { @@ -2779,9 +2398,9 @@ } }, "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" } } }, @@ -2818,9 +2437,9 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "iferr": { "version": "0.1.5", @@ -2866,9 +2485,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, "invariant": { "version": "2.2.4", @@ -2878,11 +2497,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", - "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -2902,11 +2516,12 @@ } }, "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "optional": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" } }, "is-buffer": { @@ -2998,11 +2613,6 @@ "isobject": "^3.0.1" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -3066,26 +2676,18 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, - "lcid": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", - "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "requires": { - "invert-kv": "^2.0.0" - } - }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==" }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", + "emojis-list": "^3.0.0", "json5": "^1.0.1" }, "dependencies": { @@ -3109,9 +2711,9 @@ } }, "lodash": { - "version": "4.17.15", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, "loose-envify": { "version": "1.4.0", @@ -3138,14 +2740,6 @@ "semver": "^5.6.0" } }, - "map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "requires": { - "p-defer": "^1.0.0" - } - }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -3169,16 +2763,6 @@ "safe-buffer": "^5.1.2" } }, - "mem": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", - "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } - }, "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", @@ -3215,13 +2799,15 @@ "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -3241,9 +2827,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "mississippi": { "version": "3.0.0", @@ -3282,18 +2868,11 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } + "minimist": "^1.2.5" } }, "move-concurrently": { @@ -3314,12 +2893,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "optional": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -3339,9 +2912,9 @@ } }, "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "nice-try": { "version": "1.0.5", @@ -3396,15 +2969,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "requires": { - "path-key": "^2.0.0" - } + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3468,31 +3034,6 @@ "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "os-locale": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", - "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } - }, - "p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=" - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - }, - "p-is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", - "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" - }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", @@ -3530,13 +3071,12 @@ } }, "parse-asn1": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", - "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "requires": { - "asn1.js": "^4.0.0", + "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", "evp_bytestokey": "^1.0.0", "pbkdf2": "^3.0.3", "safe-buffer": "^5.1.1" @@ -3560,7 +3100,8 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "optional": true }, "path-exists": { "version": "3.0.0", @@ -3583,9 +3124,9 @@ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "pbkdf2": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", - "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -3594,6 +3135,12 @@ "sha.js": "^2.4.8" } }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "optional": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -3613,9 +3160,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "prettier": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", - "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.1.2.tgz", + "integrity": "sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg==", "dev": true }, "private": { @@ -3654,6 +3201,13 @@ "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, "pump": { @@ -3733,13 +3287,12 @@ } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "optional": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.2.1" } }, "regenerate": { @@ -3818,7 +3371,8 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "optional": true }, "repeat-element": { "version": "1.1.3", @@ -3930,6 +3484,11 @@ "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -3946,9 +3505,12 @@ "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" }, "serialize-javascript": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", - "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "requires": { + "randombytes": "^2.1.0" + } }, "set-blocking": { "version": "2.0.0", @@ -4003,11 +3565,6 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", @@ -4257,11 +3814,6 @@ "ansi-regex": "^4.1.0" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -4276,9 +3828,9 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==" }, "terser": { - "version": "4.6.13", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.13.tgz", - "integrity": "sha512-wMvqukYgVpQlymbnNbabVZbtM6PN63AzqexpwJL8tbh/mRT9LE5o+ruVduAGL7D6Fpjl+Q+06U5I9Ul82odAhw==", + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", "requires": { "commander": "^2.20.0", "source-map": "~0.6.1", @@ -4293,15 +3845,15 @@ } }, "terser-webpack-plugin": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", - "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", "requires": { "cacache": "^12.0.2", "find-cache-dir": "^2.1.0", "is-wsl": "^1.1.0", "schema-utils": "^1.0.0", - "serialize-javascript": "^2.1.2", + "serialize-javascript": "^4.0.0", "source-map": "^0.6.1", "terser": "^4.1.2", "webpack-sources": "^1.4.0", @@ -4325,9 +3877,9 @@ } }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "requires": { "setimmediate": "^1.0.4" } @@ -4386,9 +3938,9 @@ "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=" }, "tslib": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", - "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "tty-browserify": { "version": "0.0.0", @@ -4490,7 +4042,8 @@ "upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "optional": true }, "uri-js": { "version": "4.2.2", @@ -4547,9 +4100,9 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "v8-compile-cache": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", - "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" }, "vm-browserify": { "version": "1.1.2", @@ -4557,19 +4110,125 @@ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, "watchpack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", - "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", + "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", "requires": { - "chokidar": "^2.1.8", + "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + } } }, "webpack": { - "version": "4.43.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.43.0.tgz", - "integrity": "sha512-GW1LjnPipFW2Y78OOab8NJlCflB7EFskMih2AHdvjbpKMeDJqEgSx24cXXXiPS65+WSwVyxtDsJH6jGX2czy+g==", + "version": "4.44.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", + "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", "requires": { "@webassemblyjs/ast": "1.9.0", "@webassemblyjs/helper-module-context": "1.9.0", @@ -4579,7 +4238,7 @@ "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.1.0", + "enhanced-resolve": "^4.3.0", "eslint-scope": "^4.0.3", "json-parse-better-errors": "^1.0.2", "loader-runner": "^2.4.0", @@ -4592,53 +4251,28 @@ "schema-utils": "^1.0.0", "tapable": "^1.1.3", "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.6.1", + "watchpack": "^1.7.4", "webpack-sources": "^1.4.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "requires": { - "minimist": "^1.2.5" - } - } } }, "webpack-cli": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", - "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "requires": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" }, "dependencies": { - "enhanced-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", - "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } - }, "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", @@ -4717,21 +4351,20 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "yargs": { - "version": "13.2.4", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", - "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", "require-directory": "^2.1.1", "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" + "yargs-parser": "^13.1.2" } }, "yargs-parser": { diff --git a/js/package.json b/js/package.json index 92d2ca8..39ac6e9 100644 --- a/js/package.json +++ b/js/package.json @@ -4,8 +4,8 @@ "private": true, "dependencies": { "flarum-webpack-config": "^0.1.0-beta.10", - "webpack": "^4.43.0", - "webpack-cli": "^3.3.11" + "webpack": "^4.44.2", + "webpack-cli": "^3.3.12" }, "scripts": { "dev": "webpack --mode development --watch", @@ -13,6 +13,6 @@ "lint": "prettier --single-quote --trailing-comma es5 --print-width 150 --tab-width 4 --write src" }, "devDependencies": { - "prettier": "^2.0.5" + "prettier": "^2.1.2" } }