├── .block └── remote.json ├── .eslintrc.js ├── .gitignore ├── LICENSE.md ├── README.md ├── block.json ├── frontend ├── SettingsForm.js ├── index.js ├── layout.js ├── loadCSS.js └── settings.js ├── package-lock.json └── package.json /.block/remote.json: -------------------------------------------------------------------------------- 1 | { 2 | "blockId": "blkqUrtsb39vAM1FH", 3 | "baseId": "appxkZrQHE4sj9D1w" 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 4 | -------------------------------------------------------------------------------- /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 associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Flowchart app 2 | 3 | Visualize linked records as a directed graph, such as a flowchart, decision tree, or user flow diagram. Export your 4 | graph to SVG for further editing or PNG for sharing. 5 | 6 | ## How to remix this app 7 | 8 | 1. Create a new base (or you can use an existing base). 9 | 10 | 2. Create a new app in your base (see [Create a new app](https://airtable.com/developers/blocks/guides/hello-world-tutorial#create-a-new-app)), 11 | selecting "Remix from Github" as your template. 12 | 13 | 3. From the root of your new app, run `block run`. 14 | -------------------------------------------------------------------------------- /block.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0", 3 | "frontendEntry": "./frontend/index.js" 4 | } 5 | -------------------------------------------------------------------------------- /frontend/SettingsForm.js: -------------------------------------------------------------------------------- 1 | import PropTypes from 'prop-types'; 2 | import React, {Fragment} from 'react'; 3 | import {Field, RecordQueryResult, Table, View} from '@airtable/blocks/models'; 4 | import { 5 | Box, 6 | Button, 7 | FieldPickerSynced, 8 | FormField, 9 | Heading, 10 | Label, 11 | Link, 12 | SelectButtonsSynced, 13 | SelectSynced, 14 | TablePickerSynced, 15 | Text, 16 | ViewPickerSynced, 17 | } from '@airtable/blocks/ui'; 18 | 19 | import {ExportType} from './index'; 20 | import {allowedFieldTypes, ConfigKeys, LinkStyle, ChartOrientation, RecordShape} from './settings'; 21 | 22 | function SettingsForm({setIsSettingsVisible, settingsValidationResult, onExportGraph}) { 23 | const {settings, isValid} = settingsValidationResult; 24 | return ( 25 | 32 | 40 | Settings 41 | 42 | 43 | 44 | {settings.table && ( 45 | 46 | 47 | 51 | 52 | 56 | 61 | 62 | 70 | 77 | 78 | 79 | 86 | 87 | 88 | 99 | 100 | 101 | 102 | Record color 103 | 104 | 105 | Record coloring is{' '} 106 | 110 | based on the view 111 | 112 | 113 | 114 | 115 | )} 116 | 117 | 125 | 126 | 129 | 136 | 139 | 140 | 143 | 144 | 145 | ); 146 | } 147 | 148 | SettingsForm.propTypes = { 149 | setIsSettingsVisible: PropTypes.func.isRequired, 150 | onExportGraph: PropTypes.func.isRequired, 151 | settingsValidationResult: PropTypes.shape({ 152 | settings: PropTypes.shape({ 153 | table: PropTypes.instanceOf(Table), 154 | view: PropTypes.instanceOf(View), 155 | field: PropTypes.instanceOf(Field), 156 | queryResult: PropTypes.instanceOf(RecordQueryResult), 157 | chartOrientation: PropTypes.oneOf(Object.values(ChartOrientation)).isRequired, 158 | linkStyle: PropTypes.oneOf(Object.values(LinkStyle)).isRequired, 159 | recordShape: PropTypes.oneOf(Object.values(RecordShape)).isRequired, 160 | }).isRequired, 161 | isValid: PropTypes.bool.isRequired, 162 | }), 163 | }; 164 | 165 | export default SettingsForm; 166 | -------------------------------------------------------------------------------- /frontend/index.js: -------------------------------------------------------------------------------- 1 | import React, {useEffect, useRef, useState} from 'react'; 2 | import {saveSvgAsPng, svgAsDataUri} from 'save-svg-as-png'; 3 | import { 4 | Box, 5 | expandRecord, 6 | initializeBlock, 7 | Loader, 8 | useLoadable, 9 | useSettingsButton, 10 | useViewport, 11 | useWatchable, 12 | } from '@airtable/blocks/ui'; 13 | 14 | import {createLayout} from './layout'; 15 | import loadCSS from './loadCSS'; 16 | import {useSettings} from './settings'; 17 | import SettingsForm from './SettingsForm'; 18 | 19 | // viz.js has a stack overflow when there are too many records. So add a limit to be safe. 20 | const MAX_RECORDS = 100; 21 | export const ExportType = Object.freeze({ 22 | PNG: 'png', 23 | SVG: 'svg', 24 | }); 25 | 26 | loadCSS(); 27 | 28 | const domParser = new DOMParser(); 29 | 30 | function FlowchartApp() { 31 | const viewport = useViewport(); 32 | const [isSettingsVisible, setIsSettingsVisible] = useState(false); 33 | useSettingsButton(() => { 34 | if (!isSettingsVisible) { 35 | viewport.enterFullscreenIfPossible(); 36 | } 37 | setIsSettingsVisible(!isSettingsVisible); 38 | }); 39 | const settingsValidationResult = useSettings(); 40 | const {queryResult} = settingsValidationResult.settings; 41 | useLoadable(queryResult); 42 | useWatchable(queryResult, ['records', 'cellValues', 'recordColors']); 43 | 44 | useEffect(() => { 45 | if (!settingsValidationResult.isValid) { 46 | setIsSettingsVisible(true); 47 | } 48 | }, [settingsValidationResult.isValid]); 49 | 50 | const graph = useRef(null); 51 | 52 | function draw() { 53 | if (!graph.current) { 54 | // Return early if ref isn't ready yet. 55 | return; 56 | } 57 | if (!settingsValidationResult.isValid) { 58 | graph.current.innerHTML = `${settingsValidationResult.message}`; 59 | return; 60 | } 61 | 62 | if (!queryResult.isDataLoaded) { 63 | graph.current.innerHTML = 'Loading...'; 64 | } else if (queryResult.records.length === 0) { 65 | graph.current.innerHTML = 'Add some records to get started'; 66 | } else if (queryResult.records.length > MAX_RECORDS) { 67 | graph.current.innerHTML = ` 68 | The flowchart app can only visualize up to ${MAX_RECORDS} records. Try deleting some records or 69 | filtering them out of the view. 70 | `; 71 | } else { 72 | createLayout(settingsValidationResult.settings).then(svg => { 73 | const svgDocument = domParser.parseFromString(svg, 'image/svg+xml'); 74 | const svgElement = svgDocument.firstElementChild; 75 | if (svgElement && graph.current) { 76 | // Set the width and height of the SVG element so that it takes up the full dimensions of the 77 | // app frame. 78 | const width = svgElement.getAttribute('width'); 79 | const height = svgElement.getAttribute('height'); 80 | if (Number(width) > Number(height)) { 81 | svgElement.setAttribute('width', '100%'); 82 | svgElement.removeAttribute('height'); 83 | } else { 84 | svgElement.setAttribute('height', '100%'); 85 | svgElement.removeAttribute('width'); 86 | } 87 | graph.current.innerHTML = ''; 88 | graph.current.appendChild(svgElement); 89 | } 90 | }); 91 | } 92 | } 93 | 94 | function _onGraphClick(e) { 95 | if (!queryResult || !queryResult.isDataLoaded) { 96 | return; 97 | } 98 | let target = e.target || null; 99 | // Traverse up the element tree from the click event target until we find an svg element 100 | // describing a 'node' that has a corresponding record that we can expand. 101 | while (target && target !== graph.current) { 102 | if (target.classList.contains('node')) { 103 | const record = queryResult.getRecordByIdIfExists(target.id); 104 | if (record) { 105 | expandRecord(record); 106 | return; 107 | } 108 | } 109 | target = target.parentElement; 110 | } 111 | } 112 | 113 | function _onExportGraph(exportType) { 114 | const {view} = settingsValidationResult.settings; 115 | if (view && graph.current) { 116 | const svgElement = graph.current.firstElementChild; 117 | if (svgElement) { 118 | if (exportType === ExportType.PNG) { 119 | saveSvgAsPng(svgElement, `${view.name}.png`, { 120 | scale: 2.0, 121 | }); 122 | } else if (exportType === ExportType.SVG) { 123 | // Convert the SVG to a data URI and download it via an anchor link. 124 | svgAsDataUri(svgElement, {}, uri => { 125 | const downloadLink = document.createElement('a'); 126 | downloadLink.download = `${view.name}.svg`; 127 | downloadLink.href = uri; 128 | document.body.appendChild(downloadLink); 129 | downloadLink.click(); 130 | document.body.removeChild(downloadLink); 131 | }); 132 | } else { 133 | throw new Error('Unexpected export type: ', exportType); 134 | } 135 | } 136 | } 137 | } 138 | 139 | draw(); 140 | return ( 141 | 151 |
164 | 165 |
166 | {isSettingsVisible && ( 167 | 172 | )} 173 |
174 | ); 175 | } 176 | 177 | initializeBlock(() => ); 178 | -------------------------------------------------------------------------------- /frontend/layout.js: -------------------------------------------------------------------------------- 1 | import workerize from 'workerize'; 2 | import {colorUtils} from '@airtable/blocks/ui'; 3 | 4 | import {LinkStyle, ChartOrientation, RecordShape} from './settings'; 5 | 6 | const DEBUG_OUTPUT = false; // Set to true to log layout source string to console 7 | let worker; 8 | 9 | const workerString = ` 10 | // Run viz.js in a worker to avoid blocking the main thread. 11 | self.importScripts('https://unpkg.com/viz.js@2.1.2/viz.js', 'https://unpkg.com/viz.js@2.1.2/full.render.js'); 12 | 13 | let viz; 14 | 15 | function restart() { 16 | viz = new Viz(); 17 | viz.renderString('digraph {}', { 18 | format: 'svg', 19 | engine: 'dot', 20 | }).catch(() => {}); 21 | } 22 | 23 | restart(); 24 | 25 | export function layout(source) { 26 | return new Promise((resolve, reject) => { 27 | let timeoutTimer = setTimeout(() => { 28 | restart(); 29 | reject(new Error('timeout')); 30 | }, 10000); 31 | 32 | return viz.renderString(source, { 33 | format: 'svg', 34 | engine: 'dot', 35 | }).then(resolve).catch(err => { 36 | clearTimeout(timeoutTimer); 37 | restart(); 38 | reject(err); 39 | }); 40 | }); 41 | } 42 | `; 43 | 44 | /** 45 | * Creates a string representation of the graph based on the passed in settings 46 | * Uses the viz worker to convert this string to an svg 47 | * See https://www.graphviz.org/documentation/ for more details. 48 | * @param settings 49 | * @returns {Promise} The returned promise should resolve to an svg 50 | */ 51 | export function createLayout(settings) { 52 | if (!worker) { 53 | worker = workerize(workerString); 54 | } 55 | const {chartOrientation, linkStyle, recordShape, queryResult, field} = settings; 56 | let source = 'digraph {\n\t'; 57 | source += 'bgcolor=transparent\n\t'; 58 | source += 'pad=0.25\n\t'; 59 | source += 'nodesep=0.75\n\t'; 60 | 61 | if (chartOrientation === ChartOrientation.HORIZONTAL) { 62 | source += 'rankdir=LR\n\t'; 63 | } 64 | 65 | switch (linkStyle) { 66 | case LinkStyle.STRAIGHT_LINES: 67 | source += 'splines=line\n\n\t'; 68 | break; 69 | case LinkStyle.CURVED_LINES: 70 | source += 'splines=curved\n\n\t'; 71 | break; 72 | case LinkStyle.RIGHT_ANGLES: 73 | default: 74 | source += 'splines=ortho\n\n\t'; 75 | break; 76 | } 77 | 78 | source += 'node [\n\t\t'; 79 | switch (recordShape) { 80 | case RecordShape.ELLIPSE: 81 | source += 'shape=ellipse\n\t\t'; 82 | break; 83 | case RecordShape.CIRCLE: 84 | source += 'shape=circle\n\t\t'; 85 | break; 86 | case RecordShape.DIAMOND: 87 | source += 'shape=diamond\n\t\t'; 88 | break; 89 | case RecordShape.ROUNDED: 90 | case RecordShape.RECTANGLE: 91 | default: 92 | source += 'shape=rect\n\t\t'; 93 | break; 94 | } 95 | source += `style="filled${recordShape === RecordShape.ROUNDED ? ',rounded' : ''}"\n\t\t`; 96 | source += 'fontname=Helvetica\n\t'; 97 | source += ']\n\n\t'; 98 | 99 | const nodes = []; 100 | const edges = []; 101 | for (const record of queryResult.records) { 102 | if (record.isDeleted) { 103 | continue; 104 | } 105 | const recordColor = queryResult.getRecordColor(record); 106 | const shouldUseLightText = record 107 | ? colorUtils.shouldUseLightTextOnColor(recordColor) 108 | : false; 109 | let displayText = record.name 110 | .substring(0, 50) 111 | .trim() 112 | .replace(/"/g, '\\"'); 113 | if (record.name.length > 50) { 114 | displayText += '...'; 115 | } 116 | nodes.push( 117 | `${record.id} [id="${record.id}" label="${displayText}" 118 | tooltip="${displayText}" 119 | fontcolor="${shouldUseLightText ? 'white' : 'black'}" 120 | fillcolor="${recordColor ? colorUtils.getHexForColor(recordColor) : 'white'}"]`, 121 | ); 122 | 123 | const linkedRecordCellValues = record.getCellValue(field.id) || []; 124 | for (const linkedRecordCellValue of linkedRecordCellValues) { 125 | // The record might be in the cell value but not in the query result when it is deleted 126 | const linkedRecord = queryResult.getRecordByIdIfExists(linkedRecordCellValue.id); 127 | if (!linkedRecord || linkedRecord.isDeleted) { 128 | continue; 129 | } 130 | edges.push( 131 | `${record.id} -> ${linkedRecord.id} [id="${record.id}->${linkedRecord.id}"]`, 132 | ); 133 | } 134 | } 135 | 136 | source += nodes.join('\n\t'); 137 | source += '\n\n\t'; 138 | source += edges.join('\n\t'); 139 | source += '\n}'; 140 | 141 | if (DEBUG_OUTPUT) { 142 | console.log(source); 143 | } 144 | return worker.layout(source); 145 | } 146 | -------------------------------------------------------------------------------- /frontend/loadCSS.js: -------------------------------------------------------------------------------- 1 | import {loadCSSFromString} from '@airtable/blocks/ui'; 2 | 3 | const cssString = ` 4 | span.prompt { 5 | padding: 2rem; 6 | margin: 0; 7 | font-size: 17px; 8 | font-weight: 500; 9 | color: hsl(0, 0%, 46%); 10 | line-height: 1.5; 11 | text-align: center; 12 | } 13 | 14 | g.node { 15 | cursor: pointer; 16 | user-select: none; 17 | } 18 | `; 19 | 20 | function loadCSS() { 21 | loadCSSFromString(cssString); 22 | } 23 | 24 | export default loadCSS; 25 | -------------------------------------------------------------------------------- /frontend/settings.js: -------------------------------------------------------------------------------- 1 | import {FieldType} from '@airtable/blocks/models'; 2 | import {useBase, useGlobalConfig} from '@airtable/blocks/ui'; 3 | 4 | export const ConfigKeys = { 5 | TABLE_ID: 'tableId', 6 | VIEW_ID: 'viewId', 7 | FIELD_ID: 'fieldId', 8 | CHART_ORIENTATION: 'chartOrientation', 9 | LINK_STYLE: 'linkStyle', 10 | RECORD_SHAPE: 'recordShape', 11 | }; 12 | 13 | export const allowedFieldTypes = [FieldType.MULTIPLE_RECORD_LINKS]; 14 | 15 | export const RecordShape = Object.freeze({ 16 | ROUNDED: 'rounded', 17 | RECTANGLE: 'rectangle', 18 | ELLIPSE: 'ellipse', 19 | CIRCLE: 'circle', 20 | DIAMOND: 'diamond', 21 | }); 22 | 23 | export const LinkStyle = Object.freeze({ 24 | RIGHT_ANGLES: 'rightAngles', 25 | STRAIGHT_LINES: 'straightLines', 26 | }); 27 | 28 | export const ChartOrientation = Object.freeze({ 29 | HORIZONTAL: 'horizontal', 30 | VERTICAL: 'vertical', 31 | }); 32 | 33 | const defaults = Object.freeze({ 34 | [ConfigKeys.CHART_ORIENTATION]: ChartOrientation.VERTICAL, 35 | [ConfigKeys.LINK_STYLE]: LinkStyle.RIGHT_ANGLES, 36 | [ConfigKeys.RECORD_SHAPE]: RecordShape.ROUNDED, 37 | }); 38 | 39 | /** 40 | * Reads the values stored in GlobalConfig and inserts defaults for missing values 41 | * @param {GlobalConfig} globalConfig 42 | * @returns {{ 43 | * tableId?: string, 44 | * viewId?: string, 45 | * fieldId?: string, 46 | * chartOrientation: ChartOrientation, 47 | * linkStyle: LinkStyle, 48 | * recordShape: RecordShape, 49 | * }} 50 | */ 51 | function getRawSettingsWithDefaults(globalConfig) { 52 | const rawSettings = {}; 53 | for (const globalConfigKey of Object.values(ConfigKeys)) { 54 | const storedValue = globalConfig.get(globalConfigKey); 55 | if ( 56 | storedValue === undefined && 57 | Object.prototype.hasOwnProperty.call(defaults, globalConfigKey) 58 | ) { 59 | rawSettings[globalConfigKey] = defaults[globalConfigKey]; 60 | } else { 61 | rawSettings[globalConfigKey] = storedValue; 62 | } 63 | } 64 | 65 | return rawSettings; 66 | } 67 | 68 | /** 69 | * Takes values read from GlobalConfig and converts them to Airtable objects where possible. 70 | * Also creates an extra key for queryResult which is derived from view and field. 71 | * @param {object} rawSettings - The object returned by getRawSettingsWithDefaults 72 | * @param {Base} base - The base being used by the app in order to convert id's to objects 73 | * @returns {{ 74 | * table: Table | null, 75 | * view: View | null, 76 | * field: Field | null, 77 | * queryResult: RecordQueryResult | null, 78 | * chartOrientation: ChartOrientation, 79 | * linkStyle: LinkStyle, 80 | * recordShape: RecordShape, 81 | * }} 82 | */ 83 | function getSettings(rawSettings, base) { 84 | const table = base.getTableByIdIfExists(rawSettings.tableId); 85 | const view = table ? table.getViewByIdIfExists(rawSettings.viewId) : null; 86 | const field = table ? table.getFieldByIdIfExists(rawSettings.fieldId) : null; 87 | const queryResult = 88 | view && field ? view.selectRecords({fields: [table.primaryField, field]}) : null; 89 | return { 90 | table, 91 | view, 92 | field, 93 | queryResult, 94 | chartOrientation: rawSettings.chartOrientation, 95 | linkStyle: rawSettings.linkStyle, 96 | recordShape: rawSettings.recordShape, 97 | }; 98 | } 99 | 100 | /** 101 | * Wraps the settings with validation information 102 | * @param {object} settings - The object returned by getSettings 103 | * @returns {{settings: object, isValid: boolean} | {settings: object, isValid: boolean, message: string}} 104 | */ 105 | function getSettingsValidationResult(settings) { 106 | const {queryResult, table, field} = settings; 107 | if (!queryResult) { 108 | return { 109 | isValid: false, 110 | message: 'Pick a table, view, and linked record field', 111 | settings: settings, 112 | }; 113 | } else if (field.type !== FieldType.MULTIPLE_RECORD_LINKS) { 114 | return { 115 | isValid: false, 116 | message: 'Select a linked record field', 117 | settings: settings, 118 | }; 119 | } else if (field.options.linkedTableId !== table.id) { 120 | return { 121 | isValid: false, 122 | message: 'Linked record field must be linked to same table', 123 | settings: settings, 124 | }; 125 | } 126 | return { 127 | isValid: true, 128 | settings: settings, 129 | }; 130 | } 131 | 132 | /** 133 | * A React hook to validate and access settings configured in SettingsForm. 134 | * @returns {{settings: object, isValid: boolean, message: string} | {settings: object, isValid: boolean}} 135 | */ 136 | export function useSettings() { 137 | const base = useBase(); 138 | const globalConfig = useGlobalConfig(); 139 | const rawSettings = getRawSettingsWithDefaults(globalConfig); 140 | const settings = getSettings(rawSettings, base); 141 | return getSettingsValidationResult(settings); 142 | } 143 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@airtable/flowchart-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.omit": { 1268 | "version": "4.5.0", 1269 | "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", 1270 | "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" 1271 | }, 1272 | "loose-envify": { 1273 | "version": "1.4.0", 1274 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1275 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1276 | "requires": { 1277 | "js-tokens": "^3.0.0 || ^4.0.0" 1278 | } 1279 | }, 1280 | "memoize-one": { 1281 | "version": "5.2.1", 1282 | "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", 1283 | "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" 1284 | }, 1285 | "mimic-fn": { 1286 | "version": "2.1.0", 1287 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 1288 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 1289 | "dev": true 1290 | }, 1291 | "minimatch": { 1292 | "version": "3.0.4", 1293 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1294 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1295 | "dev": true, 1296 | "requires": { 1297 | "brace-expansion": "^1.1.7" 1298 | } 1299 | }, 1300 | "minimist": { 1301 | "version": "1.2.5", 1302 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 1303 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", 1304 | "dev": true 1305 | }, 1306 | "mkdirp": { 1307 | "version": "0.5.5", 1308 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", 1309 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", 1310 | "dev": true, 1311 | "requires": { 1312 | "minimist": "^1.2.5" 1313 | } 1314 | }, 1315 | "ms": { 1316 | "version": "2.1.2", 1317 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1318 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1319 | "dev": true 1320 | }, 1321 | "mute-stream": { 1322 | "version": "0.0.8", 1323 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", 1324 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", 1325 | "dev": true 1326 | }, 1327 | "natural-compare": { 1328 | "version": "1.4.0", 1329 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1330 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", 1331 | "dev": true 1332 | }, 1333 | "nice-try": { 1334 | "version": "1.0.5", 1335 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", 1336 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", 1337 | "dev": true 1338 | }, 1339 | "object-assign": { 1340 | "version": "4.1.1", 1341 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1342 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1343 | }, 1344 | "object-inspect": { 1345 | "version": "1.11.0", 1346 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", 1347 | "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", 1348 | "dev": true 1349 | }, 1350 | "object-keys": { 1351 | "version": "1.1.1", 1352 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1353 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1354 | "dev": true 1355 | }, 1356 | "object.assign": { 1357 | "version": "4.1.2", 1358 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", 1359 | "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", 1360 | "dev": true, 1361 | "requires": { 1362 | "call-bind": "^1.0.0", 1363 | "define-properties": "^1.1.3", 1364 | "has-symbols": "^1.0.1", 1365 | "object-keys": "^1.1.1" 1366 | } 1367 | }, 1368 | "object.entries": { 1369 | "version": "1.1.4", 1370 | "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.4.tgz", 1371 | "integrity": "sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA==", 1372 | "dev": true, 1373 | "requires": { 1374 | "call-bind": "^1.0.2", 1375 | "define-properties": "^1.1.3", 1376 | "es-abstract": "^1.18.2" 1377 | } 1378 | }, 1379 | "object.fromentries": { 1380 | "version": "2.0.4", 1381 | "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", 1382 | "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", 1383 | "dev": true, 1384 | "requires": { 1385 | "call-bind": "^1.0.2", 1386 | "define-properties": "^1.1.3", 1387 | "es-abstract": "^1.18.0-next.2", 1388 | "has": "^1.0.3" 1389 | } 1390 | }, 1391 | "object.values": { 1392 | "version": "1.1.4", 1393 | "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.4.tgz", 1394 | "integrity": "sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg==", 1395 | "dev": true, 1396 | "requires": { 1397 | "call-bind": "^1.0.2", 1398 | "define-properties": "^1.1.3", 1399 | "es-abstract": "^1.18.2" 1400 | } 1401 | }, 1402 | "once": { 1403 | "version": "1.4.0", 1404 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1405 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1406 | "dev": true, 1407 | "requires": { 1408 | "wrappy": "1" 1409 | } 1410 | }, 1411 | "onetime": { 1412 | "version": "5.1.2", 1413 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 1414 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 1415 | "dev": true, 1416 | "requires": { 1417 | "mimic-fn": "^2.1.0" 1418 | } 1419 | }, 1420 | "optionator": { 1421 | "version": "0.8.3", 1422 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", 1423 | "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", 1424 | "dev": true, 1425 | "requires": { 1426 | "deep-is": "~0.1.3", 1427 | "fast-levenshtein": "~2.0.6", 1428 | "levn": "~0.3.0", 1429 | "prelude-ls": "~1.1.2", 1430 | "type-check": "~0.3.2", 1431 | "word-wrap": "~1.2.3" 1432 | } 1433 | }, 1434 | "os-tmpdir": { 1435 | "version": "1.0.2", 1436 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 1437 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", 1438 | "dev": true 1439 | }, 1440 | "parent-module": { 1441 | "version": "1.0.1", 1442 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1443 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1444 | "requires": { 1445 | "callsites": "^3.0.0" 1446 | } 1447 | }, 1448 | "parse-json": { 1449 | "version": "5.2.0", 1450 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1451 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1452 | "requires": { 1453 | "@babel/code-frame": "^7.0.0", 1454 | "error-ex": "^1.3.1", 1455 | "json-parse-even-better-errors": "^2.3.0", 1456 | "lines-and-columns": "^1.1.6" 1457 | } 1458 | }, 1459 | "path-is-absolute": { 1460 | "version": "1.0.1", 1461 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1462 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1463 | "dev": true 1464 | }, 1465 | "path-key": { 1466 | "version": "2.0.1", 1467 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", 1468 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", 1469 | "dev": true 1470 | }, 1471 | "path-parse": { 1472 | "version": "1.0.7", 1473 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1474 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1475 | }, 1476 | "path-type": { 1477 | "version": "4.0.0", 1478 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1479 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1480 | }, 1481 | "prelude-ls": { 1482 | "version": "1.1.2", 1483 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", 1484 | "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", 1485 | "dev": true 1486 | }, 1487 | "progress": { 1488 | "version": "2.0.3", 1489 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1490 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 1491 | "dev": true 1492 | }, 1493 | "prop-types": { 1494 | "version": "15.7.2", 1495 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", 1496 | "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", 1497 | "requires": { 1498 | "loose-envify": "^1.4.0", 1499 | "object-assign": "^4.1.1", 1500 | "react-is": "^16.8.1" 1501 | } 1502 | }, 1503 | "punycode": { 1504 | "version": "2.1.1", 1505 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", 1506 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", 1507 | "dev": true 1508 | }, 1509 | "react": { 1510 | "version": "16.14.0", 1511 | "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", 1512 | "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", 1513 | "requires": { 1514 | "loose-envify": "^1.1.0", 1515 | "object-assign": "^4.1.1", 1516 | "prop-types": "^15.6.2" 1517 | } 1518 | }, 1519 | "react-dom": { 1520 | "version": "16.14.0", 1521 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", 1522 | "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", 1523 | "requires": { 1524 | "loose-envify": "^1.1.0", 1525 | "object-assign": "^4.1.1", 1526 | "prop-types": "^15.6.2", 1527 | "scheduler": "^0.19.1" 1528 | } 1529 | }, 1530 | "react-is": { 1531 | "version": "16.13.1", 1532 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 1533 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1534 | }, 1535 | "react-window": { 1536 | "version": "1.8.5", 1537 | "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.5.tgz", 1538 | "integrity": "sha512-HeTwlNa37AFa8MDZFZOKcNEkuF2YflA0hpGPiTT9vR7OawEt+GZbfM6wqkBahD3D3pUjIabQYzsnY/BSJbgq6Q==", 1539 | "requires": { 1540 | "@babel/runtime": "^7.0.0", 1541 | "memoize-one": ">=3.1.1 <6" 1542 | } 1543 | }, 1544 | "regenerator-runtime": { 1545 | "version": "0.13.9", 1546 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", 1547 | "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" 1548 | }, 1549 | "regexp.prototype.flags": { 1550 | "version": "1.3.1", 1551 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", 1552 | "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", 1553 | "dev": true, 1554 | "requires": { 1555 | "call-bind": "^1.0.2", 1556 | "define-properties": "^1.1.3" 1557 | } 1558 | }, 1559 | "regexpp": { 1560 | "version": "2.0.1", 1561 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", 1562 | "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", 1563 | "dev": true 1564 | }, 1565 | "resolve": { 1566 | "version": "1.20.0", 1567 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", 1568 | "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", 1569 | "requires": { 1570 | "is-core-module": "^2.2.0", 1571 | "path-parse": "^1.0.6" 1572 | } 1573 | }, 1574 | "resolve-from": { 1575 | "version": "4.0.0", 1576 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1577 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1578 | }, 1579 | "restore-cursor": { 1580 | "version": "3.1.0", 1581 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", 1582 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", 1583 | "dev": true, 1584 | "requires": { 1585 | "onetime": "^5.1.0", 1586 | "signal-exit": "^3.0.2" 1587 | } 1588 | }, 1589 | "rimraf": { 1590 | "version": "2.6.3", 1591 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", 1592 | "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", 1593 | "dev": true, 1594 | "requires": { 1595 | "glob": "^7.1.3" 1596 | } 1597 | }, 1598 | "run-async": { 1599 | "version": "2.4.1", 1600 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", 1601 | "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", 1602 | "dev": true 1603 | }, 1604 | "rxjs": { 1605 | "version": "6.6.7", 1606 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", 1607 | "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", 1608 | "dev": true, 1609 | "requires": { 1610 | "tslib": "^1.9.0" 1611 | } 1612 | }, 1613 | "safe-buffer": { 1614 | "version": "5.1.2", 1615 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1616 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1617 | }, 1618 | "safer-buffer": { 1619 | "version": "2.1.2", 1620 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1621 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 1622 | "dev": true 1623 | }, 1624 | "save-svg-as-png": { 1625 | "version": "1.4.17", 1626 | "resolved": "https://registry.npmjs.org/save-svg-as-png/-/save-svg-as-png-1.4.17.tgz", 1627 | "integrity": "sha512-7QDaqJsVhdFPwviCxkgHiGm9omeaMBe1VKbHySWU6oFB2LtnGCcYS13eVoslUgq6VZC6Tjq/HddBd1K6p2PGpA==" 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 | "workerize": { 1943 | "version": "0.1.8", 1944 | "resolved": "https://registry.npmjs.org/workerize/-/workerize-0.1.8.tgz", 1945 | "integrity": "sha512-X2y/MZ4UHXY00CKPbhb7g5Pm7aagKmXqTETvG/gi9I0tlrONqAN8jRuyLvlyvhrXTugJUk9Dzz7UBpSwFIP8pQ==" 1946 | }, 1947 | "wrappy": { 1948 | "version": "1.0.2", 1949 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1950 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 1951 | "dev": true 1952 | }, 1953 | "write": { 1954 | "version": "1.0.3", 1955 | "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", 1956 | "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", 1957 | "dev": true, 1958 | "requires": { 1959 | "mkdirp": "^0.5.1" 1960 | } 1961 | }, 1962 | "yaml": { 1963 | "version": "1.10.2", 1964 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1965 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 1966 | } 1967 | } 1968 | } 1969 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@airtable/flowchart-app", 3 | "version": "1.0.5", 4 | "scripts": { 5 | "lint": "eslint frontend" 6 | }, 7 | "dependencies": { 8 | "@airtable/blocks": "latest", 9 | "prop-types": "^15.7.2", 10 | "react": "^16.12.0", 11 | "react-dom": "^16.12.0", 12 | "save-svg-as-png": "^1.4.14", 13 | "workerize": "^0.1.7" 14 | }, 15 | "devDependencies": { 16 | "eslint": "^6.8.0", 17 | "eslint-plugin-react": "^7.18.3", 18 | "eslint-plugin-react-hooks": "^2.4.0" 19 | }, 20 | "license": "MIT" 21 | } 22 | --------------------------------------------------------------------------------