diff --git a/.gitignore b/.gitignore index 4d29575..349cafa 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +/.vscode diff --git a/README.md b/README.md index 204ed73..72cc61f 100644 --- a/README.md +++ b/README.md @@ -16,57 +16,149 @@ The application is designed to be as agnostic as possible regarding how and wher - As soon as the application is bootstrapped it reads the [URL parameters](#config-parameters) and uses them to set the initial state and create the WebSocket connection - When the WebSocket connection is created, data points are collected, parsed, and printed to the chart -- The app can also send messages back to the boards via WebSocket +- The app can also send messages and change some configuration sending appropriate commands via WebSocket ### Config Parameters The Serial Plotter Web App is initialized by passing a number of parameters in the URL, in the form of a QueryString (eg: http://localhost:3000?currentBaudrate=2400&baudrates=300,1200,2400,4800,9600,19200,38400,57600,74880,115200,230400,250000,500000,1000000,2000000&darkTheme=true&wsPort=5000&connected=true&interpolate=true&generate=true). -| Name | Description | Type (default) | -|-|-|-| -| `currentBaudrate` | currently selected baudrate | Number(9600)| -| `currentLineEnding` | currently selected line ending | String("\r\n")| -| `baudrates` | populate the baudrates menu | String[]/Comma separated strings ([])| -| `darkTheme` | whether to use the dark version of the plotter | Boolean(false) | -| `wsPort` | websocket port used for communication | Number(3030) | -| `interpolate` | whether to smooth the graph or not | Boolean(false) | -| `serialPort` | name of the serial port the data is coming from | String("") | -| `connected` | whether if the serial port is connected or not| Boolean(false) | -| `generate` | generate fake datapoints to print random charts (dev purposes only)| Boolean(false) | -It is possible to update the state of the serial plotter by sending the above parameters via WebSocket in the form of a JSON-stringified object, using the `MIDDLEWARE_CONFIG_CHANGED` [Command](#websocket-communication-protocol). +It is possible to update the state of the serial plotter by sending configuration via WebSocket in the form of a JSON-stringified object see the [Command](#websocket-communication-protocol) section below. ### Websocket Communication Protocol Besides the initial configuration, which is passed in via URL parameters, the communication between the app and the middleware is implemented over WebSocket. -It's possible to send a JSON-stringified message from and to the Serial Plotter App, as long as it adheres to the following format: +It's possible to send JSON-stringified messages between the Serial Plotter App and the Middleware, as long as they adhere to the following format: ``` { - "command": , - "data": + command: , + data: } ``` -The command/data fields follow the specification: +There are 4 different messages that can be sent/received: -| Command Field | Data field format | Initiator | Description | -|-|-|-|-| -| "PLOTTER_SET_BAUDRATE" | number | Serial Plotter | request the middleware to change the baudrate | -| "PLOTTER_SET_LINE_ENDING" | string | Serial Plotter| request the middleware to change the lineending for the messages sent from the middleware to the board | -| "PLOTTER_SEND_MESSAGE" | text | Serial Plotter | send a message to the middleware. The message will be sent over to the board | -| "PLOTTER_SET_INTERPOLATE" | boolean | Serial Plotter | send the interpolation flag to the Middleware | -| "MIDDLEWARE_CONFIG_CHANGED" | Object (see [config parameters](#config-parameters) ) | Middleware | Send an updated configuration from the middleware to the Serial Plotter. Used to update the state, eg: changing the color theme at runtime | +1. **Data Messages**: a message sent from the Middleware to the Serial Plotter App. This is the actual data received by the pluggable monitor that needs to be displayed in the Serial Plotter App. -Example of a message ready to be sent from the Serial Plotter App to the Middleware + example: + ``` + { + command: "", // empty + data: string[] // the data received from the pluggable monitor + } + ``` -```typescript -const websocketMessage = JSON.stringify({command: "PLOTTER_SET_BAUDRATE", data: 9600}) -``` +2. **Middleware Commands**: a command sent from the server to the Serial Plotter App to communicate a change in the settings + + example: + ``` + { + command: "ON_SETTINGS_DID_CHANGE", + data: Partial // see section below + } + ``` + +3. **Client Commands - Send Message**: a command sent by the client to deliver a string to the connected board + + example: + ``` + { + command: "SEND_MESSAGE", + data: string + } + ``` + +4. **Client Commands - Change Settings**: a command sent by the client to change some settings in the UI or in the connected board + + example: + ``` + { + command: "CHANGE_SETTINGS", + data: Partial // see section below + } + ``` -**NOTE: For performance sake, the raw data coming from the serial port that is sent by the middleware to the serial plotter has to be a stringified array of values, rather than the Command/Data object** +#### Monitor Settings + +Settings changes, sent and received in the Serial Plotter App, must follow the following object structure + +``` +Partial = { + pluggableMonitorSettings: PluggableMonitorSettings; + monitorUISettings: Partial; +} +``` +That means a Setting Message can container `pluggableMonitorSettings` and/or `monitorUISettings`. + +Let's take a look at the difference between the two: + +1. **pluggableMonitorSettings**: a map of settings specific for the board attached to the pluggable monitor. Since every board has different capabilities, the settings are different and the structure is a map of key/value pairs. The `value` is an object with the following structure: + + ``` + { + // The setting identifier + readonly id?: string; + // A human-readable label of the setting (to be displayed on the GUI) + readonly label?: string; + // The setting type (at the moment only "enum" is available) + readonly type?: string; + // The values allowed on "enum" types + readonly values?: string[]; + // The selected value + selectedValue: string; + } + ``` + + example: + ``` + pluggableMonitorSettings: { + baudrate: { + id: "baudrate", + label: "Baudrate", + type: "enum", + values: ["300","9600", "115200"], + selectedValue: "9600" + }, + otherSetting: { + id: "otherSetting", + label: "Other Setting", + type: "enum", + values: ["A","B", "C"], + selectedValue: "B" + } + } + + ``` + +2. **monitorUISettings**: settings that are used in the UIs of the Serial Plotter App. +These are sent to the middleware to be stored and propagated to other clients. + + When a client connected to the same websocket change one of the following settings, the change should be stored in the backend (for future re-use) and immediately propagated to all connected clients in order to update their UIs. + + `monitorUISettings` is an object with the following structure: + ``` + { + // used by the serial monitors to stick at the bottom of the window + autoscroll: boolean; + // used by the serial monitors to show the timestamp next to the actual data + timestamp: boolean; + // used by the clients to store the information about the last EOL used when sending a message to the board + lineEnding: EOL; + // used by the Serial Plotter App to interpolate the chart + interpolate: boolean; + // the theme the user choosed + darkTheme: boolean; + // the current websocket port where the communication happens + wsPort: number; + // the port the pluggable monitor in the middleware is connected to + serialPort: string; + // the connection status of the pluggable monitor to the actual board + connected: boolean; + } + ``` ## Development diff --git a/package-lock.json b/package-lock.json index d889c64..6ea40da 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "arduino-serial-plotter-webapp", - "version": "0.0.16", + "version": "0.0.18", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -8,6 +8,7 @@ "version": "0.9.1", "resolved": "https://registry.npmjs.org/@arduino/arc/-/arc-0.9.1.tgz", "integrity": "sha512-lWSF60z5sF6OprH2UGet3z/Yfw57lkfzfdzHIka4wpQNJS+Nqqr3xrhAyIt2/nF65c2TfR4wr9zhoZqY3A1Jpw==", + "dev": true, "requires": { "@arduino/react-icons": "^0.1.1", "@popperjs/core": "^2.9.2", @@ -36,6 +37,7 @@ "version": "10.0.29", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, "requires": { "@emotion/sheet": "0.9.4", "@emotion/stylis": "0.8.5", @@ -46,27 +48,32 @@ "@emotion/sheet": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true }, "@emotion/utils": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true }, "nanoid": { "version": "3.1.30", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", + "dev": true }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true }, "postcss": { "version": "8.4.5", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.5.tgz", "integrity": "sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg==", + "dev": true, "requires": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -77,6 +84,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-select/-/react-select-3.2.0.tgz", "integrity": "sha512-B/q3TnCZXEKItO0fFN/I0tWOX3WJvi/X2wtdffmwSQVRwg5BpValScTO1vdic9AxlUgmeSzib2hAZAwIUQUZGQ==", + "dev": true, "requires": { "@babel/runtime": "^7.4.4", "@emotion/cache": "^10.0.9", @@ -91,7 +99,8 @@ "source-map-js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz", - "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==" + "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==", + "dev": true } } }, @@ -99,6 +108,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/@arduino/react-icons/-/react-icons-0.1.1.tgz", "integrity": "sha512-Ce6dtfMDghRpH7fHRN+zvW7M21v3y+DgY+A5y6V3zx2xiT/Zk9xBrXnTI7RU7H60iZc1jhFgOVk6DISvLPh7ig==", + "dev": true, "requires": { "request": "^2.88.2" } @@ -107,6 +117,7 @@ "version": "7.15.8", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.15.8.tgz", "integrity": "sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==", + "dev": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -298,6 +309,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, "requires": { "@babel/types": "^7.15.4" } @@ -386,7 +398,8 @@ "@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", - "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", + "dev": true }, "@babel/helper-validator-option": { "version": "7.14.5", @@ -421,6 +434,7 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -1344,6 +1358,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", + "dev": true, "requires": { "regenerator-runtime": "^0.13.4" } @@ -1390,6 +1405,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -1440,6 +1456,7 @@ "version": "10.3.1", "resolved": "https://registry.npmjs.org/@emotion/core/-/core-10.3.1.tgz", "integrity": "sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww==", + "dev": true, "requires": { "@babel/runtime": "^7.5.5", "@emotion/cache": "^10.0.27", @@ -1453,6 +1470,7 @@ "version": "10.0.29", "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", + "dev": true, "requires": { "@emotion/sheet": "0.9.4", "@emotion/stylis": "0.8.5", @@ -1463,12 +1481,14 @@ "@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true }, "@emotion/serialize": { "version": "0.11.16", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, "requires": { "@emotion/hash": "0.8.0", "@emotion/memoize": "0.7.4", @@ -1480,17 +1500,20 @@ "@emotion/sheet": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", - "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" + "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==", + "dev": true }, "@emotion/utils": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true }, "csstype": { "version": "2.6.19", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", - "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==", + "dev": true } } }, @@ -1498,6 +1521,7 @@ "version": "10.0.27", "resolved": "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz", "integrity": "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==", + "dev": true, "requires": { "@emotion/serialize": "^0.11.15", "@emotion/utils": "0.11.3", @@ -1507,12 +1531,14 @@ "@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true }, "@emotion/serialize": { "version": "0.11.16", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, "requires": { "@emotion/hash": "0.8.0", "@emotion/memoize": "0.7.4", @@ -1524,19 +1550,22 @@ "@emotion/utils": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true }, "csstype": { "version": "2.6.19", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", - "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==", + "dev": true } } }, "@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", - "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" + "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==", + "dev": true }, "@emotion/memoize": { "version": "0.7.5", @@ -1581,12 +1610,14 @@ "@emotion/stylis": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", - "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" + "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==", + "dev": true }, "@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", - "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" + "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==", + "dev": true }, "@emotion/utils": { "version": "1.0.0", @@ -1597,7 +1628,8 @@ "@emotion/weak-memoize": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", - "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" + "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==", + "dev": true }, "@eslint/eslintrc": { "version": "0.4.3", @@ -1637,6 +1669,7 @@ "version": "1.11.0", "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.0.tgz", "integrity": "sha512-TOp5La9wmSh9G5bqFGN/ApmOXtJDzBGkYW+OTRd3ukY7J32RVGZPpN4O9BD651JUy66nj3g9CIENTNCgm4IRXQ==", + "dev": true, "requires": { "@formatjs/intl-localematcher": "0.2.21", "tslib": "^2.1.0" @@ -1645,7 +1678,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -1653,6 +1687,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-1.2.0.tgz", "integrity": "sha512-fObitP9Tlc31SKrPHgkPgQpGo4+4yXfQQITTCNH8AZdEqB7Mq4nPrjpUL/tNGN3lEeJcFxDbi0haX8HM7QvQ8w==", + "dev": true, "requires": { "tslib": "^2.1.0" }, @@ -1660,7 +1695,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -1668,6 +1704,7 @@ "version": "2.0.15", "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.0.15.tgz", "integrity": "sha512-nnRbkK+nz4ZL1l1lUbztL8qrEUGQKF/NU38itLnzLm8QLEacFS5qGOxxp/0DSIehhX99tNroNtudtjdOvzruAQ==", + "dev": true, "requires": { "@formatjs/ecma402-abstract": "1.11.0", "@formatjs/icu-skeleton-parser": "1.3.2", @@ -1677,7 +1714,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -1685,6 +1723,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.2.tgz", "integrity": "sha512-ChKmnVCE/LbJzedRgA/EeL5+tfjx/6ZWunqNiEC5BtqHnnwmLN/oPuCPb8b3NhuGiwTqp+LkaS70tga5kXRHxg==", + "dev": true, "requires": { "@formatjs/ecma402-abstract": "1.11.0", "tslib": "^2.1.0" @@ -1693,7 +1732,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -1701,6 +1741,7 @@ "version": "0.2.21", "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.2.21.tgz", "integrity": "sha512-JTJeLiNwexN4Gy0cMxoUPvJbKhXdnSuo5jPrDafEZpnDWlJ5VDYta8zUVVozO/pwzEmFVHEUpgiEDj+39L4oMg==", + "dev": true, "requires": { "tslib": "^2.1.0" }, @@ -1708,7 +1749,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -1778,6 +1820,7 @@ "version": "3.0.0-alpha.1", "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.0.0-alpha.1.tgz", "integrity": "sha512-fxciU4AQ/4XBYfse/mT9h1nsyNkmQkxwQtTmQVu6b4Tp2u95Y3m5BNgWgV2m3vLiiKZ82NtHJXAIGoqiK53w4g==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2" } @@ -1786,6 +1829,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.0.2.tgz", "integrity": "sha512-ZZ8FQDCsri3vUB2mfDD76Vbf97DH361AiZUXKHV4BqwCtYyaNYiZqIr8KXrcMCxJvrIYVQLSn8+jeIQRO3bvtw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "intl-messageformat": "^9.6.12" @@ -1795,6 +1839,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.0.3.tgz", "integrity": "sha512-ewFoVvsxSyd9QZnknvOWPjirYqdMQhXTeDhJg3hM6C/FeZt0banpGH1nZ0SGMZXHz8NK9uAa2KVIq+jqAIOg4w==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2" } @@ -2495,12 +2540,14 @@ "@popperjs/core": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.0.tgz", - "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==" + "integrity": "sha512-zrsUxjLOKAzdewIDRWy9nsV1GQsKBCWaGwsZQlCgr6/q+vjyZhFgqedLfFBuI9anTPEUT4APq9Mu0SZBTzIcGQ==", + "dev": true }, "@react-aria/breadcrumbs": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.1.5.tgz", "integrity": "sha512-0ruIP6gP4hkGyX/b3g8MeuaP7ZX9M4mvauPHvuqGHNpUAZdESMj4jHo5ERImaTUJTObC2Vid2674OyzYFITSUA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/i18n": "^3.3.2", @@ -2515,6 +2562,7 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.3.4.tgz", "integrity": "sha512-vebTcf9YpwaKCvsca2VWhn6eYPa15OJtMENwaGop72UrL35Oa7xDgU0RG22RAjRjt8HRVlAfLpHkJQW6GBGU3g==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.5.0", @@ -2528,6 +2576,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.2.3.tgz", "integrity": "sha512-bLNdVefKGFA2+QT84htWHYUpxLqA5r3L4q6ilBLOzcRiKpgQM2OW2bQGLN6Zw26MKjmTzEMrR2Db+a/O5e1fUQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/label": "^3.1.3", @@ -2542,6 +2591,7 @@ "version": "3.1.4", "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.1.4.tgz", "integrity": "sha512-OtQGBol3CfcbBpjqXDqXzH5Ygny44PIuyAsZ1e3dfIdtaI+XHsoglyZnvDaVVealIgedHkMubreZnyNYnlzPLg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.4.1", @@ -2554,6 +2604,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.5.0.tgz", "integrity": "sha512-Eib75Q6QgQdn8VVVByg5Vipaaj/C//8Bs++sQY7nkomRx4sdArOnXbDppul3YHP6mRfU9VRLvAigEUlReQF/Xw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/interactions": "^3.6.0", @@ -2566,6 +2617,7 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.3.4.tgz", "integrity": "sha512-1DV3I82UfL2dT8WBI/88TwtokO80B7ISSyuz6rO/6n7q76A/nC2AtVINbrGYrcKsCcxCEoEMxW5RVJ39fcLijA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@internationalized/date": "3.0.0-alpha.1", @@ -2580,6 +2632,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.7.0.tgz", "integrity": "sha512-Xomchjb9bqvh3ocil+QCEYFSxsTy8PHEz43mNP6z2yuu3UqTpl2FsWfyKgF/Yy0WKVkyV2dO2uz758KJTCLZhw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/utils": "^3.10.0", @@ -2590,6 +2643,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.2.1.tgz", "integrity": "sha512-QZ5/dpJKRjB1JtFZfOVd5GUiCpA2yMgmNA6ky6jT5XNAo7H14QqGRFUGDTLAQYGd+Bc3s+NayOT3NKUYur/3Xw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/utils": "^3.10.0", @@ -2601,6 +2655,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.2.0.tgz", "integrity": "sha512-UTAA1x+8n1t/SPAbP6LRnwru0nn/VySOwWp3tl3SJ8WLqtDQf5YTJL7shjkWf3HxVkGUv/pT4XvOPX49Yg7YtQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.4.1", @@ -2614,6 +2669,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.4.0.tgz", "integrity": "sha512-Tc6JAPHrNKbjFMOCI50YHFBltSxBc84CaLIQdVo4c9KYiwgoAy1ULeSnRyp4ru3qpnffJZEUCNWD+864+MZVEQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.4.1", @@ -2631,6 +2687,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.3.0.tgz", "integrity": "sha512-e/5zlWSwcsUYxH+kLrACPhLxh/Z+8/xvAB90G7xjBble1RusYQ+iH+M2U1n5vqoenZ3vjBpmEDsdo6vHeFeKxQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/interactions": "^3.7.0", @@ -2649,6 +2706,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-aria/meter/-/meter-3.1.3.tgz", "integrity": "sha512-/UORZsn3Q8clxUMZuI68VYLEkdDjpa32c1FAwv1adyTlQrGvX06iWwvMPKwsJsL6S7AHD5ZMl65H3QT7WXJpbQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/progress": "^3.1.3", @@ -2660,6 +2718,7 @@ "version": "3.7.3", "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.7.3.tgz", "integrity": "sha512-N5F/TVJ9KIYgGuOknVMrRnqqzkNKcFos4nxLHQz4TeFZTp4/P+NqEHd/VBmjsSTNEjEuNAivG+U2o4F1NWn/Pw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/i18n": "^3.3.3", @@ -2676,6 +2735,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", + "dev": true, "requires": { "@babel/runtime": "^7.1.2" } @@ -2686,6 +2746,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.1.3.tgz", "integrity": "sha512-8He91F3MYPT63s/3XUYvaRHHGsPgG3/b4TzdhO5GqmpfCnvDyrXrBI5cj+uyIB9gczU59zENJcnP8Q0oOITiMA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/i18n": "^3.3.2", @@ -2699,6 +2760,7 @@ "version": "3.1.6", "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.1.6.tgz", "integrity": "sha512-ngpnlSXWcwOB65HoEw510BkG7I/REeM59cz8y1TQ4k1zPX//qsWOpl2ngmT4yZybLAg+B9VwDkdE5kw5KlRo1g==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.4.1", @@ -2714,6 +2776,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/@react-aria/searchfield/-/searchfield-3.2.1.tgz", "integrity": "sha512-z8dNZXyEhzHYw2O2rdZcwguFKZDr5ElMXL1wKw46uZhxBEKxDA5k9o5HGOUIm7wvll5oQfAdMAVn1bAr+uybcw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/i18n": "^3.3.3", @@ -2730,6 +2793,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/@react-aria/select/-/select-3.6.0.tgz", "integrity": "sha512-jHLyeiy1iR1qaoFdJpQa2V7RL4Nb9JfVDNHNbgp8I5peoU+2oIN34NbqHTnsKlOBfhBRih2PnLogT2Iw4FZ3+Q==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/i18n": "^3.3.3", @@ -2750,6 +2814,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.7.0.tgz", "integrity": "sha512-OHvxxTZeI8vJYQXDG9KUx/MFJ2DY70phW0XausbzYzUFwaXiWIOb8YQrTHA2CpVOV8E4c+qd522sxHGBq8hPDg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.5.0", @@ -2765,6 +2830,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-aria/separator/-/separator-3.1.3.tgz", "integrity": "sha512-Vl5UjLvt7NojRZOmKunXzttDqrjZp9i3oIKmwk5ydppchfzvriKsPeFinbWzcRMzIaHOljQ8Gj8yqgGjJtuvuQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/utils": "^3.8.2", @@ -2775,6 +2841,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.1.0.tgz", "integrity": "sha512-RxqQKmE8sO7TGdrcSlHTcVzMP450hqowtBSd2bBS9oPlcokVkaGq28c3Rwa8ty5ctw4EBCjXqjP7xdcKMGDzug==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2" } @@ -2783,6 +2850,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.1.3.tgz", "integrity": "sha512-JXRIY9rzRc1iBrwO0EzBukMViU6Ty+TXA9SOsp0DhVfF0QZbIwKKd/M6rFq5xvCItUNMWTqdEdqh2c7hFjhZjQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/toggle": "^3.1.4", @@ -2794,6 +2862,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.5.0.tgz", "integrity": "sha512-EUsr5YCavNbp/nUoBCfiLiir0I0/NiZ2i/RPtOzzsGHMHw2xOME9PiRHYPrj7vOQQEfNgN1btr1psvLML4dk5w==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.5.0", @@ -2807,6 +2876,7 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.1.5.tgz", "integrity": "sha512-Oe6EpRxOJeXmKL9kD6LfoPRERLMj6Romx11KBEk7bkfO5zf8gm/NSmQCzN1h7SGRsUCkbCgVXPK63j5IlHK/Xw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.4.1", @@ -2822,6 +2892,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.1.3.tgz", "integrity": "sha512-l2/BS1XBKrLpg+dovI3xy6NdCgJ5n82TS4p8vQJa7GcynI1I64R0IjOUFv0lc6ZZsr1G8Wg71SNYfmlgTrPr2w==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/focus": "^3.4.1", @@ -2836,6 +2907,7 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.10.0.tgz", "integrity": "sha512-he/1pV8gsTVwmYqbKI6DPtRUkWjzz/4icgemVVNjWNsiKEJSBj8Cr4I+0i3vIgXEPLnn1t+/LUsJMGFbKnqc9w==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/ssr": "^3.1.0", @@ -2848,6 +2920,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.2.3.tgz", "integrity": "sha512-iAe5EFI7obEOwTnIdAwWrKq+CrIJFGTw85v8fXnQ7CIVGRDblX85GOUww9bzQNPDLLRYWS4VF702ii8kV4+JCw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/interactions": "^3.5.1", @@ -2859,6 +2932,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.0.3.tgz", "integrity": "sha512-amT889DTLdbjAVjZ9j9TytN73PszynGIspKi1QSUCvXeA2OVyCwShxhV0Pn7yYX8cMinvGXrjhWdhn0nhYeMdg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/toggle": "^3.2.3", @@ -2870,6 +2944,7 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.3.4.tgz", "integrity": "sha512-HnlQip9RH+3nGNh8U2U1YkCdA+zGSedQLWVCdR53w/n6To7kIp7yDLby5dkmP+9VGQEkyfsoSjwGJ1NF94CCZg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-types/shared": "^3.8.0" @@ -2879,6 +2954,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.0.1.tgz", "integrity": "sha512-kUzlFz7ZtgE6JtxAR6f42KA/cwiJoQyBojz3jew3CQMiPmzdsqcrnVrOSrWm78IprYW1fBgnyydsLXVUTgGnfQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/list": "^3.3.0", @@ -2893,6 +2969,7 @@ "version": "3.4.3", "resolved": "https://registry.npmjs.org/@react-stately/data/-/data-3.4.3.tgz", "integrity": "sha512-JEyR9XLDlTiY/mQygzAvrwymvTibs9+stnUIcVYK3BWzou+ItHJIaoGFjxUtHWgodiHuGSkMDUKxv7srfYrWfQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-types/shared": "^3.10.0" @@ -2902,6 +2979,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.1.0.tgz", "integrity": "sha512-9nbmLqjWUw9v8n/1HDAziZZvDQ0SbJh1Kb79KvC4ccK2YxvQ6Q/DSLbqlEP8+r4w5C6OK+OB4R12RpxMGq3z8A==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/selection": "^3.8.0", @@ -2913,6 +2991,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.4.0.tgz", "integrity": "sha512-nqVuECSySZU79lF53+YMCl+N1krCoulYNSIohSsply8MN54gJsNHKOKWnhIx05Cdw6hz1rHmdSJ+/sRHhVvBSw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/collections": "^3.3.3", @@ -2925,6 +3004,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.2.3.tgz", "integrity": "sha512-r09qH8F+OaH7PTc9t2iAOfeCPy3jSg9uAwlDiGaev3zknM618XafIoQ1sWUNQYecSQ5BWWUyBYh5Vl8i2HnEvw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/overlays": "^3.1.3", @@ -2937,6 +3017,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/@react-stately/numberfield/-/numberfield-3.0.2.tgz", "integrity": "sha512-hxJt/Bj9cqJ8EPp9Vb0BL2CMWaRROWvxveiy76zcMMAT1TN33Wjhta+r+RjhJeUqDCHyvgcbYUeyxEbqrcipRA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@internationalized/number": "^3.0.2", @@ -2949,6 +3030,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.1.3.tgz", "integrity": "sha512-X8H/h9F8ZjevwJ7P8ak7v500qQd5x4Y76LsXUXrR6LtcO8FXfp2I+W8sGmBtLZwLQpTJiF1U0WMQqXLE1g6eLA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/utils": "^3.2.2", @@ -2959,6 +3041,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.3.2.tgz", "integrity": "sha512-U1GfO7NflkyYiUP56/iFWwoLuMxE6Ydb4wEY3ZAlkMcWqes9YBQCzfPeckl6f77i+1ldc3Irs3NH9fDrKp8Oow==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/utils": "^3.2.2", @@ -2969,6 +3052,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-stately/searchfield/-/searchfield-3.1.3.tgz", "integrity": "sha512-IIsgZ87RgdSTLcXB3U+EdgbtAXlpw50G9fDYhwpjIaiZQ60RsaEz0mo+s1+oapXGudCFWyQYNR+nqF7jzNKxwg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/utils": "^3.2.2", @@ -2980,6 +3064,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.1.3.tgz", "integrity": "sha512-r0M2gcyyfo7vDDZGsOb64XQlVHtNQl+3mId3gYA46sHEu81C8Lhy4YSPZjItppnCLigBlm88hISl/i0e+XBx8g==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/collections": "^3.3.3", @@ -2995,6 +3080,7 @@ "version": "3.8.0", "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.8.0.tgz", "integrity": "sha512-FDO2kJRTF43wxx6DD8fQtxCg7UvUtwO4KJi6hk/W7ZOyQZuwq9INQux826mvSXT7Ixw1OTkvKowrO6/knol0mA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/collections": "^3.3.3", @@ -3006,6 +3092,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.0.3.tgz", "integrity": "sha512-6A9TUIYiBXyLcwUdmfGyVeEmOc9KMrrjtAfCLghDUyUFUUlxd5NO3gBs4zicdu7zbOMI/zB0kj5dWyfdZiiEmw==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-aria/i18n": "^3.3.2", @@ -3018,6 +3105,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.1.0.tgz", "integrity": "sha512-s3p/EJ6pnGBCDNoHE2Cp7nAk4rq7ZE8cLctNGnwqQYb9HhFkgTDj/WPlgObHnYclchdART5hWoiYX9wznfPYRQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/collections": "^3.3.3", @@ -3032,6 +3120,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.0.1.tgz", "integrity": "sha512-XhF/5mt8eme3mu0+4nC7Du+e5OWSu0W8SeKfbH9JmTWTCayZpPtui68nRStJK6OkgHs28gA+j55RSsTqT/N1Fg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/list": "^3.3.0", @@ -3043,6 +3132,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.2.3.tgz", "integrity": "sha512-p5eVjXwNo4y4CeybxfjYmbTzNMNiI67uspbRAJnawWBVWw8X+yIvRfpjYAsqmvsJ+DsvwybSTlQDT6taGoWEsA==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/utils": "^3.2.2", @@ -3054,6 +3144,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.0.5.tgz", "integrity": "sha512-rHqPSfkxbx0T0B/j+WDl4G2CfLjFeBfyaifGiIUJWHO/0Kwvh5am88VeHtuTVzC2DPEGTdtXqYns21EuJOrDlQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/overlays": "^3.1.3", @@ -3065,6 +3156,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.2.0.tgz", "integrity": "sha512-FfHfs79KeXN0Yi8X5O/oRWL1ZTZByhIT++NEUX4aCO3VSxnqhcl9/ErSmH/fYr36q0xdYZsX3BFvk/fm1EDkXQ==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2", "@react-stately/collections": "^3.3.3", @@ -3077,6 +3169,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.3.0.tgz", "integrity": "sha512-f//Y8q0+FFcS04xvCNvbba7WWRLHzj2AegLgdgwTxsnk9Gb+AyuasdRrRY7bGQhdHuEJ7OIiQZ9EQWndDbrTcg==", + "dev": true, "requires": { "@babel/runtime": "^7.6.2" } @@ -3085,6 +3178,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.2.1.tgz", "integrity": "sha512-njXfiYTlACKAz5xVp34tXb7gtm6avzgzrkYT70r3HHk8g7cBUS7iJPiSIgCRxUGwIpesIYeZY3a1Nvqzvohgmg==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3093,6 +3187,7 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.4.1.tgz", "integrity": "sha512-B54M84LxdEppwjXNlkBEJyMfe9fd+bvFV7R6+NJvupGrZm/LuFNYjFcHk7yjMKWTdWm6DbpIuQz54n5qTW7Vlg==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3101,6 +3196,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.2.3.tgz", "integrity": "sha512-YqeAFyrpaxI/eW6zQ7tVkKIASgzpywRrc6C/rV6Mw0zzGGSSvmYvdOBx9yHOEvpts7dLgaGlmLK6CeG7s4yGKg==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3109,6 +3205,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.2.0.tgz", "integrity": "sha512-RLdgXvX1tkhLhtKaxAY4Arl6stSOkJaUyglp3esBo9ZQCKnuxaKfkj04XfhB46y9nCSgbfHtA0cZ9VYpdceItw==", + "dev": true, "requires": { "@react-types/shared": "^3.10.0" } @@ -3117,6 +3214,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.3.1.tgz", "integrity": "sha512-1i6fVtixUNlftSNbVPFRieyEy3N/GNqcqpeOsJUB1jby28ppbM+JCp3Icb0ijaNC9Nl8c/oI8srtOWIQIKUJiQ==", + "dev": true, "requires": { "@react-types/overlays": "^3.5.1", "@react-types/shared": "^3.8.0" @@ -3126,6 +3224,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.0.0.tgz", "integrity": "sha512-OO3i2KfCzyLPK7fPYlVEybobiQmjZGT53rncwzOWAqD3YihTueGXYeAIpbbIZ75BrJzdcntfedPqcWwYNOaNbw==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3134,6 +3233,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/@react-types/label/-/label-3.5.0.tgz", "integrity": "sha512-a9lpQUyV4XwsZv0gV1jPjPWicSSa+DRliuXLTwORirxNLF0kMk89DLYf0a9CZhiEniJYqoqR3laJDvLAFW1x/Q==", + "dev": true, "requires": { "@react-types/shared": "^3.9.0" } @@ -3142,6 +3242,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.2.0.tgz", "integrity": "sha512-0oSFoU2EenKCyhyJE+BN33lHVnOIN/+Gl4zj2ilJToY+obzOtzjSDFgiCJ0izVp9l9BQnkzc247RrVKhTLZ8Rw==", + "dev": true, "requires": { "@react-aria/interactions": "^3.7.0", "@react-types/shared": "^3.10.0" @@ -3151,6 +3252,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.2.1.tgz", "integrity": "sha512-uBYx5BgL8gyH62UhSXAFyFDwAD4ALcK5gjOk+p/vWsFm0vvmtutALkb3yYjDQvwdI89pSZDjN4j7QChCmlNcmQ==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3159,6 +3261,7 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.4.1.tgz", "integrity": "sha512-9xx7x13h2/DpnD8m2+eN09ViEwXldYXGtD0WSExO99ZulNi4tbzwJfnUBBJWj1aq9v2ZgObECOSqwkIDOJo6qA==", + "dev": true, "requires": { "@react-types/overlays": "^3.5.1", "@react-types/shared": "^3.9.0" @@ -3168,6 +3271,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@react-types/meter/-/meter-3.1.2.tgz", "integrity": "sha512-rF14kgjXkafmwaMGTpNsDMfjXhGNvKLdf02fwVBEqQjUJ5PFu/DubrIecu4Q6+TG/hEXjD0EryU+YxAwVOzkmg==", + "dev": true, "requires": { "@react-types/progress": "^3.1.2", "@react-types/shared": "^3.8.0" @@ -3177,6 +3281,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@react-types/numberfield/-/numberfield-3.1.0.tgz", "integrity": "sha512-+QfvGqWD/QWOIyOCRDX/KyyV6QWdA/BQZKVpkFd0Vyy11GGT0eiKGyBevlN22/mwQkHbu53smVrRKXlHdB1tUQ==", + "dev": true, "requires": { "@react-types/shared": "^3.9.0" } @@ -3185,6 +3290,7 @@ "version": "3.5.1", "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.5.1.tgz", "integrity": "sha512-T3o6wQ5NNm1rSniIa01bIa6fALC8jbwpYxFMaQRrdEpIvwktt0Fi5Xo6/97+oe4HvzzU0JMhtwWDTdRySvgeZw==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3193,6 +3299,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.1.2.tgz", "integrity": "sha512-RLddv7VLuN/vWi13zbCmp8L5spbO/ArzimplJ5v59XrDNi/obbFkMOxne8/NrIS06aRiYiP8scXgC+koyyqpJg==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3201,6 +3308,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.1.2.tgz", "integrity": "sha512-vkIic8abrVUyl/YjKU3yTVwn8QgebzuadfV89PsaKc3hdmSiHhDsln5wYsfWOEotqMwPrG1aEv9yRMYO78OQXQ==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3209,6 +3317,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@react-types/searchfield/-/searchfield-3.1.2.tgz", "integrity": "sha512-lIyXEzoS/XXmddAvgZk/a8/8qAkVt5XbUrX7CrpZOiwqIPsVDI2bDYiv7N9GdS0pMeSyu1X9mXCnJfvzu/Dkow==", + "dev": true, "requires": { "@react-types/textfield": "^3.2.3" } @@ -3217,6 +3326,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.5.0.tgz", "integrity": "sha512-XdLS/kvvlOZbVP/wn8tX5iAL0kpND3ZSea8KXG3EkwIw8sn1xcd8tYx7TkdF89IdNbg2pmzn9stOv9RUbC8MoQ==", + "dev": true, "requires": { "@react-types/shared": "^3.10.0" } @@ -3224,12 +3334,14 @@ "@react-types/shared": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.10.0.tgz", - "integrity": "sha512-B1gTRpE5qkSpfGxw8BHeOwvBPP3gnfKnzPHV0FJQHtgJ46oJS64WyloDAp1D9cLVsFHaI6s/HviXL51kVce2ww==" + "integrity": "sha512-B1gTRpE5qkSpfGxw8BHeOwvBPP3gnfKnzPHV0FJQHtgJ46oJS64WyloDAp1D9cLVsFHaI6s/HviXL51kVce2ww==", + "dev": true }, "@react-types/slider": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.0.2.tgz", "integrity": "sha512-cok3e2fLpSGXggwtACDH5WYERhAQtHmyjbYANvf4CA855h7uMbX9L+wuRnvaj+j2W79oE9INDDBt7lG+vJuSiA==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3238,6 +3350,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.1.2.tgz", "integrity": "sha512-EaYWoLvUCpOnt//Ov8VBxOjbs4hBpYE/rBAzzIknXaFvKOu867iZBFL7FJbcemOgC8/dwyaj6GUZ1Gw3Z1g59w==", + "dev": true, "requires": { "@react-types/checkbox": "^3.2.3", "@react-types/shared": "^3.8.0" @@ -3247,6 +3360,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.1.0.tgz", "integrity": "sha512-sJdD5SY6gn5vk6adfjbnlTOXKy606mHFojBeRWqYHMEMcv29GOmVqMF45kYeETRJXPPmXKk04Jvf53FpukcNPQ==", + "dev": true, "requires": { "@react-types/grid": "^3.0.0", "@react-types/shared": "^3.10.0" @@ -3256,6 +3370,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.0.1.tgz", "integrity": "sha512-GvPVU9GAqImHFhU+Do+pdGK/vZA4kqA699Gly1V95DUmtdG3GSwTnwlvM/Sy80/F9fKZDGokZnQmBFo8MFZyIw==", + "dev": true, "requires": { "@react-types/shared": "^3.8.0" } @@ -3264,6 +3379,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.3.0.tgz", "integrity": "sha512-lOf0tx3c3dVaomH/uvKpOKFVTXQ232kLnMhOJTtj97JDX7fTr3SNhDUV0G8Zf4M0vr+l+xkTrJkywYE23rzliw==", + "dev": true, "requires": { "@react-types/shared": "^3.9.0" } @@ -3272,6 +3388,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.1.2.tgz", "integrity": "sha512-puyiRi3IaEeKH25AErZzQKthnxk1McU+7S+Qo2kFLy3F3PyXV0cmSqvKKOhH6kU5Cw4ZnuAlNjCI0tV8PYdlYA==", + "dev": true, "requires": { "@react-types/overlays": "^3.5.1", "@react-types/shared": "^3.8.0" @@ -3788,7 +3905,8 @@ "@types/json-schema": { "version": "7.0.9", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true }, "@types/json5": { "version": "0.0.29", @@ -3799,7 +3917,8 @@ "@types/lodash": { "version": "4.14.178", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.178.tgz", - "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==" + "integrity": "sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==", + "dev": true }, "@types/minimatch": { "version": "3.0.5", @@ -3828,7 +3947,8 @@ "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true }, "@types/prettier": { "version": "2.4.1", @@ -4409,6 +4529,7 @@ "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -4425,7 +4546,8 @@ "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true }, "alphanum-sort": { "version": "1.0.2", @@ -4478,6 +4600,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -4486,6 +4609,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -4501,6 +4625,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/arduino-sass/-/arduino-sass-3.0.1.tgz", "integrity": "sha512-yqYkeMspK1LbTZ1q9NZl9JRzTndFiG0FzKPhvJbmLnlmnuHrWMTA5+f4YO3Slg5ob6/9sNXz0/8H9vUD4VWszw==", + "dev": true, "requires": { "bourbon": "5.0.0" }, @@ -4508,7 +4633,8 @@ "bourbon": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/bourbon/-/bourbon-5.0.0.tgz", - "integrity": "sha512-1BOgwfr0dvAqdL3mj0HZbuYJjt/Ilz6fLhSz55kIo9zYTYsQDg4AzrpwepWJoVLY3tKKYV5Z/0dKHEUz3ecXAg==" + "integrity": "sha512-1BOgwfr0dvAqdL3mj0HZbuYJjt/Ilz6fLhSz55kIo9zYTYsQDg4AzrpwepWJoVLY3tKKYV5Z/0dKHEUz3ecXAg==", + "dev": true } } }, @@ -4640,6 +4766,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "requires": { "safer-buffer": "~2.1.0" } @@ -4694,7 +4821,8 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -4744,7 +4872,8 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, "at-least-node": { "version": "1.0.0", @@ -4776,17 +4905,20 @@ "autosize": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/autosize/-/autosize-4.0.4.tgz", - "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==" + "integrity": "sha512-5yxLQ22O0fCRGoxGfeLSNt3J8LB1v+umtpMnPW6XjkTWXKoN0AmXAIhelJcDtFT/Y/wYWmfE+oqU10Q0b8FhaQ==", + "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true }, "aws4": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true }, "axe-core": { "version": "4.3.3", @@ -4946,6 +5078,7 @@ "version": "10.2.2", "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", + "dev": true, "requires": { "@babel/helper-module-imports": "^7.0.0", "@emotion/hash": "0.8.0", @@ -4962,12 +5095,14 @@ "@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", - "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" + "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==", + "dev": true }, "@emotion/serialize": { "version": "0.11.16", "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", + "dev": true, "requires": { "@emotion/hash": "0.8.0", "@emotion/memoize": "0.7.4", @@ -4979,12 +5114,14 @@ "@emotion/utils": { "version": "0.11.3", "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", - "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" + "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==", + "dev": true }, "csstype": { "version": "2.6.19", "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", - "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==", + "dev": true } } }, @@ -5017,6 +5154,7 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, "requires": { "@babel/runtime": "^7.7.2", "cosmiconfig": "^6.0.0", @@ -5027,6 +5165,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.1.0", @@ -5084,7 +5223,8 @@ "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", - "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" + "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=", + "dev": true }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", @@ -5424,6 +5564,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "requires": { "tweetnacl": "^0.14.3" } @@ -5443,12 +5584,14 @@ "big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true }, "bindings": { "version": "1.5.0", @@ -5553,6 +5696,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -5820,7 +5964,8 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true }, "camel-case": { "version": "4.1.2", @@ -5901,12 +6046,14 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -5947,6 +6094,7 @@ "version": "3.5.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -6018,7 +6166,8 @@ "classnames": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", - "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==", + "dev": true }, "clean-css": { "version": "4.2.3", @@ -6057,7 +6206,8 @@ "clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", + "dev": true }, "co": { "version": "4.6.0", @@ -6112,6 +6262,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "requires": { "color-name": "1.1.3" } @@ -6119,7 +6270,8 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true }, "color-string": { "version": "1.6.0", @@ -6135,6 +6287,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "requires": { "delayed-stream": "~1.0.0" } @@ -6216,7 +6369,8 @@ "computed-style": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/computed-style/-/computed-style-0.1.4.tgz", - "integrity": "sha1-fzRP2FhLLkJb7cpKGvwOMAuwXXQ=" + "integrity": "sha1-fzRP2FhLLkJb7cpKGvwOMAuwXXQ=", + "dev": true }, "concat-map": { "version": "0.0.1", @@ -6285,6 +6439,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -6811,7 +6966,8 @@ "csstype": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz", - "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" + "integrity": "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==", + "dev": true }, "cyclist": { "version": "1.0.1", @@ -6839,6 +6995,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -7056,7 +7213,8 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true }, "delegates": { "version": "1.0.0", @@ -7223,6 +7381,7 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dev": true, "requires": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -7363,6 +7522,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -7424,7 +7584,8 @@ "emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true }, "encodeurl": { "version": "1.0.2", @@ -7498,6 +7659,7 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -7597,7 +7759,8 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true }, "escodegen": { "version": "2.0.0", @@ -8636,7 +8799,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -8727,12 +8891,14 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true }, "fast-diff": { "version": "1.2.0", @@ -8756,7 +8922,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -8846,6 +9013,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -8896,7 +9064,8 @@ "find-root": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true }, "find-up": { "version": "4.1.0", @@ -8955,7 +9124,8 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true }, "fork-ts-checker-webpack-plugin": { "version": "4.1.6", @@ -9098,6 +9268,7 @@ "version": "2.2.9", "resolved": "https://registry.npmjs.org/formik/-/formik-2.2.9.tgz", "integrity": "sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==", + "dev": true, "requires": { "deepmerge": "^2.1.1", "hoist-non-react-statics": "^3.3.0", @@ -9111,7 +9282,8 @@ "deepmerge": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz", - "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==" + "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==", + "dev": true } } }, @@ -9189,12 +9361,14 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, "optional": true }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true }, "functional-red-black-tree": { "version": "1.0.1", @@ -9334,6 +9508,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, "requires": { "assert-plus": "^1.0.0" } @@ -9356,6 +9531,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -9459,12 +9635,14 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true }, "har-validator": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, "requires": { "ajv": "^6.12.3", "har-schema": "^2.0.0" @@ -9486,6 +9664,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -9516,7 +9695,8 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true }, "has-symbols": { "version": "1.0.2", @@ -9658,6 +9838,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, "requires": { "react-is": "^16.7.0" } @@ -10001,6 +10182,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -10083,7 +10265,8 @@ "immutable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", - "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==" + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true }, "import-cwd": { "version": "2.1.0", @@ -10098,6 +10281,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -10212,6 +10396,7 @@ "version": "9.10.0", "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-9.10.0.tgz", "integrity": "sha512-OTOLlGPfwbrFyYD2iQuDbqEs8xccyLy+f1P3ZGJB2/EZo7Z9fVaaIWcM+JGvuWIFVRDnw4Um6z4t0mSSitUxGQ==", + "dev": true, "requires": { "@formatjs/ecma402-abstract": "1.11.0", "@formatjs/fast-memoize": "1.2.0", @@ -10222,7 +10407,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -10283,7 +10469,8 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, "is-bigint": { "version": "1.0.4", @@ -10298,6 +10485,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -10351,6 +10539,7 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.7.0.tgz", "integrity": "sha512-ByY+tjCciCr+9nLryBYcSD50EOGWt95c7tIsKTG1J2ixKKXPvF7Ej3AVd+UfDydAJom3biBGDBALaO79ktwgEQ==", + "dev": true, "requires": { "has": "^1.0.3" } @@ -10424,7 +10613,8 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-fullwidth-code-point": { "version": "3.0.0", @@ -10442,6 +10632,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -10461,7 +10652,8 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { "version": "1.0.6", @@ -10584,7 +10776,8 @@ "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true }, "is-weakref": { "version": "1.0.1", @@ -10631,7 +10824,8 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true }, "istanbul-lib-coverage": { "version": "3.0.0", @@ -12381,7 +12575,8 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "js-yaml": { "version": "3.14.1", @@ -12396,7 +12591,8 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true }, "jsdom": { "version": "16.7.0", @@ -12456,17 +12652,20 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, "json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -12477,7 +12676,8 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true }, "json3": { "version": "3.3.3", @@ -12489,6 +12689,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, "requires": { "minimist": "^1.2.5" } @@ -12507,6 +12708,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", @@ -12545,7 +12747,8 @@ "klona": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==" + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true }, "language-subtag-registry": { "version": "0.3.21", @@ -12592,6 +12795,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/line-height/-/line-height-0.3.1.tgz", "integrity": "sha1-SxIF7d4YKHKl76PI9iCzGHqcVMk=", + "dev": true, "requires": { "computed-style": "~0.1.3" } @@ -12599,7 +12803,8 @@ "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true }, "load-json-file": { "version": "4.0.0", @@ -12641,6 +12846,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, "requires": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -12659,12 +12865,14 @@ "lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true }, "lodash._reinterpolate": { "version": "3.0.0", @@ -12681,7 +12889,8 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true }, "lodash.memoize": { "version": "4.1.2", @@ -12736,6 +12945,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } @@ -12861,7 +13071,8 @@ "memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", - "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", + "dev": true }, "memory-fs": { "version": "0.4.1", @@ -13067,12 +13278,14 @@ "mime-db": { "version": "1.50.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", - "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==", + "dev": true }, "mime-types": { "version": "2.1.33", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", + "dev": true, "requires": { "mime-db": "1.50.0" } @@ -13158,7 +13371,8 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true }, "minimist-options": { "version": "4.1.0", @@ -13329,7 +13543,8 @@ "nanoclone": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/nanoclone/-/nanoclone-0.2.1.tgz", - "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==" + "integrity": "sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA==", + "dev": true }, "nanoid": { "version": "3.1.29", @@ -13380,7 +13595,8 @@ "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, "next-tick": { "version": "1.0.0", @@ -13669,7 +13885,8 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true }, "normalize-range": { "version": "0.1.2", @@ -13740,12 +13957,14 @@ "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true }, "object-copy": { "version": "0.1.0", @@ -14082,6 +14301,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "requires": { "callsites": "^3.0.0" } @@ -14103,6 +14323,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -14185,7 +14406,8 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "path-to-regexp": { "version": "0.1.7", @@ -14196,7 +14418,8 @@ "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true }, "pbkdf2": { "version": "3.1.2", @@ -14214,7 +14437,8 @@ "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true }, "picocolors": { "version": "0.2.1", @@ -14225,7 +14449,8 @@ "picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true }, "pify": { "version": "4.0.1", @@ -15580,7 +15805,8 @@ "prism-react-renderer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.2.1.tgz", - "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==" + "integrity": "sha512-w23ch4f75V1Tnz8DajsYKvY5lF7H1+WvzvLUcF0paFxkTHSp42RS0H5CttdN2Q8RR3DRGZ9v5xD/h3n8C8kGmg==", + "dev": true }, "process": { "version": "0.11.10", @@ -15629,6 +15855,7 @@ "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -15638,7 +15865,8 @@ "property-expr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.4.tgz", - "integrity": "sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg==" + "integrity": "sha512-sFPkHQjVKheDNnPvotjQmm3KD3uk1fWKUN7CrpdbwmUx3CrG3QiM8QpTSimvig5vTXmTvjz7+TDvXOI9+4rkcg==", + "dev": true }, "proxy-addr": { "version": "2.0.7", @@ -15659,7 +15887,8 @@ "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true }, "public-encrypt": { "version": "4.0.3", @@ -15719,7 +15948,8 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, "q": { "version": "1.5.1", @@ -15855,6 +16085,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.0.0.tgz", "integrity": "sha512-06/645f+zRr/7TBwA6TY0DFl5uoyCQFfewE88yx+KdGgW5winDwCJZq8m9TqgqeMU6iZKygeaeCIUIb8qvkXmA==", + "dev": true, "requires": { "@react-aria/breadcrumbs": "^3.1.1", "@react-aria/button": "^3.2.2", @@ -15886,6 +16117,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/react-autosize-textarea/-/react-autosize-textarea-7.1.0.tgz", "integrity": "sha512-BHpjCDkuOlllZn3nLazY2F8oYO1tS2jHnWhcjTWQdcKiiMU6gHLNt/fzmqMSyerR0eTdKtfSIqtSeTtghNwS+g==", + "dev": true, "requires": { "autosize": "^4.0.2", "line-height": "^0.3.1", @@ -16099,12 +16331,14 @@ "react-fast-compare": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", - "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==", + "dev": true }, "react-google-recaptcha-v3": { "version": "1.9.7", "resolved": "https://registry.npmjs.org/react-google-recaptcha-v3/-/react-google-recaptcha-v3-1.9.7.tgz", "integrity": "sha512-LgHTuPUE86jGOtmMYMUWEYux8n7M2ZNj5GHct//DlXWZGyLIgFfLbvxA3UlgrG+tSu2pgw2mqXtYdPxaldqhWQ==", + "dev": true, "requires": { "hoist-non-react-statics": "^3.3.2" } @@ -16113,6 +16347,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-3.0.0.tgz", "integrity": "sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==", + "dev": true, "requires": { "prop-types": "^15.5.8" } @@ -16120,12 +16355,14 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true }, "react-places-autocomplete": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/react-places-autocomplete/-/react-places-autocomplete-7.3.0.tgz", "integrity": "sha512-86wcHC69JATvWBnIS/yCsBHLtwzOGcnx3Ye94u74yTrz1jLRC/txkVDkf6rvC+Jq3zNe/tAg/W53x0EaH1ZPPw==", + "dev": true, "requires": { "lodash.debounce": "^4.0.8", "prop-types": "^15.5.8" @@ -16135,6 +16372,7 @@ "version": "2.2.5", "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.2.5.tgz", "integrity": "sha512-kxGkS80eQGtLl18+uig1UIf9MKixFSyPxglsgLBxlYnyDf65BiY9B3nZSc6C9XUNDgStROB0fMQlTEz1KxGddw==", + "dev": true, "requires": { "react-fast-compare": "^3.0.1", "warning": "^4.0.2" @@ -16143,7 +16381,8 @@ "react-fast-compare": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", - "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==", + "dev": true } } }, @@ -16239,6 +16478,7 @@ "version": "3.10.0", "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.10.0.tgz", "integrity": "sha512-2b0RLvVxzNAM9ZdI/NYsxtt8DRnj2ORLXtRQBDtrTsqacPjn/OM27/oyHfldtLlYio4YwlBC3NNVY4lh8HIxhQ==", + "dev": true, "requires": { "@react-stately/checkbox": "^3.0.3", "@react-stately/collections": "^3.3.3", @@ -16273,6 +16513,7 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.2.tgz", "integrity": "sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg==", + "dev": true, "requires": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -16388,6 +16629,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -16429,7 +16671,8 @@ "regenerator-runtime": { "version": "0.13.9", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true }, "regenerator-transform": { "version": "0.14.5", @@ -16623,6 +16866,7 @@ "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", @@ -16650,6 +16894,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", @@ -16659,12 +16904,14 @@ "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" @@ -16673,7 +16920,8 @@ "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true } } }, @@ -16705,6 +16953,7 @@ "version": "1.18.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, "requires": { "is-core-module": "^2.0.0", "path-parse": "^1.0.6" @@ -16730,7 +16979,8 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true }, "resolve-url": { "version": "0.2.1", @@ -17006,7 +17256,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", @@ -17020,7 +17271,8 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, "sane": { "version": "4.1.0", @@ -17173,6 +17425,7 @@ "version": "1.45.0", "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz", "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==", + "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -17325,6 +17578,7 @@ "version": "10.2.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.2.0.tgz", "integrity": "sha512-kUceLzC1gIHz0zNJPpqRsJyisWatGYNFRmv2CKZK2/ngMJgLqxTbXwe/hJ85luyvZkgqU3VlJ33UVF2T/0g6mw==", + "dev": true, "requires": { "klona": "^2.0.4", "loader-utils": "^2.0.0", @@ -17337,6 +17591,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -17420,7 +17675,8 @@ "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true }, "send": { "version": "0.17.1", @@ -17891,12 +18147,14 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true }, "source-map-js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", + "dev": true }, "source-map-resolve": { "version": "0.5.3", @@ -18032,6 +18290,7 @@ "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -18350,6 +18609,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -18698,7 +18958,8 @@ "tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "dev": true }, "tmpl": { "version": "1.0.5", @@ -18724,7 +18985,8 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-no-case": { "version": "1.0.2", @@ -18768,6 +19030,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "requires": { "is-number": "^7.0.0" } @@ -18790,7 +19053,8 @@ "toposort": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", - "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=" + "integrity": "sha1-riF2gXXRVZ1IvvNUILL0li8JwzA=", + "dev": true }, "tough-cookie": { "version": "4.0.0", @@ -18873,7 +19137,8 @@ "tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "tsutils": { "version": "3.21.0", @@ -18894,6 +19159,7 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, "requires": { "safe-buffer": "^5.0.1" } @@ -18901,7 +19167,8 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "type": { "version": "1.2.0", @@ -19119,12 +19386,14 @@ "update-input-width": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/update-input-width/-/update-input-width-1.2.2.tgz", - "integrity": "sha512-6QwD9ZVSXb96PxOZ01DU0DJTPwQGY7qBYgdniZKJN02Xzom2m+9J6EPxMbefskqtj4x78qbe5psDSALq9iNEYg==" + "integrity": "sha512-6QwD9ZVSXb96PxOZ01DU0DJTPwQGY7qBYgdniZKJN02Xzom2m+9J6EPxMbefskqtj4x78qbe5psDSALq9iNEYg==", + "dev": true }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "requires": { "punycode": "^2.1.0" } @@ -19249,7 +19518,8 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true }, "v8-compile-cache": { "version": "2.3.0", @@ -19302,6 +19572,7 @@ "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -19311,7 +19582,8 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true } } }, @@ -19352,6 +19624,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dev": true, "requires": { "loose-envify": "^1.0.0" } @@ -20524,7 +20797,8 @@ "whatwg-fetch": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz", - "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==" + "integrity": "sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==", + "dev": true }, "whatwg-mimetype": { "version": "2.3.0", @@ -20971,7 +21245,8 @@ "yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true }, "yargs": { "version": "15.4.1", @@ -21020,6 +21295,7 @@ "version": "0.32.11", "resolved": "https://registry.npmjs.org/yup/-/yup-0.32.11.tgz", "integrity": "sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg==", + "dev": true, "requires": { "@babel/runtime": "^7.15.4", "@types/lodash": "^4.14.175", diff --git a/package.json b/package.json index 9a4a682..b07549e 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,7 @@ { "name": "arduino-serial-plotter-webapp", - "version": "0.0.17", - "dependencies": { - }, + "version": "0.0.18", + "dependencies": {}, "license": "AGPL", "scripts": { "start": "react-scripts start", diff --git a/src/App.tsx b/src/App.tsx index f2915c8..2b5e39a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,38 +1,54 @@ -import React, { useEffect, useState, useCallback, useRef } from "react"; +import { useEffect, useState, useCallback, useRef } from "react"; import { ChartPlotter } from "./ChartPlotter"; import { namedVariablesMulti } from "./fakeMessagsGenerators"; -import { SerialPlotter } from "./utils"; +import { EOL, isEOL, MonitorSettings, PluggableMonitor } from "./utils"; export default function App() { - const [config, setConfig] = useState(null); + const [config, setConfig] = useState>(null); + + const [webSocketPort, setWebsocketPort] = useState(); + const [serialPort, setSerialPort] = useState(); + + const [websocketIsConnected, setWebsocketIsConnected] = useState(false); const websocket = useRef(null); const chartRef = useRef(); + const wsSend = useCallback( + (clientCommand: PluggableMonitor.Protocol.ClientCommandMessage) => { + if (websocket.current?.readyState === WebSocket.OPEN) { + websocket.current.send(JSON.stringify(clientCommand)); + } + }, + [] + ); + const onMiddlewareMessage = useCallback( - ( - message: - | SerialPlotter.Protocol.StreamMessage - | SerialPlotter.Protocol.CommandMessage - ) => { + (message: PluggableMonitor.Protocol.Message) => { // if there is no command - if (!SerialPlotter.Protocol.isCommandMessage(message)) { + if (PluggableMonitor.Protocol.isDataMessage(message)) { chartRef && chartRef.current && chartRef.current.addNewData(message); return; } - if ( - message.command === - SerialPlotter.Protocol.Command.MIDDLEWARE_CONFIG_CHANGED - ) { - const { darkTheme, serialPort, connected } = - message.data as SerialPlotter.Config; + if (PluggableMonitor.Protocol.isMiddlewareCommandMessage(message)) { + const { + autoscroll, + timestamp, + lineEnding, + interpolate, + darkTheme, + wsPort, + serialPort: serialPortExtracted, + connected, + generate, + } = message.data.monitorUISettings || {}; let updateTitle = false; - let serialNameTitle = config?.serialPort; - if (typeof serialPort !== "undefined") { - serialNameTitle = serialPort; + let serialNameTitle = serialPort; + if (typeof serialPortExtracted !== "undefined") { + serialNameTitle = serialPortExtracted; updateTitle = true; } @@ -51,54 +67,140 @@ export default function App() { ? document.body.classList.add("dark") : document.body.classList.remove("dark"); } - setConfig((c) => ({ ...c, ...message.data })); + + // ** we should not set a "setting" as undefined FROM THE IDE, + // ** more specifically we will not overwrite a given "setting" if we receive a message from the IDE that doesn't include it, + // ** we only overwrite a given "setting" if we recieve a value for it (that's not undefined) from the IDE + + const { id, label, type, values, selectedValue } = + message.data.pluggableMonitorSettings?.baudrate || {}; + + setConfig((prevConfig) => ({ + pluggableMonitorSettings: { + baudrate: { + id: + typeof id === "undefined" + ? prevConfig?.pluggableMonitorSettings?.baudrate?.id + : id, + label: + typeof label === "undefined" + ? prevConfig?.pluggableMonitorSettings?.baudrate?.label + : label, + type: + typeof type === "undefined" + ? prevConfig?.pluggableMonitorSettings?.baudrate?.type + : type, + values: + typeof values === "undefined" + ? prevConfig?.pluggableMonitorSettings?.baudrate?.values + : values, + selectedValue: + typeof selectedValue === "undefined" + ? prevConfig?.pluggableMonitorSettings?.baudrate + ?.selectedValue || "9600" + : selectedValue, + }, + }, + monitorUISettings: { + autoscroll: + typeof autoscroll === "undefined" + ? prevConfig?.monitorUISettings?.autoscroll + : autoscroll, + timestamp: + typeof timestamp === "undefined" + ? prevConfig?.monitorUISettings?.timestamp + : timestamp, + lineEnding: + typeof lineEnding === "undefined" + ? prevConfig?.monitorUISettings?.lineEnding + : lineEnding, + interpolate: + typeof interpolate === "undefined" + ? prevConfig?.monitorUISettings?.interpolate + : interpolate, + darkTheme: + typeof darkTheme === "undefined" + ? prevConfig?.monitorUISettings?.darkTheme + : darkTheme, + connected: + typeof connected === "undefined" + ? prevConfig?.monitorUISettings?.connected + : connected, + generate: + typeof generate === "undefined" + ? prevConfig?.monitorUISettings?.generate + : generate, + }, + })); + + if (typeof serialPortExtracted !== "undefined") { + setSerialPort(serialPortExtracted); + } + if (typeof wsPort !== "undefined") { + setWebsocketPort(wsPort); + } } }, - [config?.serialPort] + [serialPort] ); // as soon as the wsPort is set, create a websocket connection - React.useEffect(() => { - if (!config?.wsPort) { + useEffect(() => { + if (!webSocketPort) { return; } - console.log(`opening ws connection on localhost:${config?.wsPort}`); - websocket.current = new WebSocket(`ws://localhost:${config?.wsPort}`); - websocket.current.onmessage = (res: any) => { - const message: SerialPlotter.Protocol.Message = JSON.parse(res.data); - onMiddlewareMessage(message); - }; - const wsCurrent = websocket.current; + console.log(`opening ws connection on localhost:${webSocketPort}`); + websocket.current = new WebSocket(`ws://localhost:${webSocketPort}`); + setWebsocketIsConnected(true); + const wsCurrent = websocket.current; return () => { console.log("closing ws connection"); wsCurrent.close(); }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [config?.wsPort]); + }, [webSocketPort]); - // at bootstrap read params from the URL useEffect(() => { - const urlParams = new URLSearchParams(window.location.search); - - const urlSettings: SerialPlotter.Config = { - currentBaudrate: parseInt(urlParams.get("currentBaudrate") || "9600"), - currentLineEnding: urlParams.get("lineEnding") || "\n", - baudrates: (urlParams.get("baudrates") || "") - .split(",") - .map((baud: string) => parseInt(baud)), - darkTheme: urlParams.get("darkTheme") === "true", - wsPort: parseInt(urlParams.get("wsPort") || "3030"), - interpolate: urlParams.get("interpolate") === "true", - serialPort: urlParams.get("serialPort") || "/serial/port/address", - connected: urlParams.get("connected") === "true", - generate: urlParams.get("generate") === "true", - }; + if (websocketIsConnected && websocket.current) { + websocket.current.onmessage = (res: any) => { + const message: PluggableMonitor.Protocol.Message = JSON.parse(res.data); + onMiddlewareMessage(message); + }; + } + }, [websocketIsConnected, onMiddlewareMessage]); + // at bootstrap read params from the URL + useEffect(() => { if (config === null) { + const urlParams = new URLSearchParams(window.location.search); + + const urlSettings: MonitorSettings = { + pluggableMonitorSettings: { + baudrate: { + id: "baudrate", + label: "Baudrate", + type: "enum", + values: (urlParams.get("baudrates") || "").split(","), + selectedValue: urlParams.get("currentBaudrate") || "9600", + }, + }, + monitorUISettings: { + lineEnding: isEOL(urlParams.get("lineEnding")) + ? (urlParams.get("lineEnding") as EOL) + : "\r\n", + darkTheme: urlParams.get("darkTheme") === "true", + wsPort: parseInt(urlParams.get("wsPort") || "3030"), + interpolate: urlParams.get("interpolate") === "true", + serialPort: urlParams.get("serialPort") || "/serial/port/address", + connected: urlParams.get("connected") === "true", + generate: urlParams.get("generate") === "true", + }, + }; + onMiddlewareMessage({ - command: SerialPlotter.Protocol.Command.MIDDLEWARE_CONFIG_CHANGED, + command: + PluggableMonitor.Protocol.MiddlewareCommand.ON_SETTINGS_DID_CHANGE, data: urlSettings, }); } @@ -106,7 +208,7 @@ export default function App() { // If in "generate" mode, create fake data useEffect(() => { - if (config?.generate) { + if (config?.monitorUISettings?.generate) { const randomValuesInterval = setInterval(() => { const messages = namedVariablesMulti(); onMiddlewareMessage(messages); @@ -119,7 +221,7 @@ export default function App() { return ( (config && ( - + )) || null ); diff --git a/src/ChartPlotter.tsx b/src/ChartPlotter.tsx index 116c768..972e04e 100644 --- a/src/ChartPlotter.tsx +++ b/src/ChartPlotter.tsx @@ -8,14 +8,14 @@ import React, { import { Line } from "react-chartjs-2"; -import { addDataPoints, SerialPlotter } from "./utils"; +import { addDataPoints, MonitorSettings, PluggableMonitor } from "./utils"; import { Legend } from "./Legend"; import { Chart, ChartData, ChartOptions } from "chart.js"; import "chartjs-adapter-luxon"; import ChartStreaming from "chartjs-plugin-streaming"; import { ChartJSOrUndefined } from "react-chartjs-2/dist/types"; -import { MessageToBoard } from "./MessageToBoard"; +import MessageToBoard from "./MessageToBoard"; // eslint-disable-next-line import Worker from "worker-loader!./msgAggregatorWorker"; @@ -27,10 +27,12 @@ const worker = new Worker(); function _Chart( { config, - websocket, + wsSend, }: { - config: SerialPlotter.Config; - websocket: React.MutableRefObject; + config: Partial; + wsSend: ( + clientCommand: PluggableMonitor.Protocol.ClientCommandMessage + ) => void; }, ref: React.ForwardedRef ): React.ReactElement { @@ -38,11 +40,13 @@ function _Chart( const [, setForceUpdate] = useState(0); const [pause, setPause] = useState(false); - const [connected, setConnected] = useState(config.connected); + const [connected, setConnected] = useState( + config?.monitorUISettings?.connected + ); const [dataPointThreshold] = useState(50); const [cubicInterpolationMode, setCubicInterpolationMode] = useState< "default" | "monotone" - >(config.interpolate ? "monotone" : "default"); + >(config?.monitorUISettings?.interpolate ? "monotone" : "default"); const [initialData] = useState>({ datasets: [], }); @@ -88,10 +92,10 @@ function _Chart( scales: { y: { grid: { - color: config.darkTheme ? "#2C353A" : "#ECF1F1", + color: config?.monitorUISettings?.darkTheme ? "#2C353A" : "#ECF1F1", }, ticks: { - color: config.darkTheme ? "#DAE3E3" : "#2C353A", + color: config?.monitorUISettings?.darkTheme ? "#DAE3E3" : "#2C353A", font: { family: "Open Sans", }, @@ -100,14 +104,14 @@ function _Chart( }, x: { grid: { - color: config.darkTheme ? "#2C353A" : "#ECF1F1", + color: config?.monitorUISettings?.darkTheme ? "#2C353A" : "#ECF1F1", }, display: true, ticks: { font: { family: "Open Sans", }, - color: config.darkTheme ? "#DAE3E3" : "#2C353A", + color: config?.monitorUISettings?.darkTheme ? "#DAE3E3" : "#2C353A", count: 5, callback: (value) => { return parseInt(value.toString(), 10); @@ -142,7 +146,7 @@ function _Chart( ); useEffect(() => { - if (!config.connected) { + if (!config?.monitorUISettings?.connected) { setConnected(false); // when disconnected, force tooltips to be enabled enableTooltips(true); @@ -150,7 +154,7 @@ function _Chart( } // when the connection becomes connected, need to cleanup the previous state - if (!connected && config.connected) { + if (!connected && config?.monitorUISettings?.connected) { // cleanup buffer state worker.postMessage({ command: "cleanup" }); setConnected(true); @@ -158,7 +162,7 @@ function _Chart( // restore the tooltips state (which match the pause state when connected) enableTooltips(pause); } - }, [config.connected, connected, pause, enableTooltips]); + }, [config?.monitorUISettings?.connected, connected, pause, enableTooltips]); const togglePause = (newState: boolean) => { if (newState === pause) { @@ -188,12 +192,12 @@ function _Chart( }; useImperativeHandle(ref, () => ({ - addNewData(data: string[]) { + addNewData(message: string[]) { if (pause) { return; } // upon message receival update the chart - worker.postMessage({ data }); + worker.postMessage({ message }); }, })); @@ -215,17 +219,6 @@ function _Chart( }; }, [cubicInterpolationMode, opts, dataPointThreshold]); - const wsSend = (command: string, data: string | number | boolean) => { - if (websocket && websocket?.current?.readyState === WebSocket.OPEN) { - websocket.current.send( - JSON.stringify({ - command, - data, - }) - ); - } - }; - return ( <>
@@ -254,7 +247,7 @@ function _Chart( closeable isOpen message="Board disconnected" - theme={config.darkTheme ? "dark" : "light"} + theme={config?.monitorUISettings?.darkTheme ? "dark" : "light"} turnOffAutoHide /> )} diff --git a/src/Legend.tsx b/src/Legend.tsx index 52e3829..5893c36 100644 --- a/src/Legend.tsx +++ b/src/Legend.tsx @@ -1,7 +1,7 @@ import React, { useEffect, useRef, useState } from "react"; import { ChartJSOrUndefined } from "react-chartjs-2/dist/types"; import { LegendItem } from "./LegendItem"; -import { SerialPlotter } from "./utils"; +import { MonitorSettings, PluggableMonitor } from "./utils"; import { Scrollbars } from "react-custom-scrollbars"; import Switch from "react-switch"; @@ -16,9 +16,11 @@ export function Legend({ }: { chartRef: ChartJSOrUndefined<"line">; pause: boolean; - config: SerialPlotter.Config; + config: Partial; cubicInterpolationMode: "monotone" | "default"; - wsSend: (command: string, data: string | number | boolean) => void; + wsSend: ( + clientCommand: PluggableMonitor.Protocol.ClientCommandMessage + ) => void; setPause: (pause: boolean) => void; setInterpolate: (interpolate: boolean) => void; }): React.ReactElement { @@ -140,26 +142,35 @@ export function Legend({ onColor="#008184" onChange={(val) => { setInterpolate(val); - // send new interpolation mode to middleware - wsSend( - SerialPlotter.Protocol.Command.PLOTTER_SET_INTERPOLATE, - val - ); + wsSend({ + command: + PluggableMonitor.Protocol.ClientCommand.CHANGE_SETTINGS, + data: { + monitorUISettings: { + interpolate: val, + }, + }, + }); }} checked={cubicInterpolationMode === "monotone"} />