├── .gitignore ├── .npmignore ├── LICENSE ├── README.md ├── example ├── .gitignore ├── app │ ├── next.config.js │ └── pages │ │ ├── index.js │ │ └── otherpage.js ├── data │ └── frontpage.txt ├── package-lock.json ├── package.json └── server │ └── index.js ├── index.js ├── lib ├── page.js └── server.js ├── package-lock.json ├── package.json ├── page.js └── server.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | example 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The 3-Clause BSD License 2 | 3 | Copyright 2018 Gábor Kozár 4 | 5 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 8 | 9 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 10 | 11 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Next-Express.js: Next.js + Express.js made easy 2 | 3 | [Next.js](https://nextjs.org) is a framework for easily creating web applications using Node.js and React. It provides a built-in solution for styling, routing, handling server-side handling, and more. With complicated websites, you often want to use it with a [custom Node.js webserver](https://nextjs.org/docs#custom-server-and-routing), often written using [Express.js](http://expressjs.com). Next-Express is a tiny library that makes this trivial. 4 | 5 | (I really wanted the package name `nextpress`, but unfortunately it's already taken by an abandoned package...) 6 | 7 | ## The problem 8 | 9 | Next.js page components can define an asynchronous static method `getInitialProps()` that will provide the `props` to the page component. As of Next.js v6.0, `getInitialProps()` is executed once on the server for the initial page, and then executed **only** on the client for any page transitions (using Next.js' `` component). In this function, you will generally want to load information from your data sources; for instance, from a database. However, when running on the client, you do not have access to the database, nor any other data sources on the server side. 10 | 11 | A common solution to the problem is to define a REST API, i.e. server-side route (e.g. using Express) that loads the required information and sends it back to the client encoded as JSON. Then, you can use a universal `fetch()` implementation to perform an AJAX (HTTP) request against that API (route). 12 | 13 | This works, but involves writing some boilerplate code for performing a `fetch()` in every page that needs from the server (which is usually most of them), plus an extra server-side route. Furthermore, for the initial `getInitialProps()` call that happens on the server, you're now paying for an extra HTTP request unnecessarily. 14 | 15 | There is a way to eliminate the extra HTTP request, as you are allowed to pass data via the query arguments object from your page-rendering route to your page component, but at the cost of additional mess to your codebase. 16 | Next-Express allows you to solve this problem trivially, keeping your code clear and performant. 17 | 18 | ## Requirements 19 | 20 | - Node.js v7.6.0 or higher (has to support async/await) (last tested with 10.16.3) 21 | - Next.js v4 or higher (last tested with 9.0.5) 22 | - Express.js v4 (last tested with 4.17.1) 23 | 24 | Both Next.js and Express.js are declared as [peer dependencies](https://docs.npmjs.com/files/package.json#peerdependencies). 25 | 26 | ## Installation 27 | 28 | The package is available through the NPM package manager as [next-express](https://www.npmjs.com/package/next-express). 29 | 30 | Installation using NPM: 31 | 32 | ```bash 33 | npm install --save next-express 34 | ``` 35 | 36 | Using Yarn: 37 | 38 | ```bash 39 | yarn add next-express 40 | ``` 41 | 42 | ## Using Next-Express 43 | 44 | Using Next-Express on the server is very easy, since Next-Express integrates into Express: 45 | 46 | ```javascript 47 | // server-side code, see https://nextjs.org/docs#custom-server-and-routing 48 | 49 | const path = require("path"); 50 | const express = require("express"); 51 | const next = require("next"); 52 | 53 | // for example data loading 54 | const { readFile } = require("fs"); 55 | const { promisify } = require("util"); 56 | 57 | const PORT = 8000; 58 | 59 | // initialize the Next.js application 60 | const app = next({ 61 | dev: process.env.NODE_ENV !== "production" 62 | }); 63 | 64 | // initialize and inject Next-Express into Express.js 65 | // 'nextExpress' will just be the same 'express': the name difference is only for clarity of intent 66 | const nextExpress = require("next-express/server")(app).injectInto(express); 67 | 68 | app.prepare() 69 | .then(() => { 70 | // create an Express.js application, augumented with 71 | // Next-Express: all the normal Express.js functions work as 72 | // normal 73 | const server = nextExpress(); 74 | 75 | // one of the things that Next-Express adds is a method called 76 | // pageRoute() that you can use to define a route that serves 77 | // a Next.js page 78 | server.pageRoute({ 79 | // GET requests to this path will be handled by this route 80 | path: "/", 81 | 82 | // path to the Next.js page to render 83 | // here this is redundant, since it's the same as "path" 84 | renderPath: "/", 85 | 86 | // an async function that fetches the data to be passed to 87 | // the page component rendered as props - this will always 88 | // run on the server 89 | async getProps(req, res) { 90 | return { 91 | content: await readFileAsync(path.join(__dirname, "data.txt"), "utf-8") 92 | }; 93 | } 94 | }); 95 | 96 | // you can register any other routes as you want; you can also 97 | // use ALL the standard Express functions such as 98 | // server.get(), server.post(), server.use(), etc. 99 | 100 | // finally, start the server 101 | // next-express' listen() method returns a Promise if no callback 102 | // function was passed to it; it also automatically registers 103 | // the Next.js request handler (app.getRequestHandler()) 104 | return server.listen(PORT); 105 | }) 106 | .then(() => console.log(`> Running on http://localhost:${PORT}`)) 107 | .catch(err => { 108 | console.error(`Server failed to start: ${err.stack}`); 109 | process.exit(1); 110 | }); 111 | ``` 112 | 113 | For the page component, the situation is even simpler: 114 | 115 | ```javascript 116 | import React from "react"; 117 | import nextExpressPage from "next-express/page"; 118 | 119 | class FrontPage extends React.Component { 120 | // component code here as normal, your data is in the props 121 | // ... 122 | }; 123 | 124 | // nextExpressPage() automatically generates a getInitialProps() for 125 | // the page component that takes care of fetching the data as 126 | // needed, regardless of whether it's running on the server or 127 | // client 128 | export default nextExpressPage(FrontPage); 129 | ``` 130 | 131 | That's it! 132 | 133 | For a more detailed example, see the [included example application](https://github.com/shdnx/next-express/tree/master/example). 134 | 135 | ## Documentation 136 | 137 | ### Module `next-express/server` 138 | 139 | This module exports a single function that takes the Next.js application object as parameter and returns the `nextExpress` object that exposes the following functions: 140 | 141 | #### `injectInto(express)` 142 | 143 | Makes the Next-Express functionality conveniently available through the given `express` object. This adds the functions [`nextExpress.pageRoute()`](#pagerouteexpressrouter-options) and [`nextExpress.getPageHandler()`](#getpagehandleroptions) to all `express.application` and `express.Router` objects, without having to explicitly pass the express object instance as argument. Furthermore, it overrides `express.application.listen` with [`nextExpress.listen()`](#listenexpressapp-listenargs). 144 | 145 | Using this function is the most convenient way of utilizing the features of Next-Express, and is recommended. However, it might not be possible or desirable in all scenarios. 146 | 147 | #### `getPageHandler(options)` 148 | 149 | Creates an Express.js request handler function to handle a request to a given Next.js page. 150 | 151 | **Parameters**: 152 | - `options : Object`: an object with the following properties: 153 | - `renderPath : String`: the path to the Next.js page to render. It will be passed directly as third argument to [`nextApp.render()`](https://nextjs.org/docs/#custom-server-and-routing). Optional: if omitted, the Express route path is used. 154 | - `async getProps(req : express.Request, res : express.Response) : Promise(Object)`: an async function that will be called and the resulting `Promise` awaited whenever the page's data is requested. Takes the usual `express.Request` and `express.Response` objects as parameter, like any Express.js request handler function. This function is allowed to throw (as in, reject the returned `Promise` with) a [`nextExpress.InvalidRequestError`](#invalidrequesterror). 155 | 156 | Instead of an object, `getPageHandler()` also accepts just a function as the only argument, which will be treated as the `getProps()` function described above. 157 | 158 | **Return value**: an Express.js route handler `Function` that can be passed to `express.Router.get()`, `express.Router.use()`, etc. 159 | 160 | **Details**: 161 | 162 | This is the central function of Next-Express, meant to be used in conjunction with [`nextExpressPage()`](#default-export-nextexpresspagepagecomponent) from `next-express/page`. It generates an Express.js route handler function that serves dual purposes: 163 | 164 | 1) Handles `GET` requests that accept `application/json` but not `text/html` (as expressed by the HTTP [`Accept` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept)) by obtaining the page data from `options.getProps()` and sending them back to the client as JSON. 165 | Such requests will be performed automatically by `nextExpressPage()` from `next-express/page` whenever the given page is navigated to, and its static `getInitialProps()` function is called by Next.js. The object returned by `options.getProps()` will be passed as `props` to the page component. 166 | 167 | 2) Handles `GET` requests that accept `text/html` (as expressed by the HTTP [`Accept` header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept)) by loading the props by calling `options.getProps()` and then rendering the Next.js page specified by `options.renderPath`. 168 | 169 | 3) Any other requests are considered invalid and are responded to with a status code of [406 Not Acceptable](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/406). 170 | 171 | In both valid scenarios, `options.getProps()` is allowed to throw (as in, reject the returned `Promise` with) a [`nextExpress.InvalidRequestError`](#invalidrequesterror) when the request is invalid. The client will be sent an HTTP response with the status code given to the constructor (400 Bad Request by default). The body of the response depends on the accepted content type (as specified by the `Accept` request header): 172 | - If the client accepts `text/plain` or `text/html`, the response body will be the error message. 173 | - If the client accepts `text/json`, the response body will be the JSON object of the following shape: 174 | - `requestSuccess = false` 175 | - `errorMesssage : String`: the error message 176 | - Otherwise, the response body will be empty. 177 | 178 | Take care that the error message (but not the stack trace) given to [`nextExpress.InvalidRequestError`](#invalidrequesterror) will be exposed to the end user! Do not disclose any internal, or security-critical details in it. 179 | 180 | Note that for consistency, when no [`nextExpress.InvalidRequestError`](#invalidrequesterror) is thrown, the object returned by `options.getProps()` is modified by adding a property `requestSuccess` with the value `true`. 181 | 182 | #### `pageRoute(expressRouter, options)` 183 | 184 | Registers an HTTP `GET` route with the specified express router-like object (either an `express.Router` or an `express.application`). 185 | 186 | **Parameters**: 187 | - `expressRouter`: an `express.Router` or an `express.application` object. 188 | - `options : Object`: object with the following properties: 189 | - `path : String`: the path pattern on which to listen to incoming requests. Will be passed as a first argument to `expressRouter.get()`, so the same wildcard and placeholder patterns can be used. Required. 190 | - `middleware : Array(Function)`: an optional array of Express middlewares to pass to `expressRouter.get()`; these middleware will be executed before the page handler itself. 191 | - `...handlerOptions`: any remaining properties will be directly passed on to [`nextExpress.getPageHandler()`](#getpagehandleroptions). 192 | 193 | **Return value**: `undefined` (same as `express.Router.get()`). 194 | 195 | **Details**: This function acts as a simple convenience wrapper around [`getPageHandler()`](#getpagehandleroptions). 196 | 197 | #### `listen(expressApp, ...listenArgs)` 198 | 199 | A convenience wrapper function around `expressApp.listen()`. 200 | 201 | **Parameters**: 202 | - `expressApp`: an `express.application` object. 203 | - `...listenArgs`: any further arguments will be directly passed along to `expressApp.listen()`. 204 | 205 | **Return value**: `Promise` if no callback argument was specified, otherwise `undefined` (same as `express.application.listen()`). 206 | 207 | **Details**: 208 | 209 | This function ensures that the Next.js request handler (obtained by `nextApp.getRequestHandler()`) is registered with `expressApp`. Otherwise, it simply calls `expressApp.listen()`. 210 | 211 | The only other difference is that this function supports `Promise`s: if no callback function is passed as the last argument, then a `Promise` is returned which resolves when the callback function would have been called. This matches the behaviour of the function generated by `util.promisify(expressApp.listen)`. For details, see the documentation of Node.js' [`util.promisify()`](https://nodejs.org/dist/latest-v8.x/docs/api/util.html#util_util_promisify_original). 212 | 213 | #### `InvalidRequestError` 214 | 215 | Represents an error that can be thrown by user code inside `getPageHandler()` or `pageRoute()` to indicate that request was invalid an expose the error to the user. Inherits from [`Error`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error). 216 | 217 | For information on how to use this class, see [`getPageHandler()`](#getpagehandleroptions). 218 | 219 | ###### `constructor(message : String, statusCode : ?Number, ...errorArgs)` 220 | 221 | Constructs a new `InvalidRequestError` object with the specified error message, optional HTTP status code (defaults to [400 Bad Request](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400)) and any other arguments to be passed directly to the `Error` base constructor. 222 | 223 | ### Module `next-express/page` 224 | 225 | #### Default export: `nextExpressPage(PageComponent)` 226 | 227 | Auguments the given page component class such that it defines a static async `getInitialProps()` function that automatically fetches the data from the corresponding route on the server defined by [`nextExpress.pageRoute()`](#pagerouteexpressrouter-options) or [`nextExpress.getPageHandler()`](#getpagehandleroptions) as necessary. 228 | 229 | **Parameters**: 230 | - `PageComponent`: the page component class that requires data from the server. 231 | 232 | **Return value**: the `PageComponent` parameter itself. 233 | 234 | **Details**: 235 | 236 | This function acts as a replacement for defining your own `getInitialProps()` on your page component class. You should not use this function if your page does not require data from the server. 237 | 238 | You *are* allowed to define a custom `getInitialProps()` on your page component class even when using this function. If you do, all that Next-Express will do is call your custom `getInitialProps()`, passing it all normal arguments, and an extra function argument called `serverDataFetchFunc()`. This gives you full control of how and went you want server data fetching to happen. For example, you might only want to pull data from the server if you don't already have it in some local cache: 239 | 240 | ```javascript 241 | import React from "react"; 242 | import nextExpressPage from "next-express/page"; 243 | 244 | class MyPage extends React.Component { 245 | static async getInitialProps(context, serverDataFetchFunc) { 246 | let data; 247 | if (haveInLocalCache()) { 248 | data = retrieveFromLocalCache(); 249 | } else { 250 | data = await serverDataFetchFunc(); 251 | storeInLocalCache(data); 252 | } 253 | 254 | // ... 255 | } 256 | 257 | // ... 258 | }; 259 | 260 | export default nextExpressPage(MyPage); 261 | ``` 262 | 263 | `serverDataFetchFunc()` is an async function that takes no parameters, and returns (a Promise of) the server data acquired by querying the route on the server defined with [`nextExpress.pageRoute()`](#pagerouteexpressrouter-options) or [`nextExpress.getPageHandler()`](#getpagehandleroptions) corresponding to the current page. You cannot use this function if you didn't use those functions on the server side to define the route that serves this page. 264 | 265 | When running on the server, `serverDataFetchFunc()` will not perform an HTTP request, and will be essentially a free operation in terms of performance. 266 | When running on the client, it will send an HTTP `GET` request to the page's URL, including any query arguments. It will set only one extra header: `Accept: application/json`. This request will be handled by [`nextExpress.getPageHandler()`](#getpagehandleroptions) route on the server: the server data will be serialized to JSON and passed to the client. 267 | 268 | If you do not define your own `getInitialProps()`, `nextExpressPage()` will define it for you, which will automatically call `serverDataFetchFunc()`. 269 | 270 | ## Credits and contact 271 | 272 | Created by [Gábor Kozár](mailto:id@gaborkozar.me). 273 | Please do not e-mail me with bugs, feature requests and other issues: use the [issue tracker](https://github.com/shdnx/next-express/issues) instead. 274 | 275 | ## License 276 | 277 | BSD 3-Clause License, see [LICENSE](https://github.com/shdnx/next-express/blob/master/LICENSE). For what this means, see the overview at [tldrlegal.com](https://tldrlegal.com/license/bsd-3-clause-license-(revised)). In a nutshell: feel free to do with it whatever you please, so long as you give credit where credit is due. 278 | -------------------------------------------------------------------------------- /example/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | app/build 3 | -------------------------------------------------------------------------------- /example/app/next.config.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | 3 | module.exports = { 4 | distDir: "build", 5 | 6 | webpack(config, options) { 7 | Object.assign(config.resolve.alias, { 8 | // Note: for some reason this doesn't work unless it points directly to the "lib" directory - i.e. pointing to the root folder causes Babel to fail with syntax error on the "export" statement. Wtf? 9 | // Same happens if in package.json I declare the dependency to nextpress as file:../ (local dependency)... 10 | "next-express": path.resolve(__dirname, "..", "..", "lib") 11 | }); 12 | 13 | return config; 14 | } 15 | }; 16 | -------------------------------------------------------------------------------- /example/app/pages/index.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Link from "next/link"; 3 | 4 | // Since next-express' pageRoute() was used to declare the route for this page, you should use next-express/page to get the data fetched from the server. 5 | import nextExpressPage from "next-express/page"; 6 | 7 | class FrontPage extends React.Component { 8 | state = { 9 | content: null, 10 | isEditing: false, 11 | editingContent: null 12 | }; 13 | 14 | constructor(props) { 15 | super(props); 16 | 17 | // TODO: use deriveStateFromProps() instead? 18 | this.state.content = props.content; 19 | 20 | this._handleEnterEdit = this._handleEnterEdit.bind(this); 21 | this._handleEditChange = this._handleEditChange.bind(this); 22 | this._handleEditSave = this._handleEditSave.bind(this); 23 | this._handleEditCancel = this._handleEditCancel.bind(this); 24 | } 25 | 26 | _handleEnterEdit(event) { 27 | this.setState(oldState => ({ 28 | isEditing: true, 29 | editingContent: oldState.content 30 | })); 31 | } 32 | 33 | _handleEditChange(event) { 34 | this.setState({ 35 | editingContent: event.target.value 36 | }); 37 | } 38 | 39 | async _handleEditSave(event) { 40 | this.setState(oldState => ({ 41 | isEditing: false, 42 | content: oldState.editingContent 43 | })); 44 | 45 | const response = await fetch("/api/save", { 46 | method: "POST", 47 | headers: { 48 | "Content-Type": "application/json" 49 | }, 50 | body: JSON.stringify({ 51 | content: this.state.editingContent 52 | }) 53 | }); 54 | 55 | if (!response.ok) { 56 | console.error("Error while saving new text, response status: ", response.status); 57 | alert("Error while saving new text!"); 58 | } 59 | } 60 | 61 | _handleEditCancel(event) { 62 | this.setState({ 63 | isEditing: false 64 | }); 65 | } 66 | 67 | render() { 68 | return ( 69 |
70 |

Other page »

71 | 72 |

Hello world!

73 | 74 | { 75 | this.state.isEditing 76 | ? ( 77 | 78 | 83 | 84 |
85 | 86 | 87 |
88 |
89 | ) 90 | : ( 91 | 92 |

{this.state.content}

93 | 94 |
95 | ) 96 | } 97 |
98 | ); 99 | } 100 | }; 101 | 102 | export default nextExpressPage(FrontPage); 103 | -------------------------------------------------------------------------------- /example/app/pages/otherpage.js: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Link from "next/link"; 3 | 4 | // OtherPage doesn't need to be decorated with next-express/page, since it doesn't need any server data. 5 | 6 | export default function OtherPage() { 7 | return ( 8 |
9 |

