├── .block └── remote.json ├── .eslintrc.js ├── .gitignore ├── LICENSE.md ├── README.md ├── block.json ├── frontend ├── container.js ├── index.js ├── monaco.js ├── useDebounced.js └── useRenderSignal.js ├── media └── block.gif ├── package-lock.json └── package.json /.block/remote.json: -------------------------------------------------------------------------------- 1 | { 2 | "blockId": "blk05FfJLc1EJbajl", 3 | "baseId": "appPxWqSVFAEZxKVD" 4 | } 5 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | es6: true, 5 | }, 6 | extends: ['eslint:recommended', 'plugin:react/recommended'], 7 | globals: { 8 | Atomics: 'readonly', 9 | SharedArrayBuffer: 'readonly', 10 | }, 11 | parserOptions: { 12 | ecmaFeatures: { 13 | jsx: true, 14 | }, 15 | ecmaVersion: 2018, 16 | sourceType: 'module', 17 | }, 18 | plugins: ['react', 'react-hooks'], 19 | rules: { 20 | 'react/prop-types': 0, 21 | 'react-hooks/rules-of-hooks': 'error', 22 | 'react-hooks/exhaustive-deps': 'warn', 23 | }, 24 | settings: { 25 | react: { 26 | version: 'detect', 27 | }, 28 | }, 29 | }; 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.airtableblocksrc.json 3 | /build -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Airtable 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and 6 | associated documentation files (the "Software"), to deal in the Software without restriction, 7 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 8 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 9 | furnished to do so, subject to the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be included in all copies or substantial 12 | portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT 15 | NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 16 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES 17 | OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JSON editor app 2 | 3 | When the user selects a cell with a text field type in grid view, this app displays a text editor 4 | allowing them to modify the cell value and alerts them of syntax errors. 5 | 6 | The code shows: 7 | 8 | - How to use the Cursor API to detect when a user has selected a record in grid view and how to 9 | get the selected record. 10 | - How to dynamically load a third-party JavaScript library like 11 | [Monaco](https://github.com/Microsoft/monaco-editor). 12 | 13 | ## See the app running 14 | 15 | ![App displaying an in-browser text editor for JSON-formatted data](media/block.gif) 16 | -------------------------------------------------------------------------------- /block.json: -------------------------------------------------------------------------------- 1 | { 2 | "frontendEntry": "./frontend/index.js" 3 | } 4 | -------------------------------------------------------------------------------- /frontend/container.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import {Box} from '@airtable/blocks/ui'; 3 | 4 | // Container element which takes up the full viewport and centers its children. 5 | export default function Container({children, style}) { 6 | return ( 7 | 19 | {children} 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /frontend/index.js: -------------------------------------------------------------------------------- 1 | import React, {useState, useEffect} from 'react'; 2 | import {cursor} from '@airtable/blocks'; 3 | import {FieldType, ViewType} from '@airtable/blocks/models'; 4 | import { 5 | colors, 6 | colorUtils, 7 | initializeBlock, 8 | useBase, 9 | useRecordById, 10 | useLoadable, 11 | useViewport, 12 | useWatchable, 13 | Box, 14 | Icon, 15 | Loader, 16 | Text, 17 | Tooltip, 18 | } from '@airtable/blocks/ui'; 19 | import Container from './container'; 20 | import Monaco from './monaco'; 21 | import useDebounced from './useDebounced'; 22 | import useRenderSignal from './useRenderSignal'; 23 | 24 | /** 25 | * Duration in milliseconds to wait before reacting to changes in the editor's 26 | * value. 27 | * 28 | * When the user modifies the content by issuing keystrokes directly into the 29 | * editor component, the new value should be persisted in the base. The request 30 | * to save the content should not be made immediately following every keystroke 31 | * because keystrokes are expected to be entered in rapid succession. Making 32 | * "save" requests immediately would promote an undesirable "replay" effect. 33 | * The following sequence of events demonstrates this behavior: 34 | * 35 | * 1. User types "a" 36 | * 2. Editor value updates to "a", component issues request to update record 37 | * value to "a" 38 | * 3. User types "b" 39 | * 4. Editor value updates to "ab", component issues request to update record 40 | * value to "ab" 41 | * 5. First request completes, record value updates to "a", the editor 42 | * component detects a change (from "ab" to "a"), and the editor changes the 43 | * content to "a" and resets the position of the cursor 44 | * 6. Second request completes, record value updates to "ab", the editor 45 | * component detects a change (from "a" to "ab"), and the editor changes the 46 | * content to "ab" and resets the position of the cursor 47 | * 48 | * By debouncing the "change" event from the editor, this race condition can be 49 | * largely avoided. 50 | * 51 | * In addition, debouncing is a beneficial optimization because as keys are 52 | * being pressed, the editor's value is expected to temporarily describe 53 | * invalid JSON which is not appropriate to save to the base. 54 | */ 55 | const changeDelay = 500; 56 | const supportedFields = [FieldType.MULTILINE_TEXT, FieldType.SINGLE_LINE_TEXT, FieldType.RICH_TEXT]; 57 | const isFieldSupported = field => supportedFields.includes(field.type); 58 | 59 | function JsonEditorApp() { 60 | // Caches the currently selected record and field in state. If the user 61 | // selects a record and an editor appears, and then the user de-selects the 62 | // record (but does not select another), the editor will remain. This is 63 | // useful when, for example, the user resizes the apps pane. 64 | const [selectedRecordId, setSelectedRecordId] = useState(null); 65 | const [selectedFieldId, setSelectedFieldId] = useState(null); 66 | 67 | // `cursor.selectedRecordIds` and `selectedFieldIds` aren't loaded by 68 | // default, so we need to load them explicitly with the `useLoadable` hook. 69 | // The rest of the code in the component will not run until they are 70 | // loaded. 71 | useLoadable(cursor); 72 | 73 | // Update the `selectedRecordId` and `selectedFieldId` state when the 74 | // selected record or field change. 75 | useWatchable(cursor, ['selectedRecordIds', 'selectedFieldIds'], () => { 76 | // If the update was triggered by a record being de-selected, the 77 | // current `selectedRecordId` will be retained. This is what enables 78 | // the caching described above. 79 | if (cursor.selectedRecordIds.length > 0) { 80 | // There might be multiple selected records. We'll use the first 81 | // one. 82 | setSelectedRecordId(cursor.selectedRecordIds[0]); 83 | } 84 | if (cursor.selectedFieldIds.length > 0) { 85 | // There might be multiple selected fields. We'll use the first 86 | // one. 87 | setSelectedFieldId(cursor.selectedFieldIds[0]); 88 | } 89 | }); 90 | 91 | // This watch deletes the cached `selectedRecordId` and `selectedFieldId` 92 | // when the user moves to a new table or view. This prevents the following 93 | // scenario: User selects a record, and the editor appears. User switches 94 | // to a different table, and the editor disappears. The user switches back 95 | // to the original table. Weirdly, the previously viewed editor reappears, 96 | // even though no record is selected. 97 | useWatchable(cursor, ['activeTableId', 'activeViewId'], () => { 98 | setSelectedRecordId(null); 99 | setSelectedFieldId(null); 100 | }); 101 | 102 | const base = useBase(); 103 | const table = base.getTableByIdIfExists(cursor.activeTableId); 104 | 105 | // `table` is briefly null when switching to a newly created table. 106 | if (!table) { 107 | return null; 108 | } 109 | 110 | return ( 111 | 116 | ); 117 | } 118 | 119 | /** 120 | * Shows a JSON editor or a message about what the user should do to open an 121 | * editor. 122 | */ 123 | function EditorGuard({table, selectedRecordId, selectedFieldId}) { 124 | const [isLoading, setIsLoading] = useState(true); 125 | const [errors, setErrors] = useState([]); 126 | // We use getFieldByIdIfExists because the field might be deleted. 127 | const selectedField = selectedFieldId ? table.getFieldByIdIfExists(selectedFieldId) : null; 128 | const [renderSignal, forceRender] = useRenderSignal(); 129 | const viewport = useViewport(); 130 | 131 | // Triggers a re-render if the record changes. The cell value might have 132 | // changed, or the record might have been deleted. 133 | const selectedRecord = useRecordById(table, selectedRecordId ? selectedRecordId : '', { 134 | fields: [selectedField], 135 | }); 136 | const onChange = useDebounced( 137 | value => { 138 | // Ignore change events triggered by explicitly setting the 139 | // component's `value` (e.g. when navigating between cells or when 140 | // the selected record is updated from the table. 141 | if (value === selectedRecord.getCellValueAsString(selectedField)) { 142 | return; 143 | } 144 | 145 | table.updateRecordAsync(selectedRecord, {[selectedField.id]: value}); 146 | }, 147 | changeDelay, 148 | [table, selectedRecord, selectedField], 149 | ); 150 | 151 | // The Monaco component responds to the `renderSignal` by resizing the 152 | // editor according to the available space. The viewport size and the list 153 | // of errors both influence the desired size of the editor, so changes to 154 | // either should trigger resizing (via the invocation of `forceRender`). 155 | useWatchable(viewport, ['size'], forceRender); 156 | useEffect(() => forceRender(), [errors, forceRender]); 157 | 158 | // Immediately clear errors when navigating between cells. 159 | useEffect(() => { 160 | // This branch an optimization to reduce rendering when there are no 161 | // errors to be cleared. 162 | if (errors.length === 0) { 163 | return; 164 | } 165 | 166 | setErrors([]); 167 | // eslint-disable-next-line react-hooks/exhaustive-deps 168 | }, [selectedField, selectedRecord]); 169 | 170 | // Triggers a re-render if the user switches table or view. EditorGuard 171 | // may now need to render a preview, or render nothing at all. 172 | useWatchable(cursor, ['activeTableId', 'activeViewId']); 173 | 174 | const inGridView = 175 | // `activeViewId` is briefly null when switching views. 176 | cursor.activeViewId && table.getViewById(cursor.activeViewId).type === ViewType.GRID; 177 | const hasSelection = 178 | // `selectedRecord` will be null on app initialization, after the 179 | // user switches table or view, or if it was deleted. 180 | selectedRecord && 181 | // The selected field may have been deleted. 182 | selectedField; 183 | 184 | if (!inGridView) { 185 | return ( 186 | 187 | Switch to a grid view to begin editing 188 | 189 | ); 190 | } else if (!hasSelection || !isFieldSupported(selectedField)) { 191 | return ( 192 | 193 | 194 | Select a cell in a single line text field or a long text field to begin editing 195 | 196 | 197 | ); 198 | } 199 | 200 | const errorComponent = errors.length ? ( 201 | 202 | 209 | Line {errors[0].startLineNumber}, column {errors[0].startColumn}: {errors[0].message} 210 | 211 | ) : ( 212 | '' 213 | ); 214 | const result = table.checkPermissionsForUpdateRecord(selectedRecord, {[selectedField.id]: ''}); 215 | const permissionComponent = result.hasPermission ? ( 216 | '' 217 | ) : ( 218 | 219 | 220 | 221 | ); 222 | 223 | return ( 224 | 225 | {isLoading ? : ''} 226 | setIsLoading(false)} 231 | onSyntaxError={setErrors} 232 | onChange={onChange} 233 | value={selectedRecord.getCellValueAsString(selectedField)} 234 | renderSignal={renderSignal} 235 | /> 236 | 246 | {errorComponent} 247 | 248 | {permissionComponent} 249 | 250 | 251 | ); 252 | } 253 | 254 | function LoadingScreen() { 255 | return ( 256 | 262 | 263 | 264 | ); 265 | } 266 | 267 | initializeBlock(() => ); 268 | -------------------------------------------------------------------------------- /frontend/monaco.js: -------------------------------------------------------------------------------- 1 | import React, {useEffect, useLayoutEffect, useRef, useState} from 'react'; 2 | import {Box, loadScriptFromURLAsync, loadCSSFromURLAsync} from '@airtable/blocks/ui'; 3 | 4 | const markersMatch = (aMarkers, bMarkers) => { 5 | if (aMarkers.length !== bMarkers.length) { 6 | return false; 7 | } 8 | 9 | return aMarkers.every((aMarker, index) => { 10 | const bMarker = bMarkers[index]; 11 | return ( 12 | aMarker.startLineNumber === bMarker.startLineNumber && 13 | aMarker.startColumn === bMarker.startColumn && 14 | aMarker.endLineNumber === bMarker.endLineNumber && 15 | aMarker.endColumn === bMarker.endColumn && 16 | aMarker.message === bMarker.message 17 | ); 18 | }); 19 | }; 20 | 21 | async function loadMonacoAsync() { 22 | window.require = { 23 | paths: { 24 | vs: 'https://unpkg.com/monaco-editor@0.19.3/min/vs', 25 | }, 26 | }; 27 | 28 | await loadCSSFromURLAsync( 29 | 'https://unpkg.com/monaco-editor@0.19.3/min/vs/editor/editor.main.css', 30 | ); 31 | await loadScriptFromURLAsync('https://unpkg.com/monaco-editor@0.19.3/min/vs/loader.js'); 32 | await loadScriptFromURLAsync( 33 | 'https://unpkg.com/monaco-editor@0.19.3/min/vs/editor/editor.main.nls.js', 34 | ); 35 | await loadScriptFromURLAsync( 36 | 'https://unpkg.com/monaco-editor@0.19.3/min/vs/editor/editor.main.js', 37 | ); 38 | 39 | return window.monaco; 40 | } 41 | 42 | /** 43 | * @param {object} options 44 | * @param {string} options.value 45 | * @param {string} options.language 46 | * @param {function} options.onChange 47 | * @param {function} options.onLoad 48 | * @param {function} options.onSyntaxError 49 | * @param {boolean} options.readOnly 50 | * @param {object} options.style 51 | * @param {number} options.renderSignal 52 | */ 53 | export default function Monaco({ 54 | value, 55 | language, 56 | onChange, 57 | onLoad, 58 | onSyntaxError, 59 | readOnly, 60 | style, 61 | renderSignal, 62 | }) { 63 | const [monaco, setMonaco] = useState(window.monaco); 64 | const [editor, setEditor] = useState(null); 65 | const [errors, setErrors] = useState([]); 66 | const rootRef = useRef(null); 67 | const valueRef = useRef(value); 68 | 69 | useEffect(() => { 70 | if (monaco) { 71 | onLoad(); 72 | return; 73 | } 74 | loadMonacoAsync().then(loaded => { 75 | setMonaco(loaded); 76 | }); 77 | }, [monaco, onLoad]); 78 | 79 | useEffect(() => { 80 | if (!monaco || !rootRef.current) { 81 | return () => {}; 82 | } 83 | 84 | const newEditor = monaco.editor.create(rootRef.current, { 85 | // https://github.com/microsoft/monaco-editor/issues/29 86 | scrollBeyondLastLine: false, 87 | value: valueRef.current, 88 | }); 89 | setEditor(newEditor); 90 | 91 | return () => newEditor.dispose(); 92 | }, [monaco]); 93 | 94 | useEffect(() => { 95 | if (!editor || !monaco) { 96 | return () => {}; 97 | } 98 | const changeSub = editor.onDidChangeModelContent(() => { 99 | const newValue = editor.getValue(); 100 | valueRef.current = newValue; 101 | onChange(newValue); 102 | }); 103 | return () => { 104 | changeSub.dispose(); 105 | }; 106 | }, [editor, monaco, onChange]); 107 | 108 | useEffect(() => { 109 | if (!editor || !monaco) { 110 | return () => {}; 111 | } 112 | 113 | /** 114 | * Monaco emits "model decoration" change events more frequently than 115 | * changes to "model markers" occur. Use a React hook to track emitted 116 | * errors so to limit `onSyntaxError` handler invocations to cases 117 | * where the errors have changed. Augment React's change detection 118 | * algorithm (which is designed to work with primitive values) with a 119 | * domain-specific helper function that compares lists of errors. 120 | */ 121 | const decorationsSub = editor.onDidChangeModelDecorations(() => { 122 | const model = editor.getModel(); 123 | const modeId = model && model.getModeId(); 124 | if (modeId !== 'json') { 125 | return; 126 | } 127 | 128 | const newErrors = monaco.editor.getModelMarkers({owner: modeId}); 129 | if (markersMatch(errors, newErrors)) { 130 | return; 131 | } 132 | 133 | setErrors(newErrors); 134 | }); 135 | return () => { 136 | decorationsSub.dispose(); 137 | }; 138 | }, [editor, monaco, errors]); 139 | 140 | useEffect(() => { 141 | onSyntaxError(errors); 142 | }, [errors, onSyntaxError]); 143 | 144 | useEffect(() => { 145 | if (!editor) { 146 | return; 147 | } 148 | 149 | // Temporarily shrink the editor so that the surrounding flex layout 150 | // can be recalculated by the browser. The subsequent call to `layout` 151 | // will then expand the editor to the appropriate dimensions. 152 | editor.layout({height: 0, width: 0}); 153 | editor.layout(); 154 | }, [editor, renderSignal]); 155 | 156 | useLayoutEffect(() => { 157 | if (!editor) { 158 | return; 159 | } 160 | 161 | if (valueRef.current === value) { 162 | return; 163 | } 164 | 165 | editor.setValue(value); 166 | }, [editor, value]); 167 | useEffect(() => { 168 | if (!editor || !monaco) { 169 | return; 170 | } 171 | monaco.editor.setModelLanguage(editor.getModel(), language); 172 | }, [editor, monaco, language]); 173 | useEffect(() => { 174 | if (!editor) { 175 | return; 176 | } 177 | editor.updateOptions({readOnly}); 178 | }, [editor, readOnly]); 179 | 180 | return ; 181 | } 182 | -------------------------------------------------------------------------------- /frontend/useDebounced.js: -------------------------------------------------------------------------------- 1 | import {useMemo, useRef} from 'react'; 2 | import debounce from 'lodash.debounce'; 3 | 4 | /** 5 | * Create a "debounced" version of the provided function, `fn`. The new version 6 | * will delay invoking `fn` until after `changeDelay` milliseconds have elapsed 7 | * since the last time the debounced function was invoked. 8 | * 9 | * This function is memoized and will only be recreated when one of the values 10 | * in the provided `deps` array changes. This will immediately invalidate any 11 | * pending invocation of any previously-created function. 12 | * 13 | * @param {function} fn - the function to debounce 14 | * @param {number} changeDelay - the duration in milliseconds to wait before 15 | * invoking the provided function 16 | * @param {Array} deps - a set of values which should trigger the creation of a 17 | * new debounced function 18 | */ 19 | export default function useDebounced(fn, changeDelay, deps) { 20 | const count = useRef(0); 21 | 22 | return useMemo(() => { 23 | const id = (count.current += 1); 24 | 25 | return debounce((...args) => { 26 | // Every time a debounced function is created, this hook's mutable 27 | // `count` value is incremented. If the value of the immutable `id` 28 | // binding differs from the `count` value, the currently-executing 29 | // function has been superseded by a new version and should 30 | // therefore return without causing side effects. 31 | if (id !== count.current) { 32 | return; 33 | } 34 | 35 | return fn(...args); 36 | }, changeDelay); 37 | // eslint-disable-next-line react-hooks/exhaustive-deps 38 | }, [changeDelay, ...deps]); 39 | } 40 | -------------------------------------------------------------------------------- /frontend/useRenderSignal.js: -------------------------------------------------------------------------------- 1 | import {useState, useCallback} from 'react'; 2 | 3 | export default () => { 4 | const [value, setValue] = useState(0); 5 | const forceRerender = useCallback(() => { 6 | setValue(v => v + 1); 7 | }, [setValue]); 8 | 9 | return [value, forceRerender]; 10 | }; 11 | -------------------------------------------------------------------------------- /media/block.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Airtable/apps-json-editor/baae48dfc7ecf2eec3f3256c0a6c616b4af9db79/media/block.gif -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@airtable/json-editor-app", 3 | "version": "1.0.5", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@airtable/blocks": { 8 | "version": "1.8.0", 9 | "resolved": "https://registry.npmjs.org/@airtable/blocks/-/blocks-1.8.0.tgz", 10 | "integrity": "sha512-nVH67fNtXOFky9w2ppNPEjpG184Qre+w8AtjMMi4CW4PcYbhU5rkDvSVNY3Q8QOnjJZGjuQE2XuuU69f7qO1tg==", 11 | "requires": { 12 | "@airtable/eslint-plugin-blocks": "^1.0.2", 13 | "@babel/runtime": "^7.7.6", 14 | "@styled-system/core": "^5.1.2", 15 | "@types/hoist-non-react-statics": "^3.3.1", 16 | "@types/lodash.omit": "^4.5.6", 17 | "@types/prettier": "^1.19.0", 18 | "@types/prop-types": "^15.7.3", 19 | "@types/react": "^16.9.5", 20 | "@types/react-dom": "^16.9.1", 21 | "@types/react-window": "^1.8.1", 22 | "@types/styled-system": "^5.1.4", 23 | "core-js": "^3.4.8", 24 | "emotion": "^10.0.23", 25 | "fast-deep-equal": "^3.1.1", 26 | "hoist-non-react-statics": "^3.3.1", 27 | "lodash.omit": "^4.5.0", 28 | "prop-types": "15.7.2", 29 | "react-window": "1.8.5", 30 | "use-subscription": "^1.3.0" 31 | } 32 | }, 33 | "@airtable/eslint-plugin-blocks": { 34 | "version": "1.0.2", 35 | "resolved": "https://registry.npmjs.org/@airtable/eslint-plugin-blocks/-/eslint-plugin-blocks-1.0.2.tgz", 36 | "integrity": "sha512-8Y+qGA6wIvROoWYADtREg41HlLPDQ31sH16CkWJy1sbFAZUT8V6WXsHnRZrEG22XN80J0eAAYfqUznHMwuo+VA==" 37 | }, 38 | "@babel/code-frame": { 39 | "version": "7.14.5", 40 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", 41 | "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", 42 | "requires": { 43 | "@babel/highlight": "^7.14.5" 44 | } 45 | }, 46 | "@babel/helper-module-imports": { 47 | "version": "7.14.5", 48 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz", 49 | "integrity": "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==", 50 | "requires": { 51 | "@babel/types": "^7.14.5" 52 | } 53 | }, 54 | "@babel/helper-validator-identifier": { 55 | "version": "7.14.9", 56 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", 57 | "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" 58 | }, 59 | "@babel/highlight": { 60 | "version": "7.14.5", 61 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", 62 | "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", 63 | "requires": { 64 | "@babel/helper-validator-identifier": "^7.14.5", 65 | "chalk": "^2.0.0", 66 | "js-tokens": "^4.0.0" 67 | } 68 | }, 69 | "@babel/runtime": { 70 | "version": "7.14.8", 71 | "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.14.8.tgz", 72 | "integrity": "sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg==", 73 | "requires": { 74 | "regenerator-runtime": "^0.13.4" 75 | } 76 | }, 77 | "@babel/types": { 78 | "version": "7.15.0", 79 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz", 80 | "integrity": "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==", 81 | "requires": { 82 | "@babel/helper-validator-identifier": "^7.14.9", 83 | "to-fast-properties": "^2.0.0" 84 | } 85 | }, 86 | "@emotion/cache": { 87 | "version": "10.0.29", 88 | "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz", 89 | "integrity": "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==", 90 | "requires": { 91 | "@emotion/sheet": "0.9.4", 92 | "@emotion/stylis": "0.8.5", 93 | "@emotion/utils": "0.11.3", 94 | "@emotion/weak-memoize": "0.2.5" 95 | } 96 | }, 97 | "@emotion/hash": { 98 | "version": "0.8.0", 99 | "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", 100 | "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" 101 | }, 102 | "@emotion/memoize": { 103 | "version": "0.7.4", 104 | "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", 105 | "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" 106 | }, 107 | "@emotion/serialize": { 108 | "version": "0.11.16", 109 | "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz", 110 | "integrity": "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==", 111 | "requires": { 112 | "@emotion/hash": "0.8.0", 113 | "@emotion/memoize": "0.7.4", 114 | "@emotion/unitless": "0.7.5", 115 | "@emotion/utils": "0.11.3", 116 | "csstype": "^2.5.7" 117 | }, 118 | "dependencies": { 119 | "csstype": { 120 | "version": "2.6.17", 121 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz", 122 | "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A==" 123 | } 124 | } 125 | }, 126 | "@emotion/sheet": { 127 | "version": "0.9.4", 128 | "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz", 129 | "integrity": "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" 130 | }, 131 | "@emotion/stylis": { 132 | "version": "0.8.5", 133 | "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", 134 | "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" 135 | }, 136 | "@emotion/unitless": { 137 | "version": "0.7.5", 138 | "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", 139 | "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" 140 | }, 141 | "@emotion/utils": { 142 | "version": "0.11.3", 143 | "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz", 144 | "integrity": "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" 145 | }, 146 | "@emotion/weak-memoize": { 147 | "version": "0.2.5", 148 | "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz", 149 | "integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" 150 | }, 151 | "@styled-system/core": { 152 | "version": "5.1.2", 153 | "resolved": "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz", 154 | "integrity": "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==", 155 | "requires": { 156 | "object-assign": "^4.1.1" 157 | } 158 | }, 159 | "@types/hoist-non-react-statics": { 160 | "version": "3.3.1", 161 | "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", 162 | "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", 163 | "requires": { 164 | "@types/react": "*", 165 | "hoist-non-react-statics": "^3.3.0" 166 | } 167 | }, 168 | "@types/lodash": { 169 | "version": "4.14.172", 170 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.172.tgz", 171 | "integrity": "sha512-/BHF5HAx3em7/KkzVKm3LrsD6HZAXuXO1AJZQ3cRRBZj4oHZDviWPYu0aEplAqDFNHZPW6d3G7KN+ONcCCC7pw==" 172 | }, 173 | "@types/lodash.omit": { 174 | "version": "4.5.6", 175 | "resolved": "https://registry.npmjs.org/@types/lodash.omit/-/lodash.omit-4.5.6.tgz", 176 | "integrity": "sha512-KXPpOSNX2h0DAG2w7ajpk7TXvWF28ZHs5nJhOJyP0BQHkehgr948RVsToItMme6oi0XJkp19CbuNXkIX8FiBlQ==", 177 | "requires": { 178 | "@types/lodash": "*" 179 | } 180 | }, 181 | "@types/parse-json": { 182 | "version": "4.0.0", 183 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 184 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" 185 | }, 186 | "@types/prettier": { 187 | "version": "1.19.1", 188 | "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", 189 | "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==" 190 | }, 191 | "@types/prop-types": { 192 | "version": "15.7.4", 193 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz", 194 | "integrity": "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" 195 | }, 196 | "@types/react": { 197 | "version": "16.14.12", 198 | "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.12.tgz", 199 | "integrity": "sha512-7nOJgNsRbARhZhvwPm7cnzahtzEi5VJ9OvcQk8ExEEb1t+zaFklwLVkJz7G1kfxX4X/mDa/icTmzE0vTmqsqBg==", 200 | "requires": { 201 | "@types/prop-types": "*", 202 | "@types/scheduler": "*", 203 | "csstype": "^3.0.2" 204 | } 205 | }, 206 | "@types/react-dom": { 207 | "version": "16.9.14", 208 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.14.tgz", 209 | "integrity": "sha512-FIX2AVmPTGP30OUJ+0vadeIFJJ07Mh1m+U0rxfgyW34p3rTlXI+nlenvAxNn4BP36YyI9IJ/+UJ7Wu22N1pI7A==", 210 | "requires": { 211 | "@types/react": "^16" 212 | } 213 | }, 214 | "@types/react-window": { 215 | "version": "1.8.5", 216 | "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.5.tgz", 217 | "integrity": "sha512-V9q3CvhC9Jk9bWBOysPGaWy/Z0lxYcTXLtLipkt2cnRj1JOSFNF7wqGpkScSXMgBwC+fnVRg/7shwgddBG5ICw==", 218 | "requires": { 219 | "@types/react": "*" 220 | } 221 | }, 222 | "@types/scheduler": { 223 | "version": "0.16.2", 224 | "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", 225 | "integrity": "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" 226 | }, 227 | "@types/styled-system": { 228 | "version": "5.1.12", 229 | "resolved": "https://registry.npmjs.org/@types/styled-system/-/styled-system-5.1.12.tgz", 230 | "integrity": "sha512-7x4BYKKfK9QewfsFC2x5r9BK/OrfX+JF/1P21jKPMHruawDw9gvG7bTZgTVk6YkzDO2JUlsk4i8hdiAepAhD0g==", 231 | "requires": { 232 | "csstype": "^3.0.2" 233 | } 234 | }, 235 | "acorn": { 236 | "version": "7.4.1", 237 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 238 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", 239 | "dev": true 240 | }, 241 | "acorn-jsx": { 242 | "version": "5.3.2", 243 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 244 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 245 | "dev": true 246 | }, 247 | "ajv": { 248 | "version": "6.12.6", 249 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 250 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 251 | "dev": true, 252 | "requires": { 253 | "fast-deep-equal": "^3.1.1", 254 | "fast-json-stable-stringify": "^2.0.0", 255 | "json-schema-traverse": "^0.4.1", 256 | "uri-js": "^4.2.2" 257 | } 258 | }, 259 | "ansi-escapes": { 260 | "version": "4.3.2", 261 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", 262 | "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", 263 | "dev": true, 264 | "requires": { 265 | "type-fest": "^0.21.3" 266 | }, 267 | "dependencies": { 268 | "type-fest": { 269 | "version": "0.21.3", 270 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", 271 | "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", 272 | "dev": true 273 | } 274 | } 275 | }, 276 | "ansi-regex": { 277 | "version": "5.0.0", 278 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", 279 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", 280 | "dev": true 281 | }, 282 | "ansi-styles": { 283 | "version": "3.2.1", 284 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 285 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 286 | "requires": { 287 | "color-convert": "^1.9.0" 288 | } 289 | }, 290 | "argparse": { 291 | "version": "1.0.10", 292 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", 293 | "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", 294 | "dev": true, 295 | "requires": { 296 | "sprintf-js": "~1.0.2" 297 | } 298 | }, 299 | "array-includes": { 300 | "version": "3.1.3", 301 | "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.3.tgz", 302 | "integrity": "sha512-gcem1KlBU7c9rB+Rq8/3PPKsK2kjqeEBa3bD5kkQo4nYlOHQCJqIJFqBXDEfwaRuYTT4E+FxA9xez7Gf/e3Q7A==", 303 | "dev": true, 304 | "requires": { 305 | "call-bind": "^1.0.2", 306 | "define-properties": "^1.1.3", 307 | "es-abstract": "^1.18.0-next.2", 308 | "get-intrinsic": "^1.1.1", 309 | "is-string": "^1.0.5" 310 | } 311 | }, 312 | "array.prototype.flatmap": { 313 | "version": "1.2.4", 314 | "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.2.4.tgz", 315 | "integrity": "sha512-r9Z0zYoxqHz60vvQbWEdXIEtCwHF0yxaWfno9qzXeNHvfyl3BZqygmGzb84dsubyaXLH4husF+NFgMSdpZhk2Q==", 316 | "dev": true, 317 | "requires": { 318 | "call-bind": "^1.0.0", 319 | "define-properties": "^1.1.3", 320 | "es-abstract": "^1.18.0-next.1", 321 | "function-bind": "^1.1.1" 322 | } 323 | }, 324 | "astral-regex": { 325 | "version": "1.0.0", 326 | "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", 327 | "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", 328 | "dev": true 329 | }, 330 | "babel-plugin-emotion": { 331 | "version": "10.2.2", 332 | "resolved": "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.2.2.tgz", 333 | "integrity": "sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==", 334 | "requires": { 335 | "@babel/helper-module-imports": "^7.0.0", 336 | "@emotion/hash": "0.8.0", 337 | "@emotion/memoize": "0.7.4", 338 | "@emotion/serialize": "^0.11.16", 339 | "babel-plugin-macros": "^2.0.0", 340 | "babel-plugin-syntax-jsx": "^6.18.0", 341 | "convert-source-map": "^1.5.0", 342 | "escape-string-regexp": "^1.0.5", 343 | "find-root": "^1.1.0", 344 | "source-map": "^0.5.7" 345 | } 346 | }, 347 | "babel-plugin-macros": { 348 | "version": "2.8.0", 349 | "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", 350 | "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", 351 | "requires": { 352 | "@babel/runtime": "^7.7.2", 353 | "cosmiconfig": "^6.0.0", 354 | "resolve": "^1.12.0" 355 | } 356 | }, 357 | "babel-plugin-syntax-jsx": { 358 | "version": "6.18.0", 359 | "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", 360 | "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" 361 | }, 362 | "balanced-match": { 363 | "version": "1.0.2", 364 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 365 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 366 | "dev": true 367 | }, 368 | "brace-expansion": { 369 | "version": "1.1.11", 370 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 371 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 372 | "dev": true, 373 | "requires": { 374 | "balanced-match": "^1.0.0", 375 | "concat-map": "0.0.1" 376 | } 377 | }, 378 | "call-bind": { 379 | "version": "1.0.2", 380 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 381 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 382 | "dev": true, 383 | "requires": { 384 | "function-bind": "^1.1.1", 385 | "get-intrinsic": "^1.0.2" 386 | } 387 | }, 388 | "callsites": { 389 | "version": "3.1.0", 390 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 391 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 392 | }, 393 | "chalk": { 394 | "version": "2.4.2", 395 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 396 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 397 | "requires": { 398 | "ansi-styles": "^3.2.1", 399 | "escape-string-regexp": "^1.0.5", 400 | "supports-color": "^5.3.0" 401 | } 402 | }, 403 | "chardet": { 404 | "version": "0.7.0", 405 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", 406 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", 407 | "dev": true 408 | }, 409 | "cli-cursor": { 410 | "version": "3.1.0", 411 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", 412 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", 413 | "dev": true, 414 | "requires": { 415 | "restore-cursor": "^3.1.0" 416 | } 417 | }, 418 | "cli-width": { 419 | "version": "3.0.0", 420 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", 421 | "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", 422 | "dev": true 423 | }, 424 | "color-convert": { 425 | "version": "1.9.3", 426 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 427 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 428 | "requires": { 429 | "color-name": "1.1.3" 430 | } 431 | }, 432 | "color-name": { 433 | "version": "1.1.3", 434 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 435 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 436 | }, 437 | "concat-map": { 438 | "version": "0.0.1", 439 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 440 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 441 | "dev": true 442 | }, 443 | "convert-source-map": { 444 | "version": "1.8.0", 445 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 446 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 447 | "requires": { 448 | "safe-buffer": "~5.1.1" 449 | } 450 | }, 451 | "core-js": { 452 | "version": "3.16.0", 453 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz", 454 | "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==" 455 | }, 456 | "cosmiconfig": { 457 | "version": "6.0.0", 458 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", 459 | "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", 460 | "requires": { 461 | "@types/parse-json": "^4.0.0", 462 | "import-fresh": "^3.1.0", 463 | "parse-json": "^5.0.0", 464 | "path-type": "^4.0.0", 465 | "yaml": "^1.7.2" 466 | } 467 | }, 468 | "create-emotion": { 469 | "version": "10.0.27", 470 | "resolved": "https://registry.npmjs.org/create-emotion/-/create-emotion-10.0.27.tgz", 471 | "integrity": "sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg==", 472 | "requires": { 473 | "@emotion/cache": "^10.0.27", 474 | "@emotion/serialize": "^0.11.15", 475 | "@emotion/sheet": "0.9.4", 476 | "@emotion/utils": "0.11.3" 477 | } 478 | }, 479 | "cross-spawn": { 480 | "version": "6.0.5", 481 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", 482 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", 483 | "dev": true, 484 | "requires": { 485 | "nice-try": "^1.0.4", 486 | "path-key": "^2.0.1", 487 | "semver": "^5.5.0", 488 | "shebang-command": "^1.2.0", 489 | "which": "^1.2.9" 490 | }, 491 | "dependencies": { 492 | "semver": { 493 | "version": "5.7.1", 494 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 495 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 496 | "dev": true 497 | } 498 | } 499 | }, 500 | "csstype": { 501 | "version": "3.0.8", 502 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz", 503 | "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw==" 504 | }, 505 | "debug": { 506 | "version": "4.3.2", 507 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", 508 | "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", 509 | "dev": true, 510 | "requires": { 511 | "ms": "2.1.2" 512 | } 513 | }, 514 | "deep-is": { 515 | "version": "0.1.3", 516 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", 517 | "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", 518 | "dev": true 519 | }, 520 | "define-properties": { 521 | "version": "1.1.3", 522 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", 523 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", 524 | "dev": true, 525 | "requires": { 526 | "object-keys": "^1.0.12" 527 | } 528 | }, 529 | "doctrine": { 530 | "version": "3.0.0", 531 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 532 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 533 | "dev": true, 534 | "requires": { 535 | "esutils": "^2.0.2" 536 | } 537 | }, 538 | "emoji-regex": { 539 | "version": "8.0.0", 540 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 541 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 542 | "dev": true 543 | }, 544 | "emotion": { 545 | "version": "10.0.27", 546 | "resolved": "https://registry.npmjs.org/emotion/-/emotion-10.0.27.tgz", 547 | "integrity": "sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g==", 548 | "requires": { 549 | "babel-plugin-emotion": "^10.0.27", 550 | "create-emotion": "^10.0.27" 551 | } 552 | }, 553 | "error-ex": { 554 | "version": "1.3.2", 555 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 556 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 557 | "requires": { 558 | "is-arrayish": "^0.2.1" 559 | } 560 | }, 561 | "es-abstract": { 562 | "version": "1.18.5", 563 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.5.tgz", 564 | "integrity": "sha512-DDggyJLoS91CkJjgauM5c0yZMjiD1uK3KcaCeAmffGwZ+ODWzOkPN4QwRbsK5DOFf06fywmyLci3ZD8jLGhVYA==", 565 | "dev": true, 566 | "requires": { 567 | "call-bind": "^1.0.2", 568 | "es-to-primitive": "^1.2.1", 569 | "function-bind": "^1.1.1", 570 | "get-intrinsic": "^1.1.1", 571 | "has": "^1.0.3", 572 | "has-symbols": "^1.0.2", 573 | "internal-slot": "^1.0.3", 574 | "is-callable": "^1.2.3", 575 | "is-negative-zero": "^2.0.1", 576 | "is-regex": "^1.1.3", 577 | "is-string": "^1.0.6", 578 | "object-inspect": "^1.11.0", 579 | "object-keys": "^1.1.1", 580 | "object.assign": "^4.1.2", 581 | "string.prototype.trimend": "^1.0.4", 582 | "string.prototype.trimstart": "^1.0.4", 583 | "unbox-primitive": "^1.0.1" 584 | } 585 | }, 586 | "es-to-primitive": { 587 | "version": "1.2.1", 588 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", 589 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", 590 | "dev": true, 591 | "requires": { 592 | "is-callable": "^1.1.4", 593 | "is-date-object": "^1.0.1", 594 | "is-symbol": "^1.0.2" 595 | } 596 | }, 597 | "escape-string-regexp": { 598 | "version": "1.0.5", 599 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 600 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 601 | }, 602 | "eslint": { 603 | "version": "6.8.0", 604 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", 605 | "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", 606 | "dev": true, 607 | "requires": { 608 | "@babel/code-frame": "^7.0.0", 609 | "ajv": "^6.10.0", 610 | "chalk": "^2.1.0", 611 | "cross-spawn": "^6.0.5", 612 | "debug": "^4.0.1", 613 | "doctrine": "^3.0.0", 614 | "eslint-scope": "^5.0.0", 615 | "eslint-utils": "^1.4.3", 616 | "eslint-visitor-keys": "^1.1.0", 617 | "espree": "^6.1.2", 618 | "esquery": "^1.0.1", 619 | "esutils": "^2.0.2", 620 | "file-entry-cache": "^5.0.1", 621 | "functional-red-black-tree": "^1.0.1", 622 | "glob-parent": "^5.0.0", 623 | "globals": "^12.1.0", 624 | "ignore": "^4.0.6", 625 | "import-fresh": "^3.0.0", 626 | "imurmurhash": "^0.1.4", 627 | "inquirer": "^7.0.0", 628 | "is-glob": "^4.0.0", 629 | "js-yaml": "^3.13.1", 630 | "json-stable-stringify-without-jsonify": "^1.0.1", 631 | "levn": "^0.3.0", 632 | "lodash": "^4.17.14", 633 | "minimatch": "^3.0.4", 634 | "mkdirp": "^0.5.1", 635 | "natural-compare": "^1.4.0", 636 | "optionator": "^0.8.3", 637 | "progress": "^2.0.0", 638 | "regexpp": "^2.0.1", 639 | "semver": "^6.1.2", 640 | "strip-ansi": "^5.2.0", 641 | "strip-json-comments": "^3.0.1", 642 | "table": "^5.2.3", 643 | "text-table": "^0.2.0", 644 | "v8-compile-cache": "^2.0.3" 645 | } 646 | }, 647 | "eslint-plugin-react": { 648 | "version": "7.24.0", 649 | "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz", 650 | "integrity": "sha512-KJJIx2SYx7PBx3ONe/mEeMz4YE0Lcr7feJTCMyyKb/341NcjuAgim3Acgan89GfPv7nxXK2+0slu0CWXYM4x+Q==", 651 | "dev": true, 652 | "requires": { 653 | "array-includes": "^3.1.3", 654 | "array.prototype.flatmap": "^1.2.4", 655 | "doctrine": "^2.1.0", 656 | "has": "^1.0.3", 657 | "jsx-ast-utils": "^2.4.1 || ^3.0.0", 658 | "minimatch": "^3.0.4", 659 | "object.entries": "^1.1.4", 660 | "object.fromentries": "^2.0.4", 661 | "object.values": "^1.1.4", 662 | "prop-types": "^15.7.2", 663 | "resolve": "^2.0.0-next.3", 664 | "string.prototype.matchall": "^4.0.5" 665 | }, 666 | "dependencies": { 667 | "doctrine": { 668 | "version": "2.1.0", 669 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", 670 | "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", 671 | "dev": true, 672 | "requires": { 673 | "esutils": "^2.0.2" 674 | } 675 | }, 676 | "resolve": { 677 | "version": "2.0.0-next.3", 678 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", 679 | "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", 680 | "dev": true, 681 | "requires": { 682 | "is-core-module": "^2.2.0", 683 | "path-parse": "^1.0.6" 684 | } 685 | } 686 | } 687 | }, 688 | "eslint-plugin-react-hooks": { 689 | "version": "2.5.1", 690 | "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz", 691 | "integrity": "sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==", 692 | "dev": true 693 | }, 694 | "eslint-scope": { 695 | "version": "5.1.1", 696 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 697 | "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 698 | "dev": true, 699 | "requires": { 700 | "esrecurse": "^4.3.0", 701 | "estraverse": "^4.1.1" 702 | } 703 | }, 704 | "eslint-utils": { 705 | "version": "1.4.3", 706 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", 707 | "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", 708 | "dev": true, 709 | "requires": { 710 | "eslint-visitor-keys": "^1.1.0" 711 | } 712 | }, 713 | "eslint-visitor-keys": { 714 | "version": "1.3.0", 715 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", 716 | "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", 717 | "dev": true 718 | }, 719 | "espree": { 720 | "version": "6.2.1", 721 | "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", 722 | "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", 723 | "dev": true, 724 | "requires": { 725 | "acorn": "^7.1.1", 726 | "acorn-jsx": "^5.2.0", 727 | "eslint-visitor-keys": "^1.1.0" 728 | } 729 | }, 730 | "esprima": { 731 | "version": "4.0.1", 732 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", 733 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", 734 | "dev": true 735 | }, 736 | "esquery": { 737 | "version": "1.4.0", 738 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", 739 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", 740 | "dev": true, 741 | "requires": { 742 | "estraverse": "^5.1.0" 743 | }, 744 | "dependencies": { 745 | "estraverse": { 746 | "version": "5.2.0", 747 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 748 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 749 | "dev": true 750 | } 751 | } 752 | }, 753 | "esrecurse": { 754 | "version": "4.3.0", 755 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 756 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 757 | "dev": true, 758 | "requires": { 759 | "estraverse": "^5.2.0" 760 | }, 761 | "dependencies": { 762 | "estraverse": { 763 | "version": "5.2.0", 764 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", 765 | "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", 766 | "dev": true 767 | } 768 | } 769 | }, 770 | "estraverse": { 771 | "version": "4.3.0", 772 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 773 | "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 774 | "dev": true 775 | }, 776 | "esutils": { 777 | "version": "2.0.3", 778 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 779 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 780 | "dev": true 781 | }, 782 | "external-editor": { 783 | "version": "3.1.0", 784 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", 785 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", 786 | "dev": true, 787 | "requires": { 788 | "chardet": "^0.7.0", 789 | "iconv-lite": "^0.4.24", 790 | "tmp": "^0.0.33" 791 | } 792 | }, 793 | "fast-deep-equal": { 794 | "version": "3.1.3", 795 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 796 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 797 | }, 798 | "fast-json-stable-stringify": { 799 | "version": "2.1.0", 800 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 801 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 802 | "dev": true 803 | }, 804 | "fast-levenshtein": { 805 | "version": "2.0.6", 806 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 807 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", 808 | "dev": true 809 | }, 810 | "figures": { 811 | "version": "3.2.0", 812 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", 813 | "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", 814 | "dev": true, 815 | "requires": { 816 | "escape-string-regexp": "^1.0.5" 817 | } 818 | }, 819 | "file-entry-cache": { 820 | "version": "5.0.1", 821 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", 822 | "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", 823 | "dev": true, 824 | "requires": { 825 | "flat-cache": "^2.0.1" 826 | } 827 | }, 828 | "find-root": { 829 | "version": "1.1.0", 830 | "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", 831 | "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" 832 | }, 833 | "flat-cache": { 834 | "version": "2.0.1", 835 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", 836 | "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", 837 | "dev": true, 838 | "requires": { 839 | "flatted": "^2.0.0", 840 | "rimraf": "2.6.3", 841 | "write": "1.0.3" 842 | } 843 | }, 844 | "flatted": { 845 | "version": "2.0.2", 846 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", 847 | "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", 848 | "dev": true 849 | }, 850 | "fs.realpath": { 851 | "version": "1.0.0", 852 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 853 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 854 | "dev": true 855 | }, 856 | "function-bind": { 857 | "version": "1.1.1", 858 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 859 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 860 | }, 861 | "functional-red-black-tree": { 862 | "version": "1.0.1", 863 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", 864 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", 865 | "dev": true 866 | }, 867 | "get-intrinsic": { 868 | "version": "1.1.1", 869 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", 870 | "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", 871 | "dev": true, 872 | "requires": { 873 | "function-bind": "^1.1.1", 874 | "has": "^1.0.3", 875 | "has-symbols": "^1.0.1" 876 | } 877 | }, 878 | "glob": { 879 | "version": "7.1.7", 880 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", 881 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", 882 | "dev": true, 883 | "requires": { 884 | "fs.realpath": "^1.0.0", 885 | "inflight": "^1.0.4", 886 | "inherits": "2", 887 | "minimatch": "^3.0.4", 888 | "once": "^1.3.0", 889 | "path-is-absolute": "^1.0.0" 890 | } 891 | }, 892 | "glob-parent": { 893 | "version": "5.1.2", 894 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 895 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 896 | "dev": true, 897 | "requires": { 898 | "is-glob": "^4.0.1" 899 | } 900 | }, 901 | "globals": { 902 | "version": "12.4.0", 903 | "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", 904 | "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", 905 | "dev": true, 906 | "requires": { 907 | "type-fest": "^0.8.1" 908 | } 909 | }, 910 | "has": { 911 | "version": "1.0.3", 912 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 913 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 914 | "requires": { 915 | "function-bind": "^1.1.1" 916 | } 917 | }, 918 | "has-bigints": { 919 | "version": "1.0.1", 920 | "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", 921 | "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", 922 | "dev": true 923 | }, 924 | "has-flag": { 925 | "version": "3.0.0", 926 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 927 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 928 | }, 929 | "has-symbols": { 930 | "version": "1.0.2", 931 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", 932 | "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", 933 | "dev": true 934 | }, 935 | "has-tostringtag": { 936 | "version": "1.0.0", 937 | "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", 938 | "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", 939 | "dev": true, 940 | "requires": { 941 | "has-symbols": "^1.0.2" 942 | } 943 | }, 944 | "hoist-non-react-statics": { 945 | "version": "3.3.2", 946 | "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", 947 | "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", 948 | "requires": { 949 | "react-is": "^16.7.0" 950 | } 951 | }, 952 | "iconv-lite": { 953 | "version": "0.4.24", 954 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 955 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 956 | "dev": true, 957 | "requires": { 958 | "safer-buffer": ">= 2.1.2 < 3" 959 | } 960 | }, 961 | "ignore": { 962 | "version": "4.0.6", 963 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", 964 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", 965 | "dev": true 966 | }, 967 | "import-fresh": { 968 | "version": "3.3.0", 969 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 970 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 971 | "requires": { 972 | "parent-module": "^1.0.0", 973 | "resolve-from": "^4.0.0" 974 | } 975 | }, 976 | "imurmurhash": { 977 | "version": "0.1.4", 978 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 979 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", 980 | "dev": true 981 | }, 982 | "inflight": { 983 | "version": "1.0.6", 984 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 985 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 986 | "dev": true, 987 | "requires": { 988 | "once": "^1.3.0", 989 | "wrappy": "1" 990 | } 991 | }, 992 | "inherits": { 993 | "version": "2.0.4", 994 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 995 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 996 | "dev": true 997 | }, 998 | "inquirer": { 999 | "version": "7.3.3", 1000 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", 1001 | "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", 1002 | "dev": true, 1003 | "requires": { 1004 | "ansi-escapes": "^4.2.1", 1005 | "chalk": "^4.1.0", 1006 | "cli-cursor": "^3.1.0", 1007 | "cli-width": "^3.0.0", 1008 | "external-editor": "^3.0.3", 1009 | "figures": "^3.0.0", 1010 | "lodash": "^4.17.19", 1011 | "mute-stream": "0.0.8", 1012 | "run-async": "^2.4.0", 1013 | "rxjs": "^6.6.0", 1014 | "string-width": "^4.1.0", 1015 | "strip-ansi": "^6.0.0", 1016 | "through": "^2.3.6" 1017 | }, 1018 | "dependencies": { 1019 | "ansi-styles": { 1020 | "version": "4.3.0", 1021 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1022 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1023 | "dev": true, 1024 | "requires": { 1025 | "color-convert": "^2.0.1" 1026 | } 1027 | }, 1028 | "chalk": { 1029 | "version": "4.1.2", 1030 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1031 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1032 | "dev": true, 1033 | "requires": { 1034 | "ansi-styles": "^4.1.0", 1035 | "supports-color": "^7.1.0" 1036 | } 1037 | }, 1038 | "color-convert": { 1039 | "version": "2.0.1", 1040 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1041 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1042 | "dev": true, 1043 | "requires": { 1044 | "color-name": "~1.1.4" 1045 | } 1046 | }, 1047 | "color-name": { 1048 | "version": "1.1.4", 1049 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1050 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1051 | "dev": true 1052 | }, 1053 | "has-flag": { 1054 | "version": "4.0.0", 1055 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1056 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1057 | "dev": true 1058 | }, 1059 | "strip-ansi": { 1060 | "version": "6.0.0", 1061 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1062 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1063 | "dev": true, 1064 | "requires": { 1065 | "ansi-regex": "^5.0.0" 1066 | } 1067 | }, 1068 | "supports-color": { 1069 | "version": "7.2.0", 1070 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1071 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1072 | "dev": true, 1073 | "requires": { 1074 | "has-flag": "^4.0.0" 1075 | } 1076 | } 1077 | } 1078 | }, 1079 | "internal-slot": { 1080 | "version": "1.0.3", 1081 | "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", 1082 | "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", 1083 | "dev": true, 1084 | "requires": { 1085 | "get-intrinsic": "^1.1.0", 1086 | "has": "^1.0.3", 1087 | "side-channel": "^1.0.4" 1088 | } 1089 | }, 1090 | "is-arrayish": { 1091 | "version": "0.2.1", 1092 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1093 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 1094 | }, 1095 | "is-bigint": { 1096 | "version": "1.0.3", 1097 | "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.3.tgz", 1098 | "integrity": "sha512-ZU538ajmYJmzysE5yU4Y7uIrPQ2j704u+hXFiIPQExpqzzUbpe5jCPdTfmz7jXRxZdvjY3KZ3ZNenoXQovX+Dg==", 1099 | "dev": true 1100 | }, 1101 | "is-boolean-object": { 1102 | "version": "1.1.2", 1103 | "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", 1104 | "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", 1105 | "dev": true, 1106 | "requires": { 1107 | "call-bind": "^1.0.2", 1108 | "has-tostringtag": "^1.0.0" 1109 | } 1110 | }, 1111 | "is-callable": { 1112 | "version": "1.2.4", 1113 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", 1114 | "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", 1115 | "dev": true 1116 | }, 1117 | "is-core-module": { 1118 | "version": "2.5.0", 1119 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz", 1120 | "integrity": "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==", 1121 | "requires": { 1122 | "has": "^1.0.3" 1123 | } 1124 | }, 1125 | "is-date-object": { 1126 | "version": "1.0.5", 1127 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", 1128 | "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", 1129 | "dev": true, 1130 | "requires": { 1131 | "has-tostringtag": "^1.0.0" 1132 | } 1133 | }, 1134 | "is-extglob": { 1135 | "version": "2.1.1", 1136 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1137 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 1138 | "dev": true 1139 | }, 1140 | "is-fullwidth-code-point": { 1141 | "version": "3.0.0", 1142 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1143 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1144 | "dev": true 1145 | }, 1146 | "is-glob": { 1147 | "version": "4.0.1", 1148 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", 1149 | "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", 1150 | "dev": true, 1151 | "requires": { 1152 | "is-extglob": "^2.1.1" 1153 | } 1154 | }, 1155 | "is-negative-zero": { 1156 | "version": "2.0.1", 1157 | "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", 1158 | "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", 1159 | "dev": true 1160 | }, 1161 | "is-number-object": { 1162 | "version": "1.0.6", 1163 | "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", 1164 | "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", 1165 | "dev": true, 1166 | "requires": { 1167 | "has-tostringtag": "^1.0.0" 1168 | } 1169 | }, 1170 | "is-regex": { 1171 | "version": "1.1.4", 1172 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", 1173 | "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", 1174 | "dev": true, 1175 | "requires": { 1176 | "call-bind": "^1.0.2", 1177 | "has-tostringtag": "^1.0.0" 1178 | } 1179 | }, 1180 | "is-string": { 1181 | "version": "1.0.7", 1182 | "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", 1183 | "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", 1184 | "dev": true, 1185 | "requires": { 1186 | "has-tostringtag": "^1.0.0" 1187 | } 1188 | }, 1189 | "is-symbol": { 1190 | "version": "1.0.4", 1191 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", 1192 | "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", 1193 | "dev": true, 1194 | "requires": { 1195 | "has-symbols": "^1.0.2" 1196 | } 1197 | }, 1198 | "isexe": { 1199 | "version": "2.0.0", 1200 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1201 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1202 | "dev": true 1203 | }, 1204 | "js-tokens": { 1205 | "version": "4.0.0", 1206 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1207 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1208 | }, 1209 | "js-yaml": { 1210 | "version": "3.14.1", 1211 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", 1212 | "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", 1213 | "dev": true, 1214 | "requires": { 1215 | "argparse": "^1.0.7", 1216 | "esprima": "^4.0.0" 1217 | } 1218 | }, 1219 | "json-parse-even-better-errors": { 1220 | "version": "2.3.1", 1221 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1222 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1223 | }, 1224 | "json-schema-traverse": { 1225 | "version": "0.4.1", 1226 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1227 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1228 | "dev": true 1229 | }, 1230 | "json-stable-stringify-without-jsonify": { 1231 | "version": "1.0.1", 1232 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1233 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", 1234 | "dev": true 1235 | }, 1236 | "jsx-ast-utils": { 1237 | "version": "3.2.0", 1238 | "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", 1239 | "integrity": "sha512-EIsmt3O3ljsU6sot/J4E1zDRxfBNrhjyf/OKjlydwgEimQuznlM4Wv7U+ueONJMyEn1WRE0K8dhi3dVAXYT24Q==", 1240 | "dev": true, 1241 | "requires": { 1242 | "array-includes": "^3.1.2", 1243 | "object.assign": "^4.1.2" 1244 | } 1245 | }, 1246 | "levn": { 1247 | "version": "0.3.0", 1248 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", 1249 | "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", 1250 | "dev": true, 1251 | "requires": { 1252 | "prelude-ls": "~1.1.2", 1253 | "type-check": "~0.3.2" 1254 | } 1255 | }, 1256 | "lines-and-columns": { 1257 | "version": "1.1.6", 1258 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", 1259 | "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" 1260 | }, 1261 | "lodash": { 1262 | "version": "4.17.21", 1263 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1264 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 1265 | "dev": true 1266 | }, 1267 | "lodash.debounce": { 1268 | "version": "4.0.8", 1269 | "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", 1270 | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" 1271 | }, 1272 | "lodash.omit": { 1273 | "version": "4.5.0", 1274 | "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", 1275 | "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" 1276 | }, 1277 | "loose-envify": { 1278 | "version": "1.4.0", 1279 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1280 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1281 | "requires": { 1282 | "js-tokens": "^3.0.0 || ^4.0.0" 1283 | } 1284 | }, 1285 | "memoize-one": { 1286 | "version": "5.2.1", 1287 | "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", 1288 | "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" 1289 | }, 1290 | "mimic-fn": { 1291 | "version": "2.1.0", 1292 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1293 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1294 | "dev": true 1295 | }, 1296 | "minimatch": { 1297 | "version": "3.0.4", 1298 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1299 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1300 | "dev": true, 1301 | "requires": { 1302 | "brace-expansion": "^1.1.7" 1303 | } 1304 | }, 1305 | "minimist": { 1306 | "version": "1.2.5", 1307 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1308 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1309 | "dev": true 1310 | }, 1311 | "mkdirp": { 1312 | "version": "0.5.5", 1313 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1314 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1315 | "dev": true, 1316 | "requires": { 1317 | "minimist": "^1.2.5" 1318 | } 1319 | }, 1320 | "ms": { 1321 | "version": "2.1.2", 1322 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1323 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1324 | "dev": true 1325 | }, 1326 | "mute-stream": { 1327 | "version": "0.0.8", 1328 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1329 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1330 | "dev": true 1331 | }, 1332 | "natural-compare": { 1333 | "version": "1.4.0", 1334 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1335 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1336 | "dev": true 1337 | }, 1338 | "nice-try": { 1339 | "version": "1.0.5", 1340 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1341 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1342 | "dev": true 1343 | }, 1344 | "object-assign": { 1345 | "version": "4.1.1", 1346 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1347 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1348 | }, 1349 | "object-inspect": { 1350 | "version": "1.11.0", 1351 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", 1352 | "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", 1353 | "dev": true 1354 | }, 1355 | "object-keys": { 1356 | "version": "1.1.1", 1357 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1358 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1359 | "dev": true 1360 | }, 1361 | "object.assign": { 1362 | "version": "4.1.2", 1363 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1364 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1365 | "dev": true, 1366 | "requires": { 1367 | "call-bind": "^1.0.0", 1368 | "define-properties": "^1.1.3", 1369 | "has-symbols": "^1.0.1", 1370 | "object-keys": "^1.1.1" 1371 | } 1372 | }, 1373 | "object.entries": { 1374 | "version": "1.1.4", 1375 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", 1376 | "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", 1377 | "dev": true, 1378 | "requires": { 1379 | "call-bind": "^1.0.2", 1380 | "define-properties": "^1.1.3", 1381 | "es-abstract": "^1.18.2" 1382 | } 1383 | }, 1384 | "object.fromentries": { 1385 | "version": "2.0.4", 1386 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", 1387 | "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", 1388 | "dev": true, 1389 | "requires": { 1390 | "call-bind": "^1.0.2", 1391 | "define-properties": "^1.1.3", 1392 | "es-abstract": "^1.18.0-next.2", 1393 | "has": "^1.0.3" 1394 | } 1395 | }, 1396 | "object.values": { 1397 | "version": "1.1.4", 1398 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", 1399 | "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", 1400 | "dev": true, 1401 | "requires": { 1402 | "call-bind": "^1.0.2", 1403 | "define-properties": "^1.1.3", 1404 | "es-abstract": "^1.18.2" 1405 | } 1406 | }, 1407 | "once": { 1408 | "version": "1.4.0", 1409 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1410 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1411 | "dev": true, 1412 | "requires": { 1413 | "wrappy": "1" 1414 | } 1415 | }, 1416 | "onetime": { 1417 | "version": "5.1.2", 1418 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1419 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1420 | "dev": true, 1421 | "requires": { 1422 | "mimic-fn": "^2.1.0" 1423 | } 1424 | }, 1425 | "optionator": { 1426 | "version": "0.8.3", 1427 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1428 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1429 | "dev": true, 1430 | "requires": { 1431 | "deep-is": "~0.1.3", 1432 | "fast-levenshtein": "~2.0.6", 1433 | "levn": "~0.3.0", 1434 | "prelude-ls": "~1.1.2", 1435 | "type-check": "~0.3.2", 1436 | "word-wrap": "~1.2.3" 1437 | } 1438 | }, 1439 | "os-tmpdir": { 1440 | "version": "1.0.2", 1441 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1442 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1443 | "dev": true 1444 | }, 1445 | "parent-module": { 1446 | "version": "1.0.1", 1447 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1448 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1449 | "requires": { 1450 | "callsites": "^3.0.0" 1451 | } 1452 | }, 1453 | "parse-json": { 1454 | "version": "5.2.0", 1455 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1456 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1457 | "requires": { 1458 | "@babel/code-frame": "^7.0.0", 1459 | "error-ex": "^1.3.1", 1460 | "json-parse-even-better-errors": "^2.3.0", 1461 | "lines-and-columns": "^1.1.6" 1462 | } 1463 | }, 1464 | "path-is-absolute": { 1465 | "version": "1.0.1", 1466 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1467 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1468 | "dev": true 1469 | }, 1470 | "path-key": { 1471 | "version": "2.0.1", 1472 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1473 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1474 | "dev": true 1475 | }, 1476 | "path-parse": { 1477 | "version": "1.0.7", 1478 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1479 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1480 | }, 1481 | "path-type": { 1482 | "version": "4.0.0", 1483 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1484 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1485 | }, 1486 | "prelude-ls": { 1487 | "version": "1.1.2", 1488 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1489 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1490 | "dev": true 1491 | }, 1492 | "progress": { 1493 | "version": "2.0.3", 1494 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1495 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1496 | "dev": true 1497 | }, 1498 | "prop-types": { 1499 | "version": "15.7.2", 1500 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 1501 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 1502 | "requires": { 1503 | "loose-envify": "^1.4.0", 1504 | "object-assign": "^4.1.1", 1505 | "react-is": "^16.8.1" 1506 | } 1507 | }, 1508 | "punycode": { 1509 | "version": "2.1.1", 1510 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1511 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1512 | "dev": true 1513 | }, 1514 | "react": { 1515 | "version": "16.14.0", 1516 | "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", 1517 | "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", 1518 | "requires": { 1519 | "loose-envify": "^1.1.0", 1520 | "object-assign": "^4.1.1", 1521 | "prop-types": "^15.6.2" 1522 | } 1523 | }, 1524 | "react-dom": { 1525 | "version": "16.14.0", 1526 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", 1527 | "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", 1528 | "requires": { 1529 | "loose-envify": "^1.1.0", 1530 | "object-assign": "^4.1.1", 1531 | "prop-types": "^15.6.2", 1532 | "scheduler": "^0.19.1" 1533 | } 1534 | }, 1535 | "react-is": { 1536 | "version": "16.13.1", 1537 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 1538 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1539 | }, 1540 | "react-window": { 1541 | "version": "1.8.5", 1542 | "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.5.tgz", 1543 | "integrity": "sha512-HeTwlNa37AFa8MDZFZOKcNEkuF2YflA0hpGPiTT9vR7OawEt+GZbfM6wqkBahD3D3pUjIabQYzsnY/BSJbgq6Q==", 1544 | "requires": { 1545 | "@babel/runtime": "^7.0.0", 1546 | "memoize-one": ">=3.1.1 <6" 1547 | } 1548 | }, 1549 | "regenerator-runtime": { 1550 | "version": "0.13.9", 1551 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 1552 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 1553 | }, 1554 | "regexp.prototype.flags": { 1555 | "version": "1.3.1", 1556 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", 1557 | "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", 1558 | "dev": true, 1559 | "requires": { 1560 | "call-bind": "^1.0.2", 1561 | "define-properties": "^1.1.3" 1562 | } 1563 | }, 1564 | "regexpp": { 1565 | "version": "2.0.1", 1566 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1567 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 1568 | "dev": true 1569 | }, 1570 | "resolve": { 1571 | "version": "1.20.0", 1572 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1573 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1574 | "requires": { 1575 | "is-core-module": "^2.2.0", 1576 | "path-parse": "^1.0.6" 1577 | } 1578 | }, 1579 | "resolve-from": { 1580 | "version": "4.0.0", 1581 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1582 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1583 | }, 1584 | "restore-cursor": { 1585 | "version": "3.1.0", 1586 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1587 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1588 | "dev": true, 1589 | "requires": { 1590 | "onetime": "^5.1.0", 1591 | "signal-exit": "^3.0.2" 1592 | } 1593 | }, 1594 | "rimraf": { 1595 | "version": "2.6.3", 1596 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1597 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1598 | "dev": true, 1599 | "requires": { 1600 | "glob": "^7.1.3" 1601 | } 1602 | }, 1603 | "run-async": { 1604 | "version": "2.4.1", 1605 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 1606 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 1607 | "dev": true 1608 | }, 1609 | "rxjs": { 1610 | "version": "6.6.7", 1611 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 1612 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", 1613 | "dev": true, 1614 | "requires": { 1615 | "tslib": "^1.9.0" 1616 | } 1617 | }, 1618 | "safe-buffer": { 1619 | "version": "5.1.2", 1620 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1621 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1622 | }, 1623 | "safer-buffer": { 1624 | "version": "2.1.2", 1625 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1626 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1627 | "dev": true 1628 | }, 1629 | "scheduler": { 1630 | "version": "0.19.1", 1631 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", 1632 | "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", 1633 | "requires": { 1634 | "loose-envify": "^1.1.0", 1635 | "object-assign": "^4.1.1" 1636 | } 1637 | }, 1638 | "semver": { 1639 | "version": "6.3.0", 1640 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1641 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1642 | "dev": true 1643 | }, 1644 | "shebang-command": { 1645 | "version": "1.2.0", 1646 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", 1647 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", 1648 | "dev": true, 1649 | "requires": { 1650 | "shebang-regex": "^1.0.0" 1651 | } 1652 | }, 1653 | "shebang-regex": { 1654 | "version": "1.0.0", 1655 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", 1656 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", 1657 | "dev": true 1658 | }, 1659 | "side-channel": { 1660 | "version": "1.0.4", 1661 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1662 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1663 | "dev": true, 1664 | "requires": { 1665 | "call-bind": "^1.0.0", 1666 | "get-intrinsic": "^1.0.2", 1667 | "object-inspect": "^1.9.0" 1668 | } 1669 | }, 1670 | "signal-exit": { 1671 | "version": "3.0.3", 1672 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 1673 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", 1674 | "dev": true 1675 | }, 1676 | "slice-ansi": { 1677 | "version": "2.1.0", 1678 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", 1679 | "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", 1680 | "dev": true, 1681 | "requires": { 1682 | "ansi-styles": "^3.2.0", 1683 | "astral-regex": "^1.0.0", 1684 | "is-fullwidth-code-point": "^2.0.0" 1685 | }, 1686 | "dependencies": { 1687 | "is-fullwidth-code-point": { 1688 | "version": "2.0.0", 1689 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1690 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1691 | "dev": true 1692 | } 1693 | } 1694 | }, 1695 | "source-map": { 1696 | "version": "0.5.7", 1697 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1698 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" 1699 | }, 1700 | "sprintf-js": { 1701 | "version": "1.0.3", 1702 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", 1703 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 1704 | "dev": true 1705 | }, 1706 | "string-width": { 1707 | "version": "4.2.2", 1708 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", 1709 | "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", 1710 | "dev": true, 1711 | "requires": { 1712 | "emoji-regex": "^8.0.0", 1713 | "is-fullwidth-code-point": "^3.0.0", 1714 | "strip-ansi": "^6.0.0" 1715 | }, 1716 | "dependencies": { 1717 | "strip-ansi": { 1718 | "version": "6.0.0", 1719 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", 1720 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", 1721 | "dev": true, 1722 | "requires": { 1723 | "ansi-regex": "^5.0.0" 1724 | } 1725 | } 1726 | } 1727 | }, 1728 | "string.prototype.matchall": { 1729 | "version": "4.0.5", 1730 | "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.5.tgz", 1731 | "integrity": "sha512-Z5ZaXO0svs0M2xd/6By3qpeKpLKd9mO4v4q3oMEQrk8Ck4xOD5d5XeBOOjGrmVZZ/AHB1S0CgG4N5r1G9N3E2Q==", 1732 | "dev": true, 1733 | "requires": { 1734 | "call-bind": "^1.0.2", 1735 | "define-properties": "^1.1.3", 1736 | "es-abstract": "^1.18.2", 1737 | "get-intrinsic": "^1.1.1", 1738 | "has-symbols": "^1.0.2", 1739 | "internal-slot": "^1.0.3", 1740 | "regexp.prototype.flags": "^1.3.1", 1741 | "side-channel": "^1.0.4" 1742 | } 1743 | }, 1744 | "string.prototype.trimend": { 1745 | "version": "1.0.4", 1746 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", 1747 | "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", 1748 | "dev": true, 1749 | "requires": { 1750 | "call-bind": "^1.0.2", 1751 | "define-properties": "^1.1.3" 1752 | } 1753 | }, 1754 | "string.prototype.trimstart": { 1755 | "version": "1.0.4", 1756 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", 1757 | "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", 1758 | "dev": true, 1759 | "requires": { 1760 | "call-bind": "^1.0.2", 1761 | "define-properties": "^1.1.3" 1762 | } 1763 | }, 1764 | "strip-ansi": { 1765 | "version": "5.2.0", 1766 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", 1767 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", 1768 | "dev": true, 1769 | "requires": { 1770 | "ansi-regex": "^4.1.0" 1771 | }, 1772 | "dependencies": { 1773 | "ansi-regex": { 1774 | "version": "4.1.0", 1775 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", 1776 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", 1777 | "dev": true 1778 | } 1779 | } 1780 | }, 1781 | "strip-json-comments": { 1782 | "version": "3.1.1", 1783 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1784 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1785 | "dev": true 1786 | }, 1787 | "supports-color": { 1788 | "version": "5.5.0", 1789 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1790 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1791 | "requires": { 1792 | "has-flag": "^3.0.0" 1793 | } 1794 | }, 1795 | "table": { 1796 | "version": "5.4.6", 1797 | "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", 1798 | "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", 1799 | "dev": true, 1800 | "requires": { 1801 | "ajv": "^6.10.2", 1802 | "lodash": "^4.17.14", 1803 | "slice-ansi": "^2.1.0", 1804 | "string-width": "^3.0.0" 1805 | }, 1806 | "dependencies": { 1807 | "emoji-regex": { 1808 | "version": "7.0.3", 1809 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", 1810 | "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", 1811 | "dev": true 1812 | }, 1813 | "is-fullwidth-code-point": { 1814 | "version": "2.0.0", 1815 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", 1816 | "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", 1817 | "dev": true 1818 | }, 1819 | "string-width": { 1820 | "version": "3.1.0", 1821 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", 1822 | "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", 1823 | "dev": true, 1824 | "requires": { 1825 | "emoji-regex": "^7.0.1", 1826 | "is-fullwidth-code-point": "^2.0.0", 1827 | "strip-ansi": "^5.1.0" 1828 | } 1829 | } 1830 | } 1831 | }, 1832 | "text-table": { 1833 | "version": "0.2.0", 1834 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1835 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", 1836 | "dev": true 1837 | }, 1838 | "through": { 1839 | "version": "2.3.8", 1840 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1841 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", 1842 | "dev": true 1843 | }, 1844 | "tmp": { 1845 | "version": "0.0.33", 1846 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", 1847 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", 1848 | "dev": true, 1849 | "requires": { 1850 | "os-tmpdir": "~1.0.2" 1851 | } 1852 | }, 1853 | "to-fast-properties": { 1854 | "version": "2.0.0", 1855 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1856 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" 1857 | }, 1858 | "tslib": { 1859 | "version": "1.14.1", 1860 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1861 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 1862 | "dev": true 1863 | }, 1864 | "type-check": { 1865 | "version": "0.3.2", 1866 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", 1867 | "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", 1868 | "dev": true, 1869 | "requires": { 1870 | "prelude-ls": "~1.1.2" 1871 | } 1872 | }, 1873 | "type-fest": { 1874 | "version": "0.8.1", 1875 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", 1876 | "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", 1877 | "dev": true 1878 | }, 1879 | "unbox-primitive": { 1880 | "version": "1.0.1", 1881 | "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", 1882 | "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", 1883 | "dev": true, 1884 | "requires": { 1885 | "function-bind": "^1.1.1", 1886 | "has-bigints": "^1.0.1", 1887 | "has-symbols": "^1.0.2", 1888 | "which-boxed-primitive": "^1.0.2" 1889 | } 1890 | }, 1891 | "uri-js": { 1892 | "version": "4.4.1", 1893 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1894 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1895 | "dev": true, 1896 | "requires": { 1897 | "punycode": "^2.1.0" 1898 | } 1899 | }, 1900 | "use-subscription": { 1901 | "version": "1.5.1", 1902 | "resolved": "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz", 1903 | "integrity": "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==", 1904 | "requires": { 1905 | "object-assign": "^4.1.1" 1906 | } 1907 | }, 1908 | "v8-compile-cache": { 1909 | "version": "2.3.0", 1910 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", 1911 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", 1912 | "dev": true 1913 | }, 1914 | "which": { 1915 | "version": "1.3.1", 1916 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", 1917 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", 1918 | "dev": true, 1919 | "requires": { 1920 | "isexe": "^2.0.0" 1921 | } 1922 | }, 1923 | "which-boxed-primitive": { 1924 | "version": "1.0.2", 1925 | "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", 1926 | "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", 1927 | "dev": true, 1928 | "requires": { 1929 | "is-bigint": "^1.0.1", 1930 | "is-boolean-object": "^1.1.0", 1931 | "is-number-object": "^1.0.4", 1932 | "is-string": "^1.0.5", 1933 | "is-symbol": "^1.0.3" 1934 | } 1935 | }, 1936 | "word-wrap": { 1937 | "version": "1.2.3", 1938 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1939 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1940 | "dev": true 1941 | }, 1942 | "wrappy": { 1943 | "version": "1.0.2", 1944 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1945 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1946 | "dev": true 1947 | }, 1948 | "write": { 1949 | "version": "1.0.3", 1950 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1951 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1952 | "dev": true, 1953 | "requires": { 1954 | "mkdirp": "^0.5.1" 1955 | } 1956 | }, 1957 | "yaml": { 1958 | "version": "1.10.2", 1959 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1960 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 1961 | } 1962 | } 1963 | } 1964 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@airtable/json-editor-app", 3 | "version": "1.0.5", 4 | "license": "MIT", 5 | "dependencies": { 6 | "@airtable/blocks": "latest", 7 | "lodash.debounce": "^4.0.8", 8 | "react": "^16.9.0", 9 | "react-dom": "^16.9.0" 10 | }, 11 | "devDependencies": { 12 | "eslint": "^6.3.0", 13 | "eslint-plugin-react": "^7.14.3", 14 | "eslint-plugin-react-hooks": "^2.0.1" 15 | }, 16 | "scripts": { 17 | "lint": "eslint frontend" 18 | } 19 | } 20 | --------------------------------------------------------------------------------