diff --git a/extend.php b/extend.php index fb4adc9..fea25e9 100644 --- a/extend.php +++ b/extend.php @@ -5,35 +5,38 @@ use Flarum\Api\Serializer\ForumSerializer; use Flarum\Api\Serializer\UserSerializer; use Flarum\Extend; -use Flarum\Extend\ApiController; use Flarum\Post\Event\Posted; use Flarum\Discussion\Event\Started; +use Flarum\Post\Event\Deleted as PostDeleted; +use Flarum\Discussion\Event\Deleted as DiscussionDeleted; use Flarum\Api\Controller\ListUsersController; use Flarum\User\Filter\UserFilterer; use Illuminate\Database\Eloquent\Builder; return [ (new Extend\Frontend('admin')) - ->js(__DIR__ . '/js/dist/admin.js'), + ->js(__DIR__.'/js/dist/admin.js'), (new Extend\Frontend('forum')) - ->js(__DIR__ . '/js/dist/forum.js') - ->css(__DIR__ . '/resources/less/forum.less') + ->js(__DIR__.'/js/dist/forum.js') + ->css(__DIR__.'/resources/less/forum.less') ->route('/leaderboard', 'nodeloc_leaderboard', Content\LeaderBoard::class), - new Extend\Locales(__DIR__ . '/resources/locale'), + new Extend\Locales(__DIR__.'/resources/locale'), (new Extend\ApiSerializer(ForumSerializer::class)) ->attributes(PermissionBasedForumSettings::class), - // (new Extend\ApiSerializer(UserSerializer::class)) - // ->attribute('monthlyDiscussionCount', "monthlyDiscussionCount"), + (new Extend\ApiSerializer(UserSerializer::class)) + ->attributes(AddMonthlyCountAttributes::class), (new Extend\Policy()) ->globalPolicy(Access\UserPolicy::class), - // (new Extend\Event()) - // ->listen(Posted::class, [Listeners\UpdateCount::class, 'postWasPosted']) - // ->listen(Started::class, [Listeners\UpdateCount::class, 'discussionWasStarted']), + (new Extend\Event()) + ->listen(Posted::class, [Listeners\UpdateCount::class, 'postWasPosted']) + ->listen(Started::class, [Listeners\UpdateCount::class, 'discussionWasStarted']) + ->listen(PostDeleted::class, [Listeners\UpdateCount::class, 'postWasDeleted']) + ->listen(DiscussionDeleted::class, [Listeners\UpdateCount::class, 'discussionWasDeleted']), (new Extend\View()) - ->namespace('nodeloc.leaderboard', __DIR__ . '/resources/views'), + ->namespace('nodeloc.leaderboard', __DIR__.'/resources/views'), (new Extend\ApiController(ListUsersController::class)) ->addSortField('money') ->addSortField('lotteryCount') @@ -49,10 +52,4 @@ ->add(Middleware\BeforeMiddleware::class), (new Extend\Filter(UserFilterer::class)) ->addFilterMutator(Filter\CheckDateFilter::class), - (new Extend\ApiSerializer(UserSerializer::class)) - ->attributes(function ($s, $model, $attrs) { - $attrs['monthlyCommentCount'] = $model->monthly_comment_count ?? 0; - $attrs['monthlyDiscussionCount'] = $model->monthly_discussion_count ?? 0; - return $attrs; - }) ]; diff --git a/js/dist/forum.js b/js/dist/forum.js index 53b714c..4c3b59b 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,2 +1,2 @@ -(()=>{var t={344:t=>{"use strict";t.exports=flarum.extensions["ziiven-decoration-store"]}},e={};function o(r){var a=e[r];if(void 0!==a)return a.exports;var n=e[r]={exports:{}};return t[r](n,n.exports,o),n.exports}o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";o.r(r),o.d(r,{CheckableButton:()=>H,LeaderBoardList:()=>W,LeaderBoardListItem:()=>F,LeaderBoardPage:()=>G,LeaderBoardState:()=>K,SortMap:()=>E,components:()=>X,searchTypes:()=>Y});const t=flarum.core.compat["common/extend"],e=flarum.core.compat["forum/app"];var a=o.n(e);flarum.core.compat["common/components/UsersSearchSource"];const n=flarum.core.compat["common/components/LinkButton"];var s=o.n(n);const i=flarum.core.compat["forum/components/IndexPage"];var c=o.n(i);function u(){return u=Object.assign?Object.assign.bind():function(t){for(var e=1;e3?T.component(n):z.component(n))},e}(k()),W=function(t){function e(){return t.apply(this,arguments)||this}return d(e,t),e.prototype.view=function(){var t,e=this.attrs.state,o=e.getParams(),r=a().forum.attribute("leaderBoardSmallCards");if(e.isLoading()?t=_().component():e.moreResults&&(t=P().component({className:"Button",onclick:e.loadMore.bind(e)},a().translator.trans("nodeloc-leaderboard.forum.page.load_more_button"))),e.empty()){var n=a().translator.trans("nodeloc-leaderboard.forum.page.empty_text");return m("div",{className:"DiscussionList"},M().component({text:n}))}var s=e.users.slice(0,3),i=e.users.slice(3);if(s.length>=2){var c=[s[1],s[0]];s[0]=c[0],s[1]=c[1]}return m("div",{className:"LeaderBoardList"+(e.isSearchResults()?" LeaderBoardList--searchResults":"")+(r?" LeaderBoardList--small-cards":"")},m("ul",{className:"LeaderboardPodium"},s.map((function(t,e){return m("li",{key:t.id(),"data-id":t.id(),className:"LeaderboardPodium-item"},F.component({user:t,params:o,useSmallCards:r,position:e+1,isPodium:!0}))}))),m("ul",{className:"LeaderboardItemList"},i.map((function(t,e){return m("li",{key:t.id(),"data-id":t.id(),className:"LeaderboardItemList-item"},F.component({user:t,params:o,useSmallCards:r,position:e+4,isPodium:!1}))}))),m("div",{className:"LeaderBoardList-loadMore"},t))},e}(k()),E=function(){function t(){}return t.prototype.sortMap=function(){return{money:"-money",lotteryCount:"-lotteryCount",bestAnswerCount:"-bestAnswerCount",lastCheckinMoney:"-lastCheckinMoney",monthlyDiscussionCount:"-monthlyDiscussionCount",monthlyCommentCount:"-monthlyCommentCount",discussionCount:"-discussionCount",commentCount:"-commentCount"}},t}(),K=function(){function t(t,e){void 0===t&&(t={}),void 0===e&&(e=window.app),this.params=t,this.app=e,this.users=[],this.moreResults=!1,this.loading=!1,this.qBuilder={}}var e=t.prototype;return e.requestParams=function(){var t={include:[],filter:{}},e=this.params.sort||app.forum.attribute("leaderBoardDefaultSort");return t.sort=this.sortMap()[e],this.params.q&&(t.filter.q=this.params.q),t},e.sortMap=function(){return u({default:""},(new E).sortMap())},e.getParams=function(){return this.params},e.clear=function(){this.users=[],m.redraw()},e.refreshParams=function(t){var e=this;this.hasUsers()&&!Object.keys(t).some((function(o){return e.getParams()[o]!==t[o]}))||(this.params=t,t.qBuilder&&(Object.assign(this.qBuilder,t.qBuilder||{}),this.params.q=Object.values(this.qBuilder).join(" ").trim()),this.params.q,this.refresh())},e.refresh=function(){var t=this;return this.loading=!0,this.clear(),this.loadResults().then((function(e){t.users=[],t.parseResults(e)}),(function(){t.loading=!1,m.redraw()}))},e.loadResults=function(t){var e=this.app.preloadedApiDocument();if(e)return Promise.resolve(e);var o=this.requestParams();return o.page={offset:t},o.include=o.include.join(","),this.app.store.find("users",o)},e.loadMore=function(){this.loading=!0,this.loadResults(this.users.length).then(this.parseResults.bind(this))},e.parseResults=function(t){var e;return(e=this.users).push.apply(e,t),this.loading=!1,this.moreResults=!!t.payload.links&&!!t.payload.links.next,m.redraw(),t},e.hasUsers=function(){return this.users.length>0},e.isLoading=function(){return this.loading},e.isSearchResults=function(){return!!this.params.q},e.empty=function(){return!this.hasUsers()&&!this.isLoading()},t}(),G=function(t){function e(){return t.apply(this,arguments)||this}d(e,t);var o=e.prototype;return o.oninit=function(e){t.prototype.oninit.call(this,e),this.state=new K({}),this.state.refreshParams(a().search.params()),this.bodyClass="Leader--Board";var o=[];this.params().q&&Array.from(this.params().q.matchAll(/group:([\d,]+)/g)).forEach((function(t){o.push(t[1])})),a().history.push("leaderboard",a().translator.trans("nodeloc-leaderboard.forum.header.back_to_leader_board_tooltip"))},o.oncreate=function(e){t.prototype.oncreate.call(this,e),a().setTitle(w()(a().translator.trans("nodeloc-leaderboard.forum.page.nav")))},o.view=function(){return m("div",{className:"IndexPage"},c().prototype.hero(),m("div",{className:"container"},m("div",{className:"sideNavContainer"},m("nav",{className:"IndexPage-nav sideNav"},m("ul",null,b()(this.sidebarItems().toArray()))),m("div",{className:"IndexPage-results sideNavOffset"},m("div",{className:"IndexPage-toolbar"},m("ul",{className:"IndexPage-toolbar-view"},b()(this.viewItems().toArray())),m("ul",{className:"IndexPage-toolbar-action"},b()(this.actionItems().toArray()))),m(W,{state:this.state})))))},o.sidebarItems=function(){var t=c().prototype.sidebarItems();return t.setContent("nav",I().component({buttonClassName:"Button",className:"App-titleControl"},this.navItems().toArray())),t},o.navItems=function(){var t=c().prototype.navItems(),e=this.stickyParams();return t.add("nodeloc-leaderboard",s().component({href:a().route("nodeloc_leaderboard",e),icon:"fas fa-sort-amount-up"},a().translator.trans("nodeloc-leaderboard.forum.page.nav")),85),t},o.viewItems=function(){var t=new(v()),e=this.state.sortMap(),o={};for(var r in e)o[r]=a().translator.trans("nodeloc-leaderboard.lib.sort."+r);return t.add("sort",C().component({options:o,value:this.state.getParams().sort||a().forum.attribute("leaderBoardDefaultSort"),onchange:this.changeParams.bind(this)}),100),t},o.actionItems=function(){var t=this,e=new(v());return e.add("refresh",P().component({title:a().translator.trans("nodeloc-leaderboard.forum.page.refresh_tooltip"),icon:"fas fa-sync",className:"Button Button--icon",onclick:function(){t.state.refresh(),a().session.user&&(a().store.find("users",a().session.user.id()),m.redraw())}})),e},o.changeParams=function(t){var e=this.params();t===a().forum.attribute("leaderBoardDefaultSort")?delete e.sort:e.sort=t,this.state.refreshParams(e);var o=u({},e);delete o.qBuilder,m.route.set(a().route("nodeloc_leaderboard",o))},o.stickyParams=function(){return{sort:m.route.param("sort"),q:m.route.param("q")}},o.params=function(){return this.stickyParams()},e}(f()),H=function(t){function e(){return t.apply(this,arguments)||this}return d(e,t),e.prototype.getButtonContent=function(e){var o=t.prototype.getButtonContent.call(this,e);return this.attrs.checked&&o.push(j()("fas fa-check",{className:"Button-icon ButtonCheck"})),o},e}(P());const J=flarum.core.compat["common/Model"];var Q=o.n(J),V=function(t){function e(){for(var e,o=arguments.length,r=new Array(o),a=0;a{var t={344:t=>{"use strict";t.exports=flarum.extensions["ziiven-decoration-store"]}},e={};function o(r){var a=e[r];if(void 0!==a)return a.exports;var n=e[r]={exports:{}};return t[r](n,n.exports,o),n.exports}o.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return o.d(e,{a:e}),e},o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";o.r(r),o.d(r,{CheckableButton:()=>H,LeaderBoardList:()=>W,LeaderBoardListItem:()=>F,LeaderBoardPage:()=>G,LeaderBoardState:()=>K,SortMap:()=>E,components:()=>X,searchTypes:()=>Y});const t=flarum.core.compat["common/extend"],e=flarum.core.compat["forum/app"];var a=o.n(e);flarum.core.compat["common/components/UsersSearchSource"];const n=flarum.core.compat["common/components/LinkButton"];var s=o.n(n);const i=flarum.core.compat["forum/components/IndexPage"];var c=o.n(i);function u(){return u=Object.assign?Object.assign.bind():function(t){for(var e=1;e3?T.component(n):z.component(n))},e}(x()),W=function(t){function e(){return t.apply(this,arguments)||this}return d(e,t),e.prototype.view=function(){var t,e=this.attrs.state,o=e.getParams(),r=a().forum.attribute("leaderBoardSmallCards");if(e.isLoading()?t=_().component():e.moreResults&&(t=P().component({className:"Button",onclick:e.loadMore.bind(e)},a().translator.trans("nodeloc-leaderboard.forum.page.load_more_button"))),e.empty()){var n=a().translator.trans("nodeloc-leaderboard.forum.page.empty_text");return m("div",{className:"DiscussionList"},O().component({text:n}))}var s=e.users.slice(0,3),i=e.users.slice(3);if(s.length>=2){var c=[s[1],s[0]];s[0]=c[0],s[1]=c[1]}return m("div",{className:"LeaderBoardList"+(e.isSearchResults()?" LeaderBoardList--searchResults":"")+(r?" LeaderBoardList--small-cards":"")},m("ul",{className:"LeaderboardPodium"},s.map((function(t,e){return m("li",{key:t.id(),"data-id":t.id(),className:"LeaderboardPodium-item"},F.component({user:t,params:o,useSmallCards:r,position:e+1,isPodium:!0}))}))),m("ul",{className:"LeaderboardItemList"},i.map((function(t,e){return m("li",{key:t.id(),"data-id":t.id(),className:"LeaderboardItemList-item"},F.component({user:t,params:o,useSmallCards:r,position:e+4,isPodium:!1}))}))),m("div",{className:"LeaderBoardList-loadMore"},t))},e}(x()),E=function(){function t(){}return t.prototype.sortMap=function(){return{money:"-money",lotteryCount:"-lotteryCount",bestAnswerCount:"-bestAnswerCount",lastCheckinMoney:"-lastCheckinMoney",monthlyDiscussionCount:"-monthlyDiscussionCount",monthlyCommentCount:"-monthlyCommentCount",discussionCount:"-discussionCount",commentCount:"-commentCount"}},t}(),K=function(){function t(t,e){void 0===t&&(t={}),void 0===e&&(e=window.app),this.params=t,this.app=e,this.users=[],this.moreResults=!1,this.loading=!1,this.qBuilder={}}var e=t.prototype;return e.requestParams=function(){var t={include:[],filter:{}},e=this.params.sort||app.forum.attribute("leaderBoardDefaultSort");if(t.sort=this.sortMap()[e],"lastCheckinMoney"===e){var o=(new Date).toISOString().split("T")[0];t.filter.q="last_checkin_time:>"+o}return t},e.sortMap=function(){return u({default:""},(new E).sortMap())},e.getParams=function(){return this.params},e.clear=function(){this.users=[],m.redraw()},e.refreshParams=function(t){var e=this;this.hasUsers()&&!Object.keys(t).some((function(o){return e.getParams()[o]!==t[o]}))||(this.params=t,t.qBuilder&&(Object.assign(this.qBuilder,t.qBuilder||{}),this.params.q=Object.values(this.qBuilder).join(" ").trim()),this.params.q,this.refresh())},e.refresh=function(){var t=this;return this.loading=!0,this.clear(),this.loadResults().then((function(e){t.users=[],t.parseResults(e)}),(function(){t.loading=!1,m.redraw()}))},e.loadResults=function(t){var e=this.app.preloadedApiDocument();if(e)return Promise.resolve(e);var o=this.requestParams();return o.page={offset:t},o.include=o.include.join(","),this.app.store.find("users",o)},e.loadMore=function(){this.loading=!0,this.loadResults(this.users.length).then(this.parseResults.bind(this))},e.parseResults=function(t){var e;return(e=this.users).push.apply(e,t),this.loading=!1,this.moreResults=!!t.payload.links&&!!t.payload.links.next,m.redraw(),t},e.hasUsers=function(){return this.users.length>0},e.isLoading=function(){return this.loading},e.isSearchResults=function(){return!!this.params.q},e.empty=function(){return!this.hasUsers()&&!this.isLoading()},t}(),G=function(t){function e(){return t.apply(this,arguments)||this}d(e,t);var o=e.prototype;return o.oninit=function(e){t.prototype.oninit.call(this,e),this.state=new K({}),this.state.refreshParams(a().search.params()),this.bodyClass="Leader--Board";var o=[];this.params().q&&Array.from(this.params().q.matchAll(/group:([\d,]+)/g)).forEach((function(t){o.push(t[1])})),a().history.push("leaderboard",a().translator.trans("nodeloc-leaderboard.forum.header.back_to_leader_board_tooltip"))},o.oncreate=function(e){t.prototype.oncreate.call(this,e),a().setTitle(w()(a().translator.trans("nodeloc-leaderboard.forum.page.nav")))},o.view=function(){return m("div",{className:"IndexPage"},c().prototype.hero(),m("div",{className:"container"},m("div",{className:"sideNavContainer"},m("nav",{className:"IndexPage-nav sideNav"},m("ul",null,b()(this.sidebarItems().toArray()))),m("div",{className:"IndexPage-results sideNavOffset"},m("div",{className:"IndexPage-toolbar"},m("ul",{className:"IndexPage-toolbar-view"},b()(this.viewItems().toArray())),m("ul",{className:"IndexPage-toolbar-action"},b()(this.actionItems().toArray()))),m(W,{state:this.state})))))},o.sidebarItems=function(){var t=c().prototype.sidebarItems();return t.setContent("nav",I().component({buttonClassName:"Button",className:"App-titleControl"},this.navItems().toArray())),t},o.navItems=function(){var t=c().prototype.navItems(),e=this.stickyParams();return t.add("nodeloc-leaderboard",s().component({href:a().route("nodeloc_leaderboard",e),icon:"fas fa-sort-amount-up"},a().translator.trans("nodeloc-leaderboard.forum.page.nav")),85),t},o.viewItems=function(){var t=new(v()),e=this.state.sortMap(),o={};for(var r in e)o[r]=a().translator.trans("nodeloc-leaderboard.lib.sort."+r);return t.add("sort",C().component({options:o,value:this.state.getParams().sort||a().forum.attribute("leaderBoardDefaultSort"),onchange:this.changeParams.bind(this)}),100),t},o.actionItems=function(){var t=this,e=new(v());return e.add("refresh",P().component({title:a().translator.trans("nodeloc-leaderboard.forum.page.refresh_tooltip"),icon:"fas fa-sync",className:"Button Button--icon",onclick:function(){t.state.refresh(),a().session.user&&(a().store.find("users",a().session.user.id()),m.redraw())}})),e},o.changeParams=function(t){var e=this.params();t===a().forum.attribute("leaderBoardDefaultSort")?delete e.sort:e.sort=t,this.state.refreshParams(e);var o=u({},e);delete o.qBuilder,m.route.set(a().route("nodeloc_leaderboard",o))},o.stickyParams=function(){return{sort:m.route.param("sort"),q:m.route.param("q")}},o.params=function(){return this.stickyParams()},e}(f()),H=function(t){function e(){return t.apply(this,arguments)||this}return d(e,t),e.prototype.getButtonContent=function(e){var o=t.prototype.getButtonContent.call(this,e);return this.attrs.checked&&o.push(j()("fas fa-check",{className:"Button-icon ButtonCheck"})),o},e}(P());const J=flarum.core.compat["common/Model"];var Q=o.n(J),V=function(t){function e(){for(var e,o=arguments.length,r=new Array(o),a=0;a {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/UsersSearchSource'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/SelectDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Placeholder'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/username'];","import ItemList from 'flarum/common/utils/ItemList';\r\nimport icon from 'flarum/common/helpers/icon';\r\nimport app from 'flarum/forum/app';\r\nimport Component from 'flarum/common/Component';\r\nimport avatar from \"flarum/helpers/avatar\";\r\nimport username from \"flarum/helpers/username\";\r\n\r\nexport default class SmallUserCard extends Component {\r\n /**\r\n * Allowing to add additonal items unique to the user directory.\r\n *\r\n * @return {ItemList}\r\n */\r\n view() {\r\n const user = this.attrs.user;\r\n const sort = this.attrs.params.sort|| 'money';\r\n const userProfileLink = app.route.user(user);\r\n const points = user.attribute(sort) || '0';\r\n const position = this.attrs.position;\r\n let avatarWithFrame, usernameWithColor;\r\n if('ziiven-decoration-store' in flarum.extensions){\r\n const { components } = require('@ziiven-decoration-store');\r\n avatarWithFrame = components.avatarWithFrame;\r\n usernameWithColor = components.usernameWithColor;\r\n } // 根据 position 的值来设置类名\r\n let positionClass = '';\r\n if (position === 1) {\r\n positionClass = 'first';\r\n } else if (position === 2) {\r\n positionClass = 'second';\r\n } else if (position === 3) {\r\n positionClass = 'third';\r\n }\r\n // 根据 sort 字段选择图标\r\n let iconClass = 'fa-solid fa-chart-simple';\r\n if (['money', 'lastCheckinMoney'].includes(sort)) {\r\n iconClass = 'fa-solid fa-bolt';\r\n } else if (sort === 'bestAnswerCount') {\r\n iconClass = 'fa-solid fa-check-double';\r\n } else if (['monthlyDiscussionCount', 'discussionCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-pencil';\r\n } else if (['monthlyCommentCount', 'commentCount'].includes(sort)) {\r\n iconClass = 'fa-regular fa-comment';\r\n } else if (['lotteryCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-gift';\r\n }\r\n return (\r\n \r\n \r\n {position}\r\n \r\n {avatarWithFrame?avatarWithFrame(user):avatar(user)}\r\n
\r\n
\r\n {usernameWithColor?usernameWithColor(user):username(user)}\r\n
\r\n
\r\n \r\n {icon(iconClass)}\r\n {points}\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n","import ItemList from 'flarum/common/utils/ItemList';\r\nimport icon from 'flarum/common/helpers/icon';\r\nimport app from 'flarum/forum/app';\r\nimport Component from 'flarum/common/Component';\r\nimport avatar from \"flarum/helpers/avatar\";\r\nimport username from \"flarum/helpers/username\";\r\n\r\nexport default class LeaderBoardUserCard extends Component {\r\n /**\r\n * Allowing to add additonal items unique to the user directory.\r\n *\r\n * @return {ItemList}\r\n */\r\n view() {\r\n const user = this.attrs.user;\r\n const sort = this.attrs.params.sort || 'money';\r\n const userProfileLink = app.route.user(user);\r\n\r\n const points = user.attribute(sort) || '0';\r\n const position = this.attrs.position;\r\n\r\n let avatarWithFrame, usernameWithColor;\r\n if('ziiven-decoration-store' in flarum.extensions){\r\n const { components } = require('@ziiven-decoration-store');\r\n avatarWithFrame = components.avatarWithFrame;\r\n usernameWithColor = components.usernameWithColor;\r\n }\r\n // 根据 position 的值来设置类名\r\n let positionClass = '';\r\n let displayPosition = position;\r\n if (position === 1) {\r\n positionClass = 'second';\r\n displayPosition = 2;\r\n } else if (position === 2) {\r\n positionClass = 'first';\r\n displayPosition = 1;\r\n } else if (position === 3) {\r\n positionClass = 'third';\r\n }\r\n // 根据 sort 字段选择图标\r\n let iconClass = 'fa-solid fa-chart-simple';\r\n if (['money', 'lastCheckinMoney'].includes(sort)) {\r\n iconClass = 'fa-solid fa-bolt';\r\n } else if (sort === 'bestAnswerCount') {\r\n iconClass = 'fa-solid fa-check-double';\r\n } else if (['monthlyDiscussionCount', 'discussionCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-pencil';\r\n } else if (['monthlyCommentCount', 'commentCount'].includes(sort)) {\r\n iconClass = 'fa-regular fa-comment';\r\n } else if (['lotteryCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-gift';\r\n }\r\n return (\r\n \r\n {avatarWithFrame?avatarWithFrame(user):avatar(user)}\r\n
\r\n
\r\n {usernameWithColor?usernameWithColor(user):username(user)}\r\n
\r\n
\r\n \r\n {icon(iconClass)}\r\n {points}\r\n \r\n {displayPosition}\r\n
\r\n );\r\n }\r\n}\r\n","import Component from 'flarum/common/Component';\r\nimport UserCard from 'flarum/forum/components/UserCard';\r\nimport SmallUserCard from './SmallUserCard';\r\nimport LeaderBoardUserCard from './LeaderBoardUserCard';\r\n\r\nexport default class LeaderBoardListItem extends Component {\r\n view(vnode) {\r\n const { user, useSmallCards, position,params } = this.attrs;\r\n\r\n const attributes = {\r\n user,\r\n position,\r\n params,\r\n className: `UserCard--directory${useSmallCards ? ' UserCard--small' : ''}`,\r\n controlsButtonClassName: 'Button Button--icon Button--flat',\r\n };\r\n\r\n return
{position>3 ? SmallUserCard.component(attributes) : LeaderBoardUserCard.component(attributes)}
;\r\n }\r\n}\r\n","import app from 'flarum/forum/app';\r\nimport Component from 'flarum/common/Component';\r\nimport Button from 'flarum/common/components/Button';\r\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\r\nimport Placeholder from 'flarum/common/components/Placeholder';\r\nimport LeaderBoardListItem from './LeaderBoardListItem';\r\n\r\nexport default class LeaderBoardList extends Component {\r\n view() {\r\n const { state } = this.attrs;\r\n const params = state.getParams();\r\n const useSmallCards = app.forum.attribute('leaderBoardSmallCards');\r\n let loading;\r\n if (state.isLoading()) {\r\n loading = LoadingIndicator.component();\r\n } else if (state.moreResults) {\r\n loading = Button.component(\r\n {\r\n className: 'Button',\r\n onclick: state.loadMore.bind(state),\r\n },\r\n app.translator.trans('nodeloc-leaderboard.forum.page.load_more_button')\r\n );\r\n }\r\n\r\n if (state.empty()) {\r\n const text = app.translator.trans('nodeloc-leaderboard.forum.page.empty_text');\r\n return
{Placeholder.component({ text })}
;\r\n }\r\n\r\n const podiumUsers = state.users.slice(0, 3);\r\n const remainingUsers = state.users.slice(3);\r\n // 交换前两名的位置\r\n if (podiumUsers.length >= 2) {\r\n [podiumUsers[0], podiumUsers[1]] = [podiumUsers[1], podiumUsers[0]];\r\n }\r\n return (\r\n \r\n
    \r\n {podiumUsers.map((user, index) => {\r\n return(\r\n
  • \r\n {LeaderBoardListItem.component({\r\n user,\r\n params,\r\n useSmallCards,\r\n position: index + 1,\r\n isPodium: true,\r\n })}\r\n
  • \r\n );\r\n })}\r\n
\r\n
    \r\n {remainingUsers.map((user, index) => {\r\n return (
  • \r\n {LeaderBoardListItem.component({\r\n user,\r\n params,\r\n useSmallCards,\r\n position: index + 4,\r\n isPodium: false,\r\n })}\r\n
  • );\r\n })}\r\n
\r\n
{loading}
\r\n \r\n );\r\n }\r\n}\r\n","/**\n * The sort options.\n * We use a class and not just a POJO/function because we want extensions to be able to extend it\n */\nexport default class SortMap {\n sortMap() {\n return {\n money : '-money',\n lotteryCount : '-lotteryCount',\n bestAnswerCount : '-bestAnswerCount',\n lastCheckinMoney : '-lastCheckinMoney',\n monthlyDiscussionCount : '-monthlyDiscussionCount',\n monthlyCommentCount: '-monthlyCommentCount',\n discussionCount : '-discussionCount',\n commentCount : '-commentCount',\n };\n }\n}\n","/**\r\n * Based on Flarum's DiscussionListState\r\n */\r\nimport SortMap from '../../common/utils/SortMap';\r\n\r\nexport default class LeaderBoardState {\r\n constructor(params = {}, app = window.app) {\r\n this.params = params;\r\n\r\n this.app = app;\r\n\r\n this.users = [];\r\n\r\n this.moreResults = false;\r\n\r\n this.loading = false;\r\n\r\n this.qBuilder = {};\r\n }\r\n\r\n requestParams() {\r\n const params = { include: [], filter: {} };\r\n\r\n const sortKey = this.params.sort || app.forum.attribute('leaderBoardDefaultSort');\r\n\r\n // sort might be set to null if no sort params has been passed\r\n params.sort = this.sortMap()[sortKey];\r\n\r\n if (this.params.q) {\r\n params.filter.q = this.params.q;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n sortMap() {\r\n return {\r\n default: '',\r\n ...new SortMap().sortMap(),\r\n };\r\n }\r\n\r\n getParams() {\r\n return this.params;\r\n }\r\n\r\n clear() {\r\n this.users = [];\r\n m.redraw();\r\n }\r\n\r\n refreshParams(newParams) {\r\n if (!this.hasUsers() || Object.keys(newParams).some((key) => this.getParams()[key] !== newParams[key])) {\r\n const q = '';\r\n this.params = newParams;\r\n\r\n if (newParams.qBuilder) {\r\n Object.assign(this.qBuilder, newParams.qBuilder || {});\r\n this.params.q = Object.values(this.qBuilder).join(' ').trim();\r\n }\r\n\r\n if (!this.params.q && q) {\r\n this.params.q = q;\r\n }\r\n\r\n this.refresh();\r\n }\r\n }\r\n\r\n refresh() {\r\n this.loading = true;\r\n\r\n this.clear();\r\n\r\n return this.loadResults().then(\r\n (results) => {\r\n this.users = [];\r\n this.parseResults(results);\r\n },\r\n () => {\r\n this.loading = false;\r\n m.redraw();\r\n }\r\n );\r\n }\r\n\r\n loadResults(offset) {\r\n const preloadedUsers = this.app.preloadedApiDocument();\r\n\r\n if (preloadedUsers) {\r\n return Promise.resolve(preloadedUsers);\r\n }\r\n\r\n const params = this.requestParams();\r\n params.page = { offset };\r\n params.include = params.include.join(',');\r\n\r\n return this.app.store.find('users', params);\r\n }\r\n\r\n loadMore() {\r\n this.loading = true;\r\n\r\n this.loadResults(this.users.length).then(this.parseResults.bind(this));\r\n }\r\n\r\n parseResults(results) {\r\n this.users.push(...results);\r\n\r\n this.loading = false;\r\n this.moreResults = !!results.payload.links && !!results.payload.links.next;\r\n\r\n m.redraw();\r\n\r\n return results;\r\n }\r\n\r\n hasUsers() {\r\n return this.users.length > 0;\r\n }\r\n\r\n isLoading() {\r\n return this.loading;\r\n }\r\n\r\n isSearchResults() {\r\n return !!this.params.q;\r\n }\r\n\r\n empty() {\r\n return !this.hasUsers() && !this.isLoading();\r\n }\r\n}\r\n","import app from 'flarum/forum/app';\r\nimport Page from 'flarum/common/components/Page';\r\nimport ItemList from 'flarum/common/utils/ItemList';\r\nimport listItems from 'flarum/common/helpers/listItems';\r\nimport IndexPage from 'flarum/forum/components/IndexPage';\r\nimport Select from 'flarum/common/components/Select';\r\nimport Button from 'flarum/common/components/Button';\r\nimport LinkButton from 'flarum/common/components/LinkButton';\r\nimport SelectDropdown from 'flarum/common/components/SelectDropdown';\r\nimport extractText from 'flarum/common/utils/extractText';\r\nimport LeaderBoardList from './LeaderBoardList';\r\nimport LeaderBoardState from '../states/LeaderBoardState';\r\n\r\n\r\n/**\r\n * This page re-uses Flarum's IndexPage CSS classes\r\n */\r\nexport default class LeaderBoardPage extends Page {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.state = new LeaderBoardState({});\r\n this.state.refreshParams(app.search.params());\r\n\r\n this.bodyClass = 'Leader--Board';\r\n\r\n let idSegments = [];\r\n if (this.params().q) {\r\n Array.from(this.params().q.matchAll(/group:([\\d,]+)/g)).forEach((match) => {\r\n idSegments.push(match[1]);\r\n });\r\n }\r\n\r\n app.history.push('leaderboard', app.translator.trans('nodeloc-leaderboard.forum.header.back_to_leader_board_tooltip'));\r\n }\r\n\r\n oncreate(vnode) {\r\n super.oncreate(vnode);\r\n\r\n app.setTitle(extractText(app.translator.trans('nodeloc-leaderboard.forum.page.nav')));\r\n }\r\n\r\n view() {\r\n return (\r\n
\r\n {IndexPage.prototype.hero()}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
    {listItems(this.viewItems().toArray())}
\r\n
    {listItems(this.actionItems().toArray())}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Our own sidebar. Re-uses Index.sidebarItems as the base\r\n * Elements added here will only show up on the user directory page\r\n *\r\n * @return {ItemList}\r\n */\r\n sidebarItems() {\r\n const items = IndexPage.prototype.sidebarItems();\r\n\r\n items.setContent(\r\n 'nav',\r\n SelectDropdown.component(\r\n {\r\n buttonClassName: 'Button',\r\n className: 'App-titleControl',\r\n },\r\n this.navItems().toArray()\r\n )\r\n );\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Our own sidebar navigation. Re-uses Index.navItems as the base\r\n * Elements added here will only show up on the user directory page\r\n *\r\n * @return {ItemList}\r\n */\r\n navItems() {\r\n const items = IndexPage.prototype.navItems();\r\n const params = this.stickyParams();\r\n\r\n items.add(\r\n 'nodeloc-leaderboard',\r\n LinkButton.component(\r\n {\r\n href: app.route('nodeloc_leaderboard', params),\r\n icon: 'fas fa-sort-amount-up',\r\n },\r\n app.translator.trans('nodeloc-leaderboard.forum.page.nav')\r\n ),\r\n 85\r\n );\r\n\r\n return items;\r\n }\r\n\r\n viewItems() {\r\n const items = new ItemList();\r\n const sortMap = this.state.sortMap();\r\n\r\n const sortOptions = {};\r\n for (const i in sortMap) {\r\n sortOptions[i] = app.translator.trans('nodeloc-leaderboard.lib.sort.' + i);\r\n }\r\n\r\n items.add(\r\n 'sort',\r\n Select.component({\r\n options: sortOptions,\r\n value: this.state.getParams().sort || app.forum.attribute('leaderBoardDefaultSort'),\r\n onchange: this.changeParams.bind(this),\r\n }),\r\n 100\r\n );\r\n\r\n return items;\r\n }\r\n\r\n actionItems() {\r\n const items = new ItemList();\r\n\r\n items.add(\r\n 'refresh',\r\n Button.component({\r\n title: app.translator.trans('nodeloc-leaderboard.forum.page.refresh_tooltip'),\r\n icon: 'fas fa-sync',\r\n className: 'Button Button--icon',\r\n onclick: () => {\r\n this.state.refresh();\r\n if (app.session.user) {\r\n app.store.find('users', app.session.user.id());\r\n m.redraw();\r\n }\r\n },\r\n })\r\n );\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Redirect to the index page using the given sort parameter.\r\n *\r\n * @param {String} sort\r\n */\r\n changeParams(sort) {\r\n const params = this.params();\r\n\r\n if (sort === app.forum.attribute('leaderBoardDefaultSort')) {\r\n delete params.sort;\r\n } else {\r\n params.sort = sort;\r\n }\r\n\r\n this.state.refreshParams(params);\r\n\r\n const routeParams = { ...params };\r\n delete routeParams.qBuilder;\r\n\r\n m.route.set(app.route('nodeloc_leaderboard', routeParams));\r\n }\r\n\r\n stickyParams() {\r\n return {\r\n sort: m.route.param('sort'),\r\n q: m.route.param('q'),\r\n };\r\n }\r\n\r\n params() {\r\n return this.stickyParams();\r\n }\r\n}\r\n","import Button from 'flarum/common/components/Button';\r\nimport icon from 'flarum/common/helpers/icon';\r\n\r\nexport default class CheckableButton extends Button {\r\n /**\r\n * Get the template for the button's content.\r\n *\r\n * @return {*}\r\n * @protected\r\n */\r\n getButtonContent(children) {\r\n const prev = super.getButtonContent(children);\r\n\r\n if (this.attrs.checked) prev.push(icon('fas fa-check', { className: 'Button-icon ButtonCheck' }));\r\n\r\n return prev;\r\n }\r\n}\r\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Model from 'flarum/common/Model';\r\n\r\n/**\r\n * Special model used only client-side to hold a free text search value in the search field\r\n */\r\nexport default class Text extends Model {\r\n text = Model.attribute('text');\r\n}\r\n","import CheckableButton from './CheckableButton';\r\nimport SmallUserCard from './SmallUserCard';\r\nimport LeaderBoardList from './LeaderBoardList';\r\nimport LeaderBoardListItem from './LeaderBoardListItem';\r\nimport LeaderBoardPage from './LeaderBoardPage';\r\nimport LeaderBoardUserCard from './LeaderBoardUserCard';\r\n\r\nexport const components = {\r\n CheckableButton,\r\n SmallUserCard,\r\n LeaderBoardList,\r\n LeaderBoardListItem,\r\n LeaderBoardPage,\r\n LeaderBoardUserCard,\r\n};\r\n","import AbstractType from './AbstractType';\r\n\r\nexport const searchTypes = {\r\n AbstractType,\r\n};\r\n","/**\r\n * @abstract\r\n */\r\nexport default class AbstractType {\r\n constructor() {\r\n this.suggestions = [];\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * The `type` property of the Models used in suggestions and applied filters for this type\r\n * @return {String}\r\n */\r\n resourceType() {\r\n //\r\n }\r\n\r\n /**\r\n * Executed when the search query changes\r\n * The method should update this.suggestions with the new results\r\n * If asynchronous loading is used, this.loading should be set to true during the process\r\n * @param {String} query\r\n */\r\n search(query) {\r\n //\r\n }\r\n\r\n /**\r\n * Renders the \"kind\" label next to the value indicating what kind of information that result is\r\n * Should probably just be a translated text\r\n * @param {Model} resource\r\n * @return {vnode}\r\n */\r\n renderKind(resource) {\r\n //\r\n }\r\n\r\n /**\r\n * Renders the Label containing the suggestion's value\r\n * Should be a vdom template using the .LeaderBoardSearchLabel class or similar\r\n * @param {Model} resource\r\n * @return {vnode}\r\n */\r\n renderLabel(resource) {\r\n //\r\n }\r\n\r\n /**\r\n * Applies a filter on a params object to use in the page request\r\n * @param {Object} params Object. Might or might not contain a `q` property or `sort` property. In the future, `filters` object might be supported\r\n * @param {Model} resource\r\n */\r\n applyFilter(params, resource) {\r\n //\r\n }\r\n\r\n /**\r\n * Used to populate the search field on page load with values from the querystring\r\n * A promise must be returned, and the UI will auto-update once the promise returns\r\n * @param {Object} params Object with a `q` and `sort` property. `filters` might be supported in the future\r\n * @return {Promise}\r\n */\r\n initializeFromParams(params) {\r\n //\r\n }\r\n}\r\n","import { extend } from 'flarum/common/extend';\r\nimport app from 'flarum/forum/app';\r\nimport UsersSearchSource from 'flarum/common/components/UsersSearchSource';\r\nimport LinkButton from 'flarum/common/components/LinkButton';\r\nimport IndexPage from 'flarum/forum/components/IndexPage';\r\nimport CommentPost from 'flarum/forum/components/CommentPost';\r\nimport LeaderBoardPage from './components/LeaderBoardPage';\r\nimport LeaderBoardList from './components/LeaderBoardList';\r\nimport LeaderBoardListItem from './components/LeaderBoardListItem';\r\nimport LeaderBoardState from './states/LeaderBoardState';\r\nimport SortMap from '../common/utils/SortMap';\r\nimport CheckableButton from './components/CheckableButton';\r\nimport Text from './models/Text';\r\n\r\n// Allow other extensions to extend the page\r\nexport { LeaderBoardPage, LeaderBoardList, LeaderBoardListItem, LeaderBoardState, SortMap, CheckableButton };\r\n\r\napp.initializers.add('nodeloc-leaderboard', (app) => {\r\n app.routes.nodeloc_leaderboard = {\r\n path: '/leaderboard',\r\n component: LeaderBoardPage,\r\n };\r\n\r\n app.store.models['nodeloc-leaderboard-text'] = Text;\r\n\r\n extend(IndexPage.prototype, 'navItems', (items) => {\r\n if (app.forum.attribute('canSeeLeaderBoardLink')) {\r\n items.add(\r\n 'nodeloc-leaderboard',\r\n LinkButton.component(\r\n {\r\n href: app.route('nodeloc_leaderboard'),\r\n icon: 'fas fa-sort-amount-up',\r\n },\r\n app.translator.trans('nodeloc-leaderboard.forum.page.nav')\r\n ),\r\n 85\r\n );\r\n }\r\n });\r\n\r\n});\r\n\r\nexport * from './components';\r\nexport * from './searchTypes';\r\n"],"names":["module","exports","flarum","extensions","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","core","compat","_extends","assign","bind","e","arguments","length","t","apply","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","create","constructor","SmallUserCard","_Component","view","avatarWithFrame","usernameWithColor","user","this","attrs","sort","params","userProfileLink","app","points","attribute","position","components","require","positionClass","iconClass","includes","m","href","className","avatar","username","title","icon","Component","LeaderBoardUserCard","displayPosition","LeaderBoardListItem","vnode","_this$attrs","useSmallCards","attributes","controlsButtonClassName","component","LeaderBoardList","loading","state","getParams","isLoading","LoadingIndicator","moreResults","Button","onclick","loadMore","trans","empty","text","Placeholder","podiumUsers","users","slice","remainingUsers","_ref","isSearchResults","map","index","id","isPodium","SortMap","sortMap","money","lotteryCount","bestAnswerCount","lastCheckinMoney","monthlyDiscussionCount","monthlyCommentCount","discussionCount","commentCount","LeaderBoardState","window","qBuilder","_proto","requestParams","include","filter","sortKey","forum","q","default","clear","redraw","refreshParams","newParams","_this","hasUsers","keys","some","values","join","trim","refresh","_this2","loadResults","then","results","parseResults","offset","preloadedUsers","preloadedApiDocument","Promise","resolve","page","store","find","_this$users","push","payload","links","next","LeaderBoardPage","_Page","oninit","bodyClass","idSegments","Array","from","matchAll","forEach","match","oncreate","extractText","IndexPage","hero","listItems","sidebarItems","toArray","viewItems","actionItems","items","setContent","SelectDropdown","buttonClassName","navItems","stickyParams","add","LinkButton","ItemList","sortOptions","i","Select","options","onchange","changeParams","routeParams","route","set","param","Page","CheckableButton","_Button","getButtonContent","children","prev","checked","Text","_Model","_len","args","_key","concat","Model","searchTypes","AbstractType","suggestions","resourceType","search","query","renderKind","resource","renderLabel","applyFilter","initializeFromParams","routes","nodeloc_leaderboard","path","models","extend","translator"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"forum.js","mappings":"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","sources":["webpack://@nodeloc/flarum-ext-leaderboard/external assign \"flarum.extensions['ziiven-decoration-store']\"","webpack://@nodeloc/flarum-ext-leaderboard/webpack/bootstrap","webpack://@nodeloc/flarum-ext-leaderboard/webpack/runtime/compat get default export","webpack://@nodeloc/flarum-ext-leaderboard/webpack/runtime/define property getters","webpack://@nodeloc/flarum-ext-leaderboard/webpack/runtime/hasOwnProperty shorthand","webpack://@nodeloc/flarum-ext-leaderboard/webpack/runtime/make namespace object","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/extend']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['forum/app']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/UsersSearchSource']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/LinkButton']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@nodeloc/flarum-ext-leaderboard/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@nodeloc/flarum-ext-leaderboard/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@nodeloc/flarum-ext-leaderboard/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['forum/components/CommentPost']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/Page']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/utils/ItemList']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/helpers/listItems']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/Select']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/Button']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/SelectDropdown']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/utils/extractText']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/Component']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/LoadingIndicator']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/components/Placeholder']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['forum/components/UserCard']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/helpers/icon']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['helpers/avatar']\"","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['helpers/username']\"","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/SmallUserCard.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/LeaderBoardUserCard.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/LeaderBoardListItem.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/LeaderBoardList.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/common/utils/SortMap.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/states/LeaderBoardState.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/LeaderBoardPage.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/CheckableButton.js","webpack://@nodeloc/flarum-ext-leaderboard/external root \"flarum.core.compat['common/Model']\"","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/models/Text.ts","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/components/index.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/searchTypes/index.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/searchTypes/AbstractType.js","webpack://@nodeloc/flarum-ext-leaderboard/./src/forum/index.js"],"sourcesContent":["module.exports = flarum.extensions['ziiven-decoration-store'];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/extend'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/app'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/UsersSearchSource'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LinkButton'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/IndexPage'];","function _extends() {\n return _extends = Object.assign ? Object.assign.bind() : function (n) {\n for (var e = 1; e < arguments.length; e++) {\n var t = arguments[e];\n for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n }\n return n;\n }, _extends.apply(null, arguments);\n}\nexport { _extends as default };","function _setPrototypeOf(t, e) {\n return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {\n return t.__proto__ = e, t;\n }, _setPrototypeOf(t, e);\n}\nexport { _setPrototypeOf as default };","import setPrototypeOf from \"./setPrototypeOf.js\";\nfunction _inheritsLoose(t, o) {\n t.prototype = Object.create(o.prototype), t.prototype.constructor = t, setPrototypeOf(t, o);\n}\nexport { _inheritsLoose as default };","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/CommentPost'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Page'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/ItemList'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/listItems'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Select'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Button'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/SelectDropdown'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/utils/extractText'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Component'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/LoadingIndicator'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/components/Placeholder'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['forum/components/UserCard'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/helpers/icon'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/avatar'];","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['helpers/username'];","import ItemList from 'flarum/common/utils/ItemList';\r\nimport icon from 'flarum/common/helpers/icon';\r\nimport app from 'flarum/forum/app';\r\nimport Component from 'flarum/common/Component';\r\nimport avatar from \"flarum/helpers/avatar\";\r\nimport username from \"flarum/helpers/username\";\r\n\r\nexport default class SmallUserCard extends Component {\r\n /**\r\n * Allowing to add additonal items unique to the user directory.\r\n *\r\n * @return {ItemList}\r\n */\r\n view() {\r\n const user = this.attrs.user;\r\n const sort = this.attrs.params.sort|| 'money';\r\n const userProfileLink = app.route.user(user);\r\n const points = user.attribute(sort) || '0';\r\n const position = this.attrs.position;\r\n let avatarWithFrame, usernameWithColor;\r\n if('ziiven-decoration-store' in flarum.extensions){\r\n const { components } = require('@ziiven-decoration-store');\r\n avatarWithFrame = components.avatarWithFrame;\r\n usernameWithColor = components.usernameWithColor;\r\n } // 根据 position 的值来设置类名\r\n let positionClass = '';\r\n if (position === 1) {\r\n positionClass = 'first';\r\n } else if (position === 2) {\r\n positionClass = 'second';\r\n } else if (position === 3) {\r\n positionClass = 'third';\r\n }\r\n // 根据 sort 字段选择图标\r\n let iconClass = 'fa-solid fa-chart-simple';\r\n if (['money', 'lastCheckinMoney'].includes(sort)) {\r\n iconClass = 'fa-solid fa-bolt';\r\n } else if (sort === 'bestAnswerCount') {\r\n iconClass = 'fa-solid fa-check-double';\r\n } else if (['monthlyDiscussionCount', 'discussionCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-pencil';\r\n } else if (['monthlyCommentCount', 'commentCount'].includes(sort)) {\r\n iconClass = 'fa-regular fa-comment';\r\n } else if (['lotteryCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-gift';\r\n }\r\n return (\r\n \r\n \r\n {position}\r\n \r\n {avatarWithFrame?avatarWithFrame(user):avatar(user)}\r\n
\r\n
\r\n {usernameWithColor?usernameWithColor(user):username(user)}\r\n
\r\n
\r\n \r\n {icon(iconClass)}\r\n {points}\r\n \r\n\r\n
\r\n );\r\n }\r\n}\r\n","import ItemList from 'flarum/common/utils/ItemList';\r\nimport icon from 'flarum/common/helpers/icon';\r\nimport app from 'flarum/forum/app';\r\nimport Component from 'flarum/common/Component';\r\nimport avatar from \"flarum/helpers/avatar\";\r\nimport username from \"flarum/helpers/username\";\r\n\r\nexport default class LeaderBoardUserCard extends Component {\r\n /**\r\n * Allowing to add additonal items unique to the user directory.\r\n *\r\n * @return {ItemList}\r\n */\r\n view() {\r\n const user = this.attrs.user;\r\n const sort = this.attrs.params.sort || 'money';\r\n const userProfileLink = app.route.user(user);\r\n\r\n const points = user.attribute(sort) || '0';\r\n const position = this.attrs.position;\r\n\r\n let avatarWithFrame, usernameWithColor;\r\n if('ziiven-decoration-store' in flarum.extensions){\r\n const { components } = require('@ziiven-decoration-store');\r\n avatarWithFrame = components.avatarWithFrame;\r\n usernameWithColor = components.usernameWithColor;\r\n }\r\n // 根据 position 的值来设置类名\r\n let positionClass = '';\r\n let displayPosition = position;\r\n if (position === 1) {\r\n positionClass = 'second';\r\n displayPosition = 2;\r\n } else if (position === 2) {\r\n positionClass = 'first';\r\n displayPosition = 1;\r\n } else if (position === 3) {\r\n positionClass = 'third';\r\n }\r\n // 根据 sort 字段选择图标\r\n let iconClass = 'fa-solid fa-chart-simple';\r\n if (['money', 'lastCheckinMoney'].includes(sort)) {\r\n iconClass = 'fa-solid fa-bolt';\r\n } else if (sort === 'bestAnswerCount') {\r\n iconClass = 'fa-solid fa-check-double';\r\n } else if (['monthlyDiscussionCount', 'discussionCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-pencil';\r\n } else if (['monthlyCommentCount', 'commentCount'].includes(sort)) {\r\n iconClass = 'fa-regular fa-comment';\r\n } else if (['lotteryCount'].includes(sort)) {\r\n iconClass = 'fa-solid fa-gift';\r\n }\r\n return (\r\n \r\n {avatarWithFrame?avatarWithFrame(user):avatar(user)}\r\n
\r\n
\r\n {usernameWithColor?usernameWithColor(user):username(user)}\r\n
\r\n
\r\n \r\n {icon(iconClass)}\r\n {points}\r\n \r\n {displayPosition}\r\n
\r\n );\r\n }\r\n}\r\n","import Component from 'flarum/common/Component';\r\nimport UserCard from 'flarum/forum/components/UserCard';\r\nimport SmallUserCard from './SmallUserCard';\r\nimport LeaderBoardUserCard from './LeaderBoardUserCard';\r\n\r\nexport default class LeaderBoardListItem extends Component {\r\n view(vnode) {\r\n const { user, useSmallCards, position,params } = this.attrs;\r\n\r\n const attributes = {\r\n user,\r\n position,\r\n params,\r\n className: `UserCard--directory${useSmallCards ? ' UserCard--small' : ''}`,\r\n controlsButtonClassName: 'Button Button--icon Button--flat',\r\n };\r\n\r\n return
{position>3 ? SmallUserCard.component(attributes) : LeaderBoardUserCard.component(attributes)}
;\r\n }\r\n}\r\n","import app from 'flarum/forum/app';\r\nimport Component from 'flarum/common/Component';\r\nimport Button from 'flarum/common/components/Button';\r\nimport LoadingIndicator from 'flarum/common/components/LoadingIndicator';\r\nimport Placeholder from 'flarum/common/components/Placeholder';\r\nimport LeaderBoardListItem from './LeaderBoardListItem';\r\n\r\nexport default class LeaderBoardList extends Component {\r\n view() {\r\n const { state } = this.attrs;\r\n const params = state.getParams();\r\n const useSmallCards = app.forum.attribute('leaderBoardSmallCards');\r\n let loading;\r\n if (state.isLoading()) {\r\n loading = LoadingIndicator.component();\r\n } else if (state.moreResults) {\r\n loading = Button.component(\r\n {\r\n className: 'Button',\r\n onclick: state.loadMore.bind(state),\r\n },\r\n app.translator.trans('nodeloc-leaderboard.forum.page.load_more_button')\r\n );\r\n }\r\n\r\n if (state.empty()) {\r\n const text = app.translator.trans('nodeloc-leaderboard.forum.page.empty_text');\r\n return
{Placeholder.component({ text })}
;\r\n }\r\n\r\n const podiumUsers = state.users.slice(0, 3);\r\n const remainingUsers = state.users.slice(3);\r\n // 交换前两名的位置\r\n if (podiumUsers.length >= 2) {\r\n [podiumUsers[0], podiumUsers[1]] = [podiumUsers[1], podiumUsers[0]];\r\n }\r\n return (\r\n \r\n
    \r\n {podiumUsers.map((user, index) => {\r\n return(\r\n
  • \r\n {LeaderBoardListItem.component({\r\n user,\r\n params,\r\n useSmallCards,\r\n position: index + 1,\r\n isPodium: true,\r\n })}\r\n
  • \r\n );\r\n })}\r\n
\r\n
    \r\n {remainingUsers.map((user, index) => {\r\n return (
  • \r\n {LeaderBoardListItem.component({\r\n user,\r\n params,\r\n useSmallCards,\r\n position: index + 4,\r\n isPodium: false,\r\n })}\r\n
  • );\r\n })}\r\n
\r\n
{loading}
\r\n \r\n );\r\n }\r\n}\r\n","/**\n * The sort options.\n * We use a class and not just a POJO/function because we want extensions to be able to extend it\n */\nexport default class SortMap {\n sortMap() {\n return {\n money : '-money',\n lotteryCount : '-lotteryCount',\n bestAnswerCount : '-bestAnswerCount',\n lastCheckinMoney : '-lastCheckinMoney',\n monthlyDiscussionCount : '-monthlyDiscussionCount',\n monthlyCommentCount: '-monthlyCommentCount',\n discussionCount : '-discussionCount',\n commentCount : '-commentCount',\n };\n }\n}\n","/**\r\n * Based on Flarum's DiscussionListState\r\n */\r\nimport SortMap from '../../common/utils/SortMap';\r\n\r\nexport default class LeaderBoardState {\r\n constructor(params = {}, app = window.app) {\r\n this.params = params;\r\n\r\n this.app = app;\r\n\r\n this.users = [];\r\n\r\n this.moreResults = false;\r\n\r\n this.loading = false;\r\n\r\n this.qBuilder = {};\r\n }\r\n\r\n requestParams() {\r\n const params = { include: [], filter: {} };\r\n\r\n const sortKey = this.params.sort || app.forum.attribute('leaderBoardDefaultSort');\r\n\r\n // sort might be set to null if no sort params has been passed\r\n params.sort = this.sortMap()[sortKey];\r\n\r\n if (sortKey === 'lastCheckinMoney') {\r\n // Add filter condition for last_checkin_time being today\r\n const today = new Date().toISOString().split('T')[0]; // Get today's date in YYYY-MM-DD format\r\n params.filter.q = `last_checkin_time:>${today}`;\r\n }\r\n\r\n return params;\r\n }\r\n\r\n sortMap() {\r\n return {\r\n default: '',\r\n ...new SortMap().sortMap(),\r\n };\r\n }\r\n\r\n getParams() {\r\n return this.params;\r\n }\r\n\r\n clear() {\r\n this.users = [];\r\n m.redraw();\r\n }\r\n\r\n refreshParams(newParams) {\r\n if (!this.hasUsers() || Object.keys(newParams).some((key) => this.getParams()[key] !== newParams[key])) {\r\n const q = '';\r\n this.params = newParams;\r\n\r\n if (newParams.qBuilder) {\r\n Object.assign(this.qBuilder, newParams.qBuilder || {});\r\n this.params.q = Object.values(this.qBuilder).join(' ').trim();\r\n }\r\n\r\n if (!this.params.q && q) {\r\n this.params.q = q;\r\n }\r\n\r\n this.refresh();\r\n }\r\n }\r\n\r\n refresh() {\r\n this.loading = true;\r\n\r\n this.clear();\r\n\r\n return this.loadResults().then(\r\n (results) => {\r\n this.users = [];\r\n this.parseResults(results);\r\n },\r\n () => {\r\n this.loading = false;\r\n m.redraw();\r\n }\r\n );\r\n }\r\n\r\n loadResults(offset) {\r\n const preloadedUsers = this.app.preloadedApiDocument();\r\n\r\n if (preloadedUsers) {\r\n return Promise.resolve(preloadedUsers);\r\n }\r\n\r\n const params = this.requestParams();\r\n params.page = { offset };\r\n params.include = params.include.join(',');\r\n\r\n return this.app.store.find('users', params);\r\n }\r\n\r\n loadMore() {\r\n this.loading = true;\r\n\r\n this.loadResults(this.users.length).then(this.parseResults.bind(this));\r\n }\r\n\r\n parseResults(results) {\r\n this.users.push(...results);\r\n\r\n this.loading = false;\r\n this.moreResults = !!results.payload.links && !!results.payload.links.next;\r\n\r\n m.redraw();\r\n\r\n return results;\r\n }\r\n\r\n hasUsers() {\r\n return this.users.length > 0;\r\n }\r\n\r\n isLoading() {\r\n return this.loading;\r\n }\r\n\r\n isSearchResults() {\r\n return !!this.params.q;\r\n }\r\n\r\n empty() {\r\n return !this.hasUsers() && !this.isLoading();\r\n }\r\n}\r\n","import app from 'flarum/forum/app';\r\nimport Page from 'flarum/common/components/Page';\r\nimport ItemList from 'flarum/common/utils/ItemList';\r\nimport listItems from 'flarum/common/helpers/listItems';\r\nimport IndexPage from 'flarum/forum/components/IndexPage';\r\nimport Select from 'flarum/common/components/Select';\r\nimport Button from 'flarum/common/components/Button';\r\nimport LinkButton from 'flarum/common/components/LinkButton';\r\nimport SelectDropdown from 'flarum/common/components/SelectDropdown';\r\nimport extractText from 'flarum/common/utils/extractText';\r\nimport LeaderBoardList from './LeaderBoardList';\r\nimport LeaderBoardState from '../states/LeaderBoardState';\r\n\r\n\r\n/**\r\n * This page re-uses Flarum's IndexPage CSS classes\r\n */\r\nexport default class LeaderBoardPage extends Page {\r\n oninit(vnode) {\r\n super.oninit(vnode);\r\n\r\n this.state = new LeaderBoardState({});\r\n this.state.refreshParams(app.search.params());\r\n\r\n this.bodyClass = 'Leader--Board';\r\n\r\n let idSegments = [];\r\n if (this.params().q) {\r\n Array.from(this.params().q.matchAll(/group:([\\d,]+)/g)).forEach((match) => {\r\n idSegments.push(match[1]);\r\n });\r\n }\r\n\r\n app.history.push('leaderboard', app.translator.trans('nodeloc-leaderboard.forum.header.back_to_leader_board_tooltip'));\r\n }\r\n\r\n oncreate(vnode) {\r\n super.oncreate(vnode);\r\n\r\n app.setTitle(extractText(app.translator.trans('nodeloc-leaderboard.forum.page.nav')));\r\n }\r\n\r\n view() {\r\n return (\r\n
\r\n {IndexPage.prototype.hero()}\r\n
\r\n
\r\n \r\n
\r\n
\r\n
    {listItems(this.viewItems().toArray())}
\r\n
    {listItems(this.actionItems().toArray())}
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n /**\r\n * Our own sidebar. Re-uses Index.sidebarItems as the base\r\n * Elements added here will only show up on the user directory page\r\n *\r\n * @return {ItemList}\r\n */\r\n sidebarItems() {\r\n const items = IndexPage.prototype.sidebarItems();\r\n\r\n items.setContent(\r\n 'nav',\r\n SelectDropdown.component(\r\n {\r\n buttonClassName: 'Button',\r\n className: 'App-titleControl',\r\n },\r\n this.navItems().toArray()\r\n )\r\n );\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Our own sidebar navigation. Re-uses Index.navItems as the base\r\n * Elements added here will only show up on the user directory page\r\n *\r\n * @return {ItemList}\r\n */\r\n navItems() {\r\n const items = IndexPage.prototype.navItems();\r\n const params = this.stickyParams();\r\n\r\n items.add(\r\n 'nodeloc-leaderboard',\r\n LinkButton.component(\r\n {\r\n href: app.route('nodeloc_leaderboard', params),\r\n icon: 'fas fa-sort-amount-up',\r\n },\r\n app.translator.trans('nodeloc-leaderboard.forum.page.nav')\r\n ),\r\n 85\r\n );\r\n\r\n return items;\r\n }\r\n\r\n viewItems() {\r\n const items = new ItemList();\r\n const sortMap = this.state.sortMap();\r\n\r\n const sortOptions = {};\r\n for (const i in sortMap) {\r\n sortOptions[i] = app.translator.trans('nodeloc-leaderboard.lib.sort.' + i);\r\n }\r\n\r\n items.add(\r\n 'sort',\r\n Select.component({\r\n options: sortOptions,\r\n value: this.state.getParams().sort || app.forum.attribute('leaderBoardDefaultSort'),\r\n onchange: this.changeParams.bind(this),\r\n }),\r\n 100\r\n );\r\n\r\n return items;\r\n }\r\n\r\n actionItems() {\r\n const items = new ItemList();\r\n\r\n items.add(\r\n 'refresh',\r\n Button.component({\r\n title: app.translator.trans('nodeloc-leaderboard.forum.page.refresh_tooltip'),\r\n icon: 'fas fa-sync',\r\n className: 'Button Button--icon',\r\n onclick: () => {\r\n this.state.refresh();\r\n if (app.session.user) {\r\n app.store.find('users', app.session.user.id());\r\n m.redraw();\r\n }\r\n },\r\n })\r\n );\r\n\r\n return items;\r\n }\r\n\r\n /**\r\n * Redirect to the index page using the given sort parameter.\r\n *\r\n * @param {String} sort\r\n */\r\n changeParams(sort) {\r\n const params = this.params();\r\n\r\n if (sort === app.forum.attribute('leaderBoardDefaultSort')) {\r\n delete params.sort;\r\n } else {\r\n params.sort = sort;\r\n }\r\n\r\n this.state.refreshParams(params);\r\n\r\n const routeParams = { ...params };\r\n delete routeParams.qBuilder;\r\n\r\n m.route.set(app.route('nodeloc_leaderboard', routeParams));\r\n }\r\n\r\n stickyParams() {\r\n return {\r\n sort: m.route.param('sort'),\r\n q: m.route.param('q'),\r\n };\r\n }\r\n\r\n params() {\r\n return this.stickyParams();\r\n }\r\n}\r\n","import Button from 'flarum/common/components/Button';\r\nimport icon from 'flarum/common/helpers/icon';\r\n\r\nexport default class CheckableButton extends Button {\r\n /**\r\n * Get the template for the button's content.\r\n *\r\n * @return {*}\r\n * @protected\r\n */\r\n getButtonContent(children) {\r\n const prev = super.getButtonContent(children);\r\n\r\n if (this.attrs.checked) prev.push(icon('fas fa-check', { className: 'Button-icon ButtonCheck' }));\r\n\r\n return prev;\r\n }\r\n}\r\n","const __WEBPACK_NAMESPACE_OBJECT__ = flarum.core.compat['common/Model'];","import Model from 'flarum/common/Model';\r\n\r\n/**\r\n * Special model used only client-side to hold a free text search value in the search field\r\n */\r\nexport default class Text extends Model {\r\n text = Model.attribute('text');\r\n}\r\n","import CheckableButton from './CheckableButton';\r\nimport SmallUserCard from './SmallUserCard';\r\nimport LeaderBoardList from './LeaderBoardList';\r\nimport LeaderBoardListItem from './LeaderBoardListItem';\r\nimport LeaderBoardPage from './LeaderBoardPage';\r\nimport LeaderBoardUserCard from './LeaderBoardUserCard';\r\n\r\nexport const components = {\r\n CheckableButton,\r\n SmallUserCard,\r\n LeaderBoardList,\r\n LeaderBoardListItem,\r\n LeaderBoardPage,\r\n LeaderBoardUserCard,\r\n};\r\n","import AbstractType from './AbstractType';\r\n\r\nexport const searchTypes = {\r\n AbstractType,\r\n};\r\n","/**\r\n * @abstract\r\n */\r\nexport default class AbstractType {\r\n constructor() {\r\n this.suggestions = [];\r\n this.loading = false;\r\n }\r\n\r\n /**\r\n * The `type` property of the Models used in suggestions and applied filters for this type\r\n * @return {String}\r\n */\r\n resourceType() {\r\n //\r\n }\r\n\r\n /**\r\n * Executed when the search query changes\r\n * The method should update this.suggestions with the new results\r\n * If asynchronous loading is used, this.loading should be set to true during the process\r\n * @param {String} query\r\n */\r\n search(query) {\r\n //\r\n }\r\n\r\n /**\r\n * Renders the \"kind\" label next to the value indicating what kind of information that result is\r\n * Should probably just be a translated text\r\n * @param {Model} resource\r\n * @return {vnode}\r\n */\r\n renderKind(resource) {\r\n //\r\n }\r\n\r\n /**\r\n * Renders the Label containing the suggestion's value\r\n * Should be a vdom template using the .LeaderBoardSearchLabel class or similar\r\n * @param {Model} resource\r\n * @return {vnode}\r\n */\r\n renderLabel(resource) {\r\n //\r\n }\r\n\r\n /**\r\n * Applies a filter on a params object to use in the page request\r\n * @param {Object} params Object. Might or might not contain a `q` property or `sort` property. In the future, `filters` object might be supported\r\n * @param {Model} resource\r\n */\r\n applyFilter(params, resource) {\r\n //\r\n }\r\n\r\n /**\r\n * Used to populate the search field on page load with values from the querystring\r\n * A promise must be returned, and the UI will auto-update once the promise returns\r\n * @param {Object} params Object with a `q` and `sort` property. `filters` might be supported in the future\r\n * @return {Promise}\r\n */\r\n initializeFromParams(params) {\r\n //\r\n }\r\n}\r\n","import { extend } from 'flarum/common/extend';\r\nimport app from 'flarum/forum/app';\r\nimport UsersSearchSource from 'flarum/common/components/UsersSearchSource';\r\nimport LinkButton from 'flarum/common/components/LinkButton';\r\nimport IndexPage from 'flarum/forum/components/IndexPage';\r\nimport CommentPost from 'flarum/forum/components/CommentPost';\r\nimport LeaderBoardPage from './components/LeaderBoardPage';\r\nimport LeaderBoardList from './components/LeaderBoardList';\r\nimport LeaderBoardListItem from './components/LeaderBoardListItem';\r\nimport LeaderBoardState from './states/LeaderBoardState';\r\nimport SortMap from '../common/utils/SortMap';\r\nimport CheckableButton from './components/CheckableButton';\r\nimport Text from './models/Text';\r\n\r\n// Allow other extensions to extend the page\r\nexport { LeaderBoardPage, LeaderBoardList, LeaderBoardListItem, LeaderBoardState, SortMap, CheckableButton };\r\n\r\napp.initializers.add('nodeloc-leaderboard', (app) => {\r\n app.routes.nodeloc_leaderboard = {\r\n path: '/leaderboard',\r\n component: LeaderBoardPage,\r\n };\r\n\r\n app.store.models['nodeloc-leaderboard-text'] = Text;\r\n\r\n extend(IndexPage.prototype, 'navItems', (items) => {\r\n if (app.forum.attribute('canSeeLeaderBoardLink')) {\r\n items.add(\r\n 'nodeloc-leaderboard',\r\n LinkButton.component(\r\n {\r\n href: app.route('nodeloc_leaderboard'),\r\n icon: 'fas fa-sort-amount-up',\r\n },\r\n app.translator.trans('nodeloc-leaderboard.forum.page.nav')\r\n ),\r\n 85\r\n );\r\n }\r\n });\r\n\r\n});\r\n\r\nexport * from './components';\r\nexport * from './searchTypes';\r\n"],"names":["module","exports","flarum","extensions","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","core","compat","_extends","assign","bind","e","arguments","length","t","apply","_setPrototypeOf","setPrototypeOf","__proto__","_inheritsLoose","create","constructor","SmallUserCard","_Component","view","avatarWithFrame","usernameWithColor","user","this","attrs","sort","params","userProfileLink","app","points","attribute","position","components","require","positionClass","iconClass","includes","m","href","className","avatar","username","title","icon","Component","LeaderBoardUserCard","displayPosition","LeaderBoardListItem","vnode","_this$attrs","useSmallCards","attributes","controlsButtonClassName","component","LeaderBoardList","loading","state","getParams","isLoading","LoadingIndicator","moreResults","Button","onclick","loadMore","trans","empty","text","Placeholder","podiumUsers","users","slice","remainingUsers","_ref","isSearchResults","map","index","id","isPodium","SortMap","sortMap","money","lotteryCount","bestAnswerCount","lastCheckinMoney","monthlyDiscussionCount","monthlyCommentCount","discussionCount","commentCount","LeaderBoardState","window","qBuilder","_proto","requestParams","include","filter","sortKey","forum","today","Date","toISOString","split","q","default","clear","redraw","refreshParams","newParams","_this","hasUsers","keys","some","values","join","trim","refresh","_this2","loadResults","then","results","parseResults","offset","preloadedUsers","preloadedApiDocument","Promise","resolve","page","store","find","_this$users","push","payload","links","next","LeaderBoardPage","_Page","oninit","bodyClass","idSegments","Array","from","matchAll","forEach","match","oncreate","extractText","IndexPage","hero","listItems","sidebarItems","toArray","viewItems","actionItems","items","setContent","SelectDropdown","buttonClassName","navItems","stickyParams","add","LinkButton","ItemList","sortOptions","i","Select","options","onchange","changeParams","routeParams","route","set","param","Page","CheckableButton","_Button","getButtonContent","children","prev","checked","Text","_Model","_len","args","_key","concat","Model","searchTypes","AbstractType","suggestions","resourceType","search","query","renderKind","resource","renderLabel","applyFilter","initializeFromParams","routes","nodeloc_leaderboard","path","models","extend","translator"],"sourceRoot":""} diff --git a/js/package-lock.json b/js/package-lock.json index 36d372a..42d5421 100644 --- a/js/package-lock.json +++ b/js/package-lock.json @@ -7,6 +7,7 @@ "name": "@nodeloc/flarum-ext-leaderboard", "dependencies": { "@flarum/prettier-config": "^1.0.0", + "@nodeloc/flarum-ext-leaderboard": "file:", "flarum-tsconfig": "^1.0.2", "flarum-webpack-config": "^2.0.2", "webpack": "^5.88.2", @@ -1760,6 +1761,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@nodeloc/flarum-ext-leaderboard": { + "resolved": "", + "link": true + }, "node_modules/@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", @@ -4855,6 +4860,2567 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "@nodeloc/flarum-ext-leaderboard": { + "version": "file:", + "requires": { + "@flarum/prettier-config": "^1.0.0", + "@nodeloc/flarum-ext-leaderboard": "file:", + "flarum-tsconfig": "^1.0.2", + "flarum-webpack-config": "^2.0.2", + "prettier": "^3.0.2", + "webpack": "^5.88.2", + "webpack-cli": "^5.1.4" + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/code-frame": { + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "requires": { + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + } + }, + "@babel/compat-data": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.10.tgz", + "integrity": "sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw==" + }, + "@babel/core": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz", + "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.18.0", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.0", + "@babel/parser": "^7.18.0", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", + "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "requires": { + "@babel/types": "^7.23.3", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.10", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", + "integrity": "sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ==", + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz", + "integrity": "sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz", + "integrity": "sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==" + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "requires": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==" + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "requires": { + "@babel/types": "^7.22.5" + } + }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==" + }, + "@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==" + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==" + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz", + "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" + } + }, + "@babel/highlight": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "requires": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", + "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==" + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz", + "integrity": "sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz", + "integrity": "sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.17.12" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz", + "integrity": "sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz", + "integrity": "sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz", + "integrity": "sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz", + "integrity": "sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz", + "integrity": "sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz", + "integrity": "sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz", + "integrity": "sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz", + "integrity": "sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw==", + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.17.12" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz", + "integrity": "sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz", + "integrity": "sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz", + "integrity": "sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz", + "integrity": "sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz", + "integrity": "sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.17.12.tgz", + "integrity": "sha512-spyY3E3AURfxh/RHtjx5j6hs8am5NbUBGfcZ2vB3uShSpZdQyXSf5rR5Mk76vbtlAZOelyVQ71Fg0x9SG4fsog==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz", + "integrity": "sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz", + "integrity": "sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.17.12.tgz", + "integrity": "sha512-jw8XW/B1i7Lqwqj2CbrViPcZijSxfguBWZP2aN59NHgxUyO/OcO1mfdCxH13QhN5LbWhPkX+f+brKGhZTiqtZQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.17.12.tgz", + "integrity": "sha512-cvO7lc7pZat6BsvH6l/EGaI8zpl8paICaoGk+7x7guvtfak/TbIf66nYmJOH13EuG0H+Xx3M+9LQDtSvZFKXKw==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz", + "integrity": "sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz", + "integrity": "sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz", + "integrity": "sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz", + "integrity": "sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz", + "integrity": "sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz", + "integrity": "sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA==", + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.0.tgz", + "integrity": "sha512-cCeR0VZWtfxWS4YueAK2qtHtBPJRSaJcMlbS8jhSIm/A3E2Kpro4W1Dn4cqJtp59dtWfXjQwK7SPKF8ghs7rlw==", + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.0.tgz", + "integrity": "sha512-vwKpxdHnlM5tIrRt/eA0bzfbi7gUBLN08vLu38np1nZevlPySRe6yvuATJB5F/WPJ+ur4OXwpVYq9+BsxqAQuQ==", + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz", + "integrity": "sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA==", + "requires": { + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz", + "integrity": "sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.17.12", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz", + "integrity": "sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-object-assign": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.16.7.tgz", + "integrity": "sha512-R8mawvm3x0COTJtveuoqZIjNypn2FjfvXZr4pSQ8VhEFBuQGBz4XhHasZtHXjgXU4XptZ4HtGof3NoYc93ZH9Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz", + "integrity": "sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.16.7.tgz", + "integrity": "sha512-qgIg8BcZgd0G/Cz916D5+9kqX0c7nPZyXaP8R2tLNN5tkyIZdG5fEwBrxwplzSnjC1jvQmyMNVwUCZPcbGY7Pg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.12.tgz", + "integrity": "sha512-Lcaw8bxd1DKht3thfD4A12dqo1X16he1Lm8rIv8sTwjAYNInRS1qHa9aJoqvzpscItXvftKDCfaEQzwoVyXpEQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-jsx": "^7.17.12", + "@babel/types": "^7.17.12" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", + "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", + "requires": { + "@babel/plugin-transform-react-jsx": "^7.16.7" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.0.tgz", + "integrity": "sha512-6+0IK6ouvqDn9bmEG7mEyF/pwlJXVj5lwydybpyyH3D0A7Hftk+NCTdYjnLNZksn261xaOV5ksmp20pQEmc2RQ==", + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz", + "integrity": "sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz", + "integrity": "sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.0.tgz", + "integrity": "sha512-7kM/jJ3DD/y1hDPn0jov12DoUIFsxLiItprhNydUSibxaywaxNqKwq+ODk72J9ePn4LWobIc5ik6TAJhVl8IkQ==", + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.17.12", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz", + "integrity": "sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.17.12.tgz", + "integrity": "sha512-kAKJ7DX1dSRa2s7WN1xUAuaQmkTpN+uig4wCKWivVXIObqGbVTUlSavHyfI2iZvz89GFAMGm9p2DBJ4Y1Tp0hw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz", + "integrity": "sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.18.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.1.tgz", + "integrity": "sha512-F+RJmL479HJmC0KeqqwEGZMg1P7kWArLGbAKfEi9yPthJyMNjF+DjxFF/halfQvq1Q9GFM4TUbYDNV8xe4Ctqg==", + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.0", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/plugin-syntax-typescript": "^7.17.12" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.0.tgz", + "integrity": "sha512-cP74OMs7ECLPeG1reiCQ/D/ypyOxgfm8uR6HRYV23vTJ7Lu1nbgj9DQDo/vH59gnn7GOAwtTDPPYV4aXzsMKHA==", + "requires": { + "@babel/compat-data": "^7.17.10", + "@babel/helper-compilation-targets": "^7.17.10", + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.17.12", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-async-generator-functions": "^7.17.12", + "@babel/plugin-proposal-class-properties": "^7.17.12", + "@babel/plugin-proposal-class-static-block": "^7.18.0", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.17.12", + "@babel/plugin-proposal-json-strings": "^7.17.12", + "@babel/plugin-proposal-logical-assignment-operators": "^7.17.12", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.17.12", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.18.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.17.12", + "@babel/plugin-proposal-private-methods": "^7.17.12", + "@babel/plugin-proposal-private-property-in-object": "^7.17.12", + "@babel/plugin-proposal-unicode-property-regex": "^7.17.12", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.17.12", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.17.12", + "@babel/plugin-transform-async-to-generator": "^7.17.12", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.17.12", + "@babel/plugin-transform-classes": "^7.17.12", + "@babel/plugin-transform-computed-properties": "^7.17.12", + "@babel/plugin-transform-destructuring": "^7.18.0", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.17.12", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.17.12", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.17.12", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.18.0", + "@babel/plugin-transform-modules-commonjs": "^7.18.0", + "@babel/plugin-transform-modules-systemjs": "^7.18.0", + "@babel/plugin-transform-modules-umd": "^7.18.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.17.12", + "@babel/plugin-transform-new-target": "^7.17.12", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.17.12", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.18.0", + "@babel/plugin-transform-reserved-words": "^7.17.12", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.17.12", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.17.12", + "@babel/plugin-transform-typeof-symbol": "^7.17.12", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.17.12.tgz", + "integrity": "sha512-h5U+rwreXtZaRBEQhW1hOJLMq8XNJBQ/9oymXiCXTuT/0uOwpbT0gUt+sXeOqoXBgNuUKI7TaObVwoEyWkpFgA==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-react-display-name": "^7.16.7", + "@babel/plugin-transform-react-jsx": "^7.17.12", + "@babel/plugin-transform-react-jsx-development": "^7.16.7", + "@babel/plugin-transform-react-pure-annotations": "^7.16.7" + } + }, + "@babel/preset-typescript": { + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.17.12.tgz", + "integrity": "sha512-S1ViF8W2QwAKUGJXxP9NAfNaqGDdEBJKpYkxHf5Yy2C4NPPzXGeR3Lhk7G8xJaaLcFTRfNjVbtbVtm8Gb0mqvg==", + "requires": { + "@babel/helper-plugin-utils": "^7.17.12", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-transform-typescript": "^7.17.12" + } + }, + "@babel/runtime": { + "version": "7.22.11", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.11.tgz", + "integrity": "sha512-ee7jVNlWN09+KftVOu9n7S8gQzD/Z6hN/I8VBRXW4P1+Xe7kJGXMwu8vds4aGIMHZnNbdpSWCfZZtinytpcAvA==", + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" + } + }, + "@babel/traverse": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", + "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", + "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "requires": { + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.5.tgz", + "integrity": "sha512-6nFkfkmSeV/rqSaS4oWHgmpnYw194f6hmWF5is6b0J1naJZoiD0NTc9AiUwPHvWsowkjuHErCZT1wa0jg+BLIA==" + }, + "@flarum/prettier-config": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@flarum/prettier-config/-/prettier-config-1.0.0.tgz", + "integrity": "sha512-3/AcliIi5jPt4i7COb5hsLv6hm4EeXT9yI9I2EuEvhPi2QR+O9Y/8wrqRuO5mDkRzCIhUY+mjIL/f9770Zwfqg==" + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==" + }, + "@jridgewell/set-array": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.1.tgz", + "integrity": "sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ==" + }, + "@jridgewell/source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@polka/url": { + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", + "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==" + }, + "@types/eslint": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.2.tgz", + "integrity": "sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA==", + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + }, + "@types/jquery": { + "version": "3.5.7", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.7.tgz", + "integrity": "sha512-Why+9t1KuqWtIqYKtbk6wgWbE1PjyXJOyGkpmTUh0RX5p4HL7nnRuBkjAO9P2r9tGQP6bLWxl77jRLew3V5xXg==", + "requires": { + "@types/sizzle": "*" + } + }, + "@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + }, + "@types/mithril": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/mithril/-/mithril-2.0.8.tgz", + "integrity": "sha512-QzVV70DqUhWfLFpMFDBI9rRxtzeUUpbhiFDpUJYSV92AePgl+Qfficgv2MOb1Ceb+lBOQU8+L+Hjf2UielQjEw==" + }, + "@types/node": { + "version": "20.5.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.7.tgz", + "integrity": "sha512-dP7f3LdZIysZnmvP3ANJYTSwg+wLLl8p7RqniVlV7j+oXSXAbt9h0WIBFmJy5inWZoX9wZN6eXx+YXd9Rh3RBA==" + }, + "@types/sizzle": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", + "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==" + }, + "@types/throttle-debounce": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/throttle-debounce/-/throttle-debounce-2.1.0.tgz", + "integrity": "sha512-5eQEtSCoESnh2FsiLTxE121IiE60hnMqcb435fShf4bpLRjEu1Eoekht23y6zXS9Ts3l+Szu3TARnTsA0GkOkQ==" + }, + "@webassemblyjs/ast": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", + "requires": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", + "requires": { + "@webassemblyjs/ast": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "requires": {} + }, + "@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "requires": {} + }, + "@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" + }, + "acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==" + }, + "acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "requires": {} + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + }, + "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==", + "requires": {} + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + }, + "browserslist": { + "version": "4.21.10", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", + "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "requires": { + "caniuse-lite": "^1.0.30001517", + "electron-to-chromium": "^1.4.477", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.11" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001524", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001524.tgz", + "integrity": "sha512-Jj917pJtYg9HSJBF95HVX3Cdr89JUyLT4IZ8SvM5aDRni95swKgYi3TgYLH5hnGfPE/U1dg6IfZ50UsIlLkwSA==" + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==" + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "core-js-compat": { + "version": "3.32.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.32.1.tgz", + "integrity": "sha512-GSvKDv4wE0bPnQtjklV101juQ85g6H3rm5PDP20mqlS5j0kXF3pP97YvAu5hl+uFHqMictp3b2VxOHljWMAtuA==", + "requires": { + "browserslist": "^4.21.10" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "dayjs": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.7.tgz", + "integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==" + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "requires": { + "ms": "2.1.2" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "requires": { + "object-keys": "^1.0.12" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==" + }, + "electron-to-chromium": { + "version": "1.4.504", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.504.tgz", + "integrity": "sha512-cSMwIAd8yUh54VwitVRVvHK66QqHWE39C3DRj8SWiXitEpVSY3wNPD9y1pxQtLIi4w3UdzF9klLsmuPshz09DQ==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + }, + "enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "envinfo": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==" + }, + "es-module-lexer": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "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": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==" + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flarum-tsconfig": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/flarum-tsconfig/-/flarum-tsconfig-1.0.2.tgz", + "integrity": "sha512-RUaN7D6noLK9vY1F86NIc+IlIP1YAA3bJ4jGR5pIm8UxvLBLW8qrAHzIosuQJgvnge7VgTA5c2LoNefUK/9EiQ==", + "requires": { + "@types/jquery": "^3.5.5", + "@types/mithril": "^2.0.7", + "@types/throttle-debounce": "^2.1.0", + "dayjs": "^1.10.4" + } + }, + "flarum-webpack-config": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flarum-webpack-config/-/flarum-webpack-config-2.0.2.tgz", + "integrity": "sha512-kUCaCsXL8s/OhSWleWtIppRXDNBzAf8/ewCx9OIF0zNO0hlvY5T1N0EO0AnyUJbsp5nOCdzsTo9rTRRsbKT+IA==", + "requires": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-object-assign": "^7.16.0", + "@babel/plugin-transform-react-jsx": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.0", + "@babel/preset-env": "^7.16.0", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.0", + "babel-loader": "^8.2.3", + "typescript": "^4.4.4", + "webpack": "^5.76.0", + "webpack-bundle-analyzer": "^4.5.0" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "requires": { + "duplexer": "^0.1.2" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "import-local": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", + "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==" + }, + "is-core-module": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", + "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "requires": { + "isobject": "^3.0.1" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==" + }, + "loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "requires": { + "find-up": "^4.0.0" + } + }, + "prettier": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.2.tgz", + "integrity": "sha512-o2YR9qtniXvwEZlOKbveKfDQVyqxbEIWn48Z8m3ZJjBjcCmUy3xZGIv+7AkaeuaTr6yPXJjwv07ZWlsWbEy1rQ==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "requires": { + "resolve": "^1.20.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==" + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" + } + } + }, + "resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "requires": { + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "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" + } + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "sirv": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-1.0.18.tgz", + "integrity": "sha512-f2AOPogZmXgJ9Ma2M22ZEhc1dNtRIzcEkiflMFeVTRq+OViOZMvH1IPMVOwrKaxpSaHioBJiDR0SluRqGa7atA==", + "requires": { + "@polka/url": "^1.0.0-next.20", + "mime": "^2.3.1", + "totalist": "^1.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" + }, + "terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "requires": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "requires": { + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + }, + "totalist": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-1.1.0.tgz", + "integrity": "sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==" + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + }, + "typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", + "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==" + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==" + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==" + }, + "update-browserslist-db": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", + "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "requires": { + "punycode": "^2.1.0" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz", + "integrity": "sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ==", + "requires": { + "acorn": "^8.0.4", + "acorn-walk": "^8.0.0", + "chalk": "^4.1.0", + "commander": "^7.2.0", + "gzip-size": "^6.0.0", + "lodash": "^4.17.20", + "opener": "^1.5.2", + "sirv": "^1.0.7", + "ws": "^7.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "dependencies": { + "commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==" + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==" + }, + "ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", + "requires": {} + } + } + }, "@polka/url": { "version": "1.0.0-next.21", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", diff --git a/js/package.json b/js/package.json index 2bcfac2..e7697b0 100644 --- a/js/package.json +++ b/js/package.json @@ -4,6 +4,7 @@ "prettier": "@flarum/prettier-config", "dependencies": { "@flarum/prettier-config": "^1.0.0", + "@nodeloc/flarum-ext-leaderboard": "file:", "flarum-tsconfig": "^1.0.2", "flarum-webpack-config": "^2.0.2", "webpack": "^5.88.2", diff --git a/src/AddMonthlyCountAttributes.php b/src/AddMonthlyCountAttributes.php new file mode 100644 index 0000000..36e9ae4 --- /dev/null +++ b/src/AddMonthlyCountAttributes.php @@ -0,0 +1,17 @@ +monthly_discussion_count ; + $attributes['monthlyCommentCount'] = $user->monthly_comment_count ; + return $attributes; + } +} diff --git a/src/Listeners/UpdateCount.php b/src/Listeners/UpdateCount.php index a138366..03c8097 100644 --- a/src/Listeners/UpdateCount.php +++ b/src/Listeners/UpdateCount.php @@ -43,16 +43,30 @@ public function __construct(SettingsRepositoryInterface $settings, Dispatcher $e public function postWasPosted(Posted $event) { - $user = $event->actor; - $user ->increment('monthly_comment_count', 1); - $user->save(); + if ($event->post['number'] > 1) { + $user = $event->actor; + $user ->increment('monthly_comment_count', 1); + $user->save(); + } + } + public function postWasDeleted(PostDeleted $event) + { + if ($event->post['number'] > 1) { + $user = $event->actor; + $user ->decrement('monthly_comment_count', 1); + $user->save(); + } } - public function discussionWasStarted(Started $event) { $user = $event->actor; $user ->increment('monthly_discussion_count', 1); $user->save(); } - + public function discussionWasDeleted(DiscussionDeleted $event) + { + $user = $event->actor; + $user ->decrement('monthly_discussion_count', 1); + $user->save(); + } }