Other page

10 |

Here's another page, so you can test that the main page requests data correctly using fetch() when it's navigated to, and it's all done seemlessly.

11 |

12 | «{" "} 13 | 14 | Back to frontpage 15 | 16 |

17 |
18 | ); 19 | }; 20 | -------------------------------------------------------------------------------- /example/data/frontpage.txt: -------------------------------------------------------------------------------- 1 | Hello world! 2 | I'm an example document. 3 | -------------------------------------------------------------------------------- /example/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-express-example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@babel/code-frame": { 8 | "version": "7.12.11", 9 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", 10 | "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", 11 | "requires": { 12 | "@babel/highlight": "^7.10.4" 13 | } 14 | }, 15 | "@babel/helper-plugin-utils": { 16 | "version": "7.16.7", 17 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", 18 | "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==" 19 | }, 20 | "@babel/helper-validator-identifier": { 21 | "version": "7.16.7", 22 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 23 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" 24 | }, 25 | "@babel/highlight": { 26 | "version": "7.16.10", 27 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 28 | "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 29 | "requires": { 30 | "@babel/helper-validator-identifier": "^7.16.7", 31 | "chalk": "^2.0.0", 32 | "js-tokens": "^4.0.0" 33 | }, 34 | "dependencies": { 35 | "js-tokens": { 36 | "version": "4.0.0", 37 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 38 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 39 | } 40 | } 41 | }, 42 | "@babel/plugin-syntax-jsx": { 43 | "version": "7.14.5", 44 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", 45 | "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", 46 | "requires": { 47 | "@babel/helper-plugin-utils": "^7.14.5" 48 | } 49 | }, 50 | "@babel/runtime": { 51 | "version": "7.15.3", 52 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz", 53 | "integrity": "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==", 54 | "requires": { 55 | "regenerator-runtime": "^0.13.4" 56 | } 57 | }, 58 | "@babel/types": { 59 | "version": "7.15.0", 60 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", 61 | "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", 62 | "requires": { 63 | "@babel/helper-validator-identifier": "^7.14.9", 64 | "to-fast-properties": "^2.0.0" 65 | } 66 | }, 67 | "@hapi/accept": { 68 | "version": "5.0.2", 69 | "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz", 70 | "integrity": "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==", 71 | "requires": { 72 | "@hapi/boom": "9.x.x", 73 | "@hapi/hoek": "9.x.x" 74 | } 75 | }, 76 | "@hapi/boom": { 77 | "version": "9.1.4", 78 | "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz", 79 | "integrity": "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==", 80 | "requires": { 81 | "@hapi/hoek": "9.x.x" 82 | } 83 | }, 84 | "@hapi/hoek": { 85 | "version": "9.2.1", 86 | "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.1.tgz", 87 | "integrity": "sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw==" 88 | }, 89 | "@napi-rs/triples": { 90 | "version": "1.1.0", 91 | "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.1.0.tgz", 92 | "integrity": "sha512-XQr74QaLeMiqhStEhLn1im9EOMnkypp7MZOwQhGzqp2Weu5eQJbpPxWxixxlYRKWPOmJjsk6qYfYH9kq43yc2w==" 93 | }, 94 | "@next/env": { 95 | "version": "11.1.3", 96 | "resolved": "https://registry.npmjs.org/@next/env/-/env-11.1.3.tgz", 97 | "integrity": "sha512-5+vaeooJuWmICSlmVaAC8KG3O8hwKasACVfkHj58xQuCB5SW0TKW3hWxgxkBuefMBn1nM0yEVPKokXCsYjBtng==" 98 | }, 99 | "@next/polyfill-module": { 100 | "version": "11.1.3", 101 | "resolved": "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.1.3.tgz", 102 | "integrity": "sha512-7yr9cr4a0SrBoVE8psxXWK1wTFc8UzsY8Wc2cWGL7qA0hgtqACHaXC47M1ByJB410hFZenGrpE+KFaT1unQMyw==" 103 | }, 104 | "@next/react-dev-overlay": { 105 | "version": "11.1.3", 106 | "resolved": "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.1.3.tgz", 107 | "integrity": "sha512-zIwtMliSUR+IKl917ToFNB+0fD7bI5kYMdjHU/UEKpfIXAZPnXRHHISCvPDsczlr+bRsbjlUFW1CsNiuFedeuQ==", 108 | "requires": { 109 | "@babel/code-frame": "7.12.11", 110 | "anser": "1.4.9", 111 | "chalk": "4.0.0", 112 | "classnames": "2.2.6", 113 | "css.escape": "1.5.1", 114 | "data-uri-to-buffer": "3.0.1", 115 | "platform": "1.3.6", 116 | "shell-quote": "1.7.2", 117 | "source-map": "0.8.0-beta.0", 118 | "stacktrace-parser": "0.1.10", 119 | "strip-ansi": "6.0.0" 120 | }, 121 | "dependencies": { 122 | "ansi-styles": { 123 | "version": "4.3.0", 124 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 125 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 126 | "requires": { 127 | "color-convert": "^2.0.1" 128 | } 129 | }, 130 | "chalk": { 131 | "version": "4.0.0", 132 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz", 133 | "integrity": "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==", 134 | "requires": { 135 | "ansi-styles": "^4.1.0", 136 | "supports-color": "^7.1.0" 137 | } 138 | }, 139 | "color-convert": { 140 | "version": "2.0.1", 141 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 142 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 143 | "requires": { 144 | "color-name": "~1.1.4" 145 | } 146 | }, 147 | "color-name": { 148 | "version": "1.1.4", 149 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 150 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 151 | }, 152 | "has-flag": { 153 | "version": "4.0.0", 154 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 155 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 156 | }, 157 | "supports-color": { 158 | "version": "7.2.0", 159 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 160 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 161 | "requires": { 162 | "has-flag": "^4.0.0" 163 | } 164 | } 165 | } 166 | }, 167 | "@next/react-refresh-utils": { 168 | "version": "11.1.3", 169 | "resolved": "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.1.3.tgz", 170 | "integrity": "sha512-144kD8q2nChw67V3AJJlPQ6NUJVFczyn10bhTynn9o2rY5DEnkzuBipcyMuQl2DqfxMkV7sn+yOCOYbrLCk9zg==" 171 | }, 172 | "@next/swc-darwin-arm64": { 173 | "version": "11.1.3", 174 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.3.tgz", 175 | "integrity": "sha512-TwP4krjhs+uU9pesDYCShEXZrLSbJr78p12e7XnLBBaNf20SgWLlVmQUT9gX9KbWan5V0sUbJfmcS8MRNHgYuA==", 176 | "optional": true 177 | }, 178 | "@next/swc-darwin-x64": { 179 | "version": "11.1.3", 180 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.3.tgz", 181 | "integrity": "sha512-ZSWmkg/PxccHFNUSeBdrfaH8KwSkoeUtewXKvuYYt7Ph0yRsbqSyNIvhUezDua96lApiXXq6EL2d1THfeWomvw==", 182 | "optional": true 183 | }, 184 | "@next/swc-linux-x64-gnu": { 185 | "version": "11.1.3", 186 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.3.tgz", 187 | "integrity": "sha512-PrTBN0iZudAuj4jSbtXcdBdmfpaDCPIneG4Oms4zcs93KwMgLhivYW082Mvlgx9QVEiRm7+RkFpIVtG/i7JitA==", 188 | "optional": true 189 | }, 190 | "@next/swc-win32-x64-msvc": { 191 | "version": "11.1.3", 192 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.3.tgz", 193 | "integrity": "sha512-mRwbscVjRoHk+tDY7XbkT5d9FCwujFIQJpGp0XNb1i5OHCSDO8WW/C9cLEWS4LxKRbIZlTLYg1MTXqLQkvva8w==", 194 | "optional": true 195 | }, 196 | "@node-rs/helper": { 197 | "version": "1.2.1", 198 | "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", 199 | "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", 200 | "requires": { 201 | "@napi-rs/triples": "^1.0.3" 202 | } 203 | }, 204 | "@types/node": { 205 | "version": "17.0.17", 206 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.17.tgz", 207 | "integrity": "sha512-e8PUNQy1HgJGV3iU/Bp2+D/DXh3PYeyli8LgIwsQcs1Ar1LoaWHSIT6Rw+H2rNJmiq6SNWiDytfx8+gYj7wDHw==" 208 | }, 209 | "accepts": { 210 | "version": "1.3.7", 211 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 212 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 213 | "requires": { 214 | "mime-types": "~2.1.24", 215 | "negotiator": "0.6.2" 216 | } 217 | }, 218 | "anser": { 219 | "version": "1.4.9", 220 | "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz", 221 | "integrity": "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==" 222 | }, 223 | "ansi-regex": { 224 | "version": "5.0.1", 225 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 226 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 227 | }, 228 | "ansi-styles": { 229 | "version": "3.2.1", 230 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 231 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 232 | "requires": { 233 | "color-convert": "^1.9.0" 234 | } 235 | }, 236 | "anymatch": { 237 | "version": "3.1.2", 238 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 239 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 240 | "requires": { 241 | "normalize-path": "^3.0.0", 242 | "picomatch": "^2.0.4" 243 | } 244 | }, 245 | "array-flatten": { 246 | "version": "1.1.1", 247 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 248 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 249 | }, 250 | "asn1.js": { 251 | "version": "5.4.1", 252 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", 253 | "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", 254 | "requires": { 255 | "bn.js": "^4.0.0", 256 | "inherits": "^2.0.1", 257 | "minimalistic-assert": "^1.0.0", 258 | "safer-buffer": "^2.1.0" 259 | }, 260 | "dependencies": { 261 | "bn.js": { 262 | "version": "4.12.0", 263 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 264 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 265 | } 266 | } 267 | }, 268 | "assert": { 269 | "version": "2.0.0", 270 | "resolved": "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz", 271 | "integrity": "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==", 272 | "requires": { 273 | "es6-object-assign": "^1.1.0", 274 | "is-nan": "^1.2.1", 275 | "object-is": "^1.0.1", 276 | "util": "^0.12.0" 277 | } 278 | }, 279 | "ast-types": { 280 | "version": "0.13.2", 281 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz", 282 | "integrity": "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" 283 | }, 284 | "available-typed-arrays": { 285 | "version": "1.0.5", 286 | "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", 287 | "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" 288 | }, 289 | "base64-js": { 290 | "version": "1.5.1", 291 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 292 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 293 | }, 294 | "big.js": { 295 | "version": "5.2.2", 296 | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", 297 | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" 298 | }, 299 | "binary-extensions": { 300 | "version": "2.2.0", 301 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 302 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 303 | }, 304 | "bn.js": { 305 | "version": "5.2.0", 306 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", 307 | "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" 308 | }, 309 | "body-parser": { 310 | "version": "1.19.0", 311 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 312 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 313 | "requires": { 314 | "bytes": "3.1.0", 315 | "content-type": "~1.0.4", 316 | "debug": "2.6.9", 317 | "depd": "~1.1.2", 318 | "http-errors": "1.7.2", 319 | "iconv-lite": "0.4.24", 320 | "on-finished": "~2.3.0", 321 | "qs": "6.7.0", 322 | "raw-body": "2.4.0", 323 | "type-is": "~1.6.17" 324 | }, 325 | "dependencies": { 326 | "depd": { 327 | "version": "1.1.2", 328 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 329 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 330 | }, 331 | "http-errors": { 332 | "version": "1.7.2", 333 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 334 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 335 | "requires": { 336 | "depd": "~1.1.2", 337 | "inherits": "2.0.3", 338 | "setprototypeof": "1.1.1", 339 | "statuses": ">= 1.5.0 < 2", 340 | "toidentifier": "1.0.0" 341 | } 342 | }, 343 | "iconv-lite": { 344 | "version": "0.4.24", 345 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 346 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 347 | "requires": { 348 | "safer-buffer": ">= 2.1.2 < 3" 349 | } 350 | }, 351 | "setprototypeof": { 352 | "version": "1.1.1", 353 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 354 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 355 | } 356 | } 357 | }, 358 | "braces": { 359 | "version": "3.0.2", 360 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 361 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 362 | "requires": { 363 | "fill-range": "^7.0.1" 364 | } 365 | }, 366 | "brorand": { 367 | "version": "1.1.0", 368 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", 369 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" 370 | }, 371 | "browserify-aes": { 372 | "version": "1.2.0", 373 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", 374 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", 375 | "requires": { 376 | "buffer-xor": "^1.0.3", 377 | "cipher-base": "^1.0.0", 378 | "create-hash": "^1.1.0", 379 | "evp_bytestokey": "^1.0.3", 380 | "inherits": "^2.0.1", 381 | "safe-buffer": "^5.0.1" 382 | } 383 | }, 384 | "browserify-cipher": { 385 | "version": "1.0.1", 386 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", 387 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", 388 | "requires": { 389 | "browserify-aes": "^1.0.4", 390 | "browserify-des": "^1.0.0", 391 | "evp_bytestokey": "^1.0.0" 392 | } 393 | }, 394 | "browserify-des": { 395 | "version": "1.0.2", 396 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", 397 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", 398 | "requires": { 399 | "cipher-base": "^1.0.1", 400 | "des.js": "^1.0.0", 401 | "inherits": "^2.0.1", 402 | "safe-buffer": "^5.1.2" 403 | } 404 | }, 405 | "browserify-rsa": { 406 | "version": "4.1.0", 407 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", 408 | "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", 409 | "requires": { 410 | "bn.js": "^5.0.0", 411 | "randombytes": "^2.0.1" 412 | } 413 | }, 414 | "browserify-sign": { 415 | "version": "4.2.1", 416 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", 417 | "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", 418 | "requires": { 419 | "bn.js": "^5.1.1", 420 | "browserify-rsa": "^4.0.1", 421 | "create-hash": "^1.2.0", 422 | "create-hmac": "^1.1.7", 423 | "elliptic": "^6.5.3", 424 | "inherits": "^2.0.4", 425 | "parse-asn1": "^5.1.5", 426 | "readable-stream": "^3.6.0", 427 | "safe-buffer": "^5.2.0" 428 | }, 429 | "dependencies": { 430 | "inherits": { 431 | "version": "2.0.4", 432 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 433 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 434 | } 435 | } 436 | }, 437 | "browserify-zlib": { 438 | "version": "0.2.0", 439 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", 440 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", 441 | "requires": { 442 | "pako": "~1.0.5" 443 | } 444 | }, 445 | "browserslist": { 446 | "version": "4.16.6", 447 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", 448 | "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", 449 | "requires": { 450 | "caniuse-lite": "^1.0.30001219", 451 | "colorette": "^1.2.2", 452 | "electron-to-chromium": "^1.3.723", 453 | "escalade": "^3.1.1", 454 | "node-releases": "^1.1.71" 455 | } 456 | }, 457 | "buffer": { 458 | "version": "5.6.0", 459 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 460 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 461 | "requires": { 462 | "base64-js": "^1.0.2", 463 | "ieee754": "^1.1.4" 464 | } 465 | }, 466 | "buffer-xor": { 467 | "version": "1.0.3", 468 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", 469 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" 470 | }, 471 | "builtin-status-codes": { 472 | "version": "3.0.0", 473 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", 474 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" 475 | }, 476 | "bytes": { 477 | "version": "3.1.0", 478 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 479 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 480 | }, 481 | "call-bind": { 482 | "version": "1.0.2", 483 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 484 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 485 | "requires": { 486 | "function-bind": "^1.1.1", 487 | "get-intrinsic": "^1.0.2" 488 | } 489 | }, 490 | "caniuse-lite": { 491 | "version": "1.0.30001312", 492 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz", 493 | "integrity": "sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==" 494 | }, 495 | "chalk": { 496 | "version": "2.4.2", 497 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 498 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 499 | "requires": { 500 | "ansi-styles": "^3.2.1", 501 | "escape-string-regexp": "^1.0.5", 502 | "supports-color": "^5.3.0" 503 | } 504 | }, 505 | "chokidar": { 506 | "version": "3.5.1", 507 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", 508 | "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", 509 | "requires": { 510 | "anymatch": "~3.1.1", 511 | "braces": "~3.0.2", 512 | "fsevents": "~2.3.1", 513 | "glob-parent": "~5.1.0", 514 | "is-binary-path": "~2.1.0", 515 | "is-glob": "~4.0.1", 516 | "normalize-path": "~3.0.0", 517 | "readdirp": "~3.5.0" 518 | } 519 | }, 520 | "cipher-base": { 521 | "version": "1.0.4", 522 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", 523 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", 524 | "requires": { 525 | "inherits": "^2.0.1", 526 | "safe-buffer": "^5.0.1" 527 | } 528 | }, 529 | "classnames": { 530 | "version": "2.2.6", 531 | "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", 532 | "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" 533 | }, 534 | "color-convert": { 535 | "version": "1.9.3", 536 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 537 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 538 | "requires": { 539 | "color-name": "1.1.3" 540 | } 541 | }, 542 | "color-name": { 543 | "version": "1.1.3", 544 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 545 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 546 | }, 547 | "colorette": { 548 | "version": "1.4.0", 549 | "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", 550 | "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" 551 | }, 552 | "commondir": { 553 | "version": "1.0.1", 554 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 555 | "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" 556 | }, 557 | "console-browserify": { 558 | "version": "1.2.0", 559 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", 560 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" 561 | }, 562 | "constants-browserify": { 563 | "version": "1.0.0", 564 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", 565 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" 566 | }, 567 | "content-disposition": { 568 | "version": "0.5.3", 569 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 570 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 571 | "requires": { 572 | "safe-buffer": "5.1.2" 573 | }, 574 | "dependencies": { 575 | "safe-buffer": { 576 | "version": "5.1.2", 577 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 578 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 579 | } 580 | } 581 | }, 582 | "content-type": { 583 | "version": "1.0.4", 584 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 585 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 586 | }, 587 | "convert-source-map": { 588 | "version": "1.7.0", 589 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", 590 | "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", 591 | "requires": { 592 | "safe-buffer": "~5.1.1" 593 | }, 594 | "dependencies": { 595 | "safe-buffer": { 596 | "version": "5.1.2", 597 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 598 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 599 | } 600 | } 601 | }, 602 | "cookie": { 603 | "version": "0.4.0", 604 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 605 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 606 | }, 607 | "cookie-signature": { 608 | "version": "1.0.6", 609 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 610 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 611 | }, 612 | "core-util-is": { 613 | "version": "1.0.3", 614 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", 615 | "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" 616 | }, 617 | "create-ecdh": { 618 | "version": "4.0.4", 619 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", 620 | "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", 621 | "requires": { 622 | "bn.js": "^4.1.0", 623 | "elliptic": "^6.5.3" 624 | }, 625 | "dependencies": { 626 | "bn.js": { 627 | "version": "4.12.0", 628 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 629 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 630 | } 631 | } 632 | }, 633 | "create-hash": { 634 | "version": "1.2.0", 635 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", 636 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", 637 | "requires": { 638 | "cipher-base": "^1.0.1", 639 | "inherits": "^2.0.1", 640 | "md5.js": "^1.3.4", 641 | "ripemd160": "^2.0.1", 642 | "sha.js": "^2.4.0" 643 | } 644 | }, 645 | "create-hmac": { 646 | "version": "1.1.7", 647 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", 648 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", 649 | "requires": { 650 | "cipher-base": "^1.0.3", 651 | "create-hash": "^1.1.0", 652 | "inherits": "^2.0.1", 653 | "ripemd160": "^2.0.0", 654 | "safe-buffer": "^5.0.1", 655 | "sha.js": "^2.4.8" 656 | } 657 | }, 658 | "crypto-browserify": { 659 | "version": "3.12.0", 660 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", 661 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", 662 | "requires": { 663 | "browserify-cipher": "^1.0.0", 664 | "browserify-sign": "^4.0.0", 665 | "create-ecdh": "^4.0.0", 666 | "create-hash": "^1.1.0", 667 | "create-hmac": "^1.1.0", 668 | "diffie-hellman": "^5.0.0", 669 | "inherits": "^2.0.1", 670 | "pbkdf2": "^3.0.3", 671 | "public-encrypt": "^4.0.0", 672 | "randombytes": "^2.0.0", 673 | "randomfill": "^1.0.3" 674 | } 675 | }, 676 | "css.escape": { 677 | "version": "1.5.1", 678 | "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", 679 | "integrity": "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" 680 | }, 681 | "cssnano-preset-simple": { 682 | "version": "3.0.0", 683 | "resolved": "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz", 684 | "integrity": "sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==", 685 | "requires": { 686 | "caniuse-lite": "^1.0.30001202" 687 | } 688 | }, 689 | "cssnano-simple": { 690 | "version": "3.0.0", 691 | "resolved": "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-3.0.0.tgz", 692 | "integrity": "sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==", 693 | "requires": { 694 | "cssnano-preset-simple": "^3.0.0" 695 | } 696 | }, 697 | "data-uri-to-buffer": { 698 | "version": "3.0.1", 699 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", 700 | "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" 701 | }, 702 | "debug": { 703 | "version": "2.6.9", 704 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 705 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 706 | "requires": { 707 | "ms": "2.0.0" 708 | }, 709 | "dependencies": { 710 | "ms": { 711 | "version": "2.0.0", 712 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 713 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 714 | } 715 | } 716 | }, 717 | "define-properties": { 718 | "version": "1.1.3", 719 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 720 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 721 | "requires": { 722 | "object-keys": "^1.0.12" 723 | } 724 | }, 725 | "depd": { 726 | "version": "1.1.2", 727 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 728 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 729 | }, 730 | "des.js": { 731 | "version": "1.0.1", 732 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", 733 | "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", 734 | "requires": { 735 | "inherits": "^2.0.1", 736 | "minimalistic-assert": "^1.0.0" 737 | } 738 | }, 739 | "destroy": { 740 | "version": "1.0.4", 741 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 742 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 743 | }, 744 | "diffie-hellman": { 745 | "version": "5.0.3", 746 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", 747 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", 748 | "requires": { 749 | "bn.js": "^4.1.0", 750 | "miller-rabin": "^4.0.0", 751 | "randombytes": "^2.0.0" 752 | }, 753 | "dependencies": { 754 | "bn.js": { 755 | "version": "4.12.0", 756 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 757 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 758 | } 759 | } 760 | }, 761 | "domain-browser": { 762 | "version": "4.19.0", 763 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz", 764 | "integrity": "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==" 765 | }, 766 | "ee-first": { 767 | "version": "1.1.1", 768 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 769 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 770 | }, 771 | "electron-to-chromium": { 772 | "version": "1.4.68", 773 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.68.tgz", 774 | "integrity": "sha512-cId+QwWrV8R1UawO6b9BR1hnkJ4EJPCPAr4h315vliHUtVUJDk39Sg1PMNnaWKfj5x+93ssjeJ9LKL6r8LaMiA==" 775 | }, 776 | "elliptic": { 777 | "version": "6.5.4", 778 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", 779 | "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", 780 | "requires": { 781 | "bn.js": "^4.11.9", 782 | "brorand": "^1.1.0", 783 | "hash.js": "^1.0.0", 784 | "hmac-drbg": "^1.0.1", 785 | "inherits": "^2.0.4", 786 | "minimalistic-assert": "^1.0.1", 787 | "minimalistic-crypto-utils": "^1.0.1" 788 | }, 789 | "dependencies": { 790 | "bn.js": { 791 | "version": "4.12.0", 792 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 793 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 794 | }, 795 | "inherits": { 796 | "version": "2.0.4", 797 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 798 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 799 | } 800 | } 801 | }, 802 | "emojis-list": { 803 | "version": "2.1.0", 804 | "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", 805 | "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" 806 | }, 807 | "encodeurl": { 808 | "version": "1.0.2", 809 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 810 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 811 | }, 812 | "encoding": { 813 | "version": "0.1.13", 814 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 815 | "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 816 | "requires": { 817 | "iconv-lite": "^0.6.2" 818 | } 819 | }, 820 | "es-abstract": { 821 | "version": "1.19.1", 822 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", 823 | "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", 824 | "requires": { 825 | "call-bind": "^1.0.2", 826 | "es-to-primitive": "^1.2.1", 827 | "function-bind": "^1.1.1", 828 | "get-intrinsic": "^1.1.1", 829 | "get-symbol-description": "^1.0.0", 830 | "has": "^1.0.3", 831 | "has-symbols": "^1.0.2", 832 | "internal-slot": "^1.0.3", 833 | "is-callable": "^1.2.4", 834 | "is-negative-zero": "^2.0.1", 835 | "is-regex": "^1.1.4", 836 | "is-shared-array-buffer": "^1.0.1", 837 | "is-string": "^1.0.7", 838 | "is-weakref": "^1.0.1", 839 | "object-inspect": "^1.11.0", 840 | "object-keys": "^1.1.1", 841 | "object.assign": "^4.1.2", 842 | "string.prototype.trimend": "^1.0.4", 843 | "string.prototype.trimstart": "^1.0.4", 844 | "unbox-primitive": "^1.0.1" 845 | } 846 | }, 847 | "es-to-primitive": { 848 | "version": "1.2.1", 849 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 850 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 851 | "requires": { 852 | "is-callable": "^1.1.4", 853 | "is-date-object": "^1.0.1", 854 | "is-symbol": "^1.0.2" 855 | } 856 | }, 857 | "es6-object-assign": { 858 | "version": "1.1.0", 859 | "resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz", 860 | "integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" 861 | }, 862 | "escalade": { 863 | "version": "3.1.1", 864 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 865 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 866 | }, 867 | "escape-html": { 868 | "version": "1.0.3", 869 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 870 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 871 | }, 872 | "escape-string-regexp": { 873 | "version": "1.0.5", 874 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 875 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 876 | }, 877 | "etag": { 878 | "version": "1.8.1", 879 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 880 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 881 | }, 882 | "events": { 883 | "version": "3.3.0", 884 | "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", 885 | "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" 886 | }, 887 | "evp_bytestokey": { 888 | "version": "1.0.3", 889 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", 890 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", 891 | "requires": { 892 | "md5.js": "^1.3.4", 893 | "safe-buffer": "^5.1.1" 894 | } 895 | }, 896 | "express": { 897 | "version": "4.17.1", 898 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 899 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 900 | "requires": { 901 | "accepts": "~1.3.7", 902 | "array-flatten": "1.1.1", 903 | "body-parser": "1.19.0", 904 | "content-disposition": "0.5.3", 905 | "content-type": "~1.0.4", 906 | "cookie": "0.4.0", 907 | "cookie-signature": "1.0.6", 908 | "debug": "2.6.9", 909 | "depd": "~1.1.2", 910 | "encodeurl": "~1.0.2", 911 | "escape-html": "~1.0.3", 912 | "etag": "~1.8.1", 913 | "finalhandler": "~1.1.2", 914 | "fresh": "0.5.2", 915 | "merge-descriptors": "1.0.1", 916 | "methods": "~1.1.2", 917 | "on-finished": "~2.3.0", 918 | "parseurl": "~1.3.3", 919 | "path-to-regexp": "0.1.7", 920 | "proxy-addr": "~2.0.5", 921 | "qs": "6.7.0", 922 | "range-parser": "~1.2.1", 923 | "safe-buffer": "5.1.2", 924 | "send": "0.17.1", 925 | "serve-static": "1.14.1", 926 | "setprototypeof": "1.1.1", 927 | "statuses": "~1.5.0", 928 | "type-is": "~1.6.18", 929 | "utils-merge": "1.0.1", 930 | "vary": "~1.1.2" 931 | }, 932 | "dependencies": { 933 | "depd": { 934 | "version": "1.1.2", 935 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 936 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 937 | }, 938 | "http-errors": { 939 | "version": "1.7.3", 940 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 941 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 942 | "requires": { 943 | "depd": "~1.1.2", 944 | "inherits": "2.0.4", 945 | "setprototypeof": "1.1.1", 946 | "statuses": ">= 1.5.0 < 2", 947 | "toidentifier": "1.0.0" 948 | } 949 | }, 950 | "inherits": { 951 | "version": "2.0.4", 952 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 953 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 954 | }, 955 | "mime": { 956 | "version": "1.6.0", 957 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 958 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 959 | }, 960 | "ms": { 961 | "version": "2.1.1", 962 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 963 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 964 | }, 965 | "path-to-regexp": { 966 | "version": "0.1.7", 967 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 968 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 969 | }, 970 | "range-parser": { 971 | "version": "1.2.1", 972 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 973 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 974 | }, 975 | "safe-buffer": { 976 | "version": "5.1.2", 977 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 978 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 979 | }, 980 | "send": { 981 | "version": "0.17.1", 982 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 983 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 984 | "requires": { 985 | "debug": "2.6.9", 986 | "depd": "~1.1.2", 987 | "destroy": "~1.0.4", 988 | "encodeurl": "~1.0.2", 989 | "escape-html": "~1.0.3", 990 | "etag": "~1.8.1", 991 | "fresh": "0.5.2", 992 | "http-errors": "~1.7.2", 993 | "mime": "1.6.0", 994 | "ms": "2.1.1", 995 | "on-finished": "~2.3.0", 996 | "range-parser": "~1.2.1", 997 | "statuses": "~1.5.0" 998 | } 999 | }, 1000 | "setprototypeof": { 1001 | "version": "1.1.1", 1002 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 1003 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 1004 | } 1005 | } 1006 | }, 1007 | "fill-range": { 1008 | "version": "7.0.1", 1009 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1010 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1011 | "requires": { 1012 | "to-regex-range": "^5.0.1" 1013 | } 1014 | }, 1015 | "finalhandler": { 1016 | "version": "1.1.2", 1017 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 1018 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 1019 | "requires": { 1020 | "debug": "2.6.9", 1021 | "encodeurl": "~1.0.2", 1022 | "escape-html": "~1.0.3", 1023 | "on-finished": "~2.3.0", 1024 | "parseurl": "~1.3.3", 1025 | "statuses": "~1.5.0", 1026 | "unpipe": "~1.0.0" 1027 | } 1028 | }, 1029 | "find-cache-dir": { 1030 | "version": "3.3.1", 1031 | "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", 1032 | "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", 1033 | "requires": { 1034 | "commondir": "^1.0.1", 1035 | "make-dir": "^3.0.2", 1036 | "pkg-dir": "^4.1.0" 1037 | } 1038 | }, 1039 | "find-up": { 1040 | "version": "4.1.0", 1041 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", 1042 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", 1043 | "requires": { 1044 | "locate-path": "^5.0.0", 1045 | "path-exists": "^4.0.0" 1046 | } 1047 | }, 1048 | "foreach": { 1049 | "version": "2.0.5", 1050 | "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", 1051 | "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" 1052 | }, 1053 | "forwarded": { 1054 | "version": "0.1.2", 1055 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 1056 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 1057 | }, 1058 | "fresh": { 1059 | "version": "0.5.2", 1060 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1061 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 1062 | }, 1063 | "fsevents": { 1064 | "version": "2.3.2", 1065 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1066 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1067 | "optional": true 1068 | }, 1069 | "function-bind": { 1070 | "version": "1.1.1", 1071 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1072 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1073 | }, 1074 | "get-intrinsic": { 1075 | "version": "1.1.1", 1076 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 1077 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 1078 | "requires": { 1079 | "function-bind": "^1.1.1", 1080 | "has": "^1.0.3", 1081 | "has-symbols": "^1.0.1" 1082 | } 1083 | }, 1084 | "get-orientation": { 1085 | "version": "1.1.2", 1086 | "resolved": "https://registry.npmjs.org/get-orientation/-/get-orientation-1.1.2.tgz", 1087 | "integrity": "sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==", 1088 | "requires": { 1089 | "stream-parser": "^0.3.1" 1090 | } 1091 | }, 1092 | "get-symbol-description": { 1093 | "version": "1.0.0", 1094 | "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", 1095 | "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", 1096 | "requires": { 1097 | "call-bind": "^1.0.2", 1098 | "get-intrinsic": "^1.1.1" 1099 | } 1100 | }, 1101 | "glob-parent": { 1102 | "version": "5.1.2", 1103 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1104 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1105 | "requires": { 1106 | "is-glob": "^4.0.1" 1107 | } 1108 | }, 1109 | "glob-to-regexp": { 1110 | "version": "0.4.1", 1111 | "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", 1112 | "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" 1113 | }, 1114 | "graceful-fs": { 1115 | "version": "4.2.9", 1116 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", 1117 | "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==" 1118 | }, 1119 | "has": { 1120 | "version": "1.0.3", 1121 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1122 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1123 | "requires": { 1124 | "function-bind": "^1.1.1" 1125 | } 1126 | }, 1127 | "has-bigints": { 1128 | "version": "1.0.1", 1129 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 1130 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" 1131 | }, 1132 | "has-flag": { 1133 | "version": "3.0.0", 1134 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1135 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 1136 | }, 1137 | "has-symbols": { 1138 | "version": "1.0.2", 1139 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 1140 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" 1141 | }, 1142 | "has-tostringtag": { 1143 | "version": "1.0.0", 1144 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 1145 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 1146 | "requires": { 1147 | "has-symbols": "^1.0.2" 1148 | } 1149 | }, 1150 | "hash-base": { 1151 | "version": "3.1.0", 1152 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", 1153 | "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", 1154 | "requires": { 1155 | "inherits": "^2.0.4", 1156 | "readable-stream": "^3.6.0", 1157 | "safe-buffer": "^5.2.0" 1158 | }, 1159 | "dependencies": { 1160 | "inherits": { 1161 | "version": "2.0.4", 1162 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1163 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1164 | } 1165 | } 1166 | }, 1167 | "hash.js": { 1168 | "version": "1.1.7", 1169 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", 1170 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", 1171 | "requires": { 1172 | "inherits": "^2.0.3", 1173 | "minimalistic-assert": "^1.0.1" 1174 | } 1175 | }, 1176 | "he": { 1177 | "version": "1.2.0", 1178 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1179 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" 1180 | }, 1181 | "hmac-drbg": { 1182 | "version": "1.0.1", 1183 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", 1184 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", 1185 | "requires": { 1186 | "hash.js": "^1.0.3", 1187 | "minimalistic-assert": "^1.0.0", 1188 | "minimalistic-crypto-utils": "^1.0.1" 1189 | } 1190 | }, 1191 | "http-errors": { 1192 | "version": "1.7.3", 1193 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 1194 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 1195 | "requires": { 1196 | "depd": "~1.1.2", 1197 | "inherits": "2.0.4", 1198 | "setprototypeof": "1.1.1", 1199 | "statuses": ">= 1.5.0 < 2", 1200 | "toidentifier": "1.0.0" 1201 | }, 1202 | "dependencies": { 1203 | "inherits": { 1204 | "version": "2.0.4", 1205 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1206 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1207 | } 1208 | } 1209 | }, 1210 | "https-browserify": { 1211 | "version": "1.0.0", 1212 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", 1213 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" 1214 | }, 1215 | "iconv-lite": { 1216 | "version": "0.6.3", 1217 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1218 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1219 | "requires": { 1220 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1221 | } 1222 | }, 1223 | "ieee754": { 1224 | "version": "1.2.1", 1225 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1226 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1227 | }, 1228 | "image-size": { 1229 | "version": "1.0.0", 1230 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz", 1231 | "integrity": "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==", 1232 | "requires": { 1233 | "queue": "6.0.2" 1234 | } 1235 | }, 1236 | "inherits": { 1237 | "version": "2.0.3", 1238 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1239 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1240 | }, 1241 | "internal-slot": { 1242 | "version": "1.0.3", 1243 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 1244 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 1245 | "requires": { 1246 | "get-intrinsic": "^1.1.0", 1247 | "has": "^1.0.3", 1248 | "side-channel": "^1.0.4" 1249 | } 1250 | }, 1251 | "ipaddr.js": { 1252 | "version": "1.9.0", 1253 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", 1254 | "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" 1255 | }, 1256 | "is-arguments": { 1257 | "version": "1.1.1", 1258 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", 1259 | "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", 1260 | "requires": { 1261 | "call-bind": "^1.0.2", 1262 | "has-tostringtag": "^1.0.0" 1263 | } 1264 | }, 1265 | "is-bigint": { 1266 | "version": "1.0.4", 1267 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", 1268 | "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", 1269 | "requires": { 1270 | "has-bigints": "^1.0.1" 1271 | } 1272 | }, 1273 | "is-binary-path": { 1274 | "version": "2.1.0", 1275 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1276 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1277 | "requires": { 1278 | "binary-extensions": "^2.0.0" 1279 | } 1280 | }, 1281 | "is-boolean-object": { 1282 | "version": "1.1.2", 1283 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1284 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1285 | "requires": { 1286 | "call-bind": "^1.0.2", 1287 | "has-tostringtag": "^1.0.0" 1288 | } 1289 | }, 1290 | "is-callable": { 1291 | "version": "1.2.4", 1292 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 1293 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" 1294 | }, 1295 | "is-date-object": { 1296 | "version": "1.0.5", 1297 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1298 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1299 | "requires": { 1300 | "has-tostringtag": "^1.0.0" 1301 | } 1302 | }, 1303 | "is-extglob": { 1304 | "version": "2.1.1", 1305 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1306 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 1307 | }, 1308 | "is-generator-function": { 1309 | "version": "1.0.10", 1310 | "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", 1311 | "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", 1312 | "requires": { 1313 | "has-tostringtag": "^1.0.0" 1314 | } 1315 | }, 1316 | "is-glob": { 1317 | "version": "4.0.3", 1318 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1319 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1320 | "requires": { 1321 | "is-extglob": "^2.1.1" 1322 | } 1323 | }, 1324 | "is-nan": { 1325 | "version": "1.3.2", 1326 | "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", 1327 | "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", 1328 | "requires": { 1329 | "call-bind": "^1.0.0", 1330 | "define-properties": "^1.1.3" 1331 | } 1332 | }, 1333 | "is-negative-zero": { 1334 | "version": "2.0.2", 1335 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", 1336 | "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" 1337 | }, 1338 | "is-number": { 1339 | "version": "7.0.0", 1340 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1341 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1342 | }, 1343 | "is-number-object": { 1344 | "version": "1.0.6", 1345 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 1346 | "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 1347 | "requires": { 1348 | "has-tostringtag": "^1.0.0" 1349 | } 1350 | }, 1351 | "is-regex": { 1352 | "version": "1.1.4", 1353 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1354 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1355 | "requires": { 1356 | "call-bind": "^1.0.2", 1357 | "has-tostringtag": "^1.0.0" 1358 | } 1359 | }, 1360 | "is-shared-array-buffer": { 1361 | "version": "1.0.1", 1362 | "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", 1363 | "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" 1364 | }, 1365 | "is-string": { 1366 | "version": "1.0.7", 1367 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1368 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1369 | "requires": { 1370 | "has-tostringtag": "^1.0.0" 1371 | } 1372 | }, 1373 | "is-symbol": { 1374 | "version": "1.0.4", 1375 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1376 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1377 | "requires": { 1378 | "has-symbols": "^1.0.2" 1379 | } 1380 | }, 1381 | "is-typed-array": { 1382 | "version": "1.1.8", 1383 | "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", 1384 | "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", 1385 | "requires": { 1386 | "available-typed-arrays": "^1.0.5", 1387 | "call-bind": "^1.0.2", 1388 | "es-abstract": "^1.18.5", 1389 | "foreach": "^2.0.5", 1390 | "has-tostringtag": "^1.0.0" 1391 | } 1392 | }, 1393 | "is-weakref": { 1394 | "version": "1.0.2", 1395 | "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", 1396 | "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", 1397 | "requires": { 1398 | "call-bind": "^1.0.2" 1399 | } 1400 | }, 1401 | "isarray": { 1402 | "version": "1.0.0", 1403 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1404 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1405 | }, 1406 | "jest-worker": { 1407 | "version": "27.0.0-next.5", 1408 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.0-next.5.tgz", 1409 | "integrity": "sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==", 1410 | "requires": { 1411 | "@types/node": "*", 1412 | "merge-stream": "^2.0.0", 1413 | "supports-color": "^8.0.0" 1414 | }, 1415 | "dependencies": { 1416 | "has-flag": { 1417 | "version": "4.0.0", 1418 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1419 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1420 | }, 1421 | "supports-color": { 1422 | "version": "8.1.1", 1423 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", 1424 | "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", 1425 | "requires": { 1426 | "has-flag": "^4.0.0" 1427 | } 1428 | } 1429 | } 1430 | }, 1431 | "js-tokens": { 1432 | "version": "3.0.2", 1433 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", 1434 | "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" 1435 | }, 1436 | "json5": { 1437 | "version": "1.0.1", 1438 | "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", 1439 | "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", 1440 | "requires": { 1441 | "minimist": "^1.2.0" 1442 | } 1443 | }, 1444 | "loader-utils": { 1445 | "version": "1.2.3", 1446 | "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", 1447 | "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", 1448 | "requires": { 1449 | "big.js": "^5.2.2", 1450 | "emojis-list": "^2.0.0", 1451 | "json5": "^1.0.1" 1452 | } 1453 | }, 1454 | "locate-path": { 1455 | "version": "5.0.0", 1456 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", 1457 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", 1458 | "requires": { 1459 | "p-locate": "^4.1.0" 1460 | } 1461 | }, 1462 | "lodash.sortby": { 1463 | "version": "4.7.0", 1464 | "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", 1465 | "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" 1466 | }, 1467 | "loose-envify": { 1468 | "version": "1.3.1", 1469 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", 1470 | "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", 1471 | "requires": { 1472 | "js-tokens": "^3.0.0" 1473 | } 1474 | }, 1475 | "make-dir": { 1476 | "version": "3.1.0", 1477 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1478 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1479 | "requires": { 1480 | "semver": "^6.0.0" 1481 | } 1482 | }, 1483 | "md5.js": { 1484 | "version": "1.3.5", 1485 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", 1486 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", 1487 | "requires": { 1488 | "hash-base": "^3.0.0", 1489 | "inherits": "^2.0.1", 1490 | "safe-buffer": "^5.1.2" 1491 | } 1492 | }, 1493 | "media-typer": { 1494 | "version": "0.3.0", 1495 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1496 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 1497 | }, 1498 | "merge-descriptors": { 1499 | "version": "1.0.1", 1500 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1501 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 1502 | }, 1503 | "merge-stream": { 1504 | "version": "2.0.0", 1505 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", 1506 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" 1507 | }, 1508 | "methods": { 1509 | "version": "1.1.2", 1510 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1511 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 1512 | }, 1513 | "miller-rabin": { 1514 | "version": "4.0.1", 1515 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", 1516 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", 1517 | "requires": { 1518 | "bn.js": "^4.0.0", 1519 | "brorand": "^1.0.1" 1520 | }, 1521 | "dependencies": { 1522 | "bn.js": { 1523 | "version": "4.12.0", 1524 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 1525 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 1526 | } 1527 | } 1528 | }, 1529 | "mime-db": { 1530 | "version": "1.40.0", 1531 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", 1532 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" 1533 | }, 1534 | "mime-types": { 1535 | "version": "2.1.24", 1536 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", 1537 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", 1538 | "requires": { 1539 | "mime-db": "1.40.0" 1540 | } 1541 | }, 1542 | "minimalistic-assert": { 1543 | "version": "1.0.1", 1544 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", 1545 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" 1546 | }, 1547 | "minimalistic-crypto-utils": { 1548 | "version": "1.0.1", 1549 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", 1550 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" 1551 | }, 1552 | "minimist": { 1553 | "version": "1.2.5", 1554 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1555 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 1556 | }, 1557 | "nanoid": { 1558 | "version": "3.2.0", 1559 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", 1560 | "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==" 1561 | }, 1562 | "native-url": { 1563 | "version": "0.3.4", 1564 | "resolved": "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz", 1565 | "integrity": "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==", 1566 | "requires": { 1567 | "querystring": "^0.2.0" 1568 | } 1569 | }, 1570 | "negotiator": { 1571 | "version": "0.6.2", 1572 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 1573 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 1574 | }, 1575 | "next": { 1576 | "version": "11.1.3", 1577 | "resolved": "https://registry.npmjs.org/next/-/next-11.1.3.tgz", 1578 | "integrity": "sha512-ud/gKmnKQ8wtHC+pd1ZiqPRa7DdgulPkAk94MbpsspfNliwZkYs9SIYWhlLSyg+c661LzdUI2nZshvrtggSYWA==", 1579 | "requires": { 1580 | "@babel/runtime": "7.15.3", 1581 | "@hapi/accept": "5.0.2", 1582 | "@next/env": "11.1.3", 1583 | "@next/polyfill-module": "11.1.3", 1584 | "@next/react-dev-overlay": "11.1.3", 1585 | "@next/react-refresh-utils": "11.1.3", 1586 | "@next/swc-darwin-arm64": "11.1.3", 1587 | "@next/swc-darwin-x64": "11.1.3", 1588 | "@next/swc-linux-x64-gnu": "11.1.3", 1589 | "@next/swc-win32-x64-msvc": "11.1.3", 1590 | "@node-rs/helper": "1.2.1", 1591 | "assert": "2.0.0", 1592 | "ast-types": "0.13.2", 1593 | "browserify-zlib": "0.2.0", 1594 | "browserslist": "4.16.6", 1595 | "buffer": "5.6.0", 1596 | "caniuse-lite": "^1.0.30001228", 1597 | "chalk": "2.4.2", 1598 | "chokidar": "3.5.1", 1599 | "constants-browserify": "1.0.0", 1600 | "crypto-browserify": "3.12.0", 1601 | "cssnano-simple": "3.0.0", 1602 | "domain-browser": "4.19.0", 1603 | "encoding": "0.1.13", 1604 | "etag": "1.8.1", 1605 | "find-cache-dir": "3.3.1", 1606 | "get-orientation": "1.1.2", 1607 | "https-browserify": "1.0.0", 1608 | "image-size": "1.0.0", 1609 | "jest-worker": "27.0.0-next.5", 1610 | "native-url": "0.3.4", 1611 | "node-fetch": "2.6.1", 1612 | "node-html-parser": "1.4.9", 1613 | "node-libs-browser": "^2.2.1", 1614 | "os-browserify": "0.3.0", 1615 | "p-limit": "3.1.0", 1616 | "path-browserify": "1.0.1", 1617 | "pnp-webpack-plugin": "1.6.4", 1618 | "postcss": "8.2.15", 1619 | "process": "0.11.10", 1620 | "querystring-es3": "0.2.1", 1621 | "raw-body": "2.4.1", 1622 | "react-is": "17.0.2", 1623 | "react-refresh": "0.8.3", 1624 | "stream-browserify": "3.0.0", 1625 | "stream-http": "3.1.1", 1626 | "string_decoder": "1.3.0", 1627 | "styled-jsx": "4.0.1", 1628 | "timers-browserify": "2.0.12", 1629 | "tty-browserify": "0.0.1", 1630 | "use-subscription": "1.5.1", 1631 | "util": "0.12.4", 1632 | "vm-browserify": "1.1.2", 1633 | "watchpack": "2.1.1" 1634 | }, 1635 | "dependencies": { 1636 | "iconv-lite": { 1637 | "version": "0.4.24", 1638 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1639 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1640 | "requires": { 1641 | "safer-buffer": ">= 2.1.2 < 3" 1642 | } 1643 | }, 1644 | "raw-body": { 1645 | "version": "2.4.1", 1646 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", 1647 | "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", 1648 | "requires": { 1649 | "bytes": "3.1.0", 1650 | "http-errors": "1.7.3", 1651 | "iconv-lite": "0.4.24", 1652 | "unpipe": "1.0.0" 1653 | } 1654 | }, 1655 | "react-is": { 1656 | "version": "17.0.2", 1657 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", 1658 | "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" 1659 | } 1660 | } 1661 | }, 1662 | "node-fetch": { 1663 | "version": "2.6.1", 1664 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 1665 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 1666 | }, 1667 | "node-html-parser": { 1668 | "version": "1.4.9", 1669 | "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz", 1670 | "integrity": "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==", 1671 | "requires": { 1672 | "he": "1.2.0" 1673 | } 1674 | }, 1675 | "node-libs-browser": { 1676 | "version": "2.2.1", 1677 | "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", 1678 | "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", 1679 | "requires": { 1680 | "assert": "^1.1.1", 1681 | "browserify-zlib": "^0.2.0", 1682 | "buffer": "^4.3.0", 1683 | "console-browserify": "^1.1.0", 1684 | "constants-browserify": "^1.0.0", 1685 | "crypto-browserify": "^3.11.0", 1686 | "domain-browser": "^1.1.1", 1687 | "events": "^3.0.0", 1688 | "https-browserify": "^1.0.0", 1689 | "os-browserify": "^0.3.0", 1690 | "path-browserify": "0.0.1", 1691 | "process": "^0.11.10", 1692 | "punycode": "^1.2.4", 1693 | "querystring-es3": "^0.2.0", 1694 | "readable-stream": "^2.3.3", 1695 | "stream-browserify": "^2.0.1", 1696 | "stream-http": "^2.7.2", 1697 | "string_decoder": "^1.0.0", 1698 | "timers-browserify": "^2.0.4", 1699 | "tty-browserify": "0.0.0", 1700 | "url": "^0.11.0", 1701 | "util": "^0.11.0", 1702 | "vm-browserify": "^1.0.1" 1703 | }, 1704 | "dependencies": { 1705 | "assert": { 1706 | "version": "1.5.0", 1707 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", 1708 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", 1709 | "requires": { 1710 | "object-assign": "^4.1.1", 1711 | "util": "0.10.3" 1712 | }, 1713 | "dependencies": { 1714 | "util": { 1715 | "version": "0.10.3", 1716 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", 1717 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", 1718 | "requires": { 1719 | "inherits": "2.0.1" 1720 | } 1721 | } 1722 | } 1723 | }, 1724 | "buffer": { 1725 | "version": "4.9.2", 1726 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", 1727 | "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", 1728 | "requires": { 1729 | "base64-js": "^1.0.2", 1730 | "ieee754": "^1.1.4", 1731 | "isarray": "^1.0.0" 1732 | } 1733 | }, 1734 | "domain-browser": { 1735 | "version": "1.2.0", 1736 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", 1737 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" 1738 | }, 1739 | "inherits": { 1740 | "version": "2.0.1", 1741 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", 1742 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" 1743 | }, 1744 | "path-browserify": { 1745 | "version": "0.0.1", 1746 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", 1747 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" 1748 | }, 1749 | "punycode": { 1750 | "version": "1.4.1", 1751 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", 1752 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" 1753 | }, 1754 | "readable-stream": { 1755 | "version": "2.3.7", 1756 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1757 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1758 | "requires": { 1759 | "core-util-is": "~1.0.0", 1760 | "inherits": "~2.0.3", 1761 | "isarray": "~1.0.0", 1762 | "process-nextick-args": "~2.0.0", 1763 | "safe-buffer": "~5.1.1", 1764 | "string_decoder": "~1.1.1", 1765 | "util-deprecate": "~1.0.1" 1766 | }, 1767 | "dependencies": { 1768 | "inherits": { 1769 | "version": "2.0.4", 1770 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1771 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1772 | }, 1773 | "string_decoder": { 1774 | "version": "1.1.1", 1775 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1776 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1777 | "requires": { 1778 | "safe-buffer": "~5.1.0" 1779 | } 1780 | } 1781 | } 1782 | }, 1783 | "safe-buffer": { 1784 | "version": "5.1.2", 1785 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1786 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1787 | }, 1788 | "stream-browserify": { 1789 | "version": "2.0.2", 1790 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", 1791 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", 1792 | "requires": { 1793 | "inherits": "~2.0.1", 1794 | "readable-stream": "^2.0.2" 1795 | } 1796 | }, 1797 | "stream-http": { 1798 | "version": "2.8.3", 1799 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", 1800 | "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", 1801 | "requires": { 1802 | "builtin-status-codes": "^3.0.0", 1803 | "inherits": "^2.0.1", 1804 | "readable-stream": "^2.3.6", 1805 | "to-arraybuffer": "^1.0.0", 1806 | "xtend": "^4.0.0" 1807 | } 1808 | }, 1809 | "tty-browserify": { 1810 | "version": "0.0.0", 1811 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", 1812 | "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" 1813 | }, 1814 | "util": { 1815 | "version": "0.11.1", 1816 | "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", 1817 | "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", 1818 | "requires": { 1819 | "inherits": "2.0.3" 1820 | }, 1821 | "dependencies": { 1822 | "inherits": { 1823 | "version": "2.0.3", 1824 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1825 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 1826 | } 1827 | } 1828 | } 1829 | } 1830 | }, 1831 | "node-releases": { 1832 | "version": "1.1.77", 1833 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.77.tgz", 1834 | "integrity": "sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==" 1835 | }, 1836 | "normalize-path": { 1837 | "version": "3.0.0", 1838 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1839 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1840 | }, 1841 | "object-assign": { 1842 | "version": "4.1.1", 1843 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1844 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1845 | }, 1846 | "object-inspect": { 1847 | "version": "1.12.0", 1848 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", 1849 | "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" 1850 | }, 1851 | "object-is": { 1852 | "version": "1.1.5", 1853 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", 1854 | "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", 1855 | "requires": { 1856 | "call-bind": "^1.0.2", 1857 | "define-properties": "^1.1.3" 1858 | } 1859 | }, 1860 | "object-keys": { 1861 | "version": "1.1.1", 1862 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1863 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" 1864 | }, 1865 | "object.assign": { 1866 | "version": "4.1.2", 1867 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1868 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1869 | "requires": { 1870 | "call-bind": "^1.0.0", 1871 | "define-properties": "^1.1.3", 1872 | "has-symbols": "^1.0.1", 1873 | "object-keys": "^1.1.1" 1874 | } 1875 | }, 1876 | "on-finished": { 1877 | "version": "2.3.0", 1878 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1879 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1880 | "requires": { 1881 | "ee-first": "1.1.1" 1882 | } 1883 | }, 1884 | "os-browserify": { 1885 | "version": "0.3.0", 1886 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", 1887 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" 1888 | }, 1889 | "p-limit": { 1890 | "version": "3.1.0", 1891 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1892 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1893 | "requires": { 1894 | "yocto-queue": "^0.1.0" 1895 | } 1896 | }, 1897 | "p-locate": { 1898 | "version": "4.1.0", 1899 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", 1900 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", 1901 | "requires": { 1902 | "p-limit": "^2.2.0" 1903 | }, 1904 | "dependencies": { 1905 | "p-limit": { 1906 | "version": "2.3.0", 1907 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", 1908 | "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", 1909 | "requires": { 1910 | "p-try": "^2.0.0" 1911 | } 1912 | } 1913 | } 1914 | }, 1915 | "p-try": { 1916 | "version": "2.2.0", 1917 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", 1918 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" 1919 | }, 1920 | "pako": { 1921 | "version": "1.0.11", 1922 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", 1923 | "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" 1924 | }, 1925 | "parse-asn1": { 1926 | "version": "5.1.6", 1927 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", 1928 | "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", 1929 | "requires": { 1930 | "asn1.js": "^5.2.0", 1931 | "browserify-aes": "^1.0.0", 1932 | "evp_bytestokey": "^1.0.0", 1933 | "pbkdf2": "^3.0.3", 1934 | "safe-buffer": "^5.1.1" 1935 | } 1936 | }, 1937 | "parseurl": { 1938 | "version": "1.3.3", 1939 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1940 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1941 | }, 1942 | "path-browserify": { 1943 | "version": "1.0.1", 1944 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 1945 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" 1946 | }, 1947 | "path-exists": { 1948 | "version": "4.0.0", 1949 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1950 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" 1951 | }, 1952 | "pbkdf2": { 1953 | "version": "3.1.2", 1954 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", 1955 | "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", 1956 | "requires": { 1957 | "create-hash": "^1.1.2", 1958 | "create-hmac": "^1.1.4", 1959 | "ripemd160": "^2.0.1", 1960 | "safe-buffer": "^5.0.1", 1961 | "sha.js": "^2.4.8" 1962 | } 1963 | }, 1964 | "picomatch": { 1965 | "version": "2.3.1", 1966 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1967 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1968 | }, 1969 | "pkg-dir": { 1970 | "version": "4.2.0", 1971 | "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", 1972 | "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", 1973 | "requires": { 1974 | "find-up": "^4.0.0" 1975 | } 1976 | }, 1977 | "platform": { 1978 | "version": "1.3.6", 1979 | "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz", 1980 | "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" 1981 | }, 1982 | "pnp-webpack-plugin": { 1983 | "version": "1.6.4", 1984 | "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", 1985 | "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", 1986 | "requires": { 1987 | "ts-pnp": "^1.1.6" 1988 | } 1989 | }, 1990 | "postcss": { 1991 | "version": "8.2.15", 1992 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz", 1993 | "integrity": "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==", 1994 | "requires": { 1995 | "colorette": "^1.2.2", 1996 | "nanoid": "^3.1.23", 1997 | "source-map": "^0.6.1" 1998 | }, 1999 | "dependencies": { 2000 | "source-map": { 2001 | "version": "0.6.1", 2002 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2003 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 2004 | } 2005 | } 2006 | }, 2007 | "process": { 2008 | "version": "0.11.10", 2009 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", 2010 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" 2011 | }, 2012 | "process-nextick-args": { 2013 | "version": "2.0.1", 2014 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 2015 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 2016 | }, 2017 | "proxy-addr": { 2018 | "version": "2.0.5", 2019 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", 2020 | "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", 2021 | "requires": { 2022 | "forwarded": "~0.1.2", 2023 | "ipaddr.js": "1.9.0" 2024 | } 2025 | }, 2026 | "public-encrypt": { 2027 | "version": "4.0.3", 2028 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", 2029 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", 2030 | "requires": { 2031 | "bn.js": "^4.1.0", 2032 | "browserify-rsa": "^4.0.0", 2033 | "create-hash": "^1.1.0", 2034 | "parse-asn1": "^5.0.0", 2035 | "randombytes": "^2.0.1", 2036 | "safe-buffer": "^5.1.2" 2037 | }, 2038 | "dependencies": { 2039 | "bn.js": { 2040 | "version": "4.12.0", 2041 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", 2042 | "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" 2043 | } 2044 | } 2045 | }, 2046 | "punycode": { 2047 | "version": "2.1.1", 2048 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 2049 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" 2050 | }, 2051 | "qs": { 2052 | "version": "6.7.0", 2053 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 2054 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 2055 | }, 2056 | "querystring": { 2057 | "version": "0.2.1", 2058 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", 2059 | "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" 2060 | }, 2061 | "querystring-es3": { 2062 | "version": "0.2.1", 2063 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", 2064 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" 2065 | }, 2066 | "queue": { 2067 | "version": "6.0.2", 2068 | "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", 2069 | "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", 2070 | "requires": { 2071 | "inherits": "~2.0.3" 2072 | } 2073 | }, 2074 | "randombytes": { 2075 | "version": "2.1.0", 2076 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", 2077 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", 2078 | "requires": { 2079 | "safe-buffer": "^5.1.0" 2080 | } 2081 | }, 2082 | "randomfill": { 2083 | "version": "1.0.4", 2084 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", 2085 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", 2086 | "requires": { 2087 | "randombytes": "^2.0.5", 2088 | "safe-buffer": "^5.1.0" 2089 | } 2090 | }, 2091 | "raw-body": { 2092 | "version": "2.4.0", 2093 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 2094 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 2095 | "requires": { 2096 | "bytes": "3.1.0", 2097 | "http-errors": "1.7.2", 2098 | "iconv-lite": "0.4.24", 2099 | "unpipe": "1.0.0" 2100 | }, 2101 | "dependencies": { 2102 | "depd": { 2103 | "version": "1.1.2", 2104 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 2105 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 2106 | }, 2107 | "http-errors": { 2108 | "version": "1.7.2", 2109 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 2110 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 2111 | "requires": { 2112 | "depd": "~1.1.2", 2113 | "inherits": "2.0.3", 2114 | "setprototypeof": "1.1.1", 2115 | "statuses": ">= 1.5.0 < 2", 2116 | "toidentifier": "1.0.0" 2117 | } 2118 | }, 2119 | "iconv-lite": { 2120 | "version": "0.4.24", 2121 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 2122 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 2123 | "requires": { 2124 | "safer-buffer": ">= 2.1.2 < 3" 2125 | } 2126 | }, 2127 | "setprototypeof": { 2128 | "version": "1.1.1", 2129 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2130 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2131 | } 2132 | } 2133 | }, 2134 | "react": { 2135 | "version": "16.9.0", 2136 | "resolved": "https://registry.npmjs.org/react/-/react-16.9.0.tgz", 2137 | "integrity": "sha512-+7LQnFBwkiw+BobzOF6N//BdoNw0ouwmSJTEm9cglOOmsg/TMiFHZLe2sEoN5M7LgJTj9oHH0gxklfnQe66S1w==", 2138 | "requires": { 2139 | "loose-envify": "^1.1.0", 2140 | "object-assign": "^4.1.1", 2141 | "prop-types": "^15.6.2" 2142 | }, 2143 | "dependencies": { 2144 | "prop-types": { 2145 | "version": "15.7.2", 2146 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 2147 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 2148 | "requires": { 2149 | "loose-envify": "^1.4.0", 2150 | "object-assign": "^4.1.1", 2151 | "react-is": "^16.8.1" 2152 | }, 2153 | "dependencies": { 2154 | "loose-envify": { 2155 | "version": "1.4.0", 2156 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2157 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2158 | "requires": { 2159 | "js-tokens": "^3.0.0 || ^4.0.0" 2160 | } 2161 | } 2162 | } 2163 | } 2164 | } 2165 | }, 2166 | "react-dom": { 2167 | "version": "16.9.0", 2168 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.9.0.tgz", 2169 | "integrity": "sha512-YFT2rxO9hM70ewk9jq0y6sQk8cL02xm4+IzYBz75CQGlClQQ1Bxq0nhHF6OtSbit+AIahujJgb/CPRibFkMNJQ==", 2170 | "requires": { 2171 | "loose-envify": "^1.1.0", 2172 | "object-assign": "^4.1.1", 2173 | "prop-types": "^15.6.2", 2174 | "scheduler": "^0.15.0" 2175 | }, 2176 | "dependencies": { 2177 | "prop-types": { 2178 | "version": "15.7.2", 2179 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 2180 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 2181 | "requires": { 2182 | "loose-envify": "^1.4.0", 2183 | "object-assign": "^4.1.1", 2184 | "react-is": "^16.8.1" 2185 | }, 2186 | "dependencies": { 2187 | "loose-envify": { 2188 | "version": "1.4.0", 2189 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2190 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2191 | "requires": { 2192 | "js-tokens": "^3.0.0 || ^4.0.0" 2193 | } 2194 | } 2195 | } 2196 | } 2197 | } 2198 | }, 2199 | "react-is": { 2200 | "version": "16.9.0", 2201 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz", 2202 | "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==" 2203 | }, 2204 | "react-refresh": { 2205 | "version": "0.8.3", 2206 | "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz", 2207 | "integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" 2208 | }, 2209 | "readable-stream": { 2210 | "version": "3.6.0", 2211 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 2212 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 2213 | "requires": { 2214 | "inherits": "^2.0.3", 2215 | "string_decoder": "^1.1.1", 2216 | "util-deprecate": "^1.0.1" 2217 | } 2218 | }, 2219 | "readdirp": { 2220 | "version": "3.5.0", 2221 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", 2222 | "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", 2223 | "requires": { 2224 | "picomatch": "^2.2.1" 2225 | } 2226 | }, 2227 | "regenerator-runtime": { 2228 | "version": "0.13.9", 2229 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 2230 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 2231 | }, 2232 | "ripemd160": { 2233 | "version": "2.0.2", 2234 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", 2235 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", 2236 | "requires": { 2237 | "hash-base": "^3.0.0", 2238 | "inherits": "^2.0.1" 2239 | } 2240 | }, 2241 | "safe-buffer": { 2242 | "version": "5.2.1", 2243 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2244 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 2245 | }, 2246 | "safer-buffer": { 2247 | "version": "2.1.2", 2248 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2249 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 2250 | }, 2251 | "scheduler": { 2252 | "version": "0.15.0", 2253 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.15.0.tgz", 2254 | "integrity": "sha512-xAefmSfN6jqAa7Kuq7LIJY0bwAPG3xlCj0HMEBQk1lxYiDKZscY2xJ5U/61ZTrYbmNQbXa+gc7czPkVo11tnCg==", 2255 | "requires": { 2256 | "loose-envify": "^1.1.0", 2257 | "object-assign": "^4.1.1" 2258 | } 2259 | }, 2260 | "semver": { 2261 | "version": "6.3.0", 2262 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 2263 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" 2264 | }, 2265 | "serve-static": { 2266 | "version": "1.14.1", 2267 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 2268 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 2269 | "requires": { 2270 | "encodeurl": "~1.0.2", 2271 | "escape-html": "~1.0.3", 2272 | "parseurl": "~1.3.3", 2273 | "send": "0.17.1" 2274 | }, 2275 | "dependencies": { 2276 | "depd": { 2277 | "version": "1.1.2", 2278 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 2279 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 2280 | }, 2281 | "http-errors": { 2282 | "version": "1.7.3", 2283 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", 2284 | "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", 2285 | "requires": { 2286 | "depd": "~1.1.2", 2287 | "inherits": "2.0.4", 2288 | "setprototypeof": "1.1.1", 2289 | "statuses": ">= 1.5.0 < 2", 2290 | "toidentifier": "1.0.0" 2291 | } 2292 | }, 2293 | "inherits": { 2294 | "version": "2.0.4", 2295 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2296 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2297 | }, 2298 | "mime": { 2299 | "version": "1.6.0", 2300 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 2301 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 2302 | }, 2303 | "ms": { 2304 | "version": "2.1.1", 2305 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 2306 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 2307 | }, 2308 | "range-parser": { 2309 | "version": "1.2.1", 2310 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 2311 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 2312 | }, 2313 | "send": { 2314 | "version": "0.17.1", 2315 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 2316 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 2317 | "requires": { 2318 | "debug": "2.6.9", 2319 | "depd": "~1.1.2", 2320 | "destroy": "~1.0.4", 2321 | "encodeurl": "~1.0.2", 2322 | "escape-html": "~1.0.3", 2323 | "etag": "~1.8.1", 2324 | "fresh": "0.5.2", 2325 | "http-errors": "~1.7.2", 2326 | "mime": "1.6.0", 2327 | "ms": "2.1.1", 2328 | "on-finished": "~2.3.0", 2329 | "range-parser": "~1.2.1", 2330 | "statuses": "~1.5.0" 2331 | } 2332 | }, 2333 | "setprototypeof": { 2334 | "version": "1.1.1", 2335 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2336 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2337 | } 2338 | } 2339 | }, 2340 | "setimmediate": { 2341 | "version": "1.0.5", 2342 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 2343 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 2344 | }, 2345 | "setprototypeof": { 2346 | "version": "1.1.1", 2347 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 2348 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 2349 | }, 2350 | "sha.js": { 2351 | "version": "2.4.11", 2352 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", 2353 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", 2354 | "requires": { 2355 | "inherits": "^2.0.1", 2356 | "safe-buffer": "^5.0.1" 2357 | } 2358 | }, 2359 | "shell-quote": { 2360 | "version": "1.7.2", 2361 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", 2362 | "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" 2363 | }, 2364 | "side-channel": { 2365 | "version": "1.0.4", 2366 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 2367 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 2368 | "requires": { 2369 | "call-bind": "^1.0.0", 2370 | "get-intrinsic": "^1.0.2", 2371 | "object-inspect": "^1.9.0" 2372 | } 2373 | }, 2374 | "source-map": { 2375 | "version": "0.8.0-beta.0", 2376 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", 2377 | "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", 2378 | "requires": { 2379 | "whatwg-url": "^7.0.0" 2380 | } 2381 | }, 2382 | "stacktrace-parser": { 2383 | "version": "0.1.10", 2384 | "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", 2385 | "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", 2386 | "requires": { 2387 | "type-fest": "^0.7.1" 2388 | } 2389 | }, 2390 | "statuses": { 2391 | "version": "1.5.0", 2392 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 2393 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 2394 | }, 2395 | "stream-browserify": { 2396 | "version": "3.0.0", 2397 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", 2398 | "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", 2399 | "requires": { 2400 | "inherits": "~2.0.4", 2401 | "readable-stream": "^3.5.0" 2402 | }, 2403 | "dependencies": { 2404 | "inherits": { 2405 | "version": "2.0.4", 2406 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2407 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2408 | } 2409 | } 2410 | }, 2411 | "stream-http": { 2412 | "version": "3.1.1", 2413 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz", 2414 | "integrity": "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==", 2415 | "requires": { 2416 | "builtin-status-codes": "^3.0.0", 2417 | "inherits": "^2.0.4", 2418 | "readable-stream": "^3.6.0", 2419 | "xtend": "^4.0.2" 2420 | }, 2421 | "dependencies": { 2422 | "inherits": { 2423 | "version": "2.0.4", 2424 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 2425 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 2426 | } 2427 | } 2428 | }, 2429 | "stream-parser": { 2430 | "version": "0.3.1", 2431 | "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", 2432 | "integrity": "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=", 2433 | "requires": { 2434 | "debug": "2" 2435 | } 2436 | }, 2437 | "string-hash": { 2438 | "version": "1.1.3", 2439 | "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", 2440 | "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" 2441 | }, 2442 | "string.prototype.trimend": { 2443 | "version": "1.0.4", 2444 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 2445 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 2446 | "requires": { 2447 | "call-bind": "^1.0.2", 2448 | "define-properties": "^1.1.3" 2449 | } 2450 | }, 2451 | "string.prototype.trimstart": { 2452 | "version": "1.0.4", 2453 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 2454 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 2455 | "requires": { 2456 | "call-bind": "^1.0.2", 2457 | "define-properties": "^1.1.3" 2458 | } 2459 | }, 2460 | "string_decoder": { 2461 | "version": "1.3.0", 2462 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 2463 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 2464 | "requires": { 2465 | "safe-buffer": "~5.2.0" 2466 | } 2467 | }, 2468 | "strip-ansi": { 2469 | "version": "6.0.0", 2470 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 2471 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 2472 | "requires": { 2473 | "ansi-regex": "^5.0.0" 2474 | } 2475 | }, 2476 | "styled-jsx": { 2477 | "version": "4.0.1", 2478 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz", 2479 | "integrity": "sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==", 2480 | "requires": { 2481 | "@babel/plugin-syntax-jsx": "7.14.5", 2482 | "@babel/types": "7.15.0", 2483 | "convert-source-map": "1.7.0", 2484 | "loader-utils": "1.2.3", 2485 | "source-map": "0.7.3", 2486 | "string-hash": "1.1.3", 2487 | "stylis": "3.5.4", 2488 | "stylis-rule-sheet": "0.0.10" 2489 | }, 2490 | "dependencies": { 2491 | "source-map": { 2492 | "version": "0.7.3", 2493 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", 2494 | "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" 2495 | } 2496 | } 2497 | }, 2498 | "stylis": { 2499 | "version": "3.5.4", 2500 | "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", 2501 | "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" 2502 | }, 2503 | "stylis-rule-sheet": { 2504 | "version": "0.0.10", 2505 | "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", 2506 | "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" 2507 | }, 2508 | "supports-color": { 2509 | "version": "5.5.0", 2510 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 2511 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 2512 | "requires": { 2513 | "has-flag": "^3.0.0" 2514 | } 2515 | }, 2516 | "timers-browserify": { 2517 | "version": "2.0.12", 2518 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", 2519 | "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", 2520 | "requires": { 2521 | "setimmediate": "^1.0.4" 2522 | } 2523 | }, 2524 | "to-arraybuffer": { 2525 | "version": "1.0.1", 2526 | "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", 2527 | "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" 2528 | }, 2529 | "to-fast-properties": { 2530 | "version": "2.0.0", 2531 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 2532 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 2533 | }, 2534 | "to-regex-range": { 2535 | "version": "5.0.1", 2536 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2537 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2538 | "requires": { 2539 | "is-number": "^7.0.0" 2540 | } 2541 | }, 2542 | "toidentifier": { 2543 | "version": "1.0.0", 2544 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 2545 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 2546 | }, 2547 | "tr46": { 2548 | "version": "1.0.1", 2549 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", 2550 | "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", 2551 | "requires": { 2552 | "punycode": "^2.1.0" 2553 | } 2554 | }, 2555 | "ts-pnp": { 2556 | "version": "1.2.0", 2557 | "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", 2558 | "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" 2559 | }, 2560 | "tty-browserify": { 2561 | "version": "0.0.1", 2562 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", 2563 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" 2564 | }, 2565 | "type-fest": { 2566 | "version": "0.7.1", 2567 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", 2568 | "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" 2569 | }, 2570 | "type-is": { 2571 | "version": "1.6.18", 2572 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 2573 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 2574 | "requires": { 2575 | "media-typer": "0.3.0", 2576 | "mime-types": "~2.1.24" 2577 | } 2578 | }, 2579 | "unbox-primitive": { 2580 | "version": "1.0.1", 2581 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 2582 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 2583 | "requires": { 2584 | "function-bind": "^1.1.1", 2585 | "has-bigints": "^1.0.1", 2586 | "has-symbols": "^1.0.2", 2587 | "which-boxed-primitive": "^1.0.2" 2588 | } 2589 | }, 2590 | "unpipe": { 2591 | "version": "1.0.0", 2592 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2593 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 2594 | }, 2595 | "url": { 2596 | "version": "0.11.0", 2597 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", 2598 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", 2599 | "requires": { 2600 | "punycode": "1.3.2", 2601 | "querystring": "0.2.0" 2602 | }, 2603 | "dependencies": { 2604 | "punycode": { 2605 | "version": "1.3.2", 2606 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", 2607 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" 2608 | }, 2609 | "querystring": { 2610 | "version": "0.2.0", 2611 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", 2612 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" 2613 | } 2614 | } 2615 | }, 2616 | "use-subscription": { 2617 | "version": "1.5.1", 2618 | "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", 2619 | "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", 2620 | "requires": { 2621 | "object-assign": "^4.1.1" 2622 | } 2623 | }, 2624 | "util": { 2625 | "version": "0.12.4", 2626 | "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", 2627 | "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", 2628 | "requires": { 2629 | "inherits": "^2.0.3", 2630 | "is-arguments": "^1.0.4", 2631 | "is-generator-function": "^1.0.7", 2632 | "is-typed-array": "^1.1.3", 2633 | "safe-buffer": "^5.1.2", 2634 | "which-typed-array": "^1.1.2" 2635 | } 2636 | }, 2637 | "util-deprecate": { 2638 | "version": "1.0.2", 2639 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2640 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 2641 | }, 2642 | "utils-merge": { 2643 | "version": "1.0.1", 2644 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 2645 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 2646 | }, 2647 | "vary": { 2648 | "version": "1.1.2", 2649 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 2650 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 2651 | }, 2652 | "vm-browserify": { 2653 | "version": "1.1.2", 2654 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", 2655 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" 2656 | }, 2657 | "watchpack": { 2658 | "version": "2.1.1", 2659 | "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz", 2660 | "integrity": "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==", 2661 | "requires": { 2662 | "glob-to-regexp": "^0.4.1", 2663 | "graceful-fs": "^4.1.2" 2664 | } 2665 | }, 2666 | "webidl-conversions": { 2667 | "version": "4.0.2", 2668 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", 2669 | "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" 2670 | }, 2671 | "whatwg-url": { 2672 | "version": "7.1.0", 2673 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", 2674 | "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", 2675 | "requires": { 2676 | "lodash.sortby": "^4.7.0", 2677 | "tr46": "^1.0.1", 2678 | "webidl-conversions": "^4.0.2" 2679 | } 2680 | }, 2681 | "which-boxed-primitive": { 2682 | "version": "1.0.2", 2683 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 2684 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 2685 | "requires": { 2686 | "is-bigint": "^1.0.1", 2687 | "is-boolean-object": "^1.1.0", 2688 | "is-number-object": "^1.0.4", 2689 | "is-string": "^1.0.5", 2690 | "is-symbol": "^1.0.3" 2691 | } 2692 | }, 2693 | "which-typed-array": { 2694 | "version": "1.1.7", 2695 | "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", 2696 | "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", 2697 | "requires": { 2698 | "available-typed-arrays": "^1.0.5", 2699 | "call-bind": "^1.0.2", 2700 | "es-abstract": "^1.18.5", 2701 | "foreach": "^2.0.5", 2702 | "has-tostringtag": "^1.0.0", 2703 | "is-typed-array": "^1.1.7" 2704 | } 2705 | }, 2706 | "xtend": { 2707 | "version": "4.0.2", 2708 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 2709 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 2710 | }, 2711 | "yocto-queue": { 2712 | "version": "0.1.0", 2713 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 2714 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" 2715 | } 2716 | } 2717 | } 2718 | -------------------------------------------------------------------------------- /example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-express-example", 3 | "version": "1.0.0", 4 | "description": "An example application for NextExpress.js.", 5 | "main": "server/index.js", 6 | "scripts": { 7 | "start": "nodemon -V -w server", 8 | "build": "cd app && next build" 9 | }, 10 | "author": { 11 | "name": "Gabor Kozar", 12 | "email": "id@gaborkozar.me" 13 | }, 14 | "license": "BSD-3-Clause", 15 | "dependencies": { 16 | "express": "^4.17.1", 17 | "next": "^11.1.3", 18 | "react": "^16.9.0", 19 | "react-dom": "^16.9.0" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /example/server/index.js: -------------------------------------------------------------------------------- 1 | const path = require("path"); 2 | const express = require("express"); 3 | const next = require("next"); 4 | const { readFile, writeFile } = require("fs"); 5 | const { promisify } = require("util"); 6 | 7 | const readFileAsync = promisify(readFile); 8 | const writeFileAsync = promisify(writeFile); 9 | 10 | const PORT = 8000; 11 | 12 | const app = next({ 13 | dir: path.join(path.dirname(__dirname), "app"), 14 | dev: process.env.NODE_ENV !== "production" 15 | }); 16 | 17 | const nextExpress = require("../../server")(app); 18 | //const nextExpress = require("next-express/server")(app); 19 | 20 | // Makes the next-express functionality available through this express object. 21 | nextExpress.injectInto(express); 22 | 23 | app.prepare() 24 | .then(() => { 25 | const server = express(); 26 | 27 | server.pageRoute({ 28 | path: "/", 29 | renderPath: "/", // redundant, since it's the same as "path" 30 | async getProps(req, res) { 31 | return { 32 | content: await readFileAsync(path.join(path.dirname(__dirname), "data", "frontpage.txt"), "utf-8") 33 | }; 34 | } 35 | }); 36 | 37 | // The above is equivalent to: 38 | /*server.get("/", server.getPageHandler({ 39 | renderPath: "/", 40 | async getProps(req, res) { 41 | return { 42 | content: await readFileAsync(path.join(path.dirname(__dirname), "data", "frontpage.txt"), "utf-8") 43 | }; 44 | } 45 | }));*/ 46 | 47 | // Even without using nextExpress.injectInto(), the above is also equivalent to: 48 | /*server.get("/", nextExpress.getPageHandler({ 49 | renderPath: "/", 50 | async getProps(req, res) { 51 | return { 52 | content: await readFileAsync(path.join(path.dirname(__dirname), "data", "frontpage.txt"), "utf-8") 53 | }; 54 | } 55 | }));*/ 56 | 57 | server.post("/api/save", express.json(), async (req, res) => { 58 | const newText = req.body.content; 59 | if (!newText) { 60 | res.status(400).end(); 61 | return; 62 | } 63 | 64 | try { 65 | await writeFileAsync( 66 | path.join(path.dirname(__dirname), "data", "frontpage.txt"), 67 | newText 68 | ); 69 | } catch (error) { 70 | console.error("Failed to save new frontpage data: ", error.stack); 71 | res.status(500).end(); 72 | return; 73 | } 74 | 75 | res.end(); 76 | }); 77 | 78 | // next-express' listen() method returns a Promise if no callback function was passed to it 79 | return server.listen(PORT); 80 | }) 81 | .then(() => console.log(`> Running on http://localhost:${PORT}`)) 82 | .catch(err => { 83 | console.error(`Server failed to start: ${err.stack}`); 84 | process.exit(1); 85 | }); 86 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./lib/server"); 2 | -------------------------------------------------------------------------------- /lib/page.js: -------------------------------------------------------------------------------- 1 | // Turn the given Next.js page component into one that fetches its initial props from the server (communicating e.g. with an endpoint defined using nextExpress.pageRoute). 2 | // TODO: support using this as a class decorator? 3 | module.exports = function nextExpressPage(Page) { 4 | const orgGetInitialProps = Page.getInitialProps; 5 | 6 | if (orgGetInitialProps) { 7 | Page.getInitialProps = ctx => { 8 | const serverDataFetchFunc = () => fetchServerData(ctx); 9 | return orgGetInitialProps(ctx, serverDataFetchFunc); 10 | }; 11 | } else { 12 | Page.getInitialProps = fetchServerData; 13 | } 14 | 15 | return Page; 16 | }; 17 | 18 | async function fetchServerData(ctx) { 19 | let data; 20 | 21 | if (ctx.req) { 22 | // if we're on the server, then the data was already fetched by the Express route handler, and has been passed here via ctx.query 23 | data = ctx.query._nextExpressData; 24 | delete ctx.query._nextExpressData; 25 | } else { 26 | // otherwise we're on the client, fetch the data via AJAX 27 | const response = await fetch(ctx.asPath, { 28 | method: "GET", 29 | headers: { 30 | "Accept": "application/json" 31 | } 32 | }); 33 | 34 | data = await response.json(); 35 | } 36 | 37 | return data; 38 | }; 39 | -------------------------------------------------------------------------------- /lib/server.js: -------------------------------------------------------------------------------- 1 | const { promisify } = require("util"); 2 | 3 | // Based on: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error 4 | // NOTE: seems like that this requires a specific Babel transform for this to work when being transpiled; see the above link for details 5 | class InvalidRequestError extends global.Error { 6 | constructor(message, statusCode, ...errorArgs) { 7 | super(message, ...errorArgs); 8 | 9 | this.statusCode = statusCode || 400; 10 | 11 | // Maintains proper stack trace for where our error was thrown (only available on V8) 12 | if (Error.captureStackTrace) { 13 | Error.captureStackTrace(this, InvalidRequestError); 14 | } 15 | } 16 | }; 17 | 18 | module.exports = function createNextpress(nextApp) { 19 | let g_orgListen = null; 20 | let g_orgListenAsync = null; 21 | 22 | const nextExpress = { 23 | InvalidRequestError, 24 | 25 | getPageHandler(options) { 26 | let getProps, renderPath; 27 | if (typeof options === "function") { 28 | getProps = options; 29 | renderPath = null; 30 | } else { 31 | // the extra parantheses are required, because otherwise the curly brackets gets parsed as beginning a block scope 32 | ({ getProps = null, renderPath = null } = options); 33 | } 34 | 35 | return async (req, res) => { 36 | let data; 37 | 38 | if (getProps) { 39 | try { 40 | data = await getProps(req, res); 41 | data.requestSuccess = true; 42 | } catch (error) { 43 | // TODO: we should allow library users to provide error handlers: one for InvalidRequestError-s, the other for all other Error-s 44 | 45 | if (error instanceof InvalidRequestError) { 46 | console.error(`InvalidRequestError on ${req.url}: ${error.stack}`); 47 | 48 | res.status(error.statusCode); 49 | 50 | // InvalidRequestError-s are supposed to act as user-facing errors, so replying to the client with the error message is fine. 51 | if (req.accepts([ "text", "html" ])) { 52 | res.type("text").send(`Failed to process request: ${error.message}`); 53 | } else if (req.accepts("json")) { 54 | res.type("json").send(JSON.stringify({ 55 | requestSuccess: false, 56 | errorMessage: error.message 57 | })); 58 | } else { 59 | res.end(); 60 | } 61 | 62 | return; 63 | } 64 | 65 | res.status(500).send("Server error"); 66 | throw error; // re-throw 67 | } // end catch 68 | } 69 | 70 | if (req.accepts("html")) { 71 | if (!renderPath) 72 | renderPath = req.baseUrl + req.path; 73 | 74 | // pass the data in via the query, but make sure not to overwrite the query arguments, otherwise they get lost 75 | const query = req.query; 76 | query._nextExpressData = data; 77 | 78 | nextApp.render(req, res, renderPath, query); 79 | } else if (req.accepts("json") && data) { 80 | res.type("json").send(JSON.stringify(data)); 81 | } else { 82 | // HTTP 406: Not Acceptable 83 | res.status(406).end(); 84 | } 85 | }; 86 | }, // end getPageHandler() 87 | 88 | pageRoute(expressRouter, { 89 | path, 90 | middleware = [], 91 | ...handlerOptions 92 | }) { 93 | const handler = this.getPageHandler(handlerOptions); 94 | return expressRouter.get(path, ...middleware, handler); 95 | }, 96 | 97 | // Hijack listen(), because we need to register the request handler of Next.js here, after all routes have presumably been registered. 98 | // Also provide Promise support while we're at it. 99 | listen(expressApp, ...listenArgs) { 100 | if (!expressApp._isNextHandlerRegistered) { 101 | expressApp.get("*", nextApp.getRequestHandler()); 102 | expressApp._isNextHandlerRegistered = true; 103 | } 104 | 105 | const listenFunc = g_orgListen || expressApp.listen; 106 | 107 | if (listenArgs.length === 0 || typeof listenArgs[listenArgs.length - 1] !== "function") { 108 | // return a Promise if and only if no callback parameter was specified 109 | if (!g_orgListenAsync) { 110 | g_orgListenAsync = promisify(listenFunc); 111 | } 112 | 113 | return g_orgListenAsync.apply(expressApp, listenArgs); 114 | } 115 | 116 | return listenFunc.apply(expressApp, listenArgs); 117 | }, // end listen() 118 | 119 | injectInto(express) { 120 | const extensions = { 121 | getPageHandler(options) { 122 | return nextExpress.getPageHandler(options); 123 | }, 124 | 125 | pageRoute(options) { 126 | return nextExpress.pageRoute(this, options); 127 | } 128 | }; 129 | 130 | Object.assign(express.Router, extensions); 131 | Object.assign(express.application, extensions); 132 | 133 | g_orgListen = express.application.listen; 134 | 135 | // cannot use an array function here, since we need the 'this' it gets called with 136 | express.application.listen = function nextExpressListen(...args) { 137 | return nextExpress.listen(this, ...args); 138 | }; 139 | 140 | return express; 141 | } // end injectInto() 142 | }; // end nextExpress object 143 | 144 | return nextExpress; 145 | }; 146 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-express", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-express", 3 | "version": "1.0.1", 4 | "description": "Makes it easy to write Next.js custom webservers with Express.js by abstracting away all boilerplate involved in loading page component props.", 5 | "keywords": [ 6 | "react", 7 | "next.js", 8 | "express" 9 | ], 10 | "engines": { 11 | "node" : ">=7.6.0" 12 | }, 13 | "author": { 14 | "name": "Gabor Kozar", 15 | "email": "id@gaborkozar.me" 16 | }, 17 | "license": "BSD-3-Clause", 18 | "homepage": "https://github.com/shdnx/next-express", 19 | "bugs": "https://github.com/shdnx/next-express/issues", 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/shdnx/next-express.git" 23 | }, 24 | "dependencies": {}, 25 | "peerDependencies": { 26 | "express": "4.x", 27 | "next": ">=4.0.0" 28 | }, 29 | "scripts": {} 30 | } 31 | -------------------------------------------------------------------------------- /page.js: -------------------------------------------------------------------------------- 1 | module.exports = require('./lib/page'); -------------------------------------------------------------------------------- /server.js: -------------------------------------------------------------------------------- 1 | module.exports = require("./lib/server"); 2 | --------------------------------------------------------------------------